ПредишенСледващото

Поредица от статии: Arduino Програмиране от земята # 5

Поредица от статии: Arduino, използването на серво # 2

Научили сме се да промените позицията на задвижването, но такъв контрол има няколко недостатъка. Нека се опитаме да свържете двете безредукторни паралелно и да се постигне тяхното синхронно движение.

Независим контрол на множество механизми

Резултатът от програмата за действие на необходимия брой otdichatesya нас. Сервоприводи не се движат синхронно, второто движение започва едва след първата. Фактът, че забавяне () команда спира изпълнението на всички действия в определен час. Вторият цикъл започва да се изпълнява, докато първият е завършена. Повечето, на пръв поглед, едно просто решение - даде команда двете серво задвижвания в един цикъл:

Но в този случай Сервомеханизмите може да се движи само в една и съща скорост, която не е за всички случаи. Ние също се нуждаят от по-гъвкав вариант, с напълно независим контрол. Ето защо, вместо да използват забавянето има смисъл да се използва таймери.

Може да забележите, че за времето, ние използваме променлива ma неподписан дълго. Това се дължи на факта, че INT тип може да се съхранява номера от -32 768-32 767. Както ние работим в милисекунди, а след това след 32.67 секунди от началото на програмата, която вече не може да се използва за съхраняване на вътр обратното броене. В противен случай поведението на програмата ще бъде непредсказуем. Но дълго тип може вече да съхраните номер от -2147483648 до 2147483647, и с изключение на неподписан дълго марки - от 0 до 295. 4294967 Т.е. максимална стойност таймер - 4,294,967 секунди или близо 49 дни , Не мисля, че нашата програма ще работи толкова дълго, без почивка

Най-лесният начин - използвайте () функцията за милисекунди. Тази функция връща размера на времето, изминало от началото на програмата, с точност до една хилядна от секундата. Ние добавяме нашата функция контур () да отправя запитвания до момента. Ще извърши желаното действие - задвижващ механизъм - само ако предишно изследване минава известно време

На пръв поглед нищо не се промени, както и задвижването се променя плавно позицията си за 1.8 секунди. Сега свързване на двете серво машинки

Единственото нещо е да се помисли, че при малки интервали и голям брой операции, извършвани във функцията на линия () на честотата на повикването може да бъде по-голям от предварително определен интервал. Съответно, действието няма да се състои след определеното време, но само за следващия линия повикване () може да се появи такава ситуация, например, докато постоянно отнемане на текста чрез Serial.print (). Не се препоръчва да се сложи на тази функция в течение (). И ако ние се нуждаем непрекъснато да покаже някаква информация, че е възможно да се ограничи честотата по същия начин, както за движението на сервомашинки:

Сега ние трябва да се ангажират всички действия безредукторни самостоятелно. Освен това, паралелно с движението може да продължи изпълнението на програмата и да извършва всякакви други действия

Свързани статии

Подкрепете проекта - споделете линка, благодаря!