Letní IoT: Den 1

Z MiS
(Rozdíly mezi verzemi)
Přejít na: navigace, hledání
Řádka 53: Řádka 53:
 
//obrázek//
 
//obrázek//
  
//popis zapojení
+
[https://www.hranol.cz/storage/201102052109_led.png]
 +
 
 +
//popis zapojení//
  
 
  #define ''nazev'' ''číslo GPIO pinu'';
 
  #define ''nazev'' ''číslo GPIO pinu'';

Verze z 13. 7. 2020, 05:51


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

  1. Obvod s LEDkou (3V3 - rezistor - LEDka - GND)
  2. Obvod 2 LEDky sériově za sebou
  3. Obvod 2 LEDky paralelně
  4. Obvod LEDka s tlačítkem

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

[1]

//popis zapojení//

#define nazev číslo GPIO pinu;

Wemos pinout

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

  1. modrá i červená LEDka se rožne na 3 s a pak 3 s nebudou svítit
  2. 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á
  3. 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:

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

  1. Předělej úkoly na ledky za použití proměnné v delay();
  2. 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

  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á


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

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