4. Ruleta S Ř-duino

Ahoj, dneska si uděláme hru, která kromě programování a zapojení bude potřebovat i špetku vaší kreativity. Řeč je o ruletě. Hlavní myšlenkou bude vytvořit kolečko LEDek, kde každá LEDka bude mít svůj význam. Po stisknutí tlačítka pak postupně začnou problikávat po sobě jdoucí LEDky, než se světlo na jedné z nich zastaví a ta zabliká. Co každá LEDka znamená, už nechám na vaší představivosti.
Supplies
Tlačítko



Tlačítko je pasivní elektrická součástka, která po stisknutí spojí obvod a umožní průchod elektrického proudu skrz tlačítko. Můžeme si ho představit jako lávku na laně, která přemosťuje dvě cesty. Poté, co tlačítko stiskneme, "lávka" se sníží, a "cestující" (elektřina) tak po ní mohou přejít.
Pro lepší představu se můžete podívat na obrázek s bílým pozadím, černými čarami a kruhy. Toto je způsob, jak se tlačítko zobrazuje na schématech elektrických obvodů, a přijde mi, že celkem dobře popisuje jeho fungování.
Jedna věc, na kterou si dát pozor, je, že naše tlačítka mají čtyři nožičky, z nichž dvě jsou vždy propojené v páru. Na obrázku s černou a červenou čárou je naznačeno, které dvě nožičky jsou vždy propojeny, a chceme-li, aby nám proud procházel z červené čáry na černou, pak musíme tlačítko stisknout. Pomůckou nám může být, že vždy jsou propojené nožičky, které jsou přímo naproti sobě.
V sadě vždy dodáváme pět tlačítek s hmatníky (ty barevné čepičky), jež jdou na tlačítko nasadit pro pohodlnější používání.
Zapojení

Zapojte svoji stavebnici podle obrázku.
(šedé čáry pouze značí kudy vedou nožičky rezistorů)
Kód
Budeme používat ArduinoIDE. Než však začneme psát kód, budeme muset nastavit některé věci.
Nyní připojte desku k počítači, klikněte na nápis "Tools" na vrchní liště aplikace, vyberte "Board" a následně klikněte na "Arduino Uno". Dále opět klikněte na "Tools", poté na "Port" a vyberte z nabízených možností port, na kterém je připojena vaše deska. Pokud nevíte na kterém portu je vaše deska připojena tak se nebojte vyzkoušet všechny možnosti :D
A nyní již pojďme psát kód:
(Vše napsáno po "//" nebo vepsané mezi "/* */" je comment. To znamená že se nejedná o kód ale o text napsaný, aby vám pomohl kódu porozumět. Zkuste si je přečíst a pokusit se pochopit co se v kódu děje.)
// Přidáme knihovnu pro ovládání Arduina pro možnost použití kódu na platformě PlatformIO
#include <Arduino.h>
// Definujeme si proměnou uchovávající na které LEDce jsme
int aktPos = 2;
/*
* Tato metoda je zahájena jako první aby vše nastavila
*/
void setup(){
// Nastavíme si PINy LEDek na výstup
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
// Nastavíme sí PIN tlačítka na vstup
pinMode(8, INPUT);
// Rozsvítíme si první LEDku
digitalWrite(aktPos, HIGH);
}
/*
* Tato metoda je zahájena jako druhá a opakuje se do nekonečna
*/
void loop(){
// Pokud je tlačítko zmáčknuto tak se ruleta "roztočí"
if(digitalRead(8) == HIGH)
{
// Nastavíme si náhodnost
randomSeed(millis());
// Budeme se "točit" mezi LEDkami než uděláme 3 kolečka + náhodný počet LEDek menší nebo roven 3 kolečkám
for(int i = 1; i <= 18 + random(1, 19); i++)
{
// Zhasneme aktuální LEDku a rozsvítíme další v pořadí
digitalWrite(aktPos, LOW);
aktPos++;
if(aktPos > 7)
aktPos = 2;
digitalWrite(aktPos, HIGH);
delay(200);
}
// Poslední LEDka 3-krát blikne
for(int i = 1; i >= 3; i++)
{
digitalWrite(aktPos, HIGH);
delay(200);
digitalWrite(aktPos, LOW);
delay(200);
}
}
}
Nyní klikněte na "Upload" (ikona šipečky) a máte hotovo :D