Tlačítko jako hlavní vypínač

Wiring, C++, C, Java, ...
Pravidla fóra
Toto subfórum slouží k řešení obecných otázek kolem programování (konstrukce, knihovny, alokace paměti, ...)
Odpovědět
Xandys
Příspěvky: 14
Registrován: 21 úno 2018, 21:17

Tlačítko jako hlavní vypínač

Příspěvek od Xandys » 21 úno 2018, 21:26

Dobrý den, prosím o radu. Jsem začátečník a peru se s jedním problémem.
Mám desku na které jsou čtyři tlačítka Jedno se má chovat jako hlavní vypínač. Stiskem se aktivují ostatní tři tlačítka, které řídí další módy. Dalším stiskem tohoto tlačítka se opět tři tlačítka zdeaktivují. Nevím si s tím rady, třeba je to banální, ale jak jsem psal jsem začátečník.
Díky za rady.

jankop
Příspěvky: 1057
Registrován: 06 zář 2017, 20:04
Bydliště: Brno
Kontaktovat uživatele:

Re: Tlačítko jako hlavní vypínač

Příspěvek od jankop » 21 úno 2018, 21:57

Stiskneš aktivační tlačítko a nastavíš příznak - flag. A dokud je flag nastaven, tak ta zbývající tlačítka prostě nečteš, dáš podmínku, že se jejich čtení vynechává. Dalším stiskem tlačítka příznak smažeš.
To čtení tlačítka by mohlo vypadat třeba nějak takhle:

Kód: Vybrat vše

#define BUTTONPIN 5
char ButtonCount;
bool Flag;
void setup() {
  // put your setup code here, to run once:
pinMode(BUTTONPIN, INPUT);
}
void loop() {
  // put your main code here, to run repeatedly:
 GetButton();
}

void GetButton(void) {
  if (digitalRead(BUTTONPIN) == false ) ++ButtonCount;
  if (digitalRead(BUTTONPIN) == true && ButtonCount > 1 && ButtonCount < 100 ) {
    Flag = !Flag;
    delay(10);
  }
  if (digitalRead(BUTTONPIN) == true ) ButtonCount = 0;
}
Trochu jsem to upravil, mělo by to jít volat i přímo z hlavní smyčky.

petan
Příspěvky: 358
Registrován: 23 črc 2017, 10:19
Kontaktovat uživatele:

Re: Tlačítko jako hlavní vypínač

Příspěvek od petan » 21 úno 2018, 22:25

A nebo můžeš použít pin, který podporuje přerušení. A stejný způsobem měnit flag. Bylo by dobrý, aby tlačítko nezakmitávalo.

Kód: Vybrat vše

bool flag;

void setup() {
  pinMode(2, INPUT);
  attachInterrupt(2, ToogleFlag, RISING);
}

void ToogleFlag(){
 flag = !flag;
}
Pak je tu varianta hlídání náběžné hrany vstupu pomocí kódu (určitě na to existuje i několik knihoven).

Xandys
Příspěvky: 14
Registrován: 21 úno 2018, 21:17

Re: Tlačítko jako hlavní vypínač

Příspěvek od Xandys » 22 úno 2018, 10:41

Děkuji, moc jste mi pomohli :-)

Odpovědět

Kdo je online

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