Опишемо програму управління серво-мотором командами з COM-порта на прикладі контролера Arduino Leonardo.
Управління буде відбуватися в наступному вигляді: в стандартному (або сторонньому) вікні монітора COM-порта вводимо цілу цифру від нуля до 180, натискаємо Enter та серво змінює положення свого плеча на заданий кут.
Скетч в Arduino IDE виглядає наступним чином:
Текст програми з коментарями такий:
#include <Servo.h> //підключення бібліотеки servo
Servo myservo; // створення об'єкта servo для управління мотором
// на більшості плат Arduino можна створити 12 servo об'єктів
String inputString = ""; // змінна типу string для збереження вхідних даних
boolean stringComplete = false; // флаг дані отримані
void setup() {
myservo.attach(9); //вибираємо дев'ятий керуючий дискретний вихід контролера для керування моторчиком
//ініціалізація послідовного порта:
Serial.begin(9600);
// отримати 200 байтів та записати в змінну inputString:
inputString.reserve(200);
myservo.write(0); //виставляємо початкове положення серво в 0 градусів
}
void loop() {
serialEvent(); //виклик нашої комунікаційної функції
// друкуємо відповідь в COM-порт та повертаємо серво на заданий кут:
if (stringComplete) {
Serial.println(inputString);
myservo.write(inputString.toInt()); //задання положення серво-машинці з отриманої команди
// обнулюємо строкову змінну:
inputString = "";
stringComplete = false;
}
}
void serialEvent() {
while (Serial.available()) {
// отримати новий байт даних:
char inChar = (char)Serial.read();
// додати новий байт до строкової змінної inputString:
inputString += inChar;
// якщо вхідний символ є новим рядком, підняти флаг
// щоб головний цикл обробив прийняту команду:
if (inChar == '\n') {
stringComplete = true;
}
}
}
Arduino | Servo |
Нуль живлення | Коричневий дріт |
Плюс 5В | Червоний дріт |
Дискретний вихід №9 | Помаранчевий дріт |