Download as pdf or txt
Download as pdf or txt
You are on page 1of 0

ARDUINO

PROGRAMOZSI KZIKNYV
Budapest, 2011. TavIR
Brian W. Evans rsa alapjn
fordtotta, kie!s"tette !s frisstette #se$ R%&ert
Arduino programozsi kziknyv
Az eredeti angol nyelv kiadst rta s sszelltotta:
Brian W. Evans.
A magyar nyelv kiadst fordtotta, kiegsztette s tdolgozta:
Cse !"#ert $%sero#ert&tavir.', (((.tavir.').
A felasznlt rsok szerz*i: +assimo Banzi, ,ernando Barragan, -avid C'artielles,
.om /goe, -aniel 0olliffe, .odd 1'rt, -avid +ellis, Cse !"#ert s sokan msok.
A felasznlt f*## forrsm'nkk:
tt2:33(((.ard'ino.%%
tt2:33(((.(iring.org.%o
tt2:33(((.ard'ino.%%3en3Booklet3,ome4age
tt2:33%sli#rary.stanford.ed'35653
tt2:33avr.tavir.'
Angol nyelv kiads els* vltozata 7668. a'g'szt's#an ker9lt 2'#liklsra.
A magyar nyelv fordts Brian W. Evans: Arduino Programming Notebook (2008)
Second Edition ala2:n 766;. okt"#er#en ksz9lt el, ma:d tdolgozsra ker9lt
7655. 2rilis#an.
Ez a m'nka a reative ommons Attribution!S"are A#ike 2.$ %icense ala2:n ksz9lt.
A magyar nyelv kiads szerz*:e #etart:a s el is vr:a az ezen li%ensz#en foglaltakat.
A li%ensz rszletes felttelei megtekintet*ek a tt2:33%reative%ommons.org3li%enses3#y<sa37.=3 oldalon,
illetve kivonata a knyv mellklet#en is elolvasat".
TARTALOM
.artalom...........................................................................................................................>
El*sz"...............................................................................................................................=
El*sz" a magyar kiadsoz.............................................................................................8
Ard'ino.............................................................................................................................;
?zerkezet < str'kt@ra........................................................................................................;
set'2$)................................................................................................................A
loo2$)..................................................................................................................A
B'n%tions $f'nk%i"vsok)................................................................................A
CD 1a2%sos zr":el............................................................................................56
E 4ontosvessz*................................................................................................55
3F... F3 Blokk<meg:egyzs..................................................................................55
33 Egysoros meg:egyzs..................................................................................57
Gltoz"k..........................................................................................................................5>
Gltoz"k deklarlsa.......................................................................................5H
Gltoz" ter9let..................................................................................................5H
Byte..................................................................................................................5=
/nt.....................................................................................................................5=
Iong.................................................................................................................5=
Bloat.................................................................................................................5=
.m#................................................................................................................5J
Aritmetika.........................................................................................................58
1om2onens sszevons.................................................................................58
Ksszeasonlt" o2ertorok.............................................................................5;
Iogikai mveletek............................................................................................5;
1onstansok......................................................................................................5;
/gaz3,amis $.r'e3Balse)..................................................................................5A
+agas3Ala%sony $,ig3Io()............................................................................5A
Bemenet31imenet $/n2't3L't2't).....................................................................5A
/f 'tasts.........................................................................................................5A
Bolyamat kontrol.............................................................................................................75
/f... Else............................................................................................................75
Bor...................................................................................................................75
Wile................................................................................................................77
-o...Wile........................................................................................................7>
1i< s #emenetek kezelse............................................................................................7H
2in+ode$2in, mode).........................................................................................7H
digital!ead$2in)...............................................................................................7H
digitalWrite$2in, val'e).....................................................................................7=
analog!ead$2in)..............................................................................................7=
analogWrite$2in, val'e)....................................................................................7=
Egy# 'tastsok............................................................................................................78
-elay$ms)........................................................................................................78
+illis$)..............................................................................................................78
+in$M,y)............................................................................................................78
+aM$M, y)..........................................................................................................78
random?eed$seed)..........................................................................................78
random$maM) random$min, maM).....................................................................7;
?erial.#egin$rate).............................................................................................7;
?erial.2rintln$data)...........................................................................................7;
+ellkletek.....................................................................................................................>6
-igitlis kimenet..............................................................................................>6
-igitlis #emenet.............................................................................................>6
-igitlis kimenet..............................................................................................>5
4W+ kimenet..................................................................................................>7
4oten%iomter #emenet $Anal"g #emenet)....................................................>7
Gltoztatat" ellenlls a #emeneten.............................................................>>
?zervomotor....................................................................................................>H
AG!<-'ino Nno ka2%solsi ra:z......................................................................>=
AG!<-'ino -'emilanove ka2%solsi ra:z........................................................>J
CC BO<?A 7.= li%ensz......................................................................................>8
ELSZ
A kziknyv segtsgvel knnyen elsa:ttat:'k a 2rogramozsi szerkezeteket, a
2rogramrs ala2:ait. A mintk Ard'ino 3 AG!<-'ino ala2rendszerez ksz9ltek, de a
2rogramozsi ala2ok ms nyelvek esetn is tm2ontot adatnak.
A knyv megrsakor a legfontosa## szem2ont az volt, ogy egy kezd*knek sz"l"
referen%iagy:temny ll:on ezzel rendelkezsre. Pgy ezt egyszeren a felkeresett
onla2ok, olvasott szakknyvek mellett leessen asznlni amolyan kziknyvkntE
oktats#an, szakmai melyek#en is egyszeren kezelet* Q2'skakntQ ll:on
rendelkezsre. A knyv fel2tsnek eldnts#en #efolysolt, ogy %sak egyszer
mintk, feladatok ker9l:enek lersra s ezen 2rogramtredkek 'gyanakkor mr
nll"an is asznlat"ak legyenek. Pgy a ks*##iek#en, ezek felasznlsval s
tov##fe:lesztsvel az Ard'ino<t kom2leMe## alkalmazsok#an is knnyen leessen
asznlni.
Az Ard'ino ala2vet*en a C nyelv szerkezett kveti, a##"l szrmazik. A kziknyv
ler:a a C s Ard'ino nyelv legt## kzs elemnek a szintaMist s 2ldkkal,
k"dtredkekkel ill'sztrl:a a asznlat'kat. A legt## Ard'ino f'nk%i" egy ala2
el:rsgy:temny#en ker9lt megatrozsra $@n. f9ggvny<knyvtr#an vagy el:rs<
gy:temny#en). Az ala2el:rsok asznlatnak ismertetse, ka2%solsi ra:zokkal s
minta2rogramokkal kiegsztve a mellklet#en tallat". A knyv fel2tse,
sszelltsa sorn szmos elyen ksznetet kell mondani &an '(Su#ivan) *om +goe:
P",sica# om-uting: Sensing and ontro##ing t"e P",sica# Wor#d .it" om-uters
(200/) %m knyvnekE a 2rogramok :elzsei, #els* ivatkozsok e knyv ala2:n
ksz9ltek.
+eg kell emlteni 0assimo Ban1i: 2etting started .it" Arduino (2003) %m knyvt,
mely ms nven az QArd'ino #i#liaQ. Ez a rvid knyve%ske ennek el*f'tra.
Belasznlsra ker9lt a C nyelv 2rogramoz"k ala2mveknt szmon tartott Brian W.
4ernig"an) &ennis 0. 5itc"ie: *"e Programming %anguage (6388) rsr"l, aogyan
P. Prin1) *. ra.7ord: in a Nuts"e## (200$) knyvekr*l, melyek #etekintst ny@:tanak
az eredeti C nyelv szintaMis#a.
Azon#an nem sza#ad elfele:tkezni a kziknyv ltre:ttt ins2irl", a kollektv t'dat s
kz2onti onla2 kzssgr*l. Rlk9l9k ez az sszefoglal" knyv soa nem :tt volna
ltre. Az itteni mintkra 29lve a kzssg ltal #*v9l* "tt-:88....arduino.cc onla2
f"r'ma, t(itter<%satorn:a s :tsz"tere sem mkdetne.
Brian W. Evans
ELSZ A MAGYAR KIADSHOZ
A magyar nyelv kiadst sok vv"ds el*zte meg, az els* vltozat 2'#liklsa s
kiadsa %sak szk kr#en trtnt meg. A vissza:elzsek, a tov##i krsek s ignyek
egy kom2leM, t##ktetes knyv kiadst vettettk el*re. Azon#an erre < a mindenki
ltal :"l ismert okok miatt < nem ker9lt sor. Ezek kz9l kiemelkedik a 7HH; "ra
id*ki#*vt* ksz9lk korltozott mkdse, mely a 7656. mr%i's 7;<iF ksrlet#en s a
7655. mr%i's 78<i 2r"#n is %s@fosan leszere2elt. A mrskelt k'dar%knt meglet*
7H7> "raszktst eredmnyezte a g2 mkdse. Pgy a tov##i ksrleti 2ro:ektet
#efe:ezve $megakadlyozand" a 7H76 vagy mg rossza## eredmnyeket) < gy az
eddig elksz9lt knyv ink## kiadsra ker9lt.
!emlet*leg asznos segdeszkz lesz a mikrokontrolleres vilggal ismerked*k
rszre ezen kiads. ,aszonnal forgat:k a most kezd*<ismerked*kt*l kezdve a 2rofi,
de 5<5 mint#"l tletet mert* felasznl"k is. Az egyedi mintk, fe:lesztsek s nll"
alkalmazsoknak a "tt-:88....tavir."u oldal mellett mkd* AG! fe:leszt*i kzssg
$"tt-:88avr.tavir."u) is tgas teret #iztost a meg:elensre. 0elenleg ez +agyarorszgon,
magyar nyelven a legnagyo## szakmai AG!<s2e%ifik's kzssg.
Az angol nyelv knyv magyar vltozata nem :etett volna ltre a .av/!<AG! f"r'm
tag:ainak 'nszolsai illetve segt* :avaslatai nlk9l.
A knyv frisstsei, kiegsztsei s asznos ti22ek ret*ek el a .av/! oldalain:
tt2:33avr.tavir.' $A onla2 maga)
tt2:33(((.t(itter.%om3taviravr $.(itter %satorna)
tt2:33tavir.#log.' $Blog, rekkel)
tt2:33(((.fa%e#ook.%om3taviravr $A kzssgi l")
,a a knyv#en lert mintkat szeretnd ki2r"#lni, alkalmazni, tov##fe:leszteni s
l*#en ki2r"#lni: a ozzval" fe:leszt*kszletek a tt2:33avr.tavir.' oldalon
megvsrolat"ak. Gagy akr a tanfolyamon is szvesen ltlak.
Cse !"#ert
$%sero#ert&tavir.'.')
F .li<nyri "rallts
ARDUINO
Az Ard'ino egy egyszer elektronik's ramkrn s egy szoftverfe:leszt* krnyezetn
ala2'l" nylt $2ysi%al %om2'ting) 2latform. Az Ard'ino 2rogramozsi nyelve a
C ala2okon ny'gv" CSS im2lement%i".
Az Ard'ino interaktv trgyak ksztsre asznlat", szmtalan ka2%sol"t vagy
szenzort #emenetknt olvasvaE lm2k, motorok s egy# kimenetek kimertetetlen
vlasztkt k2es vezrelni. Az Ard'ino 2ro:ektek llatnak nmag'k#an, vagy
k9ln#z* szmt"g2es 2rogramokkal komm'nik%i"val elksztve.
SZERKEZET - STRUKTRA
Az Ard'ino 2rogramozsi nyelv szerkezete igen egyszer. A 2rogram kt f* rsz#*l ll,
ezek szintaktik:a a kvetkez*:
void setup() {
statements;
}
void loop() {
statements;
}
Aol a setu-() az el*ksztst, ala2#elltsok ini%ializlst r:a le, mg a #oo-() a
tnyleges mvelet<vgrea:t", f't" rsz. +indkt f'nk%i"ra sz9ksg van a 2rogramok
mkdsez.
A setu-() f'nk%ionlis rsz a vltoz"k deklarlst tartalmazza, melyet a 2rogram
legele:n kell megtenni. Ez az els* f'nk%i"vs, mely lef't a 2rogram ele:n, de %sak
egyetlen egyszer s %sak ekkor. /tt kell megatrozni 2ld'l az egyes %i2 l#ak
irnyt $-in0ode 'tasts) vagy 2ld'l a soros komm'nik%i"t ini%ializlni.
A #oo-() f'nk%i" a kvetkez*, mely#en a felsorolt 'tastsok folyamatosan ismtl*dnek
< #emenetek olvassa, kimenetek #elltsa, st#. Ez a f'nk%i" az Ard'ino
2rogrammag:aT
SETUP()
A setu-() f'nk%i" a 2rogram ind'lsakor egyetlen egyszer f't le. /tt ker9l a 2rogram#a
2ld'l a kivezetsek ini%ializlsa, a soros 2ort kezelse. A 2rogram#a mindenk22
#e kell illeszteni ezt a f'nk%i"vst, mg a semmit sem vgz9nk #enne < akkor isT
void setup() {
pinMode(pin, OUTPUT); //sets the 'pin' as output
}
A 2rogram#an a -in $%i2 l#) kimenetknt ker9l #elltsra.
LOOP()
A setu-() f'nk%i"vs 'tn a #oo-() kvetkezik a 2rogram#an. Ez a 2rogramrsz az
Ard'ino ramkrt mkdteti, vlaszol a k9ls* krsekre, interak%i"t a:t vgre.
void loop(){
digitalWrite(pin, !"); // turns 'pin' on
dela#(l$$$); // pauses %or one se&ond
digitalWrite(pin, 'OW); // turns 'pin' o%%
dela#(l$$$); // pauses %or one se&ond
}
A f*2rogram a -in $kivlasztott %i2kivezets) magas lla2ot#a ker9l, ma:d a 2rogram vr
5666 mse% id*t. Ez'tn a %i2 kivezetse ala%sony szint#e vlt, ma:d @:ra 5666 mse%
vrakozs kvetkezik. Us 'tna ez ismtl*dik @:ra meg @:ra meg @:raV
FUNCTIONS (FUNKCIHVSOK)
A f'nk%i"vs vagy f'nk%i"#lokk nem ms, mint egy sszetartoz" 2rogramrsz,
melyre akkor ker9l a vezrls, mikor a #lokkot a f*2rogram#"l megv:'k. A f'nk%i"<
2rogram elnevezse s szerkezete:
void %un(&ionev()
A setu-() illetve a #oo-() dediklt f'nk%i" szere2t az el*##iek#en mr kr#e:rt'k, a
t##i #e2tett f'nk%i" a ks*##iek#en ker9l #em'tatsra.
?a:t f'nk%i"<r'tint is rat'nk, ennek 2ld'l ismtl*d* 2rogramrszek esetn van
:elent*sge. $Pgy tltat"## lesz a 2rogram, knnye## a :avtsokat kz#en tartani s
%skken a ksz 2rogram mrete is.) A f'nk%i"<#lokkokat asznlat el*tt deklarlni kell.
/tt meg kell mondani, ogy a f'nk%i" lef'tsa 'tn valamilyen eredmnyt ad:on<e
vissza a r'tin $2l. int t2's@ eredmnyt, mely egy 5...J==>= kzti szm leet). ,a ilyen
rtk visszaadsra nin%sen sz9ksg < mert 2ld'l %sak egy interak%i" kezelsre s
nem szmolsra szolgl a f'nk%i"#lokk < ez is megoldat": ekkor a void k'l%ssz"t kell
asznlni. ,a a f'nk%i"vsnak valamifle 2aramtert kell tadni, akkor azt zr":el
segtsgvel :ellve teet:9k meg.
t#pe %un&tion)ame(parameters) {
statements;
}
/tt a t,-e a visszaadott rtk :ellemz*:e, a -arameters az tadott 2aramterek, a statements
2edig a f'nk%i" #els* 2rogram:nak 'tastsai.
A kvetkez* egsz $integer vagy int) t2's@ f9ggvny, mely a de#a,9ar() nvre allgat <
s ksleltetsre asznlatos. A mint#an egy 2oten%iomter llst olvass'k #e s
ennek megfelel* vrakozs trtnik a 2rogram f'tsa sorn. E##en az eset#en el*szr
ltreoz'nk egy elyileg asznlt vltoz"t $v<vel :ellve), ma:d a 2oten%iomter
llsnak rtkt e##e a vltoz"#a #eolvass'k. A 2otmter<lls rtke 6V567> kzti
rtk leet, melyet az'tn nggyel oszt'nk. A vgeredmnyknt gy 6V7== kzti
szmot ka2'nk < ezt ad:'k vissza vg9l a f*2rogramnak.
int dela#*al(){
int v; // &reate temporar# varia+le 'v'
v , analog-ead(pot); // read potentiometer value
v /, .; // &onverts $/0$12 to $/133
return v; // return %inal value
}
!" KAPCSOS ZR#EL
A ka2%sos zr":el definil:a a f'nk%i"#lokk kezdett illetve vgt. A zr":elek kz r:'k
2ld'l az 'tastsokat, ms f'nk%i"vsokat illetve egy# 'tastsokat.
t#pe %un&tion() {
statements;
}
A nyit" zr":elet C mindenk22en valaol kvetnie kell egy zr" D zr":elnek. 4r nlk9l
nem maradatnakT Ezek gyakran vezetnek misztik's i#koz, s nagyon nez sok
eset#en megtallni, ogy ol elyezkedik el a nyit" s ol a zr" zr":el. 4r#a
rendezni *ket ossza## 2rogram esetn igen nez, gy a i#a nyomra #'kkanni is
#onyol'lt leet.
Az Ard'ino fe:leszt*krnyezet a zr":elek 2r:nak ki:ells#en nagy segtsget ny@:t,
'gyanis a nyit" zr":elre kattintva a legval"szn## 2r:t kiemeli.
$ PONTOSVESSZ
A 2ontosvessz*t kell asznln'nk az 'tastsok 'tn, illetve a 2rogramrszek
elvlasztsoz. Ezt asznl:'k 2ld'l a #oo-()<on #el9l is. 4ld'l:
int 4 , 02; // de&lares varia+le '4' as the integer 02
Az WMX vltoz" rtke: 5>.
Fontos! Iefele:tve a sorok vgr*l a 2ontosvessz*t, a fordt" i#a9zenetet fog adni.
Az 9zenet ltal#an nyilvnval", a fordt" a i#a elyt is ltal#an megnevezi. ,a
netn tltatatlan vagy logiktlan i#a9zenetet ka2'nk, akkor az els* dolog, amire
gyanakod:'nk: lefele:tett9nk valaol egy 2ontosvessz*t. Ezt a inyz" 2ontosvessz*<
elyet a legegyszer##en a fordt" ltal :elzett sor kzel#en tallat:'k meg.
%&''' &% (LOKK-MEG#EGYZS
A #lokk<meg:egyzsek vagy a t## soros meg:egyzsek olyan szveges rszek,
melyet a 2rogram fordtsa sorn figyelmen kv9l kell agyni. Ezek kzt van leet*sg
magyarzatokat, meg:egyzseket #esz@rni a 2rogram#a. ?egtik megrteni a 2rogram
mkdst, a 2ld'l egy<kt v m@lva el*vessz9k. Prsm"d#an a legegyszer##, a
3F :ellel kezd:9k, s F3 :ellel fe:ezz9k #e. Egy 2ldn kereszt9l:
/5 this is an en&losed +lo&( &omment
don't %orget the &losing &omment /
the# have to +e +alan&ed6 5/
Ez egy zrt #lokk<meg:egyzs nyit" s zr" :elekkel
Urdemes meg:egyzseket asznlni, isz a lefordtott 2rogramk"d#a nem ker9lnek
#ele, gy elyet sem foglal:k. A i#akeresst viszont nagymrtk#en megknnytik,
f*leg a t## i#t is i#t keresni kellV
Fontos! Amg leet*sg van r rdemes egysoros meg:egyzseket rni. Bigyel:9nk
arra, ogy meg:egyzsen #el9l msik meg:egyzst rni nem t@lsgosan szeren%ss.
%% EGYSOROS MEG#EGYZS
Egysoros meg:egyzs a 33 :ellel kezd*dik s a'tomatik'san a sor vgn soremelssel
r vget. ,asonl"an a #lokk<meg:egyzsez viselkednek, azaz a fordts sorn minta
ott sem lennnek.
// this is a single line &omment
Ez egy egysoros meg:egyzs
Az egysoros meg:egyzseket gyakran vltoz"k 'tn asznl:'k, a magyarzatoz,
ogy milyen %lt szolgl. Pgy ks*## knnye## tltni a 2rogram mkdst. Rem is
kell emiatt k9ln sor#a #erni, az 'tasts 'tni ter9letre is leet*sg van.
VLTOZK
A vltoz"k szmrtkek trolsra szolglnak, melyeket a 2rogram f'tsa sorn
asznlat'nk fel. Rev9k is m'tat:a f'nk%i":'kat: a #enn9k trolt rtkek vltoznak.
,asonl" %lt szolglnak az lland" $szm)rtkre szolgl" elnevezsek, ezeket
azon#an konstansnak v:'k $az rtk9k sosem vltozik meg). A vltoz"kat asznlat
el*tt mindenk22 deklarlni kell s a ismert3fontos a kiind'lsi rtke, akkor azzal fel
is kell tlteni. A kvetkez* mint#an deklarl'nk egy in-ut9ariab#e vltoz"t, s a 7<es
anal"g l#on #eolvasat" rtket rendel:9k ozz.
int input*aria+le , $; // de&lares a varia+le and
// assigns value o% $
input*aria+le , analog-ead(1); // set varia+le to value o%
// analog pin 1
Az in-ut9ariab#e maga a vltoz". Az els* sor#an deklarl:'k, t2'snak egszrtket
mond'nk $integer) s kezdeti rtkkel is feltlt:9k. A msodik sor#an rtknek a 7.
Anal"g #emeneten mret* rtket ad:'k. Ntna ezt #rol ms'tt a k"d#an mr
felasznlat:'k.
,a egyszer a vltoz"nak a 2rogram#an adt'nk mr rtket, akkor ellen*rizet:9k is
ezt, ogy valamely felttelnek megfelel < vagy akr szmolat'nk is vele. A
minta2rogram#an rom asznos mveletet is megm'tatok. ,a az in-ut9a#ue rtke
kise##, mint 566, akkor az rtkt 566<ra vltoztatom. +a:d ez'tn egy ksleltetst
asznlok, ami az in-ut9a#ue mse% id*tartamot :elenti. Ez az el*z* felttel ala2:n
legal## 566 mse%.
i% (input*aria+le 7 0$$) { // tests varia+le i% less than 0$$
input*aria+le , 0$$; // i% true assigns value o% 0$$ }
dela#(input*aria+le); // uses varia+le as dela#
}
Fontos! A vltoz"knak rdemes olyan nevet adni, ami 'tal a f'nk%i":ra. Ezltal a k"d
ttekintet* s olvasat"## lesz. A vltoz"nv leet 2ld'l a ti#tSensor vagy a
-us"Button < ezek segtenek a 2rogramoz"nak vagy #rkinek, aki a 2rogrammal
foglalkozik, ogy megrtse melyik vltoz" mit :elent. A vltoz" neve leet megnevezs
vagy rtk s a k"d gy vlik em#er ltal olvasat"v. A fordt"2rogramnak szinte
mindegy, ogy ez rtelmes vagy vletlen #etalmaz. Azon#an a vltoz"k nvadsra
nem asznlat"ak 'tastsnevek, f'nk%i"nevek, k'l%sszavak.
VLTOZK DEKLARLSA
+inden vltoz"t deklarlni kell, miel*tt asznlat#a vennnk. A vltoz"k deklarlsa
azt :elenti, ogy meg kell adn'nk a t2'st $2l. int, long, float...), a nevt s
o2%ionlisan a kezd*rtkt. Ezt < termszetesen < elegend* egyszer megtenni a
2rogram#an, a asznlat sorn a vltoz" rtkt < a megatrozott t2's s2e%ifik%i"in
#el9l < sza#adon vltoztatat:'k.
A kvetkez* mint#an az in-ut9ariab#e vltoz"t int $vagyis egsz) t2's@knt
deklarl:'k, melynek kezd* rtke n'lla. Ez egyszeren lerat":
int input*aria+le , $;
Az, ogy egy vltoz"t ol deklarl'nk: #efolysol:a azt, ogy a vltoz" ol
asznlat:'k.
VLTOZ TER)LET
A vltoz"t deklarlat:'k a 2rogram ele:n $a void setu-() sor el*tt), a f'nk%i"kon #el9l
vagy valaol a 2rogram mkdsn #el9l, aol %iklik's 2rogramvgrea:ts van $2l. 7or
'tasts esetn). A vltoz" deklar%i":a megatrozza a vltoz" felasznlat"sgt,
azaz ogy a 2rogram mely rszn ivatkozat'nk r.
A glo#lisan deklarlt vltoz"t a 2rogramon #el9l #rol asznlat:'k. Eez a
vltoz"t a setu-() f'nk%i" el*tt kell deklarlni.
Egy loklis vltoz"t < melyet f'nk%i"#lokk#an definil'nk < %sak ezen #el9l
asznlat'nk. Ez azt :elenti, ogy leet*sg9nk van kt vagy t## eset#en azonos
vltoz"nevet asznlni a 2rogramon #el9l < ms<ms f'nk%i"#lokk#an. Az, ogy %sak
egy f'nk%i" fr:en ozz a vltoz"oz, nagy#an %skkenti a 2rogramozs sorn
elkvetett i#kat.
A kvetkez* minta megm'tat:a, ogy ogyan deklarlat"ak a k9ln#z* t2's@
vltoz"k, s ezek onnan ret*ek el:
int value; // 'value' is visi+le
// to an# %un&tion
void setup() {
// no setup needed
}
void loop() {
%or (int i,$; i71$;) // 'i' is onl# visi+le
{ // inside the %or/loop
i88;
}
%loat %; // '% is onl# visi+le
} // inside loop
(YTE
Byte t2's#an ;<#ites egsz szmrtket trolat'nk, azaz 6<7== kztti rtket veet
fel.
+#te some*aria+le , 09$; // de&lares 'some*aria+le'
// as a +#te t#pe
INT
Egsz vagy ms nven integer t2's@ vltoz"#an egsz szmot trolat'nk 5J #iten,
melynek rtke <>78J; s S>78J8 kz esik.
int some*aria+le , 03$$; // de&lares 'some*aria+le'
// as an integer t#pe
Fontos! Egsz t2's@ vltoz" esetn @n. t@l%sord'lssal is szmoln'nk kell. Ekkor a
legnagyo## rtk 'tn a legala%sonya##at ka2:'kT /lletve %skkentskor a legkise##
'tn a legnagyo##at. 4ld'l, a M Y >78J8 s eez ozzad'nk egyet $2rogram#an:
MYMS5 vagy MSS), akkor az eredmny: <>78J;T
LONG
B*vtett mret adatt2's az @n. long $long integer Z k#. ossz@ egsz). Az adatt2's
egsz szmok trolsra alkalmas H #yte $>7 #it) lefoglalsval. A trolat" szmrtk
7,5H8,H;>,JH8 s <7,5H8,H;>,JH; kz esik.
long some*aria+le , :$$$$; // de&lares 'some*aria+le'
// as a long t#pe
FLOAT
A le#eg*2ontos $float) adatt2's tizedes trtek trolsra is alkalmas. ?okkal nagyo##
szmtartomny lefedsre megfelel*, mint az int $egsz) t2's. A float t2's rtke
<>.H67;7>=ES>;<t"l <>.H67;7>=ES>;<ig ter:ed.
%loat some*aria+le , 2;0.; // de&lares 'some*aria+le'
// as a %loating/point t#pe
Fontos! A le#eg*2ontos szmok nem mindig 2ontosak. A tizedes trtek trt rsze $is)
7<es szmrendszer#en ker9l #rzolsraT A le#eg*2ontos szmokkal val" matematikai
mveletek is lassa##ak, minta az egsz $int) t2'ssal vgeznnk. Erre < f*leg sok
szmolst tartalmaz" 2rogram esetn < figyelni kellT
TM(
A tm# nem ms, mint rtkek3szmok gy:temnye, melyeket az @n. indeM szmn
$k#. sor#an elfoglalt elye) ret* el. A tm# #rmely elemt meg leet gy %mezni. A
tm# indeMelse a 6. azonost"val kezd*dik. A tm#t < a t##i vltoz"oz asonl"an <
asznlat el*tt deklarlni kell s leet*sg szerint a kezd*rtkkel feltlteni.
int m#<rra#=> , {value$, value0, value1;;;}
Itat", ogy a tm# deklarlsakor meg kell adni a t2'st, mrett s o2%ionlisan
az elemeit:
int m#<rra#=3>; // de&lares integer arra# ?/ @ positions
m#<rra#=2> , 0$; // assigns the .th inde4 the value 0$
Az els* l2s#en definil'nk egy J elem tm#t, ma:d ennek H. eleme a 56<es rtket ka2:a.
1iolvasni a tm# adott elemt s ezt egy vltoz" rtknek tadni az indeMszmmal
azonostva leetsges:
4 , m#<rra#=2>; // 4 no? eAuals 0$
A tm#ket gyakran asznl:'k %ikl'sok#an, aol egy szmll" nvekszik s ez
Qvletlen9lQ a tm# indeM<azonost":a is egy#en. A kvetkez* 2ld#an egy tm#
segtsgvel IE- fnyt vi#rltat:'k. A %ikl's#an a szmll" 6<r"l ind'l s a tm#
6. elemt kiolvass'k $5;6) s ezt a 4W+ kimenetre $56) r:'k. 766 mse% sz9net 'tn a
tm# kvetkez* elemvel folytat:'k.
int ledPin , 0$;
// 'BC on pin 0$
+#te %li&(er=> , {09$, 2$, 133, 1$$, 0$, :$, 03$, @$};
// a+ove arra# o% 9
void setup() // di%%erent values
{
pinMode(ledPin, OUTPUT); // sets OUTPUT pin
}
void loop()
{
%or(int i,$; i7D; i88) // loop eAuals num+er
{ // o% values in arra#
analogWrite(ledPin, %li&(er=i>);
// ?rite inde4 value
dela#(1$$); // pause 1$$ms
}
}
ARITMETIKA
?zmtani $aritmetikai) mveletek < 2ld'l az sszeads, kivons, szorzs, oszts <
szintn alkalmazat"ak a 2rogramozs sorn. Ezek rsm"d:a a kvetkez*:
# , # 8 2;
4 , 4 / D;
E , E 5 @;
r , r / 3;
A mvelet sorn fontos, ogy az adatt2'sok#an eltrs < leet*leg < ne legyen. A
megfelel* adatt2's kivlasztsa nagyon fontos, mert 2ld'l a A3H eredmnye 7, nem
2edig 7.7=. Ennek oka, ogy a vltoz"kat int $egsz) t2'sknt definilt'k. Ez azt is
:elenti, ogy @n. t@l%sord'ls $overflo() l2et fel, a az eredmny nagyo##, mint az
eredmny vltoz"t2's#an letrolat".
,a a vltoz"k < melyeken mveletet vgz9nk < eltr* t2's@ak, akkor a megenged*##
$nagyo## tartomnyt lefed*) atrozza meg a vgeredmny 2ontossgt. 4ld'l, a
az egyik szm 7#oat $le#eg*2ontos) t2's@, a msik int $egsz), akkor a 7#oat
$le#eg*2ontos) t2's@knt keletkezik az eredmny.
Az eredmny<vltoz" t2'snak legal## azt a t2'st kell vlasztani, ami#e az
eredmny #elefr. .'dni kell eez, ogy a vltoz" t@l%sord'lsa okoz3okozat<e
i#s eredmnyt. +atematikai, 2ontos mveletkor a 7#oat t2's definilsa :avasolt.
Giszont ennek ra a nagyo## 2rogramk"d s a ossza## id*t igny#evev* szmolsT
Fontos! Gltoz"t2'sok kztti konverzi"3adattads leetsges, 2ld'l a 7#oat
t2's#"l int<#e msol'nk: i (int) : ;.< (7#oat) eredmnyek22en: i : ;T
KOMPONENS SSZEVONS
1om2onens sszevons $Com2o'nd assignments) nem ms, mint ogy az aritmetikai
mveletet s a vltoz"t r:'k le sszevontan. Ezeket legt##szr @n. 'rkok#an vagy
%iklik's 'tastssorok#an asznl:'k. A leggyakori## vltozataik:
4 88 // ug#anaFG 4 , 4 8 0
4 // // ug#anaFG 4 , 4 / 0
4 8, # // ug#anaFG 4 , 4 8 #
4 /, # // ug#anaFG 4 , 4 / #
4 5, # // ug#anaFG 4 , 4 5 #
4 /, # // ug#anaFG 4 , 4 / #
Fontos: 4ld'l M FY > nem :elent mst, mintogy az M rtkt szorozza rommal.
SSZEHASONLT OPERTOROK
Egy vltoz" s egy konstans sszeasonltsa gyakran mer9l fel a 2rogramok f'tsa
sorn. A felttel igaz vagy amis volta esetn a 2rogramf'ts ms<ms gon
folytat"dik tov##. A felttel t##fle leet, e##*l nny 2lda:
4 ,, # // 4 eg#enlH #
4 6, # // 4 nemeg#enlH #
4 7 # // 4 (ise++, mint #
4 I # // 4 nag#o++, mint #
4 7, # // 4 (ise++ vag# eg#enlH, mint #
4 I, # // 4 nag#o++ vag# eg#enlH, mint #
LOGIKAI M*VELETEK
Iogikai mveletek segtsgvel ltal#an kt kife:ezst asonltat'nk ssze, melynek
eredmnye igaz $true) vagy amis $7a#se) leet. ,romfle logikai mveletet
asznl'nk gyakran, ezek az AN& $s), az '5 $vagy) illetve a N'* $logikai nem).
Ezeket gyakran az i7 'tastssal asznl:'k.
AN& $logikai s):
i% (4 I $ JJ 4 7 3) // igaF, ha mind(Kt %eltKtel igaF
'5 $logikai vagy):
i% (4 I $ LL # I $) // igaF, ha valamel#i(
// (i%eEeFKs igaF
N'* $logikai nem):
i% (64 I $) // igaF, ha a (i%eEeFKs hamis
KONSTANSOK
Az Ard'ino nyelv szmos el*re definilt :ellemz*t tartalmaz, melyek konstans t2's@
[vltoz"kX. Ezek a 2rogram rsa sorn sza#adon felasznlat"ak, gyrilag @n.
%so2ort#a vannak rendezve.
IGAZ%HAMIS (TRUE%FALSE)
Ezek a logikai konstansok logikai szinteket $is) :elentenek. ,amis $=a#se)
megatrozsa egyezik a 6<val, mg az /gaz $*rue) gyakran 5<knt definil"dik.
Azon#an a logikai igaz #rmely rtket felveet a 6<t kivveT Pgy a logikai konstans
$Boolean) <5, 7 s akr a 766 mind *rue!nak definil"dikV
i% (+ ,, T-UB); {
doMomething;
}
MAGAS%ALACSONY (HIGH%LO+)
Ezek a konstansok a %i2 kivezetsek $angol'l: 2in) lla2ott :ellemzik. +agas $ >ig")
a l#on kzel a t2fesz9ltsg mret*, mg ala%sony $%o.) esetn \R-. ,a a
kivezets kimeneti lla2ott r:'k, akkor is a >ig"8%o. rtket asznl:'k, de amikor
visszaolvass'k, ogy milyen lla2ota van, akkor is >ig" illetve %o. rtket ka2'nk
vissza. A >ig" logikai 5<knt definil"dik, a %o. 2edig logikai 6<knt.
digitalWrite(02, !");
(EMENET%KIMENET (INPUT%OUTPUT)
1onstansokat asznlva a -in0ode() f'nk%i"val definilat:'k, ogy egy %i2 kivezets
kimenet $out-ut) vagy #emenet $in-ut) legyen.
pinMode(02, OUTPUT);
IF UTASTS
Az +7 'tasts segtsgvel ellen*rizet9nk 5<5 felttelt, azaz ogy a felttel tel:es9l<eE
2ld'l egy anal"g #emen*:el rtke megalad<e egy szintet. ,a a felttel tel:es9l,
akkor a felttelt kvet* ka2%sos<zr":el#en lev* 'tastsok vgrea:t"dnakE a 2edig
nem, akkor kiagysra ker9lnek. Az 'tasts a kvetkez*k22en nz ki:
i% (some*aria+le NN value) {
doMomething;
}
A fenti mint#an az sszeasonlts#an lert some9ariab#e<t asonlt:'k ssze egy
msik rtkkel, mely leet vltoz" vagy akr konstans is.
Fontos! ]vakod:'nk a felttel#en a ^Y_ asznlatt"l $2l. i7 ?:60 @ ), amely az
rtkadst re2rezentl:a s gy a felttel mindig igaz leszT A elyes rsm"d a ^YY_
asznlatt :elenti.
FOLYAMAT KONTROL
IF''' ELSE
Az i7...e#se 'tasts a feltteles elgazst testesti meg. Az e#se 'tni rsz a felttel
nemtel:es9lse esetn a:t"dik vgre. 4ld'l: a egy #emenet lla2ott vizsgl:'k,
akkor magas lla2ot esetn trtnik valami, de 'gyanakkor ala%sony lla2ot#an
vgrea:tand" 'tastst is megadat:'k gy. Prsm"d:#an a kvetkez*k22en nz ki:
i% (inputPin ,, !") {
doThing<;
}
else {
doThingO;
}
Az e#se rsz segtsgvel t##szrs felttelt is leet vizsglni, egyetlen
'tastssor#an. Ieet*sg van az 'tastssorok vgrea:tsra, de ne fele:tkezz9nk
el, ogy a nyitott zr":elet minden eset#en #e kell zrni a kvetkez* felttel vizsglata
el*ttT A almozott felttel<vizsglat a kvetkez*k22 rat" le:
i% (inputPin 7 3$$) {
doThing<;
}
else i% (inputPin I, 0$$$) {
doThingO;
}
else {
doThingP;
}
FOR
A 7or 'tasts segtsgvel a ka2%sos zr":elen #el9li 'tastsokat egy szmll"
segtsgvel megatrozott szm#an, ismtl*d*en a:t:'k vgre. A legt##szr a
%ikl'sszmll" nvekszik s egy atrt elrve l2 ki a %ikl's#"l. A 7or 'tastsnak
rom 2aramtere van, 2ontosvessz*vel elvlasztva:
%or (initialiFation; &ondition; e4pression) {
doMomething;
}
Az initia#i1ation<kt :elzett rsz#en egy loklis vltoz"t definil'nk, mely rtke %ikl's
lef'tsonknt vltozik. +indannyiszor, anyszor a %ikl's @:ra lef'tna, a felttel $itt
condition<knt rva) ellen*rzsre ker9l. ,a a kife:ezs igaz, akkor %ikl'smag $ka2%sos<
zr":el#en lev* 'tastsalmaz) vgrea:t"dik, ma:d az ellen*rzs kezd*dik @:ra.
Amikor a felttel amiss vlik, a krforgs vget r.
A kvetkez* 2ld#an az egszknt definilt %ikl'sszmll" $i) kiind'lsi rtke 6E a
felttel, ogy rtke kise##, mint 76E s a ez igaz, akkor az rtke n* 5<gyel s a
%ikl'smag @:ra vgrea:t"dik:
%or (int i,$; i71$; i88) // de&lares i, tests i% less
{ // than 1$, in&rements i +# 0
digitalWrite(02, !"); // turns pin 02 on
dela#(13$); // pauses %or 0/. se&ond
digitalWrite(02, 'OW); // turns pin 02 o%%
dela#(13$); // pauses %or 0/. se&ond
}
Fontos! A C nyelv#en a 7or %ikl's igen fleMi#ilis a t##i nyelvez k2est, idertve a
Basi%<ot is. A rom 2aramter#*l tetsz*legesen el leet agyni, de a 2ontosvessz*t
ez eset#en is fel kell tntetni. A felttel, a vltoz" deklarlsa, illetve %ikl'svltoz"
szmlltatsa sorn #rmely sza#vnyos C kife:ezst leet asznlni. Ez a fok@
r'galmassg < f*leg a eltr9nk a megszokott sza#vnyt"l < azon#an szmos
2rogrami#a forrsa leetT
+HILE
A (ile<%ikl's folyamatosan a:t"dik vgre, mg a zr":el#en lev* kife:ezs amiss
nem vlik. A vizsglt :ellemz*nek vltoznia kell a %ikl'smag f'tsa alatt, k9ln#en soa
nem l2 tov## a 2rogram. Ez leet akr egy nvekv* vltoz", vagy k9ls* felttel <
2ld'l egy rzkel* :ele is.
?hile (some*aria+le NN value) {
doMomething;
}
A kvetkez* 2lda sorn a Asome9ariab#eA rtke, a kise##, mint 766 akkor a
%ikl'smag#an lev* 'tastsok vgrea:t"dnak, s ez ismtl*dik amg a
Asome9ariab#esA rtke meg nem alad:a a 766<at.
While (some*aria+le 7 1$$) // tests i% less than 1$$
{
doMomething; // e4e&utes en&losed statements
some*aria+le88; // in&rements varia+le +# 0
}
DO'''+HILE
A do!."i#e %ikl's asonlt az el*z*ek#en lert ."i#e t2'soz. A kt megolds kzt a
k9ln#sg, ogy a %ikl'svge<felttel e##en az eset#en a %ikl'smag 'tn van, azaz a
%ikl'smag legal## egyszer mindenk22 lef'tT
do {
doMomething; } ?hile (some*aria+le NN value);
A kvetkez* 2lda sorn a readSensors() visszaadott rtkt az ? vltoz"#a r:'k,
ma:d =6 mse% eltelte 'tn megvizsgl:'k, ogy az ? rtke kise##<e, mint 566. Ekkor a
%ikl's @:ra lef't.
do {
4 , readMensors(); // assigns the value o%
// readMensors() to 4
dela#(3$); // pauses 3$ millise&onds
} ?hile (4 7 0$$); // loops i% 4 is less than 0$$
KI- S (EMENETEK KEZELSE
PINMODE(PIN, MODE)
A void setu-() r'tin#an asznl:'k a -in0ode 'tastst, ogy a %i2 adott kivezetse
#e<3kimenet legyen.
pinMode(pin, OUTPUT); // sets 'pin' to output
A mikrokontroller digitlis kivezetsei ala2eset#en #emenetknt vannak konfig'rlva,
nem sz9ksges k9ln ezt megtenni.
A #emeneteken %i2en #el9l egy<egy k#. 76..;6 kom fel@z"<ellenlls van #e2tve,
melyek ki3#eka2%solat"ak. ,a a l#ak #emenetre vannak lltva, akkor a l#ra val"
kirssal ka2%solat"ak #e a fel@z"<ellenllsok:
pinMode(pin, !)PUT); // set 'pin' to input
digitalWrite(pin, !"); // turn on pullup resistors
A fel@z"<ellenllsok ki3#eka2%solsa ezeset#en @gy viselkedik, minta egy ka2%sol"t
#e<3kika2%solnnk. Bontos meg:egyezni, ogy a kirs nem vltoztat:a meg a kivezets
adatirnyt, %sak a fel@z"<ellenllst ka2%sol:a ki3#eT
,a a kivezets kimenetknt $o't2't) lett #elltva, akkor az ala%sony im2edan%is
kivezetsknt viselkedik. Ez azt :elenti, ogy k#. H6 mA rammal k2es mega:tani az
ide %satlakoztatott ramkrtT Ez elegend* IE- mega:tsra $az ramkorltoz" soros
ellenllsr"l ne feledkezz9nk megT), de kevs a legt## rel, motor vagy szolenoid
mega:tsraT
A rvidzr, t@l nagy ram t@ltereli s tnkreteszi az ramkr ezen rszt, vagy akr
az egsz %i2et isT A legt## eset#en a kivezetsek meg"vsa rdek#en soros
776 om...5 kom ellenlls #e2tse :avasolt.
DIGITALREAD(PIN)
Az 'tasts segtsgvel a kivezets logikai ala%sony vagy magas lla2ott olvasat:'k
#e. Az eredmny >ig" vagy %o. leet. A kivezets azonost":a 6...5> $Ard'ino +ega
esetn: 6..=>).
value , digital-ead(Pin); // sets 'value' eAual to
// the input pin
DIGITAL+RITE(PIN, VALUE)
A kimenetek logikai magas $>ig") vagy logikai ala%sony $%o.) lla2ot#an leetnek
$azaz a kivezetst ki<3#eka2%solat:'k). A kivezets azonost":a 6..5> $Ard'ino +ega
esetn: 6..=>).
digitalWrite(pin, !"); // sets 'pin' to high
A kvetkez* 2ld#an egy nyom"gom# lla2ott olvasat:'k #e, mely f9ggvny#en
az egyik digitlis kivezetsre kttt IE- gy'llad ki vagy alszik el.
int led , 02; // &onne&t 'BC to pin 02
int pin , D; // &onne&t push+utton to pin D
int value , $; // varia+le to store the read value
void setup()
{
pinMode(led, OUTPUT); // sets pin 02 as output
pinMode(pin, !)PUT); // sets pin D as input
}
void loop() {
value , digital-ead(pin); // sets 'value' eAual to
// the input pin
digitalWrite(led, value); // sets 'led' to the
} // +utton's value
ANALOGREAD(PIN)
Az anal"g kivezetseken lev* fesz9ltsget 56<#ites $6...567> tartomnyt lefed*)
fel#onts#an olvasat:'k #e az ana#og5ead(-in) 'tastssal. Ez a f'nk%i" %sak az
anal"g kivezetseken mkdik $6..=).
value , analog-ead(pin); // sets 'value' eAual to 'pin'
Fontos! Az anal"g kivezetsek k9ln#znek a digitlis kivezetsekt*l, gy < az Ard'ino
2ro:ekt#en < nem asznlat"ak digitlis kimenetknt $ms nyelveken 2l. C, Bas%om<
AG! st#. van %sak erre leet*sg).
ANALOG+RITE(PIN, VALUE)
4sze'do<anal"g :elet @n. 4W+ $im2'lz'sszlessg mod'l%i") segtsgvel az
Ard'ino egyes digitlis kivezetseire leetsges kik9ldeni. Az @:a## %i22el
$A.+ega5J;) felszerelt 2anelen ez a f'nk%i" a >, =, J, A, 56 s 55 :el digitlis
kivezetseken ret* el. Az A.+ega; %i22el szerelt Ard'ino esetn ez %sak a A, 56
s 55 :el digitlis l#akon ret* el. A 4W+ rtkmegadsa trtnet konstans vagy
vltoz" segtsgvel is, ezek rtke 6..7== kzt leet.
analogWrite(pin, value); // ?rites 'value' to analog 'pin'
,a a 4W+ rke 6, akkor a kimeneten 6 G fesz9ltsg mret*, mg 7== esetn =G. A
szls* rtkek kztti rtk s a 6<=G fesz9ltsg kzt egyenes arnyossg van. A
nagyo## rtk esetn azonos id* alatt ossza## ideig magas a kivezets szint:e.
4ld'l JH<es rtk esetn az id*szelet 53H<#en ala%sony, >3H<#en magas rtket
mret9nk $tlagolt fesz9ltsgszint k#. 5.7=G), mg 57; esetn az id* fel#en
ala%sony, msik fel#en magas szintet mret9nk $az tlag fesz9ltsgszint 7.=G).
Ezt a f'nk%i"t a %i2 ardveresen #iztost:a, gy a kimeneten a ngyszg:elet
a'tomatik'san generl:a. Az ana#ogWrite f'nk%i" atsa a kika2%solsig illetve a
kvetkez* ana#ogWrite() 'tastsig megmarad.
A kvetkez* minta2rogram#an #eolvass'k az anal"g l#on lev* :elet s a ka2ott rtk
53H<vel a:t:'k meg a 4W+ l#at:
int led , 0$; // 'BC ?ith 11$ resistor on pin 0$
int pin , $; // potentiometer on analog pin $
int value; // value %or reading
void setup(){} // no setup needed
void loop()
{
value , analog-ead(pin); // sets 'value' eAual to 'pin'
value /, .; // &onverts $/0$12 to $/133
analogWrite(led, value); // outputs PWM signal to led
}
EGY( UTASTSOK
DELAY(MS)
A de#a,() 'tasts segtsgvel a 2rogram#an megadott ms milise%<nyi vrakozst
leet #eiktatni. ,a 5666 ms<t r'nk, az 5 se% vrakozst :elent.
dela#(l$$$); // ?aits %or one se&ond
MILLIS()
A mi#is() 'tastssal krdezet:9k le a #eka2%sols "ta eltelt id*t mse% egysg#en.
value , millis(); // sets 'value' eAual to millis()
Fontos! Az eltelt id* szmll":a k#. A "rnknt t@l%sord'l s n'llz"dikT
MIN(-,Y)
1t szmrtk kz9l a kise## rtket ad:a vissza $f9ggetlen az adatt2'st"l).
value , min(value, 0$$); // sets 'value' to the smaller o%
// 'value' or 0$$, ensuring that
// it never gets a+ove 0$$;
MA-(-, Y)
1t szmrtk kz9l a nagyo##at ad:a eredmny9l. +kdse asonl" a 0in()
f9ggvnyez.
value , ma4(value, 0$$); // sets 'value' to the larger o%
// 'value' or 0$$, ensuring that
// it is at least 0$$;
RANDOMSEED(SEED)
1ezd*rtk #elltsa, illetve kezd*2ont a random() f9ggvny mkdsez.
randomMeed(value); // sets 'value' as the random seed
Az Ard'ino nyelv#en $s a legt## mikrokontrolleres alkalmazs#an) nem leetsges
val"di vletlen szmot ltreozni. A kezd*rtk segt mg vletlene## #elltani a
vletlen szm generlst. Erre leet*sg van a mi#is() szmrtk vagy az anal"g
#emeneten lev* rtk az ana#og5ead() f'nk%i"val val" #eolvassval.
RANDOM(MA-) RANDOM(MIN, MA-)
A random() f'nk%i"vs segtsgvel egy vletlenszer rtket ka2'nk vissza a
megadott min s maM rtkek kztt.
value , random(0$$, 1$$); // sets 'value' to a random
// num+er +et?een 0$$/1$$
Fontos! Ezt a f'nk%i"t a randomSeed() 'tasts 'tn asznlat:'k %sak.
A kvetkez* minta2rogram vletlen szmot oz ltre 6...7== kzt, s ezt a 4W+
kimenetre k9ldi.
int rand)um+er; // varia+le to store the random value
int led , 0$; // 'BC ?ith 11$ resistor on pin 0$
void setup() {} // no setup needed
void loop()
{
randomMeed(millis()); // sets millis() as seed
rand)um+er , random(133); // random num+er %rom $/133
analogWrite(led, rand)um+er); // outputs PWM signal
dela#(3$$); // pauses %or hal% a se&ond
}
SERIAL'(EGIN(RATE)
A soros komm'nik%i" megkezdsekor a komm'nik%i"s se#essget deklarlni kell. A
legelter:edte## a AJ66 #2s, de a soros komm'nik%i" 5=6...55=.766 #2s $soros2ort
illetve !?<H;=) illetve >66..AJ6.666 #2s $N?B soros2ort) leet.
void setup() {
Merial;+egin(:@$$); // opens serial port
} // sets data rate to :@$$ +ps
Fontos! Amikor a soros komm'nik%i" megkezd*dik, a 6 $!M) illetve 5 $.M) digitlis
kivezetsek ki<3#emenetknt nem, %sak soros komm'nik%i"s %satornaknt
asznlat"akT
SERIAL'PRINTLN(DATA)
A Seria#.-rint#n(data) 'tasts segtsgvek a data adatsort a soros2orton kik9ld:9k. Az
adatsor vgt soremelsSko%sivissza :el $k#. Enter) zr:a. Az 'tasts mkdse
megegyezik a serial.2rint$) 'tastssal, %sak terminl2rogram segtsgvel az el*##i
knye##en olvasat".
Merial;println(analog*alue); // sends the value o%
// 'analog*alue'
Fontos! A seria#.-rint() s a seria#.-rint#n() 'tastsnak szmos 2aramtere ltezik
mg, mely ismertetse megalad:a a knyv kereteit. Ezt rszletesen a
"tt-:88....arduino.cc onla2on leet megtallni.
A kvetkez* egyszer 2lda az egyik anal"g #emenet rtkeit olvassa s
msod2er%enknt k9ldi a soros2orton t a 4C fel.
void setup() {
Merial;+egin(:@$$); // sets serial to :@$$+ps
}
void loop()
{
Merial;println(analog-ead($)); // sends analog value
dela#(0$$$); // pauses %or 0 se&ond
}
MELLKLETEK
DIGITLIS KIMENET
A mikroelektronik#an az, ami #rmely 2rogramozsi nyelv#en a Q,ello (orldTQ
2rogram < az itt egy kivezetsre kttt IE- kigy@:tsa. A legegyszer## az Ard'ino 5><
as digitlis kivezetsre kttt IE- kiasznlsa. A minta2rogram#an ennek egy
msod2er%es id*kz felgy@:tst val"st:'k meg. Az ellenllst mindenk22 2ts9k
#e, a IE-<et kt9nk #e $A 5><as digitlis kivezetsre gyrilag #ekttt IE- el*tt az
ellenlls #e2tsre ker9lt). Az ellenlls rtke =G t2fesz9ltsg esetn
776..J;6 om kz essen.
int ledPin , 02; // 'BC on digital pin 02
void setup() // run on&e
{
pinMode(ledPin, OUTPUT); // sets pin 02 as output
}
void loop() // run over and over again
{
digitalWrite(ledPin,!"); // turns the 'BC on
dela#(0$$$); // pauses %or 0 se&ond
digitalWrite(ledPin,'OW); // turns the 'BC o%%
dela#(0$$$); // pauses %or 0 se&ond
}
DIGITLIS (EMENET
Ez a legegyszer## form:a a digitlis #emeneten lev* :el rzkelsnek. A ka2%sol"
nyitott illetve zrt llst a segtsgvel #eolvasat:'k. A 2ld#an egyszer ka2%sol"
vagy nyom"gom# ker9l a 7<es kivezetsre. ,a a ka2%sol" zrt lls@, akkor a
kimeneten $5><as kivezets) lev* IE- kigy'llad.
int ledPin , 02; // output pin %or the 'BC
int inPin , 1; // input pin (%or a s?it&h)
void setup()
{
pinMode(ledPin, OUTPUT); // de&lare 'BC as output
pinMode(inPin, !)PUT); // de&lare s?it&h as input
}
void loop() {
i% (digital-ead(inPin) ,, !") // &he&( i% input is !"
{
digitalWrite(ledPin, !"); // turns the 'BC on
dela#(0$$$); // pause %or 0 se&ond
digitalWrite(ledPin, 'OW); // turns the 'BC o%%
dela#(0$$$); // pause %or 0 se&ond
}
}
DIGITLIS KIMENET
Rny eset#en sz9ksg leet a kivezets ltal #iztostott H6 mA<t megalad" ram
#iztostsra. Ekkor a legegyszer## tranzisztorral, vagy +L?BE. segtsgvel
ka2%solni a nagyo## ramot. A kvetkez* mint#an a +L?BE. segtsgvel = se%
id*nknt #e< ma:d kika2%sol'nk egy motort.
Fontos! Az #rn a motorral 2r'zamosan egy vd*di"da tallat". `m a a
terels nem ind'ktv $2ld'l izz"lm2a), akkor elagyat".
int outPin , 3; // output pin %or the MOMQBT
void setup() {
pinMode(outPin, OUTPUT); // sets pin3 as output
}
void loop() {
%or (int i,$; i7,3; i88) // loops 3 times
{
digitalWrite(outPin, !"); // turns MOMQBT on
dela#(13$); // pauses 0/. se&ond
digitalWrite(outPin, 'OW); // turns MOMQBT o%%
dela#(13$); // pauses 0/. se&ond
}
dela#(0$$$); // pauses 0 se&ond
}
P+M KIMENET
Az +m2'lz's Szlessg 0od'l%i" $P'lseWidt 0od'lation $4W+)) az egyik
$legegyszer##) @t:a egy l<anal"g :el el*lltsnak. Ekkor a kimeneten 2'lzl"
egyenfesz9ltsg :elenik meg, melyet az ezt kvet* elektronika folyamatos anal"g
:elknt rzkel. Ezt asznlat:'k 2ld'l IE- fnyere:nek sza#lyozsra, vagy
ks*## szervomotor vezrlsre is. A kvetkez* mintaalkalmazs sorn a IE- fnye
lassan nvekszik, ma:d %skken. +a:d ez ismtl*dik folyamatosan.
int ledPin , :; // PWM pin %or the 'BC
void setup(){} // no setup needed
void loop() {
%or (int i,$; i7,133; i88) // as&ending value %or i
{
analogWrite(ledPin, i); // sets +rightess level to i
dela#(0$$); // pauses %or 0$$ms
}
%or (int i,133; iI,$; i//) // des&ending value %or i
{
analogWrite(ledPin, i); // sets +rightess level to i
dela#(0$$); // pauses %or 0$$ms
}
}
POTENCIOMTER (EMENET (ANALG (EMENET)
4oten%iomtert asznlva az Ard'ino rendszer#en < ez gyakorlatilag az A.+ega %i2
analog<digital #emenetre %satlakozik < a vltoztatat" ellenlls ltal leosztott
fesz9ltsget ka2:'k meg a #emeneten. A #eolvasott rtk 6..567> kz esik. A
kvetkez* mint#an a 2otmterrel a IE- villogsi frekven%i:t sza#lyozat:'k.
int potPin , $; // input pin %or the potentiometer int
ledPin , 02; // output pin %or the 'BC
void setup() {
pinMode(ledPin, OUTPUT); // de&lare ledPin as OUTPUT
}
void loop()
{
digitalWrite(ledPin, !"); // turns ledPin on
dela#(analog-ead(potPin)); // pause program
digitalWrite(ledPin, 'OW); // turns ledPin o%%
dela#(analog-ead(potPin)); // pause program
}
VLTOZTATHAT ELLENLLS A (EMENETEN
Gltoztatat" ellenlls < 2ld'l a Cd? ala2@ fotoellenlls, termisztor, ny@lsmr*
#lyeg, st#. < rtke megmret* az anal"g #emenet segtsgvel. A 2ld#an az
anal"g rtket #eolvasva vrakozsi id*t sza#lyoz'nk vele. Ez a IE- kivilgosodsa
s elsttedse kztti id*t #efolysol:a.
int ledPin , :; // PWM pin %or the 'BC
int analogPin , $; // varia+le resistor on analog pin $
void setup(){} // no setup needed
void loop() {
%or (int i,$; i7,133; i88) // as&ending value %or i
{
analogWrite(ledPin, i); // sets +rightess level to i
dela#(dela#*aR)); // gets time value and pause
}
%or (int i,133; iI,$; i//) // des&ending value %or i
{
analogWrite(ledPin, i); // sets +rightess level to i
dela#(dela#*aR)); // gets time value and pause
}
}
int (dela#*aR)
{
int v; // &reate temporar# varia+le
v , analog-ead(analogPin); // read analog value
v /, 9; // &onvert $/0$1. to $/019
return v; // returns %inal value
}
SZERVOMOTOR
A o##i szervomotorok nll", #e2tett mega:t"<egysggel rendelkeznek, mely
segtsgvel 5;6 fokos elford'ls#an leet a kitrst sza#lyozni. Eez 76 mse%<
enknti im2'z's kiadsa sz9ksges. A minta2rogram#an 56V586 fok elford'lst
val"st'nk meg, ma:d 'gyanennek ellenkez* irnyt is vgig:r:a a motor.
int servoPin , 1; // servo &onne&ted to digital pin 1
int m#<ngle; // angle o% the servo roughl# $/09$
int pulseWidth; // servoPulse %un&tion varia+le
void setup() {
pinMode(servoPin, OUTPUT); // sets pin 1 as output
}
void servoPulse(int servoPin, int m#<ngle) {
pulseWidth , (m#<ngle 5 0$) 8 @$$; //determines dela#
digitalWrite(servoPin, !"); //set servo high
dela#Mi&rose&onds(pulseWidth); //mi&rose&ond pause
digitalWrite(servoPin, 'OW); //set servo lo?
}
void loop() {
// servo starts at 0$ deg and rotates to 0D$ deg
%or (m#<ngle,0$; m#<ngle7,0D$; m#<ngle88)
{
servoPulse(servoPin, m#<ngle); // send pin and angle
dela#(1$); // re%resh &#&le
}
// servo starts at 0D$ deg and rotates to 0$ deg
%or (m#<ngle,0D$; m#<ngleI,0$; m#<ngle//)
{
servoPulse(servoPin, m#<ngle);// send pin and angle
dela#(1$); // re%resh &#&le
}
}
AVR-DUINO UNO KAPCSOLSI RA#Z
AVR-DUINO DUEMILANOVE KAPCSOLSI RA#Z
CC (Y-SA .'/ LICENSZ
Revezd megT < Pgy add tov##T 7.= `ltalnos $CC BO<?A 7.=) li%ensz kivonat
A kBvetke1Cket te"eted a mDve#:
?za#adon msolatod, ter:eszteted, #em'tatatod s
el*adatod a mvet
?zrmazkos mveket $feldolgozsokat) ozatsz ltre
A1 a#Ebbi 7e#tFte#ekke#:
Revezd megT < A szerz*, fordt" vagy egy# rendelkez* :ogos'lt
ltal megatrozott m"don fel kell t9ntetned a mz ka2%sol"d"
inform%i"kat $2l. a szerz*, fordt", tdolgoz", ill'sztrtor nevt
vagy lnevt, a + %mt).
Pgy add tov##T < ,a megvltoztatod, talaktod, feldolgozod ezt a
mvet, az gy ltre:tt alkotst %sak a :elenlegivel megegyez*
li%en% alatt ter:eszteted.
A1 a#Ebbiak 7ig,e#embevFte#Fve#:
Elengeds: A szerz*i :ogok t'la:donosnak rs#eli el*zetes engedlyvel #rmelyik
fenti felttelt*l eltretsz.
Kzkincs: ,a a m'nk#an #rmely elemre a 2'#li% domain :ogkr vonatkozik, ezt a
stt'szt < a 2'#li% domain :oglls@ rszre < a :elen :ogi konstr'k%i" nem #rl:a fel9l.
Ms jogok: A kvetkez*, s egy# :ogokat a li%en% semmi#en nem #efolysol:a:
A s1er1C s1emF#,"e1 7D1CdC Gogai
Ms szemlyeknek a mvet vagy a m asznlatt rint* :ogai, mint 2ld'l a
szemlyisgi :ogok vagy az adatvdelmi :ogok.
elzs: Brmilyen felasznls vagy ter:eszts esetn egyrtelmen :elezned kell
msok fel ezen m li%en%feltteleit.
A li%ensz rszletes felttelei megtekintet*ek:
"tt-:88creativecommons.org8#icenses8b,!sa82.$8 oldalon.

You might also like