Arduino Notebook

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

    ([email protected])

    * 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

    }

  • void loop() {for (int i=0; i
  • 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() {

  • for (int i=0; i
  • 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