|   |   | 
| (Není zobrazeno 23 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 - 1023 - 1024 možností
 | + |  | 
| − |   | + |  | 
| − | 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 sivlastní 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á tentopří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.