Letní IoT: Den 2

Z MiS
(Rozdíly mezi verzemi)
Přejít na: navigace, hledání
Řádka 100: Řádka 100:
  
  
== Vlastní metoda ==
+
= Vlastní metoda =
  
 
Již známe 2 metody ''void setup()'' a ''void loop()''
 
Již známe 2 metody ''void setup()'' a ''void loop()''
Řádka 136: Řádka 136:
 
  blikni(5);
 
  blikni(5);
  
=== Samostatný úkol ===
+
== Samostatný úkol ==
 
#Vytvoř metodu, co na 3 s rozsvítí ledku.
 
#Vytvoř metodu, co na 3 s rozsvítí ledku.
 
#Vytvoř metodu, co 10× vypíše "blik"
 
#Vytvoř metodu, co 10× vypíše "blik"
 
#Vytvoř metodu, co 3× vypíše zadané slovo a zabliká při tom
 
#Vytvoř metodu, co 3× vypíše zadané slovo a zabliká při tom
  
== RGB LEDka ==
+
= RGB LEDka =
  
=== Popis ===
+
== Popis ==
 
RGB LEDka má v sobě jakoby 3 LEDky - Red, Green, Blue
 
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]]
 
Má 3 katody (+) a jednu anodu (-) [[https://ampul.cz/image/cache/catalog/image/data/led-dioda-katoda-600x600-product_popup.jpg schéma]]
Řádka 151: Řádka 151:
  
 
Budeme chtít zelenou - tak přivedeme napětí ke katodě která je spojena přechodem pn emitujícím zelené světlo.
 
Budeme chtít zelenou - tak přivedeme napětí ke katodě která je spojena přechodem pn emitujícím zelené světlo.
=== Zapojení ===
+
== Zapojení ==
  
 
GPIO pin - rezistor - katoda  
 
GPIO pin - rezistor - katoda  
  
=== Příklady ===
+
== Příklady ==
  
 
  #define red ...
 
  #define red ...
Řádka 168: Řádka 168:
 
  digitalWrite(gre, HIGH);
 
  digitalWrite(gre, HIGH);
  
=== Samostatný úkol ===
+
== Samostatný úkol ==
 
#zelená barva
 
#zelená barva
 
#bílá barva
 
#bílá barva
Řádka 176: Řádka 176:
 
Moc kombinací není, co?
 
Moc kombinací není, co?
  
=== Příklady 2 ===
+
== Příklady 2 ==
  
 
Metodu analogWrite() již znáne,
 
Metodu analogWrite() již znáne,
Řádka 184: Řádka 184:
 
Víme, že [https://www.w3schools.com/colors/colors_rgb.asp RGB modul] je 0 - 255 a že metoda analogWrite() má rozsah 0 - 1023
 
Víme, že [https://www.w3schools.com/colors/colors_rgb.asp RGB modul] je 0 - 255 a že metoda analogWrite() má rozsah 0 - 1023
  
=== Samostatný úkol 2 ===
+
== Samostatný úkol 2 ==
 
Tak hurá do práce, zkuste!
 
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
 
#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 ==
+
= Display =
  
 
Teď si ukážeme další výstupní zařízení - display.
 
Teď si ukážeme další výstupní zařízení - display.
Řádka 216: Řádka 216:
 
  lcd.setCursor(0, 1); - nastaví kurzor na (znak, řádek)
 
  lcd.setCursor(0, 1); - nastaví kurzor na (znak, řádek)
  
=== Zapojení ===
+
== Zapojení ==
  
 
[https://randomnerdtutorials.com/esp32-esp8266-i2c-lcd-arduino-ide/ prozkoumejte!]
 
[https://randomnerdtutorials.com/esp32-esp8266-i2c-lcd-arduino-ide/ prozkoumejte!]
Řádka 226: Řádka 226:
 
Aby Vám to fungovalo, musíte mít knihovnu v počítači.
 
Aby Vám to fungovalo, musíte mít knihovnu v počítači.
  
=== Samostatný úkol ===
+
== Samostatný úkol ==
 
# Napište na display své jméno
 
# Napište na display své jméno
 
# Napište na display své jméno a pod to "Hrajeme si s IoT"
 
# Napište na display své jméno a pod to "Hrajeme si s IoT"
Řádka 232: Řádka 232:
 
# Prozkoumejte projekty knihovny (Soubor -> Příklady ->  
 
# Prozkoumejte projekty knihovny (Soubor -> Příklady ->  
  
== BMP280 ==
+
= BMP280 =
  
 
Teď nic nebudu psát, zkuste sami zjistit, co to je za zařízení.
 
Teď nic nebudu psát, zkuste sami zjistit, co to je za zařízení.

Verze z 13. 7. 2020, 17:54


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 - 1024

takže, chceme rozsvítit LEDku napůl jen - analogWrite(ledka, 512);

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. 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á
  2. 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: "
  3. 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()?


Tlačítko

Tlačítko


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

RGB LEDka

Popis

RGB LEDka má v sobě jakoby 3 LEDky - Red, Green, Blue Má 3 katody (+) a jednu anodu (-) [schéma]

Abychom ji mohli rozsvítit do námi požadované barvy, musíme něco vědět o [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

  1. zelená barva
  2. bílá barva
  3. Vaše oblíbená barva
  4. č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 RGB modul je 0 - 255 a že metoda analogWrite() má rozsah 0 - 1023

Samostatný úkol 2

Tak hurá do práce, zkuste!

  1. Zkuste použít tento 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í

prozkoumejte!

Tento display komunikuje přes I2C a na napájení má 3V3.

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

BMP280

Teď nic nebudu psát, zkuste sami zjistit, co to je za zařízení.

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