Лабораторные работы Технологии+Бизнес
Цель работы
Научиться взаимодействовать с контроллером Arduino через последовательный порт.
Задачи работы
- Разработка скетча для управления светодиодом на плате через последовательный порт.
- Знакомство с монитором последовательного порта.
- Оповещение о переключении светодиода.
Инструменты для выполнения работы
- Компьютер.
- Плата Arduino с USB выходом (например, Arduino Leonardo).
Теоретическая часть
Для программного взаимодействия с последовательным портом предназначены объекты стандартной библиотеки Arduino под названиями Serial, Serial1, Serial2 и т.д. Как правило, на каждой плате есть один последовательный порт, которому соответствует объект Serial. Данный порт при подключении к ПК позволяет обмениваться данными с компьютером поверх USB. Если микроконтроллер от компьютера отключен, то Serial позволяет обмениваться данными с другими устройствами через цифровые пины 0 и 1. Исключение составляет только Arduino Leonardo, у которой Serial всегда используется для взаимодействия через USB, а для цифровых пинов 0 и 1 используется отдельный объект Serial1.
Выполнение работы
Разработка скетча для управления светодиодом на плате через последовательный порт
Создаем новый скетч с названием SerialTest. В функции setup() инициализируем последовательный порт и 13-й пин для управления светодиодом:
Serial.begin(9600);
pinMode(13,OUTPUT);
В функции loop() проверяем, нет ли данных в последовательном порту. Читаем данные, и если пришел символ "1", включаем светодиод, во всех остальных случаях выключаем:
while(Serial.available())
digitalWrite(13,(Serial.read()=='1')?HIGH:LOW);
Знакомство с монитором последовательного порта
Открываем монитор последовательного порта (Инструменты -> Монитор порта):
В данном окне выводится информация, поступающая от контроллера. В верхней строке можно писать текст, который отправляется на контроллер. В нижнем правом окне настраивается скорость передачи данных и указывается, будет ли к тексту добавляться символ перевода строки.
Оповещение о переключении светодиода
Доработаем скетч так, чтобы в мониторе порта отображалась информация о переключении светодиода. Для этого поменяем код функции loop():
while(Serial.available())
{
char c=Serial.read();
if(c=='1')
{
digitalWrite(13,HIGH);
Serial.println("Led On");
}
else
{
digitalWrite(13,LOW);
Serial.println("Led Off");
}
}
Проверяем монитор порта, теперь при переключении светодиода должны отображаться оповещения.
Лабораторные работы Технологии+Бизнес