pre začiatočníkov

Zábavná elektronika

vytvoril Ján Borz

Ú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)
n
a 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

 

  1. GND - Sem sa pripája GND z Arduina.
  2. Vcc - Sem sa pripája 5 V z Arduina.
  3. Contrast adjustment - Kontrast. Ten je možné nastaviť potenciometrom.
  4. RS - High - Data. Low - Inštrukcie.  Napríklad na digitálny pin 12 Arduina.
  5. R/W - Zapisovanie alebo ćítanie dát. Keďže obvykle budeme len zapisovať, pripojí sa sem GND.
  6. E - Enable signal.  Napríklad na digitálny pin 11 Arduina.
  7. DB0 - DB7 - Data. V obvyklom štvorbitovom móde býva nezapojený.
  8. Led+ – Kladný pól podsvetlenia displeja. Niektoré displeje sú čitateľné aj bez podsvetlenia, iné nie.
  9. 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

Tak začni už teraz

 

Tento projekt podporil program Techsoup Slovensko,
za finančnej podpory spoločností SAP a Haus de Stiftens.

 

vytvorilo boostello