Два сервы не хотят одновременно крутиться (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 ) Всё работает супер))