Ovládání arduino jedním tlačítkem.

Nedaří se vám s projektem a nenašli jste vhodné místo, kde se zeptat? Napište sem.
Pravidla fóra
Tohle subfórum je určeno pro konzultaci ucelených nápadů, popřípadě řešení komplexnějších projektů, které opravdu není možné rozdělit na menší části.
Většinu problémů jde rozdělit na menší a ptát se na ně v konkrétních subfórech.
Uživatelský avatar
pavel1tu
Příspěvky: 2054
Registrován: 26 říj 2017, 08:28
Reputation: 0
Bydliště: Trutnov
Kontaktovat uživatele:

Re: Ovládání arduino jedním tlačítkem.

Příspěvek od pavel1tu » 05 kvě 2021, 18:28

Ale to je to samé - já jen ukázal jak rozlišit dlouhý/krátký

dlouhým stiskem budeš přepínat SADU akcí A/B/C ...
krátkým pak pomocí toho CASE jak bylo přepínat v dané sadě požadovanou akci (bude to tam pro A/B... několikrát)
UNO, NANO, Mikro, PRO mini, DUE, ESP32S2, RPi PICO
Pavel1TU
"Správně napsaný kod lze číst jako knihu"

bokuba
Příspěvky: 5
Registrován: 03 kvě 2021, 16:32
Reputation: 0

Re: Ovládání arduino jedním tlačítkem.

Příspěvek od bokuba » 06 kvě 2021, 23:10

pavel1tu ještě jednou díky, celé mi to došlo a už mi funguje, co jsem potřeboval. Až se rozhoupu, tak sem přihodím celé dílko. Tedy s vynecháním těch samotných "akcí" to jsou věci, které asi nemůžu pustit ven a hlavně nejsou nijak zajímavé :)

bokuba
Příspěvky: 5
Registrován: 03 kvě 2021, 16:32
Reputation: 0

Re: Ovládání arduino jedním tlačítkem.

Příspěvek od bokuba » 09 kvě 2021, 15:42

Tak jak jsem psal hodím sem celé dílko, třeba to někdy bude k užitku někomu ještě nešikovnějšímu, než jsem já. A nebo si sem pro to zase někdy sám sáhnu :)
Ještě jednou díky všem, ochotným, kteří pomohli a poradili neznalému.

Kód: Vybrat vše

//Ovládanie jedným tlačidlom
//Zapojenie INPUT_PULLUP
//jedním tlačítkem se cykluje pět úkonů po sobě - pomocí krátkého stisku, dlouhým stiskem se přepínají dvě jiné akce

const int buttonPin1 = 6;
int buttonState1 = HIGH;
int lastButtonState1 = HIGH;
unsigned long lastDebounceTime = 0;
unsigned long debounceInterval1 = 30; //interval na krátký stisk
unsigned long debounceInterval2 = 2200; //interval na dlougý stisk
int pocitadlo = 0;
int pocitadlo2 = 0;

void setup() {
    Serial.begin(115200,);
  pinMode(buttonPin1, INPUT_PULLUP);

 
}

void loop() {

  int reading1 = digitalRead(buttonPin1);
  
  if (reading1 != lastButtonState1 && reading1 == LOW) {
    lastDebounceTime = millis();
  }
  
  if ((millis() - lastDebounceTime) > debounceInterval1 && (millis() - lastDebounceTime) < debounceInterval2) {
    if (reading1 != buttonState1) {
      buttonState1 = reading1;
      if (buttonState1 == HIGH) {
        pocitadlo++;
        if (pocitadlo > 5)              {
          pocitadlo = 1;
                           }
                                   switch (pocitadlo)              {
          case 1:
          //akce1
            break;
          case 2:
          //akce2
            break;
          case 3:
          //akce3
            break;
          case 4:
          //akce4
            break;
          case 5:
          //akce5
            break;
          default:
            // toto sa nevykona
            break;
                          }
  
      }
    }
  }
  
  if ((millis() - lastDebounceTime) > debounceInterval2) {
    if (reading1 != buttonState1) {
      buttonState1 = reading1;
      if (buttonState1 == HIGH) {
        pocitadlo2++;
        if (pocitadlo2 > 2)              {
          pocitadlo2 = 1;
                           }
                                   switch (pocitadlo2)              {
          case 1:
            transmit ("set_env -back_light=100");
            pocitadlo = 7;
            break;
          case 2:
            transmit ("set_env -back_light=10");
            pocitadlo = 7;
            break;
          
          default:
            // toto sa nevykona
            break;
                          }
      
  
      }
    }
  }  
  
  
  
  
  lastButtonState1 = reading1;
}

Odpovědět

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 13 hostů