Рабочий скетч для Ардуино типа UNO или подобных, если надо из СОМ порта (например из ноутбука или Андроид-смартфона) передать угол поворота на стандартную сервомашинку .
---------------------------------------------------------------------------------------------------------------------------------------------
/*
Транслятор команды угла (0-180) из UART(COM-порт)
в ШИМ сервомашинки (Длительность=0.5-2.5мс , частота=50Гц)
(при загрузке, пока не пришла команда, длительность импульсов = 1.5 мс (среднее положение))
*/
#include <Servo.h>
Servo myservo; // создание объекта серво
int pos = 0; //целочисленная позиция от 0 до 180 градусов
void setup() {
myservo.attach(9); // выход ШИМ будет на pin 9
Serial.begin(9600);
}
void loop() {
Serial.println("Enter angle rotation servomotor in 0...180 degress");
while(Serial.available()==0)
{
// тупо ждем сообщения по UART (COM)
}
while(Serial.available()>0) //пока в буфере порта есть символы...
{
char ch = Serial.read(); //...считываем их побайтно
if(ch >= '0' && ch <='255') //контроль диапазона ASCII
{
pos = pos*10 + ch - '0'; //реконструкция сообщения
delay(5);
}
else
{
Serial.print(ch);
Serial.println(": data error - char not ASCII");
pos = 0;
}
}
if(pos >= 0 && pos <=180) //контроль диапазона входной позиции
{
Serial.print("Angle rotation servomotor in degress = ");
Serial.println(pos);
myservo.write(pos); // передача полученной позиции (pos) на сервомашинку
delay(100);
}
else
{
Serial.print(pos);
Serial.println(": data error - input angle overrange");
}
pos=0;
}