hu en es hu en en en eo hu de hu hu hu hu hu hu hu es hu hu hu hu hu hu hu hu hu hu zh hu hu kn hu hu hu hu fr kn hu hu hu ru hu hu hu en kn hu hu hu sv kn hu hu hu hu hu hu hu hu hu hu hu hu hu hu hu hu hu hu zh fa cs kn fr en en kn sv en kn kn hu hu hu hu hu hu hu hu hu hu hu en en hu hu hu hu hu hu zh fa cs kn fr en ru en en kn tr en kn kn kn hu hu hu hu hu hu hu en
Az első programunkkal bemutattuk a digitális kimenet használatát, most lássuk ugyan ezt
bemenetként. Igaz már írtam egy egy cikket evvel kapcsolatban, de itt most ezt megpróbálom
bővebben kivesézni. Az előző cikk megtalálható: *Arduino digitális bemenet   140322
Arduino Uno + USB kábel
Ha nincs próbapanelod össze is forraszthatod az alkatrészeket légszerelésben, a lényeg az hogy
az ellenállás segítségével negatív tápfeszre húzzuk a bemenetet.
A kapcsolás szerintem senkinek nem okoz problémát:
Itt megint a beépített ledet használjuk kimeneti eszközként, koncentrálva a bemenetre.
Először is a setup-ba beállítjuk a be illetve kimeneteket:
A pinMode-t már tárgyaltuk, a második érték „INPUT” konstans(állandó) tehát kimenet.
A két perjel „//” után írhatunk egysoros emlékeztetőket, megjegyzéseket evvel segítve a progi
könnyebb használatát. Ezeket sosem veszi figyelembe a fordító.
Másodszor a mag ami folyamatosan végrehajtódik:
Ezen belül helyezzük el a fő programrészt.
A bemenetek értékét a digitalRead() utasítással tudjuk olvasni, egyetlen paramétert tartalmaz
a beolvasandó láb számát vagy nevét.
A bemeneti értéket valamilyen módon fel kell dolgozni ahhoz, hogy bármire is használhassuk,
talán az egyik legegyszerűbb az összehasonlítás.
Az összehasonlítást az if() feltételes utasítással végezzük. Nézzünk erre egy példát:
Beolvassuk a 4-es láb értékét és összehasonlítjuk az egyenlőség másik oldalán lévő értékkel, ha
megegyeznek akkor végrehajtódik a kapcsos zárójelek tartalma. Ha nem egyeznek akkor jön az
if második része az „else” utasítás.
Jelentése: „különben”, tehát ha az if összehasonlító kifejezése( itt egyenlősége) nem igaz akkor az
if kapcsos zárójeleiben lévő utasítások nem hajtódnak végre, viszont az else-é igen (ha if-é hajtódik végre akkor else-é nem).
Ha az if után nincs else akkor a program automatikusan átugorja az if utasításait (hamis érték
esetén) és az utasítás blokk után folytatja futását.
Az összehasonlítás műveleti jelei közül a legtöbbet használtak:
== az egyenlőség, a == b azt jelenti, hogy a és b értékét összehasonlítom ez által a kifejezés csak
akkor lesz igaz ha a és b egyenlő értékű. Ez azért fontos mert ha azt írjuk fel, hogy a = b evvel
értéket adunk a-nak méghozzá b értékét így ez a kifejezés mindig igaz lesz, tehát összehasonlításként nem használhatjuk.
!= jelentése nem egyenlő. pl.: a != b A kifejezés igaz ha a nem egyenlő b
< = kisebb vagy egyenlő
>= nagyobb vagy egyenlő.
Nézzük még a HIGH konstansot, itt a digitális ki- és bemenetek értékeiként használhatók.
A digitális portok mindig csak két értéket bírnak csak felvenni:
HIGH az egyik, ez magas állapotot jelent (+5V) a porton.
LOW alacsony állapot (0V).
Áttárgyaltuk az utasításokat lássuk a teljes programot:
A program hatására a teszt led mindaddig világít míg a nyomógomb lenyomott állapotban van,
ha felengedjük a led kialszik.
Nézzünk most egy olyan kapcsolást ahol a led első gombnyomásra bekapcsol, másodikra ki.
Az alkatrészeken és a kapcsoláson semmit nem kell változtatni, csak a programunkat kell átírni.
az első progiban megnéztük a digitális bemenet értékét, ha magas volt akkor a led kimenet is
magas szintre váltott, ha alacsony volt akkor a led kimenet is. Most azt kell elérnünk, hogyha
lenyomjuk a gombot és a digitális kimenet alacsony szinten van, akkor magasra váltson,
illetve ha lenyomjuk a gombot a és a digitális kimenet magason van akkor alacsonyra váltson.
Mint látható itt két feltételt kell megvizsgálni, ezt most két if ciklus egymásba ágyazásával fogjuk
utasitások1}  //2. If lezárása
Az első if megvizsgálja, hogy le van-e nyomva a gomb, ha igen akkor mehetünk a második if
ciklusra, hogy megvizsgáljuk a 13-as kimenet állapotát ha alacsony akkor végrehajtódik az
utasítások1-es blokk, ha magas akkor az utasítások2-es blokk.
A teljes program ez:
Az else a második if-hez tartozik tehát ha az első feltétel teljesül viszont a második nem, akkor
kerül sor az else-ben kiadott utasításokra.
A két if közötti delay() a nyomógomb lenyomás és a kimeneti állapot érzékelésének lassítására
szolgál, ugyanis olyan gyorsan fut a program, hogy egy gombnyomás alatt többször megvizsgálja
a kimenet állapotát és ahhoz képest változtatja meg azt. Így teljesen véletlen szerűvé válik a
működése, ezért kell a késleltetés. Nekem a 350ms érték már jó lett de ez eltérő lehet.
Homepage | contact | html | css | © 2007 Anyone | Design by www.mitchinson.net | This work is licensed under a Creative Commons Attribution 3.0 License