Független ellenőrzési többszörös hajtóművek
A cikksorozat: Arduino programozási a Ground # 5
A cikksorozat: Arduino, használata szervo # 2
Megtanultuk, hogy módosítsa a helyzet a hajtómű, de az ilyen szabályozás számos hátránya van. Próbáljuk a kapcsolatot a két szervó párhuzamosan, és elérjék szinkron mozgást.
Az eredmény a cselekvési program a szükséges számú otdichatesya minket. Szervohajtóművek nem mozog szinkronban, a második tétel csak akkor kezdődik, az első után. Az a tény, hogy a késedelem () parancs leállítja a végrehajtás az összes műveletet egy adott időpontban. A második ciklus kezdődik el kell végezni, amíg az első befejeződött. Most, első pillantásra egyszerű megoldás - így a parancs mindkét szervomeghajtások egy ciklusban:
De ebben az esetben a szervó csak mozog ugyanazzal a sebességgel, ami nem minden esetben. Mi is kell egy sokoldalú megoldás, teljesen független ellenőrzés. Ezért ahelyett, hogy a késedelem értelme használni időzítő.
Néha előfordulhat, hogy az időzítés, akkor egy változót ma előjel nélküli hosszú. Ez annak a ténynek köszönhető, hogy a típus int tárolhat számokat -32 768-32 767. Ahogy működik milliszekundum, majd miután 32.67 másodperccel a program elején nem tudunk használni int tárolja a visszaszámlálást. Ellenkező esetben a program viselkedésének kiszámíthatatlan lesz. De hosszú típus már tárolni egy számot -2147483648 a 2147483647, kizárva előjel nélküli hosszú jelet - 0-tól 295 4294967 Ie maximális időzítő értéke - 4294967 másodpercig, vagy majdnem 49 nap . Nem hiszem, hogy a mi program működni fog, amíg szünet nélkül
A legegyszerűbb módja, - használja a Millis () függvényt. Ez a függvény az időt eltelt a program kezdetétől pontossággal egy ezred másodperc. Mi hozzá a loop () függvény lehívni az aktuális időt. Elvégzi a kívánt műveletet - forgatóhajtómûvet - csak akkor, ha egy korábbi felmérés eltelt némi idő
Első pillantásra semmi sem változott, csak a működtető simán változtatja pozícióját 1,8 mp. Most csatlakoztassa a két szervó
Az egyetlen dolog, hogy fontolja meg, hogy a kis és a nagy időközönként elvégzett műveletek száma a loop () a frekvencia függvényében a hívás nagyobb lehet, mint egy előre meghatározott intervallumban. Ennek megfelelően, az intézkedés nem kerül sor, miután a megadott időben, de csak a következő hívásnál loop () Ilyen helyzet fordulhat elő például, miközben folyamatosan eltávolítjuk a szöveget át Serial.print (). Nem ajánlott, hogy ezt a funkciót a loop (). És ha kell folyamatosan megjeleníteni bizonyos információkat, lehetőség van arra, hogy korlátozza a frekvenciát, ugyanúgy, mint a mozgása szervó:
Most, hogy kötelezzék el minden olyan tevékenységet szervó függetlenül. Sőt, párhuzamosan a mozgás továbbra is a program végrehajtását, és semmilyen más tevékenységet