Сгорела серва??
- Войдите на сайт для отправки комментариев
Вс, 30/09/2012 - 09:36
подключил сервопривод и баловался им с помощью джойстика , и неожиданно он встал в самое верхнее положение и перестал работать.что могло случиться?подключил другой все работает.
код программы такой:
#include <Servo.h> //подключение библиотеки
int servoPin = 9; //пин сервы
Servo myServo; //заданное имя сервы
int yValue;
void setup(){
myServo.attach(servoPin);
}
void loop(){
//читаем значения с джойстика и ремапим их от 0 до 180
yValue = map(analogRead(A0), 0, 1024, 0, 180);
myServo.write(yValue);
}
может из за того что слишком часто приходили значения на привод?
Когда серва отключена рукой ее можете провернуть?
Если нет, то ее могло заклинить.
Если выключеная она вращается рукой, а при включении уходит в крайнее положение, то проблемы с МК или потенциометром в серве.
Ну а если она вращается рукой, что включенная, что не влюченная, то либо проблемы с двигателем, либо с МК сервы, либо с проводами.
Если всеже ее заклинило, то попробуйте с усилием, но очень акуратно ее повернуть, предварительно не сильно постучав об стол.
значит либо с мк либо с потенциометром проблема...не выдержала серва
То есть выключенная рукой крутится, а когда включаете уходит в крайнее положение и сопротивляется если пытаетесь повернуть?
да
Попробуйте разобрать, может проводок потенциометра отвалился или еще какой дифект, который можно будет выявить визуально...
спасибо максим а вы случайно не имели дело с arduino leonardo?
есть такая програмка которая работает на ардуино uno а на leonardo не работает, эта программа принимает число от 0 до 180 с сериал порта либо через UART c радиопередатчика и ставит привод в нужное положение.все это дело подключаю через радиопередатчики, на юно все работает и отсылает обратно значение в которое установлен привод, а от леонардо даже ответа не приходит.
Просто хотел сделать одну плату с джойстиком и другую плату с сервоприводом ,связать из радиоканалом по UART.
это программа для принимающей платы с уно все отлично работает на большое расстояние, леонардо разочаровал.значения посылаю с компа.
#include <Servo.h> //подключение библиотеки
int pos = 0; //угол сервы
int servoPin = 9; //пин сервы
Servo myServo; //заданное пмя сервы
void setup()
{
Serial.setTimeout(100);
Serial.begin(9600); //скорость соединения
myServo.attach(servoPin); // Подключаем серву на 9 пин
}
void loop()
{
while( Serial.available() == 0); //ожидание данных с порта
pos = Serial.parseInt(); //прием и перевод в integer
pos = constrain(pos, 0, 180); //ограничение от 0 до 180
Serial.println(pos); //передача задаваемого угла обратно
myServo.write(pos); //установка угла
Serial.flush(); //фильтр мусора
}
Из описания Леонардо:
Обратите внимание что у Leonardo, класс Serial относится к последовательному соединению USB CDC. Последовательное соединение через выводы 0 и 1 осуществляется через класс Serial1.
То есть вам нужно все Serial заменить на Serial1
Максим спасибо огромное выручаете!!!что-бы я делал)))уже целый день сижу над этим леонардо))откуда вы это все знаете?) я вообще новичок, пока только разбираюсь с передачей с одной платы на другую, попозже собираюсь гусеничную платформу сделать на ардуино.