Подключаю пока три сервопривода, без motor shield, используя крону и стабилизатор напряжения. Две сервы работают вместе еще нормально, но как только подключаю третью, не работает ни одна. В чем может быть причина? Они начинают громко шуметь, но не двигаются.
В общем получилось вроде на двух батарейках нормально...но есть еще вопрос: теперь , если я подключаю всякие сенсоры , они не работают. Или нельзя так, в цикле сначала проверять условия на сенсоры, а потом смотреть на те значения, которые идут с компьютера?
Не питайте сервы кроной. Для питания серв берите щелочные батарейки или аккумуляторы. Вы код покажите, тогда и будет понятно.
Код (Text): #include <Servo.h> Servo myservo; Servo myservo2; Servo myservo3; Servo myservo4; int servopin=3; int servopin2=9; int servopin3=10; int servopin4=11; void setup() { myservo.attach(servopin); myservo2.attach(servopin2); myservo3.attach(servopin3); myservo4.attach(servopin4); Serial.begin(9600); //pinMode(13,OUTPUT); } void loop() { //Считывание с фоторезистора int val2 = analogRead(A0); if (val2 < 800) { myservo.write(60); delay(1000); } //остальные действия, анализ значений полученных с компьютера .//while (Serial.available() == 0); int val = Serial.read()-'0'; if (val == 1) { for(int i=0;i<=180;i=i+20) { myservo.write(i); myservo2.write(i); myservo3.write(i); myservo4.write(i); delay(1000); } } Почему не надо с кроны? Щелочные батарейки разве что-то изменят? Есть еще вопрос: можно ли исправить то, что при включении все сервы поворачиваются в начальное положение?
С Кроны не надо потому что КПД как у паровоза (почти половина уходит в тепло при линейном преобразовании 9->5В), а ток маленький. Сервы поворачиваются в то положение, в какое Вы задаете в программе. Чтобы они не дергались, надо перед выключением запоминать положение и начинать в него.
Чтобы сервы при подаче питания не дергались, можно сначала сформировать управляющий сигнал и только потом подать питание (например, через транзистор питание завести). Иначе сервы запитаются в момент включения устройства, а контроллер еще не успеет загрузиться, поэтому у серв будет время пожить собственной жизнью.
А если кроме этого нужно еще сохранять значения между переходами к разным функциям .Вот например, просто поворот сервы на 60 градусов. Если я снова набираю единицу, то хочу чтобы отсчет шел от прежних 60 градусов.Но после первого поворота никакой реакции. Код (Text): int angle=0; <....> void setup() { <....> if (val == 1) { if(angle == 180) { myservo2.write(0); myservo4.write(0); angle=0; } myservo2.write(angle+60); delay(1000); myservo4.write(angle+60); delay(1000); angle=angle+60; }
после аварии крадрокоптера пришлось менять сервприводы на камере и подвесе, по отдельности работают стабильно, как включишь вместе начинают глючить и привод на подвесе попросту сгорает. как исправить?