СОДЕРЖАНИЕ ►
Как управлять Ардуино с компьютера через USB. Расскажем, как произвести включение светодиода и управлять сервомотором на Arduino с клавиатуры через функцию Serial.available() и Serial.read(). Данные функции проверяют, поступают ли какие-то команды на микроконтроллер по последовательному порту, а затем считывают поступающие команды, вводимые в Serial monitor с компьютера.
Управление Ардуино через компьютер
Функция Serial.available() получает количество байт доступных для чтения из последовательного порта. Это те байты которые отправлены с компьютера и записаны в буфер последовательного порта. Буфер Serial monitor Arduino может хранить максимум до 64 байт. Функция используется также при взаимодействии Bluetooth модуля к Ардуино и полезна при отладке устройства на этапе проектирования.
При тестировании и настройке различных устройств, управляемых через Bluetooth, например, роботом или Лодкой на Ардуино вам пригодится знание, как управлять светодиодом и сервомотором через компьютер. Поэтому рассмотрим сейчас простое управление сервоприводом через компьютер по USB кабелю. При этом через монитор можно отправлять не только цифры, но и буквы латинского алфавита.
Как управлять Ардуино с клавиатуры
Для этого занятия потребуется:
- Arduino Uno / Arduino Nano / Arduino Mega;
- макетная плата;
- светодиод и резистор 220 Ом;
- сервопривод;
- провода «папа-папа» и «папа-мама».

Остальные исполнительные устройства для Arduino UNO вы можете взять на свое усмотрение и самостоятельно попробовать управлять ими через компьютер с помощью USB кабеля. Соберите на макетной плате схему с одним светодиодом из первого занятия Что такое Ардуино и как им пользоваться, а после сборки схемы со светодиодом загрузите следующий скетч в микроконтроллер.
Скетч. Взаимодействие Ардуино и компьютера
int val; // освобождаем память в контроллере для переменой void setup() { Serial.begin(9600); // подключаем последовательный порт pinMode(13, OUTPUT); // объявляем пин 13 как выход } void loop() { // проверяем, поступают ли какие-то команды if (Serial.available()) { val = Serial.read(); // переменная val равна полученной команде if (val == '1') {digitalWrite(13, HIGH);} // при 1 включаем светодиод if (val == '0') {digitalWrite(13, LOW);} // при 0 выключаем светодиод } }
Пояснения к коду:
- функция
Serial.available()проверяет поступление команд с компьютера; - функция
Serial.read()читает данные, поступившие в Serial monitor. - в условном операторе
if (val == '1')стоит знак двойное равенство «соответствие», а в скобках необходимо использовать одинарные кавычки.

После сборки схемы загрузите следующий скетч в плату
Скетч. Управление сервоприводом с компьютера
#include <Servo.h> // подключаем библиотеку для сервопривода Servo servo; // объявляем переменную servo типа "servo" int val; // освобождаем память в контроллере для переменой void setup() { Serial.begin(9600); // подключаем последовательный порт servo.attach(11); // привязываем сервопривод к выходу 11 } void loop() { // проверяем, поступают ли какие-то команды if (Serial.available()) { val = Serial.read(); // переменная val равна полученной команде if (val == '1') { servo.write(10); } // при 1 поворачиваем серво на 10 if (val == '2') { servo.write(45); } // при 2 поворачиваем серво на 45 if (val == '3') { servo.write(90); } // при 3 поворачиваем серво на 90 } }
Пояснения к коду:
- в некоторых примерах программ можно встретить такой вариант проверки появления данных в Serial monitor
if (Serial.available()>0). - в качестве команд можно использовать не только цифры, но и буквы. При этом имеет значение какая буква — прописная или строчная.










Посылают единицу диод загорается посылая 0 ничего не происходит
У нас все работало, попробуйте «0» заменить на «2»
спасибо
Здравствуйте! Отличный урок, но светодиодов может быть только 10 (0-9). Как управлять 11 и более?
Спасибо. Добавили информацию о том, что для управления Arduino через Serial monitor можно использовать еще латинские буквы. При этом не забывайте, что строчная (f) и прописная буква (F) — это два разных символа с точки зрения микроконтроллера.