Letní IoT: Den 2
Obsah |
Opakování
Na začátek si zopakujeme věci, co jsme dělali včera
- Blikání ledky v 2s prodlevou
- Vypsat (do konzole) všechny sudá čísla do 50
- 3 LEDky, po 2 sekundách se bude střídat, která bude svítit (červená, žlutá, zelená, čer...)
Cykly
LEDka
Metodu digitalWrite(); jsme si již ukázali. Ta je k rožnutí, či zhasnutí LEDky. Ale co když chceme LEDku rožnout jen částečně? ... či aby se postupně rozžíhala?
K tomu nám slouží metoda analogWrite(nazevLedky, cislo); nazevLedky - ten název, co jsme dali u #define nazevLedky 15 cislo - jak má svítit - v našem případě je to v rozmezí 0 - 1023 - 1024 možností
takže, chceme rozsvítit LEDku napůl jen - analogWrite(ledka, 512);
Příklad
LEDka se během 5ti sekund rožne.
#define ledka 15 void setup() { pinMode(ledka, OUTPUT); } void loop() { for(int i = 0; i < 1024; i++) { analogWrite(ledka, i); delay(5); } }
Samostatný úkol
- LEDka s postupně rozsvítí a pak postupně zhasne
- Během pěti sekund se LEDka rožne, sekundu zůstane rožnutá na maximum, 5 sekund se bude zhasínat a sekundu zůstane zhasnutá
- LEDka 5× blikne (5s) a pak 3 s počká (for cyklus)
- Při každém bliknutí se vypíše do konzole "Bliknutí číslo: "
Podmínka
if(jeSplneno) { toto se provede, pokud je podmínka splněna } else { toto se provede, když podmínka není splněna }
Co může být v if()?
- boolean
- if(spleno) { Serial.print("splneno"); } else { Serial.print("nesplneno"); }
- int
- if(teplota > 20) { ... rozsviť LEDku; }
Vlastní metoda
Již známe 2 metody void setup() a void loop() My se teď naučíme vytvořit si vlastní metodu.
Metoda se skládá z návratového typu, názvu metody a v závorkách má parametry.
My nepotřebujeme, aby nám metoda něco vracela, tak použijeme void
void blikni() { digitalWrite(ledka, HIGH); delay(500) digitalWrite(ledka, LOW); }
a teď stačí napsat
blikni();
a provede se to, co je v té metodě... paráda, co? :D
Metodě můžeme dát parametr - počet bliknutí třeba
void blikni(int pocet) { for(int i = 0, i < pocet; i++) { digitalWrite(ledka, HIGH); delay(500) digitalWrite(ledka, LOW); delay(500); } }
Co udělá tento příkaz? (vyzkošej!)
blikni(5);
Samostatný úkol
- Vytvoř metodu, co na 3 s rozsvítí ledku.
- Vytvoř metodu, co 10× vypíše "blik"
- Vytvoř metodu, co 3× vypíše zadané slovo a zabliká při tom
Tlačítko
Samostatné úkoly
- Když se zmačkne tlačítko, rozsvítí se modrá LEDka za 3 sekundy
- Žlutá dioda stále svítí, když zmáčkneme tlačítko, tak se zhasne a do konzole se vypíše "Zmáčkl si tlačítko po (číslo)"
Display
Teď si ukážeme další výstupní zařízení - display.
Aby display správně fungoval, musíme udělat tyto věci
Bacha, aby byla fajn adresa LiquidCrystal_I2C lcd(0x3F, 16, 2);
Adresa lze zjistit přes I2C_Scanner
importovat knihovny #include <Wire.h> #include <LiquidCrystal_I2C.h> nastavit velikost displeje LiquidCrystal_I2C lcd(0x27, 16, 2); ve void setup() lcd.begin();
A to je vše!
A teď si ukážeme pár metod pro práci s displejem
lcd.backlight(); - rožne se podsvícení lcd.noBacklight(); - zhasne se podsvícení lcd.print(); - napíše na display lcd.clear(); - smaže vše z displeje lcd.setCursor(0, 1); - nastaví kurzor na (znak, řádek)
Zapojení
Tento display komunikuje přes I2C a na napájení má 5V.
Zkuste to zapojit sami a pak zavolejte lektora na zkontrolování.
Aby Vám to fungovalo, musíte mít knihovnu v počítači.
Samostatný úkol
- Napište na display své jméno
- Napište na display své jméno a pod to "Hrajeme si s IoT"
- 5 sekund bude na displeji Vaše jméno a dalších 5 s tam bude "Hrajeme si s IoT"
- Prozkoumejte projekty knihovny (Soubor -> Příklady ->