pre začiatočníkov
Zábavná elektronika
vytvoril Ján Borz
- 5 Lekcií
- 10 hodín
- Máte otázky
Úvod – Zoznámenie s Arduino
ČO JE ARDUINO
Arduino je open-source platforma založená na mikrokontroléri ATMega od firmy Atmel a grafickom vývojovom prostredí, ktoré vychádza z prostredia Wiring (podobný projekt ako Arduino) a Processing (prostredie pre výuku programovania). Môže byť použité k vytváraniu samostatných interaktívnych zapojení alebo môže byť pripojené k softvéri na počítači
Arduino od svojho vzniku prešlo rôznymi vylepšeniami od najnižších verzií ako je mini, nano, mikro až po uno, mega 2560 a intel galileo.
ZÁKLADNÉ ARDUINA

ARDUINO UNO
Arduino Uno je v súčasnosti asi najčastejšie používaný typ desky. Na doske nájdeme procesor ATmega328 a už klasické USB.

ARDUINO NANO
Arduino Nano má narozdiel od arduina mini (najmenšieho arduina) aj usb port. Obsahuje miktro procesor ATmega328.

ARDUINO MEGA2560
Arduino Mega2560 má vzhľad predĺženého Arduina Una. Zväčšenie rozmerov prináša priestor pre väčšie a výkonnejšie čipy a tiež viac pinov.

ARDUINO LEONARDO
Arduino Leonardo dizajnovo nadväzuje na Arduino Uno no líši sa však čipom. Tým je ATmega32u4.
OSTATNÉ ARDUINA
OPERÁTORY A ZÁKLADNÉ PRÍKAZY
Operátory:
// - jednoriadkový komentár (program tieto komentáre ignoruje)
/* - začiatok viacriadkového komentára
*/ - koniec viacriadkového komentára
&& - and (a)
|| - or (alebo)
! - not (nie/nepravda)
Základné príkazy:
void setup() /*je to časť programu, ktorá pri spustení
{ ... } prebehne iba raz*/
void loop() /*je to časť programu, ktorá beží nepretržite
{ ... } dookola v uzavretej slučke*/
PRÍKAZY PRE DIGITÁLNE VSTUPY / VÝSTUPY
pinMode (číslo pinu, input) /*nasavenie pinu "číslo pinu"(namiesto "číslo pinu" zapíšeme konkrétne č.
pinu na vstup*/
pinMode (číslo pinu, output) //nastavenie pinu "číslo pinu" na výstup
digitalWrite (číslo pinu, HIGH) //nastavenie pinu "číslo pinu" na hodnotu "1" (zapnutie)
digitalWrite (číslo pinu, LOW) //nastavenie pinu "číslo pinu" na hodnotu "0" (vypnutie)
PRÍKAZY PRE ANALÓGOVÉ VSTUPY / VÝSTUPY
Analógové vstupy sú označené ako A0 - A5.
Analógové výstupy sú označené ako PWM "~" (nachádzajú sa medzi digitálnymi pinmi) konkrétne to sú piny - 11,10,9,6,5 a 3
analogWrite (číslo pinu, hodnota) /* "hodnota" môže byť v rozmedzí od 0 do 255, táto hodnota určuje dobu po ktorú bude na
pine 0V a dobu po ktorú bude na pine 5V */
analogWrite (3, 127) //tento príkaz urobý to aby približne 50% času bolo na pine 3 napätie 5V a 50% času zasa 0V
analogRead (čislo pinu) /*tento príkaz načíta hodnotu z pinu "číslo pinu" - napríklad ak by naňom bol pripojený
potenciometer načítal by hodnoty z neho*/
PRÍKAZY PRE RGB LEDPÁSIK
#include <Adafruit_NeoPixel.h> // pričlenenie knihovny
#define pocet "číslo" //definuje počet lediek v led pásiku (namiesto "číslo" zapíšeme počet lediek)
for (int i=255; i>=0; i--){ /* stmievanie všetchých LED súčasne; číslo 255 určuje senzitivitu svetla od ktorej sa
bude led postupne stmievať */
LED.setBrightness(i); // nastavenie jasu
delay(3); // spomalenie stmievania
LED.show(); // prenesenie dát do fyzických LED
}
SetColor("číslo od 0-250","číslo od 0-250","číslo od 0-250"); /*nastaví zvolenú farbu; prvé číslo je červená farba,
druhé zelená a tretie je červená, čím väčšie číslo tým bude daná farba intenzívnejšia*/
SetColor(255,0,0) //nastaví farbu na červenú
SetColor(0,255,0) //nastaví farbu na zelenú
SetColor(0,0,255) //nastaví farbu na modrú
SetColor(255,255,0) //nastaví farbu na žltú
SetColor(255,255,255) //nastaví farbu na bielu
PRÍKAZY PRE LCD DISPLAY
liquidCrystal(RS, E, D4, D5, D6, D7) /* nastavuje piny, ktoré Arduino používa na pripojenie k LCD
(RS, E, D4, D5, D6, D7 sú kolíky LCD)
na ovládanie LCD môžete použiť ktorýkoľvek z digitálnych pinov
!Táto funkcia musí byť umiestnená pred časťou programu "void setup ()" */
lcd.begin("počet stĺpcou","počet riadkov") /*určuje počet riadkov a stĺpcov na LCD
!Je potrebné tento príkaz umiestniť pred akúkoľvek funkciu v časti "void setup()" */
lcd.clear() //táto funkcia vymaže všetok text alebo údaje už zobrazené na LCD
lcd.home() //táto funkcia umiestni kurzor do ľavého horného rohu obrazovky
lcd.setCursor("stĺpec","riadok") //táto funkcia umiestni kurzor na ľubovoľné miesto na obrazovke
lcd.write() /*túto funkciu môžete použiť na zápis rôznych typov údajov na LCD, napríklad na čítanie z
teplotného snímača alebo na súradnice z modulu GPS */
lcd.print() //táto funkcia sa používa na tlač textu na LCD
lcd.rightToLeft() //táto funkcia nastavuje smer tlače textu na obrazovku sprava doľava (opačne)
lcd.display(); //zapne LCD display
lcd.noDisplay(); //vypne LCD display
GND - Sem sa pripája GND z Arduina.
Vcc - Sem sa pripája 5 V z Arduina.
Contrast adjustment - Kontrast. Ten je možné nastaviť potenciometrom.
RS - High - Data. Low - Inštrukcie. Napríklad na digitálny pin 12 Arduina.
R/W - Zapisovanie alebo ćítanie dát. Keďže obvykle budeme len zapisovať, pripojí sa sem GND.
E - Enable signal. Napríklad na digitálny pin 11 Arduina.
DB0 - DB7 - Data. V obvyklom štvorbitovom móde býva nezapojený.
- Led+ – Kladný pól podsvetlenia displeja. Niektoré displeje sú čitateľné aj bez podsvetlenia, iné nie.
Led- - Záporný pól podsvetlenia. Sem sa pripojí GND.

OSTATNÉ PRÍKAZY
float a = 12,345; //pridelí písmenu "a" hodnotu 12,345 serial.println((a)); // vypíše 12 serial.println((a)); // vypíše 12,345
Bajtové a bitové funkcie
bitRead(x, n) //z hodnoty x prečíta n-tý bit. Vráti hodnotu 0 alebo 1. bitSet(x, n) //do celočíselnej premennej x zapíše hodnotu 1 na bitovú pozíciu n bitClear(x, n) //do celočíselnej premennej x zapíše hodnotu 0 na bitovú pozíciu n bitWrite(x, n, b) //do celočíselnej premennej x zapíše bitovú hodnotu b na bitovú pozíciu n bit(n) //vypočíta celočíselné vyjadrenie bitovej hodnoty bit(0) je 1, bit(1) je 2, bit(2) je 4, ... lowByte(x) //vráti najnižší bajt celočíselného parametra x highByte(x) /*vráti najvyšší bajt parametra x, ak je to word, resp. jeho druhý najnižší bajt pre väčšie celočíselné dátové typy*/
Riadiace štruktúry
if (x > "ľubovoľné číslo") //ak bude x väčšie ako "ľubovoľné číslo" tak sa spustí prográm v zátvorkách { ... } else //inak sa spustí program v zátvorkách { ... }
Cykly
for (inicializácia; podmienka; výraz) //tento príkaz bude opakovane spúšťať príkazy v zátvorkách for (int i = 0; i < "ľubovoľné číslo"; i++) //ak sa program spustí "ľubovoľné číslo" (napr. 10x) tak sa vypne { príkazy; } while (podmienka) //ak je podmienka pravdivá, spustí program v zátvorkách, ak nie je, skončí
{
break; //ukončí okamžite vykonávanie cyklu a program nasleduje prvým príkazom za cyklom continue; //okamžite ukončí aktuálnu iteráciu a začne novú (oba príkazy je možné volať iba } //vo vnútri tela cyklu do //spustí program v zátvorkách a ak bude podmienka pri "while" pravdivá spustí sa znova { //(až kým nebude podmienka nepravdivá) ak nie vypne sa príkazy;
}
while (<podmienka) {príkazy;}
Funkcie času
millis("ľubovoľné číslo") /*táto funkcia sa používa napríklad, ak potrebujete čakať, ale nie je žiadúce prerušiť chod programu (namiesto "ľubovoľné číslo" si zvoľte dobu čakania v milisekundách.)*/
delay("ľubovoľné číslo") /*táto funkcia sa používa ak chceme prerušiť program na určitý čas; (namiesto "ľubovoľné číslo" si zvoľte dobu čakania v milisekundách.*/
Prerušenie
noInterrupts() //zakázanie prerušení
interrupts() //povolenie prerušení
attachInterrupt(0,"ľubovoľný text", LOW) //prerušenie nastane, pokiaľ je na pine logická nula
attachInterrupt(0,"ľubovoľný text", CHANGE) //prerušenie nastane pri zmene logickej úrovne
attachInterrupt(0,"ľubovoľný text", RISING) //prerušenie nastane pri zmene z LOW na HIGH
attachInterrupt(0,"ľubovoľný text", FALLING) //prerušenie nastane pri zmene z HIGH na LOW