|
|
(Není zobrazeno 24 mezilehlých verzí od 1 uživatele.) |
Řádka 1: |
Řádka 1: |
− | [[Category:VSE]][[Category:Informatika]][[Category:Letní IoT]] | + | [[Category:VSE]][[Category:Informatika]][[Category:Letní IoT]][[Category:IoT]] |
| | | |
| == Opakování == | | == Opakování == |
| + | Na začátek si zopakujeme věci, které jsme dělali včera. |
| | | |
− | Na začátek si zopakujeme věci, co jsme dělali včera
| + | # Blikání LED diody s 2s prodlevou |
| + | # 3 LED diody, po 2 sekundách se bude střídat, která bude svítit (červená, žlutá, zelená, čer...) |
| + | # Vypsat do konzole všechna jednociferná čísla. |
| | | |
− | # Blikání ledky v 2s prodlevou
| + | == Cykly == |
− | # Vypsat (do konzole) všechny sudá čísla do 50
| + | [[IoT: Cykly | Cykly ]] — když potřebujeme něco udělat vícekrát. |
− | # 3 LEDky, po 2 sekundách se bude střídat, která bude svítit (červená, žlutá, zelená, čer...)
| + | |
| | | |
| + | Zkuste předělat tento úkol když umíte for cyklus. |
| + | # Vypsat do konzole všechna jednociferná čísla. |
| | | |
− | = Cykly = | + | == LED dioda == |
| + | [[IoT: LED dioda # Postupné rozžíhání | Postupné rozžíhání ]] — postupně rožneme a zhasneme LED diodu. |
| | | |
− | Cykly nám slouží k tomu, že se něco opakuje dokud není něco splněno...
| + | == Podmínka == |
| + | [[IoT: Podmínka | Podmínka]] |
| | | |
| + | == Náhodné číslo == |
| + | [[IoT: Seznámení #Náhodné číslo | Náhodné číslo]] |
| | | |
− | == For cyklus ==
| + | Samostatné úkoly |
| + | * Náhodné číslo od 1 do 200, když bude číslo vyšší než 100, bude svítit červená LED dioda, jinak bude svítit modrá |
| + | * Náhodné číslo v rozmezí od 1 do 3, na každou hodnotu bude svítit jiná LED dioda |
| | | |
− | for(int i = 0; i < 10; i++)
| + | == Vlastní metoda == |
− | {
| + | [[IoT: Vlastní metoda | Vlastní metoda ]] — s návratovým typem i bez něj. |
− | ...kód...
| + | |
− | }
| + | |
− |
| + | |
− | for(int i - proměnná i; i < 10 - dokud je i menší než 10; i++ - pokaždé se i zvýší o jedno)
| + | |
| | | |
− | buď tam dáme i < 10, nebo i <= 9
| + | Vyzkoušejte samostatné úkoly. |
− | můžeme dát také
| + | |
| | | |
− | for(int i = 10; i > 1; i--)
| + | == Tlačítko == |
− | {
| + | [[IoT: Tlačítko | Tlačítko]] — prostudujte zapojení a zápis kódu. |
− | ...kód...
| + | |
− | }
| + | |
| | | |
− | V některých případech se to může hodit
| + | Udělejte samostatné úkoly. |
| | | |
− | == Samostatný úkol == | + | == Display == |
− | # Vypište (Serial.println()) čísla od 0 do 10 (se sekundovou prodlevou)
| + | [[IoT: Display | Display ]] — další výstupní zařízení. |
− | # LEDka blikne (rozsvítí se na sekundu a pak zhasne na sekundu) a pak 3 sekundy nesvítí, 2 × blikne, 3 ... 10 × blikne
| + | |
− | # LEDka se rozsvítí na sekundu, zhasne na sekundu, rozsvítí se na dvě sekundy, zhasne na dvě sekundy, rozsvítí se na 3... zhasne na 10 sekund, rozsvítí se na sekundu
| + | |
| | | |
− | = LEDka = | + | == Závěrečné opakování == |
− | | + | Na závěr dnešního dne si zkusme tento krátký |
− | Metodu ''digitalWrite();'' jsme si již ukázali. Ta je k rožnutí, či zhasnutí LEDky.
| + | [https://forms.gle/bL21pSMRH4aQjbr59 testík]. |
− | 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 - 1024
| + | |
− | | + | |
− | takže, chceme rozsvítit LEDku napůl jen - ''analogWrite(ledka, 512);''
| + | |
− | | + | |
− | [http://jurasek.wz.cz/index.php/iot1/16-regulace-jasu-led Regulace jasu]
| + | |
− | | + | |
− | == 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 ==
| + | |
− | # 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: "
| + | |
− | # LEDka s postupně rozsvítí a pak postupně zhasne
| + | |
− | | + | |
− | = 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 =
| + | |
− | | + | |
− | [http://jurasek.wz.cz/index.php/iot1/15-ovladani-pres-tlacitko 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)"
| + | |
− | | + | |
− | = RGB LEDka =
| + | |
− | | + | |
− | == Popis ==
| + | |
− | RGB LEDka má v sobě jakoby 3 LEDky - Red, Green, Blue
| + | |
− | Má 3 katody (+) a jednu anodu (-) [[https://ampul.cz/image/cache/catalog/image/data/led-dioda-katoda-600x600-product_popup.jpg schéma]]
| + | |
− | | + | |
− | Abychom ji mohli rozsvítit do námi požadované barvy, musíme něco vědět o [[https://www.w3schools.com/colors/colors_rgb.asp RGB mobelu]]
| + | |
− | Teoreticky je 16milionů 255natřetí možných kombinací, jak může svítit.
| + | |
− | | + | |
− | Budeme chtít zelenou - tak přivedeme napětí ke katodě která je spojena přechodem pn emitujícím zelené světlo.
| + | |
− | == Zapojení ==
| + | |
− | | + | |
− | GPIO pin - rezistor - katoda
| + | |
− | | + | |
− | == Příklady ==
| + | |
− | | + | |
− | #define red ...
| + | |
− | #define gre ...
| + | |
− | #fefine blu ...
| + | |
− |
| + | |
− | ''Chceme čevenou''
| + | |
− | digitalWrite(red, HIGH);
| + | |
− |
| + | |
− | ''Chceme žlutou''
| + | |
− | digitalWrite(red, HIGH);
| + | |
− | digitalWrite(gre, HIGH);
| + | |
− | | + | |
− | == Samostatný úkol ==
| + | |
− | #zelená barva
| + | |
− | #bílá barva
| + | |
− | #Vaše oblíbená barva
| + | |
− | #černá barva
| + | |
− | | + | |
− | Moc kombinací není, co?
| + | |
− | | + | |
− | == Příklady 2 ==
| + | |
− | | + | |
− | Metodu analogWrite() již znáne,
| + | |
− | | + | |
− | Pomocí ní můžeme dát RGB diodě ''jakoukoliv'' barvu.
| + | |
− | | + | |
− | Víme, že [https://www.w3schools.com/colors/colors_rgb.asp RGB model] je 0 - 255 a že metoda analogWrite() má rozsah 0 - 1023
| + | |
− | | + | |
− | == Samostatný úkol 2 ==
| + | |
− | Tak hurá do práce, zkuste!
| + | |
− | #Zkuste použít tento [https://create.arduino.cc/projecthub/muhammad-aqib/arduino-rgb-led-tutorial-fc003e kód] - není přímo na naše zařízení, upravte si ho :D
| + | |
− | | + | |
− | = Display =
| + | |
− | | + | |
− | Teď si ukážeme další výstupní zařízení - display.
| + | |
− | | + | |
− | Aby display správně fungoval, musíme udělat tyto věci
| + | |
− | | + | |
− | 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 (pokračuje na aktuálním řádku)
| + | |
− | lcd.printl(); - napíše na nový řádek displeje
| + | |
− | lcd.clear(); - smaže vše z displeje
| + | |
− | lcd.setCursor(0, 1); - nastaví kurzor na (znak, řádek)
| + | |
− | | + | |
− | == Zapojení ==
| + | |
− | | + | |
− | [https://randomnerdtutorials.com/esp32-esp8266-i2c-lcd-arduino-ide/ prozkoumejte!]
| + | |
− | | + | |
− | 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 ->
| + | |
− | | + | |
− | = Sériový vstup =
| + | |
− | | + | |
− | [http://jurasek.wz.cz/index.php/iot1/12-seriovy-io Sériový IO]
| + | |
− | | + | |
− | [http://jurasek.wz.cz/index.php/iot1/24-rgb-led RGB led ]
| + | |
Na začátek si zopakujeme věci, které jsme dělali včera.
Zkuste předělat tento úkol když umíte for cyklus.
Vyzkoušejte samostatné úkoly.
Udělejte samostatné úkoly.