Letní IoT: Den 2

Z MiS
(Rozdíly mezi verzemi)
Přejít na: navigace, hledání
(Cykly)
(Cykly)
Řádka 14: Řádka 14:
 
[[ Letní IoT : Cykly ]]
 
[[ Letní IoT : Cykly ]]
  
Cykly nám slouží k tomu, že se něco opakuje dokud není něco splněno...
+
[[ Letní IoT : Cykly # For cyklus | For cyklus ]]
 
+
 
+
== For cyklus ==
+
 
+
for(int i = 0; i < 10; i++)
+
{
+
  ...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
+
můžeme dát také
+
 
+
for(int i = 10; i > 1; i--)
+
{
+
  ...kód...
+
}
+
 
+
V některých případech se to může hodit
+
 
+
== Samostatný úkol ==
+
# Vypište (Serial.println()) čísla od 0 do 10 (se sekundovou prodlevou)
+
# 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 =
 
= LEDka =

Verze z 16. 8. 2020, 10:32


Obsah

Opakování

Na začátek si zopakujeme věci, co jsme dělali včera

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


Cykly

Letní IoT : Cykly

For cyklus

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);

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

  1. LEDka s postupně rozsvítí a pak postupně zhasne
  2. 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á
  3. LEDka 5× blikne (5s) a pak 3 s počká (for cyklus)
    1. 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()?

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

  1. Vytvoř metodu, co na 3 s rozsvítí ledku.
  2. Vytvoř metodu, co 10× vypíše "blik"
  3. Vytvoř metodu, co 3× vypíše zadané slovo a zabliká při tom


Tlačítko

Tlačítko

Samostatné úkoly

  1. Když se zmačkne tlačítko, rozsvítí se modrá LEDka za 3 sekundy
  2. Ž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í

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

  1. Napište na display své jméno
  2. Napište na display své jméno a pod to "Hrajeme si s IoT"
  3. 5 sekund bude na displeji Vaše jméno a dalších 5 s tam bude "Hrajeme si s IoT"
  4. Prozkoumejte projekty knihovny (Soubor -> Příklady ->
Osobní nástroje
Jmenné prostory
Varianty
Akce
Výuka
Navigace
Nástroje