Пример 30. Serial Port
Примеры
ПРИМЕРЫ
- Пример 1. Светодиоды
- Пример 2. Подключение кнопки
- Пример 3. Переключатель
- Пример 4. Активный зуммер
- Пример 5. Пассивный зуммер
- Пример 6. Фоторезистор
- Пример 7. RGB-светодиод
- Пример 8. Семисегментный индикатор и 74HC595N
- Пример 9. Четырехразрядный 7-сегментный индикатор
- Пример 10. Светодиодная матрица
- Пример 11. Светодиодная шкала
- Пример 12. ЖК-дисплей
- Пример 13. Джойстик
- Пример 14. Вольтметр
- Пример 15. Термистор
- Пример 16. Модуль DHT11
- Пример 17. Модуль HC-SR04
- Пример 18. Датчик движения HC-SR501
- Пример 19. Матричная клавиатура
- Пример 20. ИК датчик и пульт
- Пример 21. Модуль часов DS-1302
- Пример 22. RFID-модуль RC522
- Пример 23. Сервопривод
- Пример 24. Модуль реле
- Пример 25. Двигатель постоянного тока
- Пример 26. Шаговый двигатель и драйвер ULN2003
- Пример 27. Драйвер двигателей на L298N
- Пример 28. MP3-плеер DFPlayer Mini
- Пример 29. Датчик уровня воды
- Пример 30. Serial Port
- Пример 31. Симуляция парковки
- Пример 32. Датчик температуры DS18B20
- Пример 33. Bluetooth-модуль HC-06
- Пример 34. Плата расширения с дисплеем и кнопками
- Пример 35. Плата расширения для двигателей на L293D
- Пример 36. Ethernet шилд W5100
- Пример 37. GSM/GPRS шилд SIM900
- Пример 38. GPS модуль Ublox NEO-6M
- Пример 39. Модуль считывания отпечатков пальцев
- Пример 40. Шаговый двигатель NEMA17 и драйвер TB6600
UART в переводе это универсальный асинхронный приемопередатчик. Данные UART передаются последовательным кодом в следующем формате:
Любая плата Ардуино имеет, как минимум, один аппаратный последовательный интерфейс UART. Платы Arduino Mega и Arduino Due имеют по три порта.
Плата Arduino UNO имеет один порт UART, сигналы которого подключены к выводам 0 (сигнал RX) и 1 (сигнал TX). Сигналы имеют логические уровни TTL (0…5 В). Через эти выводы (0 и 1) можно подключить к плате другое устройство имеющее интерфейс UART.
Кроме функции связи с другими контроллерами порт UART платы Arduino UNO используется для загрузки в контроллер программы из компьютера. Для этого к этим же сигналам (RX и TX) подключены соответствующие выводы микросхемы ATmega16U2 – преобразователя интерфейса USB/UART. Микросхема преобразователя подключена через резисторы сопротивлением 1 кОм.
Фрагмент схемы платы Arduino UNO R3:
Для работы с аппаратными UART контроллерами в Ардуино существует встроенный класс Serial. Он предназначен для управления обменом данными через UART. Перед тем, как рассказать о функциях класса Serial, поясним разницу в формате данных обмена.
Через последовательный интерфейс данные всегда передаются в двоичном коде. Вопрос как эти данные интерпретировать, как воспринимать. Например, передан двоичный код «01000001» (десятичный 65). Как его отобразить на экране? Может быть передано число 65 и на экране надо вывести «65». А может это код буквы «A», тогда на экране надо написать «A». Просто необходимо знать в каком формате передаются данные.
В классе Serial данные могут передаваться в двух форматах:
- как бинарный код;
- как ASCII символы.
Например, монитор последовательного порта в программе Arduino IDE принимает данные как ASCII текст. Для того, чтобы он вывел на экран компьютера число «65» надо передать коды символов «6» и «5». А код «65» монитор отобразит как символ «A».
Описание:
В данном примере продемонстрируем работу функции передачи и приема данных через последовательный порт. На компьютере мы будем передавать данные на плату Arduino, которая исходя из этих данных будет контролировать состояние RGB LED модуля. После загрузки скетча в плату откройте монитор порта (Ctrl + Shift + M). В соответствии с программой выберите скорость передачи данных 9600 бод. Теперь, отправляя «r», модуль засветится красным, «g» – зеленым и «b» – голубым.
Компоненты:
- 1 × Плата Arduino
- 1 × USB-кабель
- 1 × RGB LED модуль
- Соединительные провода
Схема:
Скетч:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
const int redPin = 11; // вывод R модуля подключаем к пину 11 const int greenPin = 10; // G подключаем к пину 10 const int bluePin = 9; // B подключаем к пину 9 void setup() { Serial.begin(9600); // открываем Serial Port, скорость 9600 бод pinMode(redPin, OUTPUT); // подключаем как вывод pinMode(greenPin, OUTPUT); // подключаем как вывод pinMode(bluePin, OUTPUT); // подключаем как вывод } void loop() { char receiveVal; // полученное значение if(Serial.available() > 0) { receiveVal = Serial.read(); // сохраняем полученное значение в переменную switch (receiveVal){ case 'r': digitalWrite(redPin, HIGH); // красный светодиод включается digitalWrite(greenPin, LOW); digitalWrite(bluePin, LOW); Serial.println("RED"); // сообщение в МП о цвете свечения break; case 'g': digitalWrite(greenPin, HIGH); // зеленый светодиод включается digitalWrite(redPin, LOW); digitalWrite(bluePin, LOW); Serial.println("GREEN"); // сообщение в МП о цвете свечения break; case 'b': digitalWrite(bluePin, HIGH); // голубой светодиод включается digitalWrite(redPin, LOW); digitalWrite(greenPin, LOW); Serial.println("BLUE"); // сообщение в МП о цвете свечения break; default: break; } } delay(50); // задержка 50мс } |