Letní IoT: Den 2

Z MiS
(Rozdíly mezi verzemi)
Přejít na: navigace, hledání
m (→Podmínka)
 
(Není zobrazeno 20 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)"
+
−
 
+
−
 
+
−
= 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 (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