Letní IoT: Den 2

Z MiS
(Rozdíly mezi verzemi)
Přejít na: navigace, hledání
(Display)
Řádka 173: Řádka 173:
 
  lcd.backlight(); - rožne se podsvícení
 
  lcd.backlight(); - rožne se podsvícení
 
  lcd.noBacklight(); - zhasne se podsvícení
 
  lcd.noBacklight(); - zhasne se podsvícení
  lcd.print(); - napíše na display (pokračuje na aktuálním řádku)
+
  lcd.print(); - napíše na display
lcd.printl(); - napíše na nový řádek displeje
+
 
  lcd.clear(); - smaže vše z displeje
 
  lcd.clear(); - smaže vše z displeje
 
  lcd.setCursor(0, 1); - nastaví kurzor na (znak, řádek)
 
  lcd.setCursor(0, 1); - nastaví kurzor na (znak, řádek)

Verze z 15. 7. 2020, 06:06


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

Cykly nám slouží k tomu, že se něco opakuje dokud není něco splněno...


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

  1. Vypište (Serial.println()) čísla od 0 do 10 (se sekundovou prodlevou)
  2. LEDka blikne (rozsvítí se na sekundu a pak zhasne na sekundu) a pak 3 sekundy nesvítí, 2 × blikne, 3 ... 10 × blikne
  3. 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

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