Ovládání více tlačítky

V minulé lekci jsem nakousl práci s podmínkovými příkazy za pomocí logických podmínkových operátorů. Nyní si o tomto tématu popovídáme podrobněji a také si ho vyzkoušíme. Nejlépe si bude vše předvést na příkladu. Zapojte si následující obvod a pak si vyzkoušíme různé programy s různými verzemi logických operátorů.

Zapojení s jednou LED diodou a dvěma tlačítky (ochranný odpor 220 ohmů)

Operátor logického součtu – Konjunkce

Tato složená podmínka funguje tak, že se LED dioda rozsvítí pouze jsou-li stisknuty obě tlačítka. Nainstalujte si do desky následující kód a vše vyzkoušejte.

/*
Program pro obsluhu stisku dvou tlačítek
*/
//Nastavení desky – inicializace pinů

void setup() {
pinMode(2, OUTPUT);
pinMode(7,INPUT_PULLUP);
pinMode(8,INPUT_PULLUP);
}

//Provedení programu – spuštění v nekonečné smyčce
void loop() {
int tlacitko1 = digitalRead(7);
int tlacitko2 = digitalRead(8);

//konjunkce

if ((tlacitko1==0)&&(tlacitko2==0))
{
digitalWrite(2,1);
delay(20);
}
else
{
digitalWrite(2,0);
delay(20);
}
}
Program pro demonstraci konjunkce
Varianta programuTlačítko 1Tlačítko 2LED
11 / neaktivní tlačítko1 / neaktivní tlačítko0
21 / neaktivní tlačítko0 / stisknuté tlačítko0
30 / stisknuté tlačítko1 / neaktivní tlačítko0
40 / stisknuté tlačítko0 / stisknuté tlačítko1
Pravdivostní tabulka pro funkci konjukce

K čemu bychom tuto složenou podmínku mohli použít? Použití se samozřejmě neomezuje pouze na LED světla. Složené podmínkové příkazy s logickým operátorem konjunkce bychom mohli použít například tam, kde je třeba dvoustupňové jištění. Třeba dveře, které je možné otevřít pouze stiskem tlačítka ze dvou různých míst. Popřípadě ovládání funkcí konstrukce pouze je-li jiná část konstrukce v určité poloze – pro příklad posun ramena jeřábu možný pouze pokud je jeřáb v určité pozici (arduinu by splnění této podmínky automaticky nahlásily koncové spínače)

Operátor logického součinu – Disjunkce

Tato složená podmínka funguje pouze tehdy, když je stisknuté některé ze dvou tlačítek. Opět si do toho samého zapojení nainstalujte následující kód a vyzkoušejte si reakce zapojení nyní.

/*
Program pro obsluhu stisku dvou tlačítek
*/
//Nastavení desky – inicializace pinů

void setup() {
pinMode(2, OUTPUT);
pinMode(7,INPUT_PULLUP);
pinMode(8,INPUT_PULLUP);
}


//Provedení programu – spuštění v nekonečné smyčce

void loop() {
int tlacitko1 = digitalRead(7);
int tlacitko2 = digitalRead(8);


//disjunkce

if ((tlacitko1==0)||(tlacitko2==0))
{
digitalWrite(2,1);
delay(20);
}
else
{
digitalWrite(2,0);
delay(20);
}
}
Program pro demonstraci disjunkce
Varianta programuTlačítko 1Tlačítko 2LED
11 / neaktivní tlačítko1 / neaktivní tlačítko0
21 / neaktivní tlačítko0 / stisknuté tlačítko1
30 / stisknuté tlačítko1 / neaktivní tlačítko1
40 / stisknuté tlačítko0 / stisknuté tlačítko1
Pravdivostní tabulka pro funkci disjunkce

A k čemu je vhodná tato kombinace složených podmínek? Třeba pro zapnutí světla v objektu z různých míst.

Operátor logické negace

Tento operátor je asi nejjednodušší. Při použití tohoto operátoru je LED aktivní pouze pokud není stisknuto tlačítko. Tato funkce se dá použít pro vypínání činnosti programu, nebo třeba jako bezpečnostní stop tlačítko.

/*
Program pro obsluhu stisku dvou tlačítek
*/
//Nastavení desky – inicializace pinů
void setup() {
pinMode(2, OUTPUT);
pinMode(7,INPUT_PULLUP);
pinMode(8,INPUT_PULLUP);
}


//Provedení programu – spuštění v nekonečné smyčce

void loop() {
int tlacitko1 = digitalRead(7);


//negace

if (!tlacitko1)
{
digitalWrite(2,1);
delay(20);
}
else
{
digitalWrite(2,0);
delay(20);
}
}
Program pro demonstraci negace
Varianta programuTlačítko 1LED
10 / stisknuté tlačítko0
21 / neaktivní tlačítko1
Pravdivostní tabulka pro demonstraci negace

Úkoly:

1, Navrhněte konstrukci s RGB diodou, které bude ovládána třemi tlačítky. Pro ovládání stisku několika tlačítek najednou využijte operátoru logického součtu (konjunkce).

2, Nakreslete si půdorys nějakého objektu a umístěte na něj světla – LED diody. Vymyslete režim rozsvěcení skupin světel – okruhů tak, aby bylo možné rozsvítit jak menší skupinky světel (například chodby), tak celý objekt (všechny světla najednou). Ovládání vytvořte ze dvou míst. V programu využijte v konstrukci podmínkových příkazů i logických operátorů.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *