Letní IoT: Den 1
Řádka 1: | Řádka 1: | ||
[[Category:VSE]][[Category:Informatika]][[Category:Letní IoT]] | [[Category:VSE]][[Category:Informatika]][[Category:Letní IoT]] | ||
− | + | = Úvod = | |
=== Co je to IoT === | === Co je to IoT === |
Verze z 12. 7. 2020, 18:54
Obsah |
Úvod
Co je to IoT
začínáme s IoT Jak udělat z "blbé" věci tu "chytrou"
Základy elektrotechniky
Používáme zde USB napájení - tedy 5V - GPIO piny poskytují 3.3V (3V3). Než cokoliv zapojíte, tak si dobře zkontrolujte Základy elektrotechniky
Samostatné úkoly
POZOR, NEŽ ZAPNEŠ NAPÁJENÍ, ZAVOLEJ LEKTORA, ABY TI TO ZKONTROLOVAL
- Obvod s LEDkou (3V3 - rezistor - LEDka - GND)
- Obvod 2 LEDky sériově za sebou
- Obvod 2 LEDky paralelně
- Obvod LEDka s tlačítkem
Vývojové prostředí
Instalace a nastavení desky
- Návod na instalaci
- Instalační soubory: složka s instalačními soubory
Základní seznámení
Při vytvoření nového souboru tam máte dvě metody.
//zde se definují proměnné, importují knihovny, apod: void setup() { // put your setup code here, to run once: // zde napište to, co se má spustit na začátku: } void loop() { // put your main code here, to run repeatedly: // zde napište to, co má běžet pořád dokola: }
LEDka
Jako první věc si zkusíme rozsvítit a zhasnout LEDku.
Budeme potřebovat: Vývojovou desku, USB kabel, nepájivé pole, 2 LEDky (červenou a modrou), 5 káblíků, 2 rezistory
//obrázek//
//popis zapojení
#define nazev číslo GPIO pinu;
takže my budeme mít....
#define modra 18; #define cervena 17;
Toto dáme úplně na začátek dokumentu
Toto je ale jen jeden ze způsobů, můžete se setkat i s
#define modra 5; #define modra D1; const char modra = 5; char modra 5; int modra = D1; const char modra = 5;
Způsobů zápisu je více, každý má své výhody i nevýhody - #define zabírá méně místa, Dněco vidíte na desce...
v void setup() musíme říct, že je to výstupní
pinMode(modra, OUTPUT); pinMode(cervena, OUTPUT);
a teď nám jen rozsvítit a zhasnout LEDku
k tomu používáme metodu "digitalWrite(název, HIGH - zapnuto / LOW - vypnuto);"
digitalWrite(modra, HIGH); - modrá LEDka se rozsvítí digitalWrite(modra, LOW); - modrá LEDka zhasne
jelikož tyto věci trvají velmi krátkou dobu - lidské oko si toho nevšimne, dáme tam nějakou prodlevu k tomu se využívá delay(čas v milisekundách);
takže si kód doplníme o 2s prodlevy
digitalWrite(modra, HIGH); delay(2000); digitalWrite(modra, LOW); delay(2000);
Samostatný úkol
- modrá i červená LEDka se rožne na 3 s a pak 3 s nebudou svítit
- modrá ledka se rozsvítí na 4 s, pak zhasne a zároveň se rozsvítí červená ledka, ta zhasne po 4s a znovu se rozsvítí modrá
- modrá LEDka bude svítit 5 sekund a dvě a půl svítit nebude
Proměnné
Obecně
Jsou různé datové typy, my budeme využívat nejvíce:
- čísla - int
- text - String
- ano / ne - boolean
Práce s intem
int cislo; definuji proměnnou s názvem číslo ins cislo = 6; definuji proměnnou s názvem číslo a dám ji číslo 6 cislo = 8; proměnné cislo dám číslo 8 cislo++; proměnná cislo se zvýší o 1 cislo--; proměnná cislo se sníží o 1 delay(cislo); počká to tolik, kolik je to číslo (když 1000 - tak sekundu) delay(2 * cislo); počká to dvojnásobek
Práce s booleanem
boolean je datový typ, který má 2 stavy, 0 / 1, ne / ano, false / true
boolean splneno = true; boolean splneno = false; spleno = true; spleno = false spleno = !splneno; //nastaví se to na opak
Proměnná v delay
V některých případech máme prodlevu vždy stejnou a opakuje se nám tam vícekrát - když se rozhodneme, že ji změníme, tak to musíme celé přepisovat. To je vcelku nepraktické, co?... Takže využijeme proměnné. Chceme, aby se proměnná jmenovala prodleva a byla na 2 sekudny - tj. 2000 ms.
int prodleva = 2000;
Samostatný úkol
- Předělej úkoly na ledky za použití proměnné v delay();
- LEDka se rozsvítí na 1 s, 1 s nebude svítit, LEDka se rozsvítí na 2 s, 2 s nebude svítit, LEDka se rozsvítí na 3 s ... a tak dále
Sériový výstup
K vypsání do konzole se používá
Serial.print("Text"); - vypíše text v uvozovkách Serial.println(cislo); - na nový řádek vypíše proměnnou cislo
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
- 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
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
- 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á
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; }