/* * Servo Move Simple * ----------------- * Перемещает авиамодельную сервомашинку туда-обратно (от 0 до 180 градусов), * используя delayMicroseconds() for pulse and delay() for time between pulses. * * Created 18 October 2006 * copyleft 2006 Tod E. Kurt * http://todbot.com/ * * Взято у Daniel @ * http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1160470155/0 * Поворачивает серву на 180 градусов, используя функцию "servoPulse" * взято из "Temporary Servo Function" (Tom Igoe, Jeff Gray) */ int servoPin = 7; // серва, подключённая к цифровому порту int myAngle; // угол сервы (грубо в градусах) 0-180 int pulseWidth; // переменная для функции void servoPulse(int servoPin, int myAngle) { pulseWidth = (myAngle * 9) + 700; // перевести угол в микросекунды digitalWrite(servoPin, HIGH); // послать высокий уровень на серву delayMicroseconds(pulseWidth); // подождать очень маленькое время digitalWrite(servoPin, LOW); // послать низкий уровень на серву Serial.print("pulseWidth: "); Serial.println(pulseWidth); delay(20); // время на перерыв у типичных серв (20 миллисекунд) } void setup() { pinMode(servoPin, OUTPUT); // объявить пин сервы выходом Serial.begin(19200); } void loop() { // пройти в цикле все углы (медленно поворачивать серву на 180 градусов) for (myAngle=0; myAngle<=180; myAngle++) { servoPulse(servoPin, myAngle); } delay(1000); }