Arduino Polska Forum
Cztery przyciski i cztery LED - Wersja do druku

+- Arduino Polska Forum (https://forum.arduinopolska.pl)
+-- Dział: Korzystanie z Arduino (https://forum.arduinopolska.pl/dzial-korzystanie-z-arduino)
+--- Dział: Piaskownica (https://forum.arduinopolska.pl/dzial-piaskownica)
+--- Wątek: Cztery przyciski i cztery LED (/watek-cztery-przyciski-i-cztery-led)

Strony: 1 2


Cztery przyciski i cztery LED - dimetylo - 02-11-2021

Witam
Wiem że dla większości z Was to będzie banalne ale mam problem ,potrzebuję stworzyć kod by pierwszy przycisk po naciśnięciu włączał pierwsza diodę LED ,a po ponownym naciśnięciu ją wyłączał.I tak z każdym przyciskiem niezależnie
Udało mi się zrobić tylko że włączam pierwszy pozniej drugi ,trzeci czwarty a nie moge tego zrobić niezależnie
Proszę o pomoc lub jakieś wskazówki
Pozdrawaim i z góry dziękuję


RE: Cztery przyciski i cztery LED - mateuszmilke97@gmail.com - 02-11-2021

Pokaz co masz, wstaw kod nakierujemy Cię


RE: Cztery przyciski i cztery LED - mateuszmilke97@gmail.com - 02-11-2021

Podejrzewam że masz błąd w konstrukcji ifow wykonuje się pierwsza możliwa operacja dlatego nie możesz niezależnie musisz inaczej skonstruować te warunki daj kod to będzie wszystko jasne


RE: Cztery przyciski i cztery LED - Robson Kerman - 03-11-2021

Czytaj przyciski i neguj stany na wyjściach ledów.

if (digitalRead(PRZYCISK1) == LOW) digitalWrite(LED1, !digitalRead(LED1);
Itd... itd...


RE: Cztery przyciski i cztery LED - dimetylo - 03-11-2021

(02-11-2021, 23:02)mateuszmilke97@gmail.com napisał(a): Podejrzewam że masz błąd w konstrukcji ifow wykonuje się pierwsza możliwa operacja dlatego nie możesz niezależnie musisz inaczej skonstruować te warunki daj kod to będzie wszystko jasne

Mam taki kod w którym diody zapalają sie i po okreslonym czasie gasną 
Kod:
#define P1 8
#define P2 9
#define P3 10
#define P4 11
#define D1 2
#define D2 3
#define D3 4
#define D4 5

int maxD1=0, maxD2=0, maxD3=0,maxD4=0;

void setup()
  {
    pinMode(P1,INPUT);
    pinMode(P2,INPUT);
    pinMode(P3,INPUT);
    pinMode(P4,INPUT);
    pinMode(D1,OUTPUT);
    pinMode(D2,OUTPUT);
    pinMode(D3,OUTPUT);
    pinMode(D4,OUTPUT);
  }
  void loop()
  {
    if(digitalRead(P1)==HIGH)   maxD1=500;
    if(digitalRead(P2)==HIGH)   maxD2=500;
    if(digitalRead(P3)==HIGH)   maxD3=500;
    if(digitalRead(P4)==HIGH)   maxD4=500;
     
     if(maxD1>0)
         digitalWrite(D1,HIGH);
    else
         digitalWrite(D1,LOW);
    if(maxD2>0)
         digitalWrite(D2,HIGH);
    else
         digitalWrite(D2,LOW);
    if(maxD3>0)
         digitalWrite(D3,HIGH);
    else
         digitalWrite(D4,LOW);
           if(maxD4>0)
         digitalWrite(D4,HIGH);
    else
         digitalWrite(D4,LOW);

     if(maxD1>0) maxD1--;
     if(maxD2>0) maxD2--;
     if(maxD3>0) maxD3--;
     if(maxD4>0) maxD4--;

     delay(1);
   }

A ja potrzebuję wstawić kod by dioda się zapalała i gasła po ponownym nacisnieciu przycisku a nie w interwale czasu 
i to robi ten kod

Kod:
pinMode( 8,INPUT);
pinMode( 9,INPUT);
pinMode( 10,INPUT);
pinMode( 11,INPUT);
pinMode( 2,OUTPUT);
pinMode( 3,OUTPUT);
pinMode( 4,OUTPUT);
pinMode( 5,OUTPUT);

}
boolean stan=0;
boolean stan1=0;

void loop() {

  if(digitalRead(8) == HIGH)


    {
      delay(20);
      stan=!stan;
      digitalWrite(2,stan);
      while(digitalRead(8) == HIGH);
    }

if (digitalRead(9) == HIGH);

    {
      delay(200);
      stan1=!stan1;
      digitalWrite(3,stan1);
      while(digitalRead(9) == HIGH);

    }
}
i nie wiem jak te kody połączyć by uzyskać efekt jak naciskam przycisk się zapala ponownie naciskam gasnie
Z góry dziękuję za pomoc


RE: Cztery przyciski i cztery LED - mateuszmilke97@gmail.com - 03-11-2021

Nie ma potrzeby łączyć tych kodów jak chcesz uzyskać 4 włączniki 4 diody zapalane i gaszone niezależnie . A po co ta pętla while na koniec ifow? Wywal te pętle zrób dwa dodatkowe ify na kolejne dwa włączniki dodaj dwie dodatkowe zmienne stan i powinno grać


RE: Cztery przyciski i cztery LED - dimetylo - 03-11-2021

(03-11-2021, 20:08)mateuszmilke97@gmail.com napisał(a): Nie ma potrzeby łączyć tych kodów jak chcesz uzyskać 4 włączniki 4 diody zapalane i gaszone niezależnie . A po co ta pętla while na koniec ifow? Wywal te pętle zrób dwa dodatkowe ify na kolejne dwa włączniki dodaj dwie dodatkowe zmienne stan i powinno grać
Gdy usuwam while przyciskk działa gdy jest przycisniety jak go puszczam to wraca do stanu 0 
Druga rzecz cztery ify powoduja taki problem że oczywiscie mogę włączac diody osobno ale po koleji napierw 1 pozniej 2 itd.Mi zależy by się załączały niezależnie i na zazadzie jeden klik mikrostyku to 1 drugi raz naciskamy to 0 (zasada działania przełącznika bistabilnego


RE: Cztery przyciski i cztery LED - dimetylo - 03-11-2021

(03-11-2021, 12:46)Robson Kerman napisał(a): Czytaj przyciski i neguj stany na wyjściach ledów.

if (digitalRead(PRZYCISK1) == LOW) digitalWrite(LED1, !digitalRead(LED1);
Itd... itd...
Użyłem Twojego sposobu i działa jest tylko mały problem bez delay nie chce się włączyc z z funkcją delay włącza sie z opóźnieniem lub raz sie włączy a raz nie proszę pomóż 
Kod:
void setup() {
  pinMode( 8, INPUT);
  pinMode( 9, INPUT);
  pinMode( 10, INPUT);
  pinMode( 11, INPUT);
  pinMode( 2, OUTPUT);
  pinMode( 3, OUTPUT);
  pinMode( 4, OUTPUT);
  pinMode( 5, OUTPUT);

}

void loop() {

  if (digitalRead(8) == HIGH) digitalWrite((2), !digitalRead(2));
  delay(250);

  if (digitalRead(9) == HIGH) digitalWrite((3), !digitalRead(3));

  delay(250);



}



RE: Cztery przyciski i cztery LED - mateuszmilke97@gmail.com - 03-11-2021

(03-11-2021, 21:58)dimetylo napisał(a):
(03-11-2021, 20:08)mateuszmilke97@gmail.com napisał(a): Nie ma potrzeby łączyć tych kodów jak chcesz uzyskać 4 włączniki 4 diody zapalane i gaszone niezależnie . A po co ta pętla while na koniec ifow? Wywal te pętle zrób dwa dodatkowe ify na kolejne dwa włączniki dodaj dwie dodatkowe zmienne stan i powinno grać
Gdy usuwam while przyciskk działa gdy jest przycisniety jak go puszczam to wraca do stanu 0 
Druga rzecz cztery ify powoduja taki problem że oczywiscie mogę włączac diody osobno ale po koleji napierw 1 pozniej 2 itd.Mi zależy by się załączały niezależnie i na zazadzie jeden klik mikrostyku to 1 drugi raz naciskamy to 0 (zasada działania przełącznika bistabilnego
No ja rozumiem ale te ify muszą działać, kazy warunek jest spełniany osobno i niezależnie. Robson kerman też tak pisał o ifach. Drgania styków powoduja ze dioda załącza się raz nie załącza. Wrócę z pracy to napisze Tobie odpowiedni kod i zrozumiesz wszystko.


RE: Cztery przyciski i cztery LED - mateuszmilke97@gmail.com - 03-11-2021

Nie no to jest zbyt proste aby pisać cały kod to musi działać

If(digitalRead(8)==HIGH){
delay(20);
digitalWrite(2, !digitalRead(2));
while(digitalRead(8) == HIGH) ;
delay (20);
}

I to wszystko powtórz tak jeszcze 3 razy dla innych wlacznikow i będzie to działać a jak masz problem to może kwestia że nie podciągasz rezystorem 10k do masy włącznika bo miałem takie problemy też keidya z czymś.

Jak tak to weź w pinMode ustaw jako włączniki jako INPUT_PULLUP i wtedy w ifach i while od digitalRead(x) wpisz LOW i pamiętaj o fizycznym podłączeniu wlacznikow od masy