Letní IoT: Den 1
Obsah |
Vývojové prostředí
Instalace a nastavení desky
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
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
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á