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 stisknutu. Pokud není, bude se nám vypisovat číslo 1.
#define button 2
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
pinMode(button,INPUT_PULLUP);
}
void loop() {
// put your main code here, to run repeatedly:
int b = digitalRead(button);
Serial.println(b);
}
#define button 2
nám nastaví, že na pinu číslo 2 máme tlačítko. Díky tomuto můžeme pak
rovnou použít button
místo čísla pinu.
Serial.begin(9600);
nám spustí konzoli s datovým přenosem o rychlosti 9600 baudů za sekundu.
pinMode(button,INPUT_PULLUP);
nám nastaví tlačítko. Podrobný a pro nás nedůležitý
popis:int b = digitalRead(button);
nám vytvoří proměnnou typu int (číslo), do které budeme
ukládat stav tlačítka. 1 = tlačítko není stisknuto, 0 = tlačítko je stisknuto.
Serial.println(b);
nám vypíše obsah proměnné b do seriové konzole.
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.
#define button 2
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
pinMode(button, INPUT_PULLUP);
}
void loop() {
// put your main code here, to run repeatedly:
int b = digitalRead(button);
if (b == 0) {
Serial.println("Tlačítko bylo stisknuto");
}
else if (b == 1) {
Serial.println("Tlačítko bylo puštěno");
}
}
#define button 2
nám nastaví, že na pinu číslo 2 máme tlačítko. Díky tomuto můžeme pak
rovnou použít button
místo čísla pinu.
Serial.begin(9600);
nám spustí konzoli s datovým přenosem o rychlosti 9600 baudů za sekundu.
pinMode(button,INPUT_PULLUP);
nám nastaví tlačítko. Podrobný a pro nás nedůležitý
popis:int b = digitalRead(button);
nám vytvoří proměnnou typu int (číslo), do které budeme
ukládat stav tlačítka. 1 = tlačítko není stisknuto, 0 = tlačítko je stisknuto.
if (b == 0)
a else if (b == 1)
nám provede akci pouze pokud je stav
tlačítka 0
nebo 1, neboli stisknuto nebo nestisknuto.
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:
#define button 2
int lastState = 1;
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
pinMode(button,INPUT_PULLUP);
}
void loop() {
// put your main code here, to run repeatedly:
int b = digitalRead(button);
if (lastState != b){
if (b == 0) {
Serial.println("Tlačítko bylo stisknuto");
}
else if (b == 1) {
Serial.println("Tlačítko bylo puštěno");
}
lastState = b;
}
}
#define button 2
nám nastaví, že na pinu číslo 2 máme tlačítko. Díky tomuto můžeme pak
rovnou použít button
místo čísla pinu.
int lastState = 1;
nám 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.
Serial.begin(9600);
nám spustí konzoli s datovým přenosem o rychlosti 9600 baudů za sekundu.
pinMode(button,INPUT_PULLUP);
nám nastaví tlačítko. Podrobný a pro nás nedůležitý
popis:int b = digitalRead(button);
nám vytvoří proměnnou typu int (číslo), do které budeme
ukládat stav tlačítka. 1 = tlačítko není stisknuto, 0 = tlačítko je stisknuto.
if (lastState != b)
nám porovná aktuální stav s posledním známým stavem. Kdyby byl
tento if vypuštěn, arduino by neustále vypisovalo text. Takto nám ho ukáže pouze jednou, když se
stav změní.
if (b == 0)
a else if (b == 1)
nám provede akci pouze pokud je stav
tlačítka 0
nebo 1, neboli stisknuto nebo nestisknuto.
lastState = b;
si 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.
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.
Nezapomeňte odevzdat váš kód do Google Učebny: https://classroom.google.com/c/NTkwMDUxNjcyMjUy/a/Njc0MTQzNTQ2MTk2/details
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á.