Угол сервопривода через Serial
Часть раздела Выходные сигналы путешествия по Arduino на Coddy. Урок 23 из 24.
Рука также может получать команды из монитора последовательного порта. Введите угол и нажмите Enter; Serial.parseInt() считывает число:
if (Serial.available() > 0) {
int angle = Serial.parseInt();
Serial.read(); // символ новой строки после числа
// использовать angle
}Символ новой строки после числа остаётся в ожидании. При следующем запуске loop() функция parseInt() не найдёт цифр, подождёт секунду и вернёт 0. Игнорировать это значение 0 можно было для скорости мигания, но 0 — это настоящий угол. Поэтому сразу после числа считайте символ новой строки с помощью одного вызова Serial.read().
Кто-нибудь может также ввести число, которое не является углом. arm.write() воспринимает любое число от 544 и выше как длительность импульса в микросекундах, поэтому значение 1000 установит руку примерно на 45 градусов. Сначала constrain() ограничивает угол диапазоном от 0 до 180:
angle = constrain(angle, 0, 180); // передайте ей переменную, а не parseInt()Задание
СреднеПеремещайте сервопривод на угол, введённый в Serial monitor:
- когда приходит число, считайте его с помощью
Serial.parseInt(), затем считайте символ новой строки (0 — это тоже угол) - ограничьте его диапазоном от 0 до 180 с помощью
constrain() - переместите рычаг и выведите угол в виде
Angle: 45
Нажмите Run, отправьте 45 из Serial monitor, затем нажмите Check.
Попробуйте сами
#include <Servo.h>
Servo arm;
void setup() {
arm.attach(9);
arm.write(90);
Serial.begin(9600);
}
void loop() {
// когда поступит число: считай его, затем считай символ новой строки,
// ограничь число диапазоном от 0 до 180, поверни рычаг и выведи число
}
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Выходные сигналы
5Движение
Управление сервоприводомПоворот сервоприводаСервопривод и ручкаУгол сервопривода через SerialСветовой индикатор угла сервоприводаПотренируйтесь самостоятельно: Песочница Arduino