ERROR: načtení souboru link.html bylo neúspěšné
V dnešní hodině si ukážeme, jak pracovat s tlačítky. V našem edushield je tlačítko na pinu číslo 2. Více info ohledně pinů v edushield: https://github.com/arduino-edushield/edushield/blob/master/extras/learning/course/cz/cheatsheet.md
Následující kód nám zařídí, že se bude do konzole vypisovat číslo 0, pokud je tlačítko stisknuto. Pokud není, bude se nám vypisovat číslo 1.
// nastaví, že na pinu číslo 2 máme tlačítko. Díky tomuto můžeme pak rovnou použít button místo čísla pinu
#define button 2
void setup() {
// spustí konzoli s datovým přenosem o rychlosti 9600 baudů za sekundu
Serial.begin(9600);
// nastaví pin tlačítka jako vstupní
pinMode(button,INPUT_PULLUP);
}
void loop() {
// vytvoří proměnnou typu int (číslo), do které budeme ukládat stav tlačítka. 1 = tlačítko není stisknuto, 0 = tlačítko je stisknuto
int b = digitalRead(button);
// vypíše obsah proměnné b do seriové konzole
Serial.println(b);
}
Vzhledem k tomu, že víme, že 0 znamená že tlačítko bylo stisknuto a 1 znamená že tlačítko bylo puštěno, můžeme si pomocí podmínky výstup trochu zpřehlednit.
// nastaví, že na pinu číslo 2 máme tlačítko. Díky tomuto můžeme pak rovnou použít button místo čísla pinu
#define button 2
void setup() {
// spustí konzoli s datovým přenosem o rychlosti 9600 baudů za sekundu
Serial.begin(9600);
// nastaví pin tlačítka jako vstupní
pinMode(button, INPUT_PULLUP);
}
void loop() {
// vytvoří proměnnou typu int (číslo), do které budeme ukládat stav tlačítka. 1 = tlačítko není stisknuto, 0 = tlačítko je stisknuto
int b = digitalRead(button);
// Pokud je tlačítko stisknuto, vypíše text v uvozovnách do konzole
if (b == 0) {
Serial.println("Tlačítko bylo stisknuto");
}
// Pokud tlačítko není stisknuto, vypíše text v uvozovnách do konzole
else if (b == 1) {
Serial.println("Tlačítko bylo puštěno");
}
}
Můžeme si rovnou vytvořit pro uživatele trochu přívětivější kód, kdy se nám do konzole vypíše pouze změna stavu:
// nastaví, že na pinu číslo 2 máme tlačítko. Díky tomuto můžeme pak rovnou použít button místo čísla pinu
#define button 2
// vytvoří proměnnou lastState a uloží si do ní číslo 1. Tuto proměnnou budeme později využívat k tomu, aby se nám do konzole vypsala pouze změna stavu tlačítka
int lastState = 1;
void setup() {
// spustí konzoli s datovým přenosem o rychlosti 9600 baudů za sekundu
Serial.begin(9600);
// nastaví pin tlačítka jako vstupní
pinMode(button,INPUT_PULLUP);
}
void loop() {
// vytvoří proměnnou typu int (číslo), do které budeme ukládat stav tlačítka. 1 = tlačítko není stisknuto, 0 = tlačítko je stisknuto
int b = digitalRead(button);
// Pokud se lastState NErovná b
if (lastState != b){
// Pokud je tlačítko stisknuto, vypíše text v uvozovnách do konzole
if (b == 0) {
Serial.println("Tlačítko bylo stisknuto");
}
// Pokud tlačítko není stisknuto, vypíše text v uvozovnách do konzole
else if (b == 1) {
Serial.println("Tlačítko bylo puštěno");
}
// uloží do proměnné lastState poslední stav. Díky tomuto v kombinaci s if výše se vypíše pouze změna, místo toho aby se vypisoval stav neustále
lastState = b;
}
}
Vzpomeňte si na předchozí lekci a vytvořte program, který rozsvítí diodu, pokud je tlačítko stisknuto. Pokud bude tlačítko puštěno, dioda zhasne. Led diodu máte připojenou na pinu číslo 13.
Doporučuji pro led diodu nastavit následující kód v části setup: pinMode(led,OUTPUT);, čímž
Arduinu řeknete, že tam je led dioda a bude tam posílat vyšší proud -> led dioda bude svítit více.
Na arduinu máme také další led diody na pinech 16 a 17. Udělejte kód, kdy se při stisknutí tlačítka rozsvítí jedna z těchto diod a po opětovném stisknutí ta co nyní svítí zhasne a rozsvítí se jiná.