Close

čtení stavu tlačítka nezávisle na programu

Úvodní stránka Fórum Vaše projekty Arduino čtení stavu tlačítka nezávisle na programu

  • Toto téma obsahuje celkem 1 odpověď. Do diskuze (2 diskutující) se naposledy zapojil uživatel BlindP a poslední změna proběhla před 7 roky a 11 měsíci.
Aktuálně jsou na stránce zobrazeny 2 příspěvky - 1. až 2. (celkem z 2)
  • Autor
    Příspěvky
  • #9803
    Metagic
    Účastník

    Ahoj lidi,

    stavím jednoduchý strojek na vůni.
    Nějak mi to již běhá, ale mám problém s čtením tlačítek.

    na strojku mám několik tlačítek a každé má nějaký sled akcí pro větrák a podobně.
    mám problém v tom, že hodnotu na tlačítkách čtu jen na začátku switch a další čtení je možné až po dokončení jedné z větví.

    je možné čtení tlačítek udělat nadřazené celé konstrukci switch tak, abych vlastně stisknutím tlačítka v průběhu programu přepl na jinou větev?

    Děkuji moc za všechny rady.
    níže je zkrácená verze

    
    int vetrak = 12;
    int tl1 = 2;
    int tl2 = 4;
    int A;
    int B;
    int C = 0;
    int interval = 5000;
    
    //-------------------------------------------------------
    void setup() {
        pinMode(vetrak, OUTPUT);
        pinMode(tl1, INPUT);
        pinMode(tl2, INPUT);
    }
    //----------------------------------------------------------
    void loop() {
        A = digitalRead(tl1);
          if (A == HIGH) {
          C = 1;
        }
        B = digitalRead(tl2);
          if (B == HIGH) {
          C = 2;
        }
    
        switch(C) {
        
                case 1:
                  digitalWrite(vetrak, HIGH);
                  delay(interval);
                  digitalWrite(vetrak, LOW);
                  delay(interval);
                  digitalWrite(vetrak, HIGH);
                  delay(interval);
                  digitalWrite(vetrak, LOW);
                  delay(interval);
                  digitalWrite(vetrak, HIGH);
                  delay(interval);
                  digitalWrite(vetrak, LOW);
                  delay(interval);
                  digitalWrite(vetrak, HIGH);
                  delay(interval);
                  digitalWrite(vetrak, LOW);
                  delay(interval);
                  C = 0;
                  break;
                  
                case 2:
                  digitalWrite(vetrak, HIGH);
                  delay(interval);
                  digitalWrite(vetrak, LOW);
                  C = 0;
                  break;
                default:
                  break;
            }
      
    }
    
    #9805
    BlindP
    Účastník

    Ahoj, ano použitím časování s millis() – http://www.pistek.eu/blog/2013/08/15/arduino-7-casovani-millis/ BP

Aktuálně jsou na stránce zobrazeny 2 příspěvky - 1. až 2. (celkem z 2)
  • Pro reakci na toto téma se musíte přihlásit.