Skocz do zawartości

Jak naprawić kod - instrukcja switch-case i LED?


Pomocna odpowiedź

Dzisiaj próbowałem nauczyć się sterować kilkoma funkcjami jednym przyciskiem za pomocą "switch case" i coś mi nie wyszło. Z założenia program po wciśnięciu przycisku miał zapalać  diodę, gasić ją po 2 sekundach .Po kolejnym przyciśnięciu przycisku zapalać następną diodę , gasić po 2 sekundach i tak dalej... Zamiast tego diody same zapalają się i gasną po kolei . Z góry dziękuje za odpowiedzi.

szkic programu:

#define przycisk 6
#define led1 7
#define led2 8
#define led3 9
#define led4 10
byte x = 0; 
void setup (){
   digitalWrite(led1,LOW);
    digitalWrite(led2,LOW);
    digitalWrite(led3,LOW);
    digitalWrite(led4,LOW);
  pinMode(led1,OUTPUT);
   pinMode(led2,OUTPUT);
   pinMode(led3,OUTPUT);
   pinMode(led4,OUTPUT);
  pinMode(przycisk,INPUT_PULLUP);
}
void loop(){
  if(digitalRead(przycisk == LOW)){
  switch(x){
    case 0:
    digitalWrite(led1,HIGH);  
  delay(2000); 
  digitalWrite(led1,LOW);
    x=1;
    break;
     case 1:
    digitalWrite(led2,HIGH);  
  delay(2000);
  digitalWrite(led2,LOW);
    x=2;
    break;
     case 2:
    digitalWrite(led3,HIGH); 
  delay(2000); 
  digitalWrite(led3,LOW);
    x=3;
    break;
     case 3:
    digitalWrite(led4,HIGH);  
  delay(2000);
  digitalWrite(led4,LOW);
    x=0;
    break;
  }
  }else{
    digitalWrite(led1,LOW);
    digitalWrite(led2,LOW);
    digitalWrite(led3,LOW);
    digitalWrite(led4,LOW);
  }
}

 

Link to post
Share on other sites
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Trochę mi się myli te ustawianie nawiasów , szkoda że program nie uznaje takich pomyłek jako błąd.Teraz program działa poprawnie. Jeszcze raz dziękuje😀 nie wpadłbym na to .

Link to post
Share on other sites
7 godzin temu, jas123 napisał:

szkoda że program nie uznaje takich pomyłek jako błąd.

A dlaczego miałby uznawać za błąd całkowicie prawidłową konstrukcję?

Jeśli chcesz pomnożyć dwie liczby i zamiast * napiszesz +, to też kompilator ma to za Ciebie wykryć?

Inaczej: czy w słowie "morze" jest błąd ortograficzny?

 

Link to post
Share on other sites
  • Treker zmienił tytuł na: Jak naprawić ten kod?
7 godzin temu, jas123 napisał:

szkoda że program nie uznaje takich pomyłek jako błąd

Z punktu widzenia kompilatora to nie są błędy. Podczas kompilacji sprawdzane jest tylko to czy program jest poprawnie zapisany, komputer nie wie jak ma działać dany układ, więc nie jest w stanie wykryć błędów wynikających z takich "dwuznaczności". To, że jakiś kod jest zupełnie bezsensowny z punktu widzenia (nie)działającego urządzenia to nie znaczy, że jest błędnie napisany 😉

Aby wykrywać problemy tego typu należałoby pisać testy, ale to zupełnie inny, dużo bardziej rozbudowany temat i ma mało wspólnego z Arduino. Z ciekawości możesz zerknąć na ten artykuł: Czym jest Test Driven Development? Wprowadzenie, przykłady

  • Lubię! 1
Link to post
Share on other sites
  • Gieneq zmienił tytuł na: Jak naprawić kod - instrukcja switch-case i LED?

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.