hu en es hu en en en hu hu de hu hu hu hu hu hu hu hu hu hu hu hu hu hu hu hu en en zh ru kn fr hu hbs_lat hu en hu hu en hu en en kn kn kn hu en es it pt it ar en kn kn hu en hu hu hu hu hu hu en
Az időre, az időzítésre több utasítás is szolgál a programozási nyelven belül. Van olyan ami késleltetést hozz létre, van ami a bekapcsolástól eltelt időt méri milli- illetve mikroszekundumban .
delay() - evvel már találkoztunk párszor ;) , a zárójelben megadott ideig késlelteti a program futását. Az időt mindig ezred másodpercben számolja (1s = 1000ms, 1m = 60000ms) .
pl.: delay(2000) két másodpercig megállítja a futást. A késleltetés nagyon nagy hátránya, hogy teljesen leállítja a program futását, míg a delay fut addig semmi más nem hajtódik végre így amikor lehet általában kerülik a használatát és inkább a Millis() utasítással helyettesítik. Persze egyszerű programoknál bátran használható.
delayMicroseconds() - a zárójelben megadott ideig késlelteti a program futását, a delay-hoz képest
itt csak a megadható érték nagysága változott meg, ugyanis az itt beírt számok mikroszekundumban
adják a várakozási időt. 1ms = 1000us , 1s = 1000000us (tehát 1 milliszekundum az 1000 mikroszekundum, 1 másodperc az 1 000 000 mikroszekundum). Ezek a nagyon kis értékű várakozási idők egy csomó projektben nagyon hasznosak, például a szervó vezérlés, analóg bemenetről mintavételezés, egyes kommunikációk. Ez az utasítás csak 16383-ig képes kezelni a beírt értékeket, ennél nagyobb értéknél használjuk a delay utasítást.
Most nézzük az időmérő utasításokat:
millis() - az Arduino bekapcsolás óta eltelt idejét méri milliszekundumban. Egy idő elteltével túlcsordul és nulláról kezdi a számolást, ezt a túlcsordulási időt a hivatalos honlapon 50 nap körül adták meg, de más helyeken én kilenc órákat olvastam. Ahogy látom a számolt értéket unsigned long-ban adja meg ami
4 294 967 295 értéket vehet fel. Egy óra az 3 600 000 ms amiből adódik, hogy a túlcsordulás 1193,04 óra múlva megtörténik ami 49,71 nap. Szóval akár óraként is használható ha kicsit több mint 49 naponként újra beállítjuk rajta a pontos időt.
micros() - a bekapcsolás óta eltelt időt méri mikroszekundumban( egy millió mikroszekundum az
egy másodperc). A hivatalos adatok szerint a micros túlcsordulása kb.: 70 perc után következik be.
Egy egyszerű példaprogram időkijelzésre a millis segítségével:
time = millis(); // time változó feltöltése a millis értékével
mperc = time/1000;/ másodperc kiszámolása
perc = time/60000;// perc kiszámolása
mperc = (time%60000)/1000;//mp újra számolása
ora = time/3600000;//óra kiszámolása és a perc mperc újraszámolása
// idő kiíratása másodpercenként
lehet, hogy kicsit zagyvának tűnik a program felépítése, de most csak így tudtam megoldani. A három egymásba ágyazott if ciklus ellenőrzi a az eltelt időt, az első a másodperceket, ha millis értéke eléri az 1000 (1s) akkor végrehajtódik az mperc kiszámítása. Az első ciklusból tovább lép a program futása ha a millis értéke eléri a 60000 (1perc), itt kiszámolja az eltelt percek számát, majd a maradékból a mpercek számát a következő utasítás segítségével:
A % jel a maradékosztás jele. A leírt program sor annyit tesz: oszd el a time értékét 60000-rel és
amit nem tudsz már tovább osztani úgy, hogy egész számot kapjál az lesz az osztásod eredménye és
azt osztod tovább 1000-rel.
Egyszerűsített példával: 8 % 6 = 2 ha a nyolcat elosztom hattal egyet kapok egészként, kettőt maradékként.
A harmadik (legbelső) ciklusmag csak akkor hajtódik végre ha a millis eléri a 3600000 (1 óra) értéket. Újra számolja a percet és az mpercet is és felülírja az értéküket.
Kiíratás másodpercenként, ha mperc értéke megváltozik kiíratjuk az időt.
Homepage | contact | html | css | © 2007 Anyone | Design by www.mitchinson.net | This work is licensed under a Creative Commons Attribution 3.0 License