Letní IoT: Den 2

Z MiS
(Rozdíly mezi verzemi)
Přejít na: navigace, hledání
(Samostatný úkol)
m (Podmínka)
 
(Není zobrazeno 22 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 ==
+
# 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 =
+
 
+
[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 ]
+

Aktuální verze z 7. 4. 2021, 10:52


Obsah

Opakování

Na začátek si zopakujeme věci, které jsme dělali včera.

  1. Blikání LED diody s 2s prodlevou
  2. 3 LED diody, po 2 sekundách se bude střídat, která bude svítit (červená, žlutá, zelená, čer...)
  3. Vypsat do konzole všechna jednociferná čísla.

Cykly

Cykly — když potřebujeme něco udělat vícekrát.

Zkuste předělat tento úkol když umíte for cyklus.

  1. Vypsat do konzole všechna jednociferná čísla.

LED dioda

Postupné rozžíhání — postupně rožneme a zhasneme LED diodu.

Podmínka

Podmínka

Náhodné číslo

Náhodné číslo

Samostatné úkoly

Vlastní metoda

Vlastní metoda — s návratovým typem i bez něj.

Vyzkoušejte samostatné úkoly.

Tlačítko

Tlačítko — prostudujte zapojení a zápis kódu.

Udělejte samostatné úkoly.

Display

Display — další výstupní zařízení.

Závěrečné opakování

Na závěr dnešního dne si zkusme tento krátký testík.

Osobní nástroje
Jmenné prostory
Varianty
Akce
Výuka
Navigace
Nástroje