Два сервы не хотят одновременно крутиться (VarSpeedServo)
- Войдите на сайт для отправки комментариев
Всем привет, делаю проект школьный. Тема: "Автоматическое открытие ворот при приближении автомобиля". Делаю на микроконтроллере Arduino UNO , сам в этой теме пару месяц(учитывая школьные курсы - всё печально, всё дома, по интернету искал). Скоро пора защищать проект :C
У меня такая проблема, подключил библиотеку <VarSpeedServo.h>. Всё настроил, всё работает, но сервы упираются и не хотят одновременно крутиться. По коду , по идее всё должно работать, но чёт не особо. Почитал англоязычные форумы, говорят , что у Arduino свои задержки и это можно исправить, путём добавления микро-тиков (но для моего проекта это будет очень сложно). В общем-то даже второй сервопривод не хочет крутится, тот, который выше по коду работает, а тот , что ниже игнорируется. Кто работал с этой библиотекой, кто может хотя бы на мысль подтолкнуть ?
#include <VarSpeedServo.h> #include <IRremote.h> IRrecv irrecv (A1); decode_results results; VarSpeedServo myservo; VarSpeedServo myservo2; #define LazerPin 2 #define PhotoPin A0 #define LedPin 7 int angle; int val; void setup() { Serial.begin (9600); pinMode (LazerPin, OUTPUT); pinMode (A1, INPUT); pinMode (7, OUTPUT); irrecv.enableIRIn(); myservo.attach(9); myservo2.attach(10); } void loop() { val = analogRead (PhotoPin); Serial.println (val); { digitalWrite (LazerPin, HIGH); digitalWrite (LazerPin, LOW); } if (irrecv.decode (&results)) { Serial.println(results.value); if (val < 800 && results.value == 16769565) { myservo.write(90, 10, true); delay(20); myservo2.write(90, 10, true); delay(20); } if (val < 800 && results.value == 16753245) { myservo.write(0, 10, true); delay(20); myservo2.write(90, 10, true); delay(20); } irrecv.resume (); } if (val > 800) { digitalWrite (7, HIGH); delay(100); digitalWrite (7, LOW); delay (100); } }
Библиотеки VarSpeedServo и Rremote используют один и тот же аппаратный 16 разрядный таймер и каждая по своему.
В общем, вместе они, без танецев с бубном, работать не будет. А на шамана ты еще не тянешь. Так что выбирай или IRremote или серва.
Решил попробовать сделать на Arduino MEGA , там же вроде параллельные пины , может одновременно будут работать. Результат сообщу ))
Решил попробовать сделать на Arduino MEGA , там же вроде параллельные пины
Не то что перпендикулярные на уно.
Сделал на MEGA 2560 ) Всё работает супер))