Upload
infrabatman
View
57
Download
0
Embed Size (px)
DESCRIPTION
Közkedvelt arduino magyar nyelvű bevezető kézikönyv.Cseh Róbert feldolgozásában
Citation preview
ARDUINOPROGRAMOZSI KZIKNYV
Budapest, 2011. TavIR
Brian W. Evans rsa alapjn
fordtotta, kiegsztette s frisstette Cseh Rbert
Arduino programozsi kziknyvAz eredeti angol nyelv kiadst rta s sszelltotta:
Brian W. Evans.
A magyar nyelv kiadst fordtotta, kiegsztette s tdolgozta:
Cseh Rbert ([email protected], www.tavir.hu).
A felhasznlt rsok szerzi: Massimo Banzi, Hernando Barragan, David Cuartielles,
Tom Igoe, Daniel Jolliffe, Todd Kurt, David Mellis, Cseh Rbert s sokan msok.
A felhasznlt fbb forrsmunkk:
http://www.arduino.cc
http://www.wiring.org.co
http://www.arduino.cc/en/Booklet/HomePage
http://cslibrary.stanford.edu/101/
http://avr.tavir.hu
Angol nyelv kiads els vltozata 2007. augusztusban kerlt publiklsra.
A magyar nyelv fordts Brian W. Evans: Arduino Programming Notebook (2008)
Second Edition alapjn 2008. oktberben kszlt el, majd tdolgozsra kerlt
2011. prilisban.
Ez a munka a Creative Commons Attribution-Share Alike 2.5 License alapjn kszlt.
A magyar nyelv kiads szerzje betartja s el is vrja az ezen licenszben foglaltakat.
A licensz rszletes felttelei megtekinthetek a http://creativecommons.org/licenses/by-sa/2.5/ oldalon,
illetve kivonata a knyv mellkletben is elolvashat.
TARTALOM
Tartalom...........................................................................................................................3
Elsz...............................................................................................................................5
Elsz a magyar kiadshoz.............................................................................................7
Arduino.............................................................................................................................8
Szerkezet - struktra........................................................................................................8
setup()................................................................................................................9
loop()..................................................................................................................9
Functions (funkcihvsok)................................................................................9
{} Kapcsos zrjel............................................................................................10
; Pontosvessz................................................................................................11
/*... */ Blokk-megjegyzs..................................................................................11
// Egysoros megjegyzs..................................................................................12
Vltozk..........................................................................................................................13
Vltozk deklarlsa.......................................................................................14
Vltoz terlet..................................................................................................14
Byte..................................................................................................................15
Int.....................................................................................................................15
Long.................................................................................................................15
Float.................................................................................................................15
Tmb................................................................................................................16
Aritmetika.........................................................................................................17
Komponens sszevons.................................................................................17
sszehasonlt opertorok.............................................................................18
Logikai mveletek............................................................................................18
Konstansok......................................................................................................18
Igaz/Hamis (True/False)..................................................................................19
Magas/Alacsony (High/Low)............................................................................19
Bemenet/Kimenet (Input/Output).....................................................................19
If utasts.........................................................................................................19
Folyamat kontrol.............................................................................................................21
If... Else............................................................................................................21
For...................................................................................................................21
While................................................................................................................22
Do...While........................................................................................................23
Ki- s bemenetek kezelse............................................................................................24
pinMode(pin, mode).........................................................................................24
digitalRead(pin)...............................................................................................24
digitalWrite(pin, value).....................................................................................25
analogRead(pin)..............................................................................................25
analogWrite(pin, value)....................................................................................25
Egyb utastsok............................................................................................................27
Delay(ms)........................................................................................................27
Millis()..............................................................................................................27
Min(x,y)............................................................................................................27
Max(x, y)..........................................................................................................27
randomSeed(seed)..........................................................................................27
random(max) random(min, max).....................................................................28
Serial.begin(rate).............................................................................................28
Serial.println(data)...........................................................................................28
Mellkletek.....................................................................................................................30
Digitlis kimenet..............................................................................................30
Digitlis bemenet.............................................................................................30
Digitlis kimenet..............................................................................................31
PWM kimenet..................................................................................................32
Potenciomter bemenet (Analg bemenet)....................................................32
Vltoztathat ellenlls a bemeneten.............................................................33
Szervomotor....................................................................................................34
AVR-Duino Uno kapcsolsi rajz......................................................................35
AVR-Duino Duemilanove kapcsolsi rajz........................................................36
CC BY-SA 2.5 licensz......................................................................................37
ELSZ
A kziknyv segtsgvel knnyen elsajtthatjuk a programozsi szerkezeteket, a
programrs alapjait. A mintk Arduino / AVR-Duino alaprendszerhez kszltek, de a
programozsi alapok ms nyelvek esetn is tmpontot adhatnak.
A knyv megrsakor a legfontosabb szempont az volt, hogy egy kezdknek szl
referenciagyjtemny lljon ezzel rendelkezsre. gy ezt egyszeren a felkeresett
honlapok, olvasott szakknyvek mellett lehessen hasznlni amolyan kziknyvknt;
oktatsban, szakmai mhelyekben is egyszeren kezelhet "puskaknt" lljon
rendelkezsre. A knyv felptsnek eldntsben befolysolt, hogy csak egyszer
mintk, feladatok kerljenek lersra s ezen programtredkek ugyanakkor mr
nllan is hasznlhatak legyenek. gy a ksbbiekben, ezek felhasznlsval s
tovbbfejlesztsvel az Arduino-t komplexebb alkalmazsokban is knnyen lehessen
hasznlni.
Az Arduino alapveten a C nyelv szerkezett kveti, abbl szrmazik. A kziknyv
lerja a C s Arduino nyelv legtbb kzs elemnek a szintaxist s pldkkal,
kdtredkekkel illusztrlja a hasznlatukat. A legtbb Arduino funkci egy alap
eljrsgyjtemnyben kerlt meghatrozsra (n. fggvny-knyvtrban vagy eljrs-
gyjtemnyben). Az alapeljrsok hasznlatnak ismertetse, kapcsolsi rajzokkal s
mintaprogramokkal kiegsztve a mellkletben tallhat. A knyv felptse,
sszelltsa sorn szmos helyen ksznetet kell mondani Dan OSulivan, Tom Igoe:
Physical Computing: Sensing and Controlling the Physical World with Computers
(2004) cm knyvnek; a programok jelzsei, bels hivatkozsok e knyv alapjn
kszltek.
Meg kell emlteni Massimo Banzi: Getting started with Arduino (2009) cm knyvt,
mely ms nven az "Arduino biblia". Ez a rvid knyvecske ennek elfutra.
Felhasznlsra kerlt a C nyelv programozk alapmveknt szmon tartott Brian W.
Kernighan, Dennis M. Ritchie: The C Programming Language (1988) rsrl, ahogyan
P. Prinz, T. Crawford: C in a Nutshell (2005) knyvekrl, melyek betekintst nyjtanak
az eredeti C nyelv szintaxisba.
Azonban nem szabad elfelejtkezni a kziknyv ltrejttt inspirl, a kollektv tudat s
kzponti honlap kzssgrl. Nlklk ez az sszefoglal knyv soha nem jtt volna
ltre. Az itteni mintkra plve a kzssg ltal bvl http://www.arduino.cc honlap
fruma, twitter-csatornja s jtsztere sem mkdhetne.
Brian W. Evans
ELSZ A MAGYAR KIADSHOZ
A magyar nyelv kiadst sok vvds elzte meg, az els vltozat publiklsa s
kiadsa csak szk krben trtnt meg. A visszajelzsek, a tovbbi krsek s ignyek
egy komplex, tbbktetes knyv kiadst vettettk elre. Azonban erre - a mindenki
ltal jl ismert okok miatt - nem kerlt sor. Ezek kzl kiemelkedik a 2448 ra
idkibvt kszlk korltozott mkdse, mely a 2010. mrcius 28-i* ksrletben s a
2011. mrcius 27-i prbn is csfosan leszerepelt. A mrskelt kudarcknt meglhet
2423 raszktst eredmnyezte a gp mkdse. gy a tovbbi ksrleti projektet
befejezve (megakadlyozand a 2420 vagy mg rosszabb eredmnyeket) - gy az
eddig elkszlt knyv inkbb kiadsra kerlt.
Remlhetleg hasznos segdeszkz lesz a mikrokontrolleres vilggal ismerkedk
rszre ezen kiads. Haszonnal forgatjk a most kezd-ismerkedktl kezdve a profi,
de 1-1 mintbl tletet mert felhasznlk is. Az egyedi mintk, fejlesztsek s nll
alkalmazsoknak a http://www.tavir.hu oldal mellett mkd AVR fejleszti kzssg
(http://avr.tavir.hu) is tgas teret biztost a megjelensre. Jelenleg ez Magyarorszgon,
magyar nyelven a legnagyobb szakmai AVR-specifikus kzssg.
Az angol nyelv knyv magyar vltozata nem jhetett volna ltre a TavIR-AVR frum
tagjainak unszolsai illetve segt javaslatai nlkl.
A knyv frisstsei, kiegsztsei s hasznos tippek rhetek el a TavIR oldalain:
http://avr.tavir.hu (A honlap maga)
http://www.twitter.com/taviravr (Twitter csatorna)
http://tavir.blog.hu (Blog, hrekkel)
http://www.facebook.com/taviravr (A kzssgi hl)
Ha a knyvben lert mintkat szeretnd kiprblni, alkalmazni, tovbbfejleszteni s
lben kiprblni: a hozzval fejlesztkszletek a http://avr.tavir.hu oldalon
megvsrolhatak. Vagy akr a tanfolyamon is szvesen ltlak.
Cseh Rbert
* Tli-nyri rallts
ARDUINO
Az Arduino egy egyszer elektronikus ramkrn s egy szoftverfejleszt krnyezetn
alapul nylt (physical computing) platform. Az Arduino programozsi nyelve a
C alapokon nyugv C++ implementci.
Az Arduino interaktv trgyak ksztsre hasznlhat, szmtalan kapcsolt vagy
szenzort bemenetknt olvasva; lmpk, motorok s egyb kimenetek kimerthetetlen
vlasztkt kpes vezrelni. Az Arduino projektek llhatnak nmagukban, vagy
klnbz szmtgpes programokkal kommunikcival elksztve.
SZERKEZET - STRUKTRA
Az Arduino programozsi nyelv szerkezete igen egyszer. A program kt f rszbl ll,
ezek szintaktikja a kvetkez:
void setup() {statements;
}void loop() {
statements;}
Ahol a setup() az elksztst, alapbelltsok inicializlst rja le, mg a loop() a
tnyleges mvelet-vgrehajt, fut rsz. Mindkt funkcira szksg van a programok
mkdshez.
A setup() funkcionlis rsz a vltozk deklarlst tartalmazza, melyet a program
legelejn kell megtenni. Ez az els funkcihvs, mely lefut a program elejn, de csak
egyetlen egyszer s csak ekkor. Itt kell meghatrozni pldul az egyes chip lbak
irnyt (pinMode utasts) vagy pldul a soros kommunikcit inicializlni.
A loop() funkci a kvetkez, melyben a felsorolt utastsok folyamatosan ismtldnek
- bemenetek olvassa, kimenetek belltsa, stb. Ez a funkci az Arduino
programmagja!
SETUP()
A setup() funkci a program indulsakor egyetlen egyszer fut le. Itt kerl a programba
pldul a kivezetsek inicializlsa, a soros port kezelse. A programba mindenkpp
be kell illeszteni ezt a funkcihvst, mg ha semmit sem vgznk benne - akkor is!void setup() {
pinMode(pin, OUTPUT); //sets the 'pin' as output}
A programban a pin (chip lb) kimenetknt kerl belltsra.
LOOP()
A setup() funkcihvs utn a loop() kvetkezik a programban. Ez a programrsz az
Arduino ramkrt mkdteti, vlaszol a kls krsekre, interakcit hajt vgre.void loop(){
digitalWrite(pin, HIGH); // turns 'pin' ondelay(l000); // pauses for one seconddigitalWrite(pin, LOW); // turns 'pin' offdelay(l000); // pauses for one second
}A fprogram a pin (kivlasztott chipkivezets) magas llapotba kerl, majd a program vr 1000 msec idt. Ezutn a chip kivezetse alacsony szintbe vlt, majd jra 1000 msec vrakozs kvetkezik. s utna ez ismtldik jra meg jra meg jra
FUNCTIONS (FUNKCIHVSOK)
A funkcihvs vagy funkciblokk nem ms, mint egy sszetartoz programrsz,
melyre akkor kerl a vezrls, mikor a blokkot a fprogrambl meghvjuk. A funkci-
program elnevezse s szerkezete:
void funkcionev()
A setup() illetve a loop() dediklt funkci szerept az elbbiekben mr krbejrtuk, a
tbbi beptett funkci a ksbbiekben kerl bemutatsra.
Sajt funkci-rutint is rhatunk, ennek pldul ismtld programrszek esetn van
jelentsge. (gy tlthatbb lesz a program, knnyebb a javtsokat kzben tartani s
cskken a ksz program mrete is.) A funkci-blokkokat hasznlat eltt deklarlni kell.
Itt meg kell mondani, hogy a funkci lefutsa utn valamilyen eredmnyt adjon-e
vissza a rutin (pl. int tpus eredmnyt, mely egy 1...65535 kzti szm lehet). Ha ilyen
rtk visszaadsra nincsen szksg - mert pldul csak egy interakci kezelsre s
nem szmolsra szolgl a funkciblokk - ez is megoldhat: ekkor a void kulcsszt kell
hasznlni. Ha a funkcihvsnak valamifle paramtert kell tadni, akkor azt zrjel
segtsgvel jellve tehetjk meg.
type functionName(parameters) {statements;
}
Itt a type a visszaadott rtk jellemzje, a parameters az tadott paramterek, a statements pedig a funkci bels programjnak utastsai.
A kvetkez egsz (integer vagy int) tpus fggvny, mely a delayVar() nvre hallgat -
s ksleltetsre hasznlatos. A mintban egy potenciomter llst olvassuk be s
ennek megfelel vrakozs trtnik a program futsa sorn. Ebben az esetben elszr
ltrehozunk egy helyileg hasznlt vltozt (v-vel jellve), majd a potenciomter
llsnak rtkt ebbe a vltozba beolvassuk. A potmter-lls rtke 01023 kzti
rtk lehet, melyet azutn nggyel osztunk. A vgeredmnyknt gy 0255 kzti
szmot kapunk - ezt adjuk vissza vgl a fprogramnak.
int delayVal(){int v; // create temporary variable 'v'
v = analogRead(pot); // read potentiometer valuev /= 4; // converts 0-1023 to 0-255return v; // return final value
}
{} KAPCSOS ZRJEL
A kapcsos zrjel definilja a funkciblokk kezdett illetve vgt. A zrjelek kz rjuk
pldul az utastsokat, ms funkcihvsokat illetve egyb utastsokat.type function() {
statements;}
A nyit zrjelet { mindenkppen valahol kvetnie kell egy zr } zrjelnek. Pr nlkl
nem maradhatnak! Ezek gyakran vezetnek misztikus hibkhoz, s nagyon nehz sok
esetben megtallni, hogy hol helyezkedik el a nyit s hol a zr zrjel. Prba
rendezni ket hosszabb program esetn igen nehz, gy a hiba nyomra bukkanni is
bonyolult lehet.
Az Arduino fejlesztkrnyezet a zrjelek prjnak kijellsben nagy segtsget nyjt,
ugyanis a nyit zrjelre kattintva a legvalsznbb prjt kiemeli.
; PONTOSVESSZ
A pontosvesszt kell hasznlnunk az utastsok utn, illetve a programrszek
elvlasztshoz. Ezt hasznljuk pldul a loop()-on bell is. Pldul:
int x = 13; // declares variable 'x' as the integer 13
Az x vltoz rtke: 13.
Fontos! Lefelejtve a sorok vgrl a pontosvesszt, a fordt hibazenetet fog adni. Az zenet ltalban nyilvnval, a fordt a hiba helyt is ltalban megnevezi. Ha
netn tlthatatlan vagy logiktlan hibazenetet kapunk, akkor az els dolog, amire
gyanakodjunk: lefelejtettnk valahol egy pontosvesszt. Ezt a hinyz pontosvessz-
helyet a legegyszerbben a fordt ltal jelzett sor kzelben tallhatjuk meg.
/*... */ BLOKK-MEGJEGYZS
A blokk-megjegyzsek vagy a tbb soros megjegyzsek olyan szveges rszek,
melyet a program fordtsa sorn figyelmen kvl kell hagyni. Ezek kzt van lehetsg
magyarzatokat, megjegyzseket beszrni a programba. Segtik megrteni a program
mkdst, ha pldul egy-kt v mlva elvesszk. rsmdban a legegyszerbb, ha
/* jellel kezdjk, s */ jellel fejezzk be. Egy pldn keresztl:
/* this is an enclosed block commentdon't forget the closing comment -they have to be balanced! */
Ez egy zrt blokk-megjegyzs nyit s zr jelekkel
rdemes megjegyzseket hasznlni, hisz a lefordtott programkdba nem kerlnek
bele, gy helyet sem foglaljk. A hibakeresst viszont nagymrtkben megknnytik,
fleg ha tbb hibt is hibt keresni kell
Fontos! Amg lehetsg van r rdemes egysoros megjegyzseket rni. Figyeljnk arra, hogy megjegyzsen bell msik megjegyzst rni nem tlsgosan szerencss.
// EGYSOROS MEGJEGYZS
Egysoros megjegyzs a // jellel kezddik s automatikusan a sor vgn soremelssel
r vget. Hasonlan a blokk-megjegyzshez viselkednek, azaz a fordts sorn mintha
ott sem lennnek.
// this is a single line comment
Ez egy egysoros megjegyzs
Az egysoros megjegyzseket gyakran vltozk utn hasznljuk, a magyarzathoz,
hogy milyen clt szolgl. gy ksbb knnyebb tltni a program mkdst. Nem is
kell emiatt kln sorba berni, az utasts utni terletre is lehetsg van.
VLTOZK
A vltozk szmrtkek trolsra szolglnak, melyeket a program futsa sorn
hasznlhatunk fel. Nevk is mutatja funkcijukat: a bennk trolt rtkek vltoznak.
Hasonl clt szolglnak az lland (szm)rtkre szolgl elnevezsek, ezeket
azonban konstansnak hvjuk (az rtkk sosem vltozik meg). A vltozkat hasznlat
eltt mindenkpp deklarlni kell s ha ismert/fontos a kiindulsi rtke, akkor azzal fel
is kell tlteni. A kvetkez mintban deklarlunk egy inputVariable vltozt, s a 2-es
analg lbon beolvashat rtket rendeljk hozz.
int inputVariable = 0; // declares a variable and// assigns value of 0
inputVariable = analogRead(2); // set variable to value of// analog pin 2
Az inputVariable maga a vltoz. Az els sorban deklarljuk, tpusnak egszrtket
mondunk (integer) s kezdeti rtkkel is feltltjk. A msodik sorban rtknek a 2.
Analg bemeneten mrhet rtket adjuk. Utna ezt brhol msutt a kdban mr
felhasznlhatjuk.
Ha egyszer a vltoznak a programban adtunk mr rtket, akkor ellenrizhetjk is
ezt, hogy valamely felttelnek megfelel - vagy akr szmolhatunk is vele. A
mintaprogramban hrom hasznos mveletet is megmutatok. Ha az inputValue rtke
kisebb, mint 100, akkor az rtkt 100-ra vltoztatom. Majd ezutn egy ksleltetst
hasznlok, ami az inputValue msec idtartamot jelenti. Ez az elz felttel alapjn
legalbb 100 msec.
if (inputVariable < 100) { // tests variable if less than 100 inputVariable = 100; // if true assigns value of 100 }delay(inputVariable); // uses variable as delay
}
Fontos! A vltozknak rdemes olyan nevet adni, ami utal a funkcijra. Ezltal a kd ttekinthet s olvashatbb lesz. A vltoznv lehet pldul a tiltSensor vagy a
pushButton - ezek segtenek a programoznak vagy brkinek, aki a programmal
foglalkozik, hogy megrtse melyik vltoz mit jelent. A vltoz neve lehet megnevezs
vagy rtk s a kd gy vlik ember ltal olvashatv. A fordtprogramnak szinte
mindegy, hogy ez rtelmes vagy vletlen bethalmaz. Azonban a vltozk nvadsra
nem hasznlhatak utastsnevek, funkcinevek, kulcsszavak.
VLTOZK DEKLARLSA
Minden vltozt deklarlni kell, mieltt hasznlatba vennnk. A vltozk deklarlsa
azt jelenti, hogy meg kell adnunk a tpust (pl. int, long, float...), a nevt s
opcionlisan a kezdrtkt. Ezt - termszetesen - elegend egyszer megtenni a
programban, a hasznlat sorn a vltoz rtkt - a meghatrozott tpus specifikciin
bell - szabadon vltoztathatjuk.
A kvetkez mintban az inputVariable vltozt int (vagyis egsz) tpusknt
deklarljuk, melynek kezd rtke nulla. Ez egyszeren lerhat:
int inputVariable = 0;
Az, hogy egy vltozt hol deklarlunk: befolysolja azt, hogy a vltoz hol
hasznlhatjuk.
VLTOZ TERLET
A vltozt deklarlhatjuk a program elejn (a void setup() sor eltt), a funkcikon bell
vagy valahol a program mkdsn bell, ahol ciklikus programvgrehajts van (pl. for
utasts esetn). A vltoz deklarcija meghatrozza a vltoz felhasznlhatsgt,
azaz hogy a program mely rszn hivatkozhatunk r.
A globlisan deklarlt vltozt a programon bell brhol hasznlhatjuk. Ehhez a
vltozt a setup() funkci eltt kell deklarlni.
Egy loklis vltozt - melyet funkciblokkban definilunk - csak ezen bell
hasznlhatunk. Ez azt jelenti, hogy lehetsgnk van kt vagy tbb esetben azonos
vltoznevet hasznlni a programon bell - ms-ms funkciblokkban. Az, hogy csak
egy funkci frjen hozz a vltozhoz, nagyban cskkenti a programozs sorn
elkvetett hibkat.
A kvetkez minta megmutatja, hogy hogyan deklarlhatak a klnbz tpus
vltozk, s ezek honnan rhetek el:
int value; // 'value' is visible// to any function
void setup() {// no setup needed
}
FLOAT
A lebegpontos (float) adattpus tizedes trtek trolsra is alkalmas. Sokkal nagyobb
szmtartomny lefedsre megfelel, mint az int (egsz) tpus. A float tpus rtke
-3.4028235E+38-tl -3.4028235E+38-ig terjed.
float someVariable = 3.14; // declares 'someVariable'// as a floating-point type
Fontos! A lebegpontos szmok nem mindig pontosak. A tizedes trtek trt rsze (is) 2-es szmrendszerben kerl brzolsra! A lebegpontos szmokkal val matematikai
mveletek is lassabbak, mintha az egsz (int) tpussal vgeznnk. Erre - fleg sok
szmolst tartalmaz program esetn - figyelni kell!
TMB
A tmb nem ms, mint rtkek/szmok gyjtemnye, melyeket az n. index szmn
(kb. sorban elfoglalt helye) rhet el. A tmb brmely elemt meg lehet gy cmezni. A
tmb indexelse a 0. azonostval kezddik. A tmbt - a tbbi vltozhoz hasonlan -
hasznlat eltt deklarlni kell s lehetsg szerint a kezdrtkkel feltlteni.
int myArray[] = {value0, value1, value2...}
Lthat, hogy a tmb deklarlsakor meg kell adni a tpust, mrett s opcionlisan
az elemeit:
int myArray[5]; // declares integer array w/ 6 positionsmyArray[3] = 10; // assigns the 4th index the value 10
Az els lpsben definilunk egy 6 elem tmbt, majd ennek 4. eleme a 10-es rtket kapja.
Kiolvasni a tmb adott elemt s ezt egy vltoz rtknek tadni az indexszmmal
azonostva lehetsges:
x = myArray[3]; // x now equals 10
A tmbket gyakran hasznljuk ciklusokban, ahol egy szmll nvekszik s ez
"vletlenl" a tmb index-azonostja is egyben. A kvetkez pldban egy tmb
segtsgvel LED fnyt vibrltatjuk. A ciklusban a szmll 0-rl indul s a tmb
0. elemt kiolvassuk (180) s ezt a PWM kimenetre (10) rjuk. 200 msec sznet utn a
tmb kvetkez elemvel folytatjuk.
int ledPin = 10;// LED on pin 10
byte flicker[] = {180, 30, 255, 200, 10, 90, 150, 60};// above array of 8
void setup() // different values{
pinMode(ledPin, OUTPUT); // sets OUTPUT pin}void loop() {
for(int i=0; i
Fontos! Vltoztpusok kztti konverzi/adattads lehetsges, pldul ha float tpusbl int-be msolunk: i (int) = 3.6 (float) eredmnyekppen: i = 3!
KOMPONENS SSZEVONS
Komponens sszevons (Compound assignments) nem ms, mint hogy az aritmetikai
mveletet s a vltozt rjuk le sszevontan. Ezeket legtbbszr n. hurkokban vagy
ciklikus utastssorokban hasznljuk. A leggyakoribb vltozataik:
x ++ // ugyanaz: x = x + 1x -- // ugyanaz: x = x - 1x += y // ugyanaz: x = x + yx -= y // ugyanaz: x = x - yx *= y // ugyanaz: x = x * yx /= y // ugyanaz: x = x / y
Fontos: Pldul x *= 3 nem jelent mst, minthogy az x rtkt szorozza hrommal.
SSZEHASONLT OPERTOROK
Egy vltoz s egy konstans sszehasonltsa gyakran merl fel a programok futsa
sorn. A felttel igaz vagy hamis volta esetn a programfuts ms-ms gon
folytatdik tovbb. A felttel tbbfle lehet, ebbl nhny plda:
x == y // x egyenl yx != y // x nemegyenl yx < y // x kisebb, mint yx > y // x nagyobb, mint yx = y // x nagyobb vagy egyenl, mint y
LOGIKAI MVELETEK
Logikai mveletek segtsgvel ltalban kt kifejezst hasonlthatunk ssze, melynek
eredmnye igaz (true) vagy hamis (false) lehet. Hromfle logikai mveletet
hasznlunk gyakran, ezek az AND (s), az OR (vagy) illetve a NOT (logikai nem).
Ezeket gyakran az if utastssal hasznljuk.
AND (logikai s):
if (x > 0 && x < 5) // igaz, ha mindkt felttel igaz
OR (logikai vagy):
if (x > 0 || y > 0) // igaz, ha valamelyik// kifejezs igaz
NOT (logikai nem):
if (!x > 0) // igaz, ha a kifejezs hamis
KONSTANSOK
Az Arduino nyelv szmos elre definilt jellemzt tartalmaz, melyek konstans tpus
vltozk. Ezek a program rsa sorn szabadon felhasznlhatak, gyrilag n.
csoportba vannak rendezve.
IGAZ/HAMIS (TRUE/FALSE)
Ezek a logikai konstansok logikai szinteket (is) jelentenek. Hamis (False)
meghatrozsa egyezik a 0-val, mg az Igaz (True) gyakran 1-knt definildik.
Azonban a logikai igaz brmely rtket felvehet a 0-t kivve! gy a logikai konstans
(Boolean) -1, 2 s akr a 200 mind True-nak definildik
if (b == TRUE); {doSomething;
}
MAGAS/ALACSONY (HIGH/LOW)
Ezek a konstansok a chip kivezetsek (angolul: pin) llapott jellemzik. Magas (High)
a lbon kzel a tpfeszltsg mrhet, mg alacsony (Low) esetn GND. Ha a
kivezets kimeneti llapott rjuk, akkor is a High/Low rtket hasznljuk, de amikor
visszaolvassuk, hogy milyen llapota van, akkor is High illetve Low rtket kapunk
vissza. A High logikai 1-knt definildik, a Low pedig logikai 0-knt.
digitalWrite(13, HIGH);
BEMENET/KIMENET (INPUT/OUTPUT)
Konstansokat hasznlva a pinMode() funkcival definilhatjuk, hogy egy chip kivezets
kimenet (output) vagy bemenet (input) legyen.
pinMode(13, OUTPUT);
IF UTASTS
Az If utasts segtsgvel ellenrizhetnk 1-1 felttelt, azaz hogy a felttel teljesl-e;
pldul egy analg bemenjel rtke meghalad-e egy szintet. Ha a felttel teljesl,
akkor a felttelt kvet kapcsos-zrjelben lev utastsok vgrehajtdnak; ha pedig
nem, akkor kihagysra kerlnek. Az utasts a kvetkezkppen nz ki:
if (someVariable ?? value) {doSomething;
}
A fenti mintban az sszehasonltsban lert someVariable-t hasonltjuk ssze egy
msik rtkkel, mely lehet vltoz vagy akr konstans is.
Fontos! vakodjunk a felttelben a = hasznlattl (pl. if x=10 ), amely az rtkadst reprezentlja s gy a felttel mindig igaz lesz! A helyes rsmd a ==
hasznlatt jelenti.
FOLYAMAT KONTROL
IF... ELSE
Az if...else utasts a feltteles elgazst testesti meg. Az else utni rsz a felttel
nemteljeslse esetn hajtdik vgre. Pldul: ha egy bemenet llapott vizsgljuk,
akkor magas llapot esetn trtnik valami, de ugyanakkor alacsony llapotban
vgrehajtand utastst is megadhatjuk gy. rsmdjban a kvetkezkppen nz ki:
if (inputPin == HIGH) {doThingA;}
else {doThingB;}
Az else rsz segtsgvel tbbszrs felttelt is lehet vizsglni, egyetlen
utastssorban. Lehetsg van az utastssorok vgrehajtsra, de ne felejtkezznk
el, hogy a nyitott zrjelet minden esetben be kell zrni a kvetkez felttel vizsglata
eltt! A halmozott felttel-vizsglat a kvetkezkpp rhat le:
if (inputPin < 500) {doThingA;}
else if (inputPin >= 1000) {doThingB;}
else {doThingC;}
FOR
A for utasts segtsgvel a kapcsos zrjelen belli utastsokat egy szmll
segtsgvel meghatrozott szmban, ismtlden hajtjuk vgre. A legtbbszr a
ciklusszmll nvekszik s egy hatrt elrve lp ki a ciklusbl. A for utastsnak
hrom paramtere van, pontosvesszvel elvlasztva:
for (initialization; condition; expression) {doSomething;}
Az initialization-kt jelzett rszben egy loklis vltozt definilunk, mely rtke ciklus
lefutsonknt vltozik. Mindannyiszor, ahnyszor a ciklus jra lefutna, a felttel (itt
condition-knt rva) ellenrzsre kerl. Ha a kifejezs igaz, akkor ciklusmag (kapcsos-
zrjelben lev utastshalmaz) vgrehajtdik, majd az ellenrzs kezddik jra.
Amikor a felttel hamiss vlik, a krforgs vget r.
A kvetkez pldban az egszknt definilt ciklusszmll (i) kiindulsi rtke 0; a
felttel, hogy rtke kisebb, mint 20; s ha ez igaz, akkor az rtke n 1-gyel s a
ciklusmag jra vgrehajtdik:
for (int i=0; i
{doSomething; // executes enclosed statementssomeVariable++; // increments variable by 1
}
DO...WHILE
A do-while ciklus hasonlt az elzekben lert while tpushoz. A kt megolds kzt a
klnbsg, hogy a ciklusvge-felttel ebben az esetben a ciklusmag utn van, azaz a
ciklusmag legalbb egyszer mindenkpp lefut!
do {doSomething; } while (someVariable ?? value);
A kvetkez plda sorn a readSensors() visszaadott rtkt az x vltozba rjuk,
majd 50 msec eltelte utn megvizsgljuk, hogy az x rtke kisebb-e, mint 100. Ekkor a
ciklus jra lefut.
do {x = readSensors(); // assigns the value of // readSensors() to xdelay(50); // pauses 50 milliseconds
} while (x < 100); // loops if x is less than 100
KI- S BEMENETEK KEZELSE
PINMODE(PIN, MODE)
A void setup() rutinban hasznljuk a pinMode utastst, hogy a chip adott kivezetse
be-/kimenet legyen.
pinMode(pin, OUTPUT); // sets 'pin' to output
A mikrokontroller digitlis kivezetsei alapesetben bemenetknt vannak konfigurlva,
nem szksges kln ezt megtenni.
A bemeneteken chipen bell egy-egy kb. 20..80 kohm felhz-ellenlls van beptve,
melyek ki/bekapcsolhatak. Ha a lbak bemenetre vannak lltva, akkor a lbra val
kirssal kapcsolhatak be a felhz-ellenllsok:
pinMode(pin, INPUT); // set 'pin' to inputdigitalWrite(pin, HIGH); // turn on pullup resistors
A felhz-ellenllsok ki/bekapcsolsa ezesetben gy viselkedik, mintha egy kapcsolt
be-/kikapcsolnnk. Fontos megjegyezni, hogy a kirs nem vltoztatja meg a kivezets
adatirnyt, csak a felhz-ellenllst kapcsolja ki/be!
Ha a kivezets kimenetknt (output) lett belltva, akkor az alacsony impedancis
kivezetsknt viselkedik. Ez azt jelenti, hogy kb. 40 mA rammal kpes meghajtani az
ide csatlakoztatott ramkrt! Ez elegend LED meghajtsra (az ramkorltoz soros
ellenllsrl ne feledkezznk meg!), de kevs a legtbb rel, motor vagy szolenoid
meghajtsra!
A rvidzr, tl nagy ram tlterheli s tnkreteszi az ramkr ezen rszt, vagy akr
az egsz chipet is! A legtbb esetben a kivezetsek megvsa rdekben soros
220 ohm...1 kohm ellenlls beptse javasolt.
DIGITALREAD(PIN)
Az utasts segtsgvel a kivezets logikai alacsony vagy magas llapott olvashatjuk
be. Az eredmny High vagy Low lehet. A kivezets azonostja 0...13 (Arduino Mega
esetn: 0..53).
value = digitalRead(Pin); // sets 'value' equal to // the input pin
DIGITALWRITE(PIN, VALUE)
A kimenetek logikai magas (High) vagy logikai alacsony (Low) llapotban lehetnek
(azaz a kivezetst ki-/bekapcsolhatjuk). A kivezets azonostja 0..13 (Arduino Mega
esetn: 0..53).
digitalWrite(pin, HIGH); // sets 'pin' to high
A kvetkez pldban egy nyomgomb llapott olvashatjuk be, mely fggvnyben
az egyik digitlis kivezetsre kttt LED gyullad ki vagy alszik el.
int led = 13; // connect LED to pin 13int pin = 7; // connect pushbutton to pin 7int value = 0; // variable to store the read valuevoid setup(){
pinMode(led, OUTPUT); // sets pin 13 as outputpinMode(pin, INPUT); // sets pin 7 as input
}void loop() {
value = digitalRead(pin); // sets 'value' equal to // the input pindigitalWrite(led, value); // sets 'led' to the
} // button's value
ANALOGREAD(PIN)
Az analg kivezetseken lev feszltsget 10-bites (0...1023 tartomnyt lefed)
felbontsban olvashatjuk be az analogRead(pin) utastssal. Ez a funkci csak az
analg kivezetseken mkdik (0..5).
value = analogRead(pin); // sets 'value' equal to 'pin'
Fontos! Az analg kivezetsek klnbznek a digitlis kivezetsektl, gy - az Arduino projektben - nem hasznlhatak digitlis kimenetknt (ms nyelveken pl. C, Bascom-
AVR stb. van csak erre lehetsg).
ANALOGWRITE(PIN, VALUE)
Pszeudo-analg jelet n. PWM (impulzusszlessg modulci) segtsgvel az
Arduino egyes digitlis kivezetseire lehetsges kikldeni. Az jabb chippel
(ATMega168) felszerelt panelen ez a funkci a 3, 5, 6, 9, 10 s 11 jel digitlis
kivezetseken rhet el. Az ATMega8 chippel szerelt Arduino esetn ez csak a 9, 10
s 11 jel digitlis lbakon rhet el. A PWM rtkmegadsa trtnhet konstans vagy
vltoz segtsgvel is, ezek rtke 0..255 kzt lehet.
analogWrite(pin, value); // writes 'value' to analog 'pin'
Ha a PWM rke 0, akkor a kimeneten 0 V feszltsg mrhet, mg 255 esetn 5V. A
szls rtkek kztti rtk s a 0-5V feszltsg kzt egyenes arnyossg van. A
nagyobb rtk esetn azonos id alatt hosszabb ideig magas a kivezets szintje.
Pldul 64-es rtk esetn az idszelet 1/4-ben alacsony, 3/4-ben magas rtket
mrhetnk (tlagolt feszltsgszint kb. 1.25V), mg 128 esetn az id felben
alacsony, msik felben magas szintet mrhetnk (az tlag feszltsgszint 2.5V).
Ezt a funkcit a chip hardveresen biztostja, gy a kimeneten a ngyszgjelet
automatikusan generlja. Az analogWrite funkci hatsa a kikapcsolsig illetve a
kvetkez analogWrite() utastsig megmarad.
A kvetkez mintaprogramban beolvassuk az analg lbon lev jelet s a kapott rtk
1/4-vel hajtjuk meg a PWM lbat:
int led = 10; // LED with 220 resistor on pin 10 int pin = 0; // potentiometer on analog pin 0int value; // value for readingvoid setup(){} // no setup neededvoid loop(){
value = analogRead(pin); // sets 'value' equal to 'pin'value /= 4; // converts 0-1023 to 0-255analogWrite(led, value); // outputs PWM signal to led
}
EGYB UTASTSOK
DELAY(MS)
A delay() utasts segtsgvel a programban megadott ms milisec-nyi vrakozst
lehet beiktatni. Ha 1000 ms-t runk, az 1 sec vrakozst jelent.
delay(l000); // waits for one second
MILLIS()
A milis() utastssal krdezhetjk le a bekapcsols ta eltelt idt msec egysgben.
value = millis(); // sets 'value' equal to millis()
Fontos! Az eltelt id szmllja kb. 9 rnknt tlcsordul s nullzdik!
MIN(X,Y)
Kt szmrtk kzl a kisebb rtket adja vissza (fggetlen az adattpustl).
value = min(value, 100); // sets 'value' to the smaller of // 'value' or 100, ensuring that // it never gets above 100.
MAX(X, Y)
Kt szmrtk kzl a nagyobbat adja eredmnyl. Mkdse hasonl a Min()
fggvnyhez.
value = max(value, 100); // sets 'value' to the larger of // 'value' or 100, ensuring that // it is at least 100.
RANDOMSEED(SEED)
Kezdrtk belltsa, illetve kezdpont a random() fggvny mkdshez.
randomSeed(value); // sets 'value' as the random seed
Az Arduino nyelvben (s a legtbb mikrokontrolleres alkalmazsban) nem lehetsges
valdi vletlen szmot ltrehozni. A kezdrtk segt mg vletlenebb belltani a
vletlen szm generlst. Erre lehetsg van a milis() szmrtk vagy az analg
bemeneten lev rtk az analogRead() funkcival val beolvassval.
RANDOM(MAX) RANDOM(MIN, MAX)
A random() funkcihvs segtsgvel egy vletlenszer rtket kapunk vissza a
megadott min s max rtkek kztt.
value = random(100, 200); // sets 'value' to a random // number between 100-200
Fontos! Ezt a funkcit a randomSeed() utasts utn hasznlhatjuk csak.A kvetkez mintaprogram vletlen szmot hoz ltre 0...255 kzt, s ezt a PWM
kimenetre kldi.
int randNumber; // variable to store the random valueint led = 10; // LED with 220 resistor on pin 10void setup() {} // no setup neededvoid loop(){
randomSeed(millis()); // sets millis() as seedrandNumber = random(255); // random number from 0-255analogWrite(led, randNumber); // outputs PWM signaldelay(500); // pauses for half a second
}
SERIAL.BEGIN(RATE)
A soros kommunikci megkezdsekor a kommunikcis sebessget deklarlni kell. A
legelterjedtebb a 9600 bps, de a soros kommunikci 150...115.200 bps (sorosport
illetve RS-485) illetve 300..960.000 bps (USB sorosport) lehet.
void setup() {Serial.begin(9600); // opens serial port
} // sets data rate to 9600 bps
Fontos! Amikor a soros kommunikci megkezddik, a 0 (Rx) illetve 1 (Tx) digitlis kivezetsek ki-/bemenetknt nem, csak soros kommunikcis csatornaknt
hasznlhatak!
SERIAL.PRINTLN(DATA)
A Serial.println(data) utasts segtsgvek a data adatsort a sorosporton kikldjk. Az
adatsor vgt soremels+kocsivissza jel (kb. Enter) zrja. Az utasts mkdse
megegyezik a serial.print() utastssal, csak terminlprogram segtsgvel az elbbi
knyebben olvashat.
Serial.println(analogValue); // sends the value of // 'analogValue'
Fontos! A serial.print() s a serial.println() utastsnak szmos paramtere ltezik mg, mely ismertetse meghaladja a knyv kereteit. Ezt rszletesen a
http://www.arduino.cc honlapon lehet megtallni.
A kvetkez egyszer plda az egyik analg bemenet rtkeit olvassa s
msodpercenknt kldi a sorosporton t a PC fel.
void setup() {Serial.begin(9600); // sets serial to 9600bps
}void loop(){Serial.println(analogRead(0)); // sends analog valuedelay(1000); // pauses for 1 second}
MELLKLETEK
DIGITLIS KIMENET
A mikroelektronikban az, ami brmely programozsi nyelvben a "Hello world!"
program - az itt egy kivezetsre kttt LED kigyjtsa. A legegyszerbb az Arduino 13-
as digitlis kivezetsre kttt LED kihasznlsa. A mintaprogramban ennek egy
msodperces idkz felgyjtst valstjuk meg. Az ellenllst mindenkpp ptsk
be, ha LED-et ktnk be (A 13-as digitlis kivezetsre gyrilag bekttt LED eltt az
ellenlls beptsre kerlt). Az ellenlls rtke 5V tpfeszltsg esetn
220..680 ohm kz essen.
int ledPin = 13; // LED on digital pin 13void setup() // run once{
pinMode(ledPin, OUTPUT); // sets pin 13 as output }void loop() // run over and over again{
digitalWrite(ledPin,HIGH); // turns the LED ondelay(1000); // pauses for 1 seconddigitalWrite(ledPin,LOW); // turns the LED offdelay(1000); // pauses for 1 second
}
DIGITLIS BEMENET
Ez a legegyszerbb formja a digitlis bemeneten lev jel rzkelsnek. A kapcsol
nyitott illetve zrt llst a segtsgvel beolvashatjuk. A pldban egyszer kapcsol
vagy nyomgomb kerl a 2-es kivezetsre. Ha a kapcsol zrt lls, akkor a
kimeneten (13-as kivezets) lev LED kigyullad.
int ledPin = 13; // output pin for the LEDint inPin = 2; // input pin (for a switch)void setup(){
pinMode(ledPin, OUTPUT); // declare LED as outputpinMode(inPin, INPUT); // declare switch as input
}void loop() {
if (digitalRead(inPin) == HIGH) // check if input is HIGH {digitalWrite(ledPin, HIGH); // turns the LED ondelay(1000); // pause for 1 seconddigitalWrite(ledPin, LOW); // turns the LED offdelay(1000); // pause for 1 second}
}
DIGITLIS KIMENET
Nhny esetben szksg lehet a kivezets ltal biztostott 40 mA-t meghalad ram
biztostsra. Ekkor a legegyszerbb tranzisztorral, vagy MOSFET segtsgvel
kapcsolni a nagyobb ramot. A kvetkez mintban a MOSFET segtsgvel 5 sec
idnknt be- majd kikapcsolunk egy motort.
Fontos! Az brn a motorral prhuzamosan egy vddida tallhat. m ha a terhels nem induktv (pldul izzlmpa), akkor elhagyhat.
int outPin = 5; // output pin for the MOSFETvoid setup() {pinMode(outPin, OUTPUT); // sets pin5 as output}void loop() {
POTENCIOMTER BEMENET (ANALG BEMENET)
Potenciomtert hasznlva az Arduino rendszerben - ez gyakorlatilag az ATMega chip
analog-digital bemenetre csatlakozik - a vltoztathat ellenlls ltal leosztott
feszltsget kapjuk meg a bemeneten. A beolvasott rtk 0..1023 kz esik. A
kvetkez mintban a potmterrel a LED villogsi frekvencijt szablyozhatjuk.
int potPin = 0; // input pin for the potentiometer intledPin = 13; // output pin for the LEDvoid setup() { pinMode(ledPin, OUTPUT); // declare ledPin as OUTPUT }void loop(){ digitalWrite(ledPin, HIGH); // turns ledPin on delay(analogRead(potPin)); // pause program digitalWrite(ledPin, LOW); // turns ledPin off delay(analogRead(potPin)); // pause program}
VLTOZTATHAT ELLENLLS A BEMENETEN
Vltoztathat ellenlls - pldul a CdS alap fotoellenlls, termisztor, nylsmr
blyeg, stb. - rtke megmrhet az analg bemenet segtsgvel. A pldban az
analg rtket beolvasva vrakozsi idt szablyozunk vele. Ez a LED kivilgosodsa
s elsttedse kztti idt befolysolja.
int ledPin = 9; // PWM pin for the LEDint analogPin = 0; // variable resistor on analog pin 0void setup(){} // no setup neededvoid loop() { for (int i=0; i
analogWrite(ledPin, i); // sets brightess level to i delay(delayVaK)); // gets time value and pause } for (int i=255; i>=0; i--) // descending value for i { analogWrite(ledPin, i); // sets brightess level to i delay(delayVaK)); // gets time value and pause } }
int (delayVaK) { int v; // create temporary variable v = analogRead(analogPin); // read analog value v /= 8; // convert 0-1024 to 0-128 return v; // returns final value}
SZERVOMOTOR
A hobbi szervomotorok nll, beptett meghajt-egysggel rendelkeznek, mely
segtsgvel 180 fokos elfordulsban lehet a kitrst szablyozni. Ehhez 20 msec-
enknti impuzus kiadsa szksges. A mintaprogramban 10170 fok elfordulst
valstunk meg, majd ugyanennek ellenkez irnyt is vgigjrja a motor.int servoPin = 2; // servo connected to digital pin 2int myAngle; // angle of the servo roughly 0-180int pulseWidth; // servoPulse function variablevoid setup() { pinMode(servoPin, OUTPUT); // sets pin 2 as output }void servoPulse(int servoPin, int myAngle) { pulseWidth = (myAngle * 10) + 600; //determines delay digitalWrite(servoPin, HIGH); //set servo high delayMicroseconds(pulseWidth); //microsecond pause digitalWrite(servoPin, LOW); //set servo low }void loop() {
// servo starts at 10 deg and rotates to 170 deg for (myAngle=10; myAngle
servoPulse(servoPin, myAngle); // send pin and angle delay(20); // refresh cycle }
// servo starts at 170 deg and rotates to 10 deg for (myAngle=170; myAngle>=10; myAngle--) { servoPulse(servoPin, myAngle);// send pin and angle delay(20); // refresh cycle
}}
AVR-DUINO UNO KAPCSOLSI RAJZ
AVR-DUINO DUEMILANOVE KAPCSOLSI RAJZ
CC BY-SA 2.5 LICENSZ
Nevezd meg! - gy add tovbb! 2.5 ltalnos (CC BY-SA 2.5) licensz kivonat
A kvetkezket teheted a mvel:
Szabadon msolhatod, terjesztheted, bemutathatod s eladhatod a mvet
Szrmazkos mveket (feldolgozsokat) hozhatsz ltre
Az albbi felttelekkel:
Nevezd meg! - A szerz, fordt vagy egyb rendelkez jogosult ltal meghatrozott mdon fel kell tntetned a mhz kapcsold informcikat (pl. a szerz, fordt, tdolgoz, illusztrtor nevt vagy lnevt, a M cmt).gy add tovbb! - Ha megvltoztatod, talaktod, feldolgozod ezt a mvet, az gy ltrejtt alkotst csak a jelenlegivel megegyez licenc alatt terjesztheted.
Az albbiak figyelembevtelvel:
Elengeds: A szerzi jogok tulajdonosnak rsbeli elzetes engedlyvel brmelyik fenti feltteltl eltrhetsz.
Kzkincs: Ha a munkban brmely elemre a public domain jogkr vonatkozik, ezt a sttuszt - a public domain joglls rszre - a jelen jogi konstrukci nem brlja fell.
Ms jogok: A kvetkez, s egyb jogokat a licenc semmiben nem befolysolja:
A szerz szemlyhez fzd jogai
Ms szemlyeknek a mvet vagy a m hasznlatt rint jogai, mint pldul a szemlyisgi jogok vagy az adatvdelmi jogok.
Jelzs: Brmilyen felhasznls vagy terjeszts esetn egyrtelmen jelezned kell msok fel ezen m licencfeltteleit.
A licensz rszletes felttelei megtekinthetek:
http://creativecommons.org/licenses/by-sa/2.5/ oldalon.
TartalomElszElsz a magyar kiadshozArduinoSzerkezet - struktrasetup()loop()Functions (funkcihvsok){} Kapcsos zrjel; Pontosvessz/*... */ Blokk-megjegyzs// Egysoros megjegyzs
VltozkVltozk deklarlsaVltoz terletByteIntLongFloatTmbAritmetikaKomponens sszevonssszehasonlt opertorokLogikai mveletekKonstansokIgaz/Hamis (True/False)Magas/Alacsony (High/Low)Bemenet/Kimenet (Input/Output)If utasts
Folyamat kontrolIf... ElseForWhileDo...While
Ki- s bemenetek kezelsepinMode(pin, mode)digitalRead(pin)digitalWrite(pin, value)analogRead(pin)analogWrite(pin, value)
Egyb utastsokDelay(ms)Millis()Min(x,y)Max(x, y)randomSeed(seed)random(max) random(min, max)Serial.begin(rate)Serial.println(data)
MellkletekDigitlis kimenetDigitlis bemenetDigitlis kimenetPWM kimenetPotenciomter bemenet (Analg bemenet)Vltoztathat ellenlls a bemenetenSzervomotorAVR-Duino Uno kapcsolsi rajzAVR-Duino Duemilanove kapcsolsi rajzCC BY-SA 2.5 licensz