Сгорела серва??

OnePointer
Offline
Зарегистрирован: 24.09.2012

подключил сервопривод и баловался им с помощью джойстика , и неожиданно он встал в самое верхнее положение и перестал работать.что могло случиться?подключил другой все работает.

код программы такой:

#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);
}

может из за того что слишком часто приходили значения на привод?

maksim
Offline
Зарегистрирован: 12.02.2012

Когда серва отключена рукой ее можете провернуть?
Если нет, то ее могло заклинить.
Если выключеная она вращается рукой, а при включении уходит в крайнее положение, то проблемы с МК или потенциометром в серве.
Ну а если она вращается рукой, что включенная, что не влюченная, то либо проблемы с двигателем, либо с МК сервы, либо с проводами.

Если всеже ее заклинило, то попробуйте с усилием, но очень акуратно ее повернуть, предварительно не сильно постучав об стол.

OnePointer
Offline
Зарегистрирован: 24.09.2012

значит либо с мк либо с потенциометром проблема...не выдержала серва 

maksim
Offline
Зарегистрирован: 12.02.2012

 То есть выключенная рукой крутится, а когда включаете уходит в крайнее положение и сопротивляется если пытаетесь повернуть?

OnePointer
Offline
Зарегистрирован: 24.09.2012

да 

maksim
Offline
Зарегистрирован: 12.02.2012

 Попробуйте разобрать, может проводок потенциометра отвалился или еще какой дифект, который можно будет выявить визуально...

OnePointer
Offline
Зарегистрирован: 24.09.2012

спасибо максим а вы случайно не имели дело с 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(); //фильтр мусора
 }
 

maksim
Offline
Зарегистрирован: 12.02.2012

 Из описания Леонардо:
Обратите внимание что у Leonardo, класс Serial относится к последовательному соединению USB CDC. Последовательное соединение через выводы 0 и 1 осуществляется через класс Serial1.

То есть вам нужно все Serial заменить на Serial1

#include <Servo.h> //подключение библиотеки
int pos = 0; //угол сервы
int servoPin = 9; //пин сервы
Servo myServo; //заданное пмя сервы
void setup()
{
  Serial1.setTimeout(100); 
  Serial1.begin(9600); //скорость соединения
  myServo.attach(servoPin); // Подключаем серву на 9 пин
}
void loop()
{
  while(Serial1.available() == 0); //ожидание данных с порта
  pos = Serial1.parseInt(); //прием и перевод в integer
  pos = constrain(pos, 0, 180); //ограничение от 0 до 180
  Serial1.println(pos); //передача задаваемого угла обратно
  myServo.write(pos); //установка угла
  Serial1.flush(); //фильтр мусора
}

 

OnePointer
Offline
Зарегистрирован: 24.09.2012

Максим спасибо огромное выручаете!!!что-бы я делал)))уже целый день сижу над этим леонардо))откуда вы это все знаете?) я вообще новичок, пока только разбираюсь с передачей с одной платы на другую, попозже собираюсь гусеничную платформу сделать на ардуино.