• 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
Złączenie kilka kodów w jeden PILNE
#1
Witam,
potrzebuje pomocy przy złączeniu tych kodów w jeden. Dokładnie będzie to wyglądało tak że przy pierwszym kliknięciu przycisku będzie działał pierwszy kod, drugie przyciśnięcie drugi kod itd.


Załączone pliki
.docx   Sterowanie diodami wersja ostateczna.docx (Rozmiar: 276.14 KB / Pobrań: 6)
 
Odpowiedź
#2
Według mnie będziesz potrzebował zmiennej, która zna stan przycisku (ile razy był wciśnięty). Do uruchamiania podprogramów użyj instrukcji switch.. case.
W funkcji setup() musisz zadeklarować wszystkie wejscia i wyjścia, a w elementach case swoje programy. Case będzie się uruchamiał wzależności od stanu zmiennej, dla przykładu:

Kod:
int stanPrzycisku=0;
void setup() {
pinMode(12, INPUT_PULLUP);
pinMode(13, OUTPUT);
}

void loop() {
  while(digitalRead(12)==HIGH) {
}
stanPrzycisku++;
delay(300);
  switch (stanPrzycisku) {
    case 1:  
{
      for(int i=0;i<1;i++) {
digitalWrite(13, HIGH);
delay(200);
digitalWrite(13, LOW);
}
}
      break;
    case2:  
      {
      for(int i=0;i<2;i++) {
digitalWrite(13, HIGH);
delay(200);
digitalWrite(13, LOW);
}
}
      break;
    case 3:    
     {
      for(int i=0;i<3;i++) {
digitalWrite(13, HIGH);
delay(200);
digitalWrite(13, LOW);
}
}
      break;
    case 4:    
      {
      for(int i=0;i<4;i++) {
digitalWrite(13, HIGH);
delay(200);
digitalWrite(13, LOW);
}
stanPrzycisku=0;
}
      break;
  }
}
 
Odpowiedź
#3
Dobre tu masz inny sposób , ja wolę tak bo każdy program jest niezależny i szybciej wyłapać co nie działa

Kod:
byte Program = 1;

void setup(){
pinMode(10,INPUT_PULLUP);
}

void loop(){

if ( digitalRead(10) == LOW ){ delay(300); Program++; }
if ( Program > 3 )Program = 1;
if (Program == 1 ){zadanie _1();}
if (Program == 2 ){zadanie _2();}
if (Program == 3 ){zadanie _3();}
}

void zadanie _1(void){

}
void zadanie _2(void){

}
void zadanie _3(void){

}
Ważne aby robić co się lubi albo lubić co się robi .
Arduino UNO, TINY, PRO MINI
Pomoc nagradzamy punktami reputacji Wink
 
Odpowiedź
#4
Chyba optymalnie będzie, jeśli połączysz sposoby mój i JasQ'a. Z mojego proponuję wziąć mechanizm case (uznane jest, że jeśli zaistnieje wybór między więcej niż dwiema możliwościami, powinno używać się case zamiast if), a od Jasq'a - funkcje. Chciałem uprościć mój program, ale rzeczywiście użycie funkcji sprawi, że program stanie się czytelniejszy.
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości