Помогите с Сервой

gira021
Offline
Зарегистрирован: 30.10.2015

Привет всем кто шарит в программировании в IDE. 

Вот ломаю голову не могу понять в чем ошибка, почему при получении через serial порт 2 Серва с ума сходит?? По идеи она должна замедлить свой ход. Короче кто шарит тот меня поймет.



Не пинайте больно за код, на ходу состряпал не пойму в чем ошибка. За ранее благодарствую!!!



// Sweep 



#include <Servo.h> 

int incomingByte; // создаём переменную 



Servo myservo; // создаём объект для контроля сервы 



int pos = pos; // переменная для хранения позиции сервы 



void setup() 



Serial.begin(9600); // инициализируем Serial 

myservo.attach(9); // серва подключена к 9-му пину 





void loop() 

{ if (Serial.available() > 0) // если данные не пустые то 

incomingByte = Serial.read();// записываем их в переменную 

if (incomingByte == '1'){ 

myservo.write(20); //ставим вал под 20 





if (incomingByte == '2') 

{ for(pos = 10; pos < 179; pos += 1) // от 0 до 180 градусов 



myservo.write(pos); 

delay(15); 





gira021
Offline
Зарегистрирован: 30.10.2015

Серва при получении 2 с ума сходит а должна добавлять по логической 1 каждый круг

trembo
trembo аватар
Offline
Зарегистрирован: 08.04.2011

Скобки не стоят......  где-то так надо.....

if (incomingByte == '2'){

     for(pos = 10; pos < 179; pos += 1)  {            // от 0 до 180 градусов
            myservo.write(pos);
            delay(15);
     }
}

Но пока будет двигаться от 10-ти до 179 не сможете ничего принять из компорта

грубо 15 * 169   2.35 секунды минимум

gira021
Offline
Зарегистрирован: 30.10.2015

Спасибо ) Ураа) только она теперь доходит до 180, и опять в ноль идет и опять по кругую как зделать чтоб дошла и остановилась??

Зарание спасибо!!

gira021
Offline
Зарегистрирован: 30.10.2015

все и с этим разобрался спасибо вам большое. Причина решилась добавления в концэ кода incomingByte = 0;

gira021
Offline
Зарегистрирован: 30.10.2015

Вот весь кусок

 if (incomingByte == '2') {

  for(int pos = 0;  pos < 160; pos +=1){ // от 0 до 180 градусов 
 
myservo.write(pos); 
delay(15); 
incomingByte = 0;
 
 
 
  }
 
}
}