• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Przełączanie diod za pomocą przycisku
#1
Cześć, jestem nowym użytkownikiem arduino uno i potrzebuję pomocy z programem.
Moim celem jest napisanie programu, który umożliwi przełączanie diod po każdorazowym wciśnięciu przycisku. 
1. Po pierwszym wciśnięciu powinien zapalić diodę na pinie 5.
2. Po drugim powinien wykonać funkcję, która będzie gasiła i zapalała diody (KnightRider).
3. Po trzecim powinien zapalić wszystkie diody prócz tej na pinie 5.
4. Po czwartym powinien znowu zapalić diodę na pinie 5 i zgasić pozostałe diody.
itd...

Do punktu nr.2 (włącznie) wszystko działa jak założyłem. Niestety po wciśnięciu przycisku program nie reaguje i nie wychodzi z pętli Knightridera.

Proszę o pomoc, nakierowanie gdzie doczytać ewentualnie o pomoc w kodzie. 
Kod programu:

int stan=0;
int val;
int val2;
int buttonState;


void setup() {

    for(int i=3;i<=7;i++)
    pinMode(i,OUTPUT);
    pinMode(2,INPUT_PULLUP);
    buttonState = digitalRead(2);
}

void loop() {
 
  val=digitalRead(2);
  delay(10);
  val2=digitalRead(2);
  if(val == val2){
    if(val != buttonState) {
      if(val == LOW){
        if(stan == 0){
          stan=1;
        } else {
          if(stan == 1) {
            stan=2;
          } else {
            if (stan == 2){     
              stan=0;   
            }
          }
            }
          }
        }
    buttonState = val;
  }

///////////

      if(stan==0){
        digitalWrite(3,HIGH);
        digitalWrite(4,HIGH);
        digitalWrite(5,LOW);
        digitalWrite(6,HIGH);
        digitalWrite(7,HIGH);
      }
      if(stan==1){
        digitalWrite(3,LOW);
        digitalWrite(4,LOW);
        digitalWrite(5,HIGH);
        digitalWrite(6,LOW);
        digitalWrite(7,LOW);
      }
      if(stan==2){
        for (int i=3;i<=7;i++)
          {
            digitalWrite(i,HIGH);
            digitalWrite(i-1,LOW);
            delay(200);   
          } 
        for (int i=7;i<=7 && i>=5;i--)
          {
            digitalWrite(i,LOW);
            digitalWrite(i-1,HIGH);
            delay(200);
            if(i==5){
            digitalWrite(4,LOW);
            }
        }
    }
}
 
Odpowiedź
  


Wiadomości w tym wątku
Przełączanie diod za pomocą przycisku - przez medzio - 18-01-2022, 20:44

Skocz do:


Przeglądający: 1 gości