Cat hungry.png
Здравствуйте! Собираем деньги на перевод материалов по электронике(https://www.allaboutcircuits.com/education/). Реквизиты указаны здесь.

Arduino:Примеры/Управление RGB-светодиодом отправкой последовательности цифр

Материал из Онлайн справочника
Перейти к: навигация, поиск

Проверка/Оформление/Редактирование: Мякишев Е.А.


Ambox content.png Черновик


Управление RGB-светодиодом отправкой последовательности цифр

Данный пример демонстрирует управление RGB-светодиодом отправкой последовательности цифр, разделенных символами отличными от цифр(например: "255,55,10", "255.255.255", "0p0p0", "255!255!255").

Для управления RGB-светодиодом мы будем посылать через монитор последовательного порта три 8-битовых значения(т.е. от 0 до 255) разделенных символами отличными от цифр. Для считывания данных мы будем использовать функцию Serial.parseInt(). С её помощью мы сможем прочитать числа игнорируя другие символы, привести их к целочисленному формату для использования в функции analogWrite() и нам не потребуется дополнительных "ухищрений" при работе с одно-, двух- или трехзначными числами.

Наша программа будет осуществлять поиск трех целочисленных значений, пока не обнаружит символ перевода строки "\n". После этого найденные значения будут использоваться для установки цвета RGB-светодиода.

Необходимые компоненты

Монтажная схема

Соберите схему согласно монтажной схеме.

Arduino uno example rgb serial ints 1.png

Код

  1. #define RED   11                      // 11 контакт для красного вывода RGB-светодиода
  2. #define GREEN 10                      // 10 контакт для зеленого вывода RGB-светодиода
  3. #define BLUE   9                      // 9 контакт для синего вывода RGB-светодиода
  4.  
  5. int rval = 0;                         // переменная для хранения значений для красного вывода RGB-светодиода
  6. int gval = 0;                         // переменная для хранения значений для зеленого вывода RGB-светодиода
  7. int bval = 0;                         // переменная для хранения значений для синего вывода RGB-светодиода
  8.  
  9. void setup()
  10. {
  11.   Serial.begin(9600);                 // Инициализация последовательного соединения на скорости 9600 бод
  12.  
  13.   pinMode(RED, OUTPUT);               // Устанавливаем контакт RED(т.е 11 контакт) как выход
  14.   pinMode(GREEN, OUTPUT);             // Устанавливаем контакт GREEN(т.е 10 контакт) как выход
  15.   pinMode(BLUE, OUTPUT);              // Устанавливаем контакт BLUE(т.е 9 контакт) как выход
  16. }
  17.  
  18. void loop()
  19. {
  20.   // Выполняем цикл, пока в буфере есть данные
  21.   while (Serial.available() > 0)
  22.   {
  23.     rval = Serial.parseInt();        // первое допустимое целое число
  24.     gval = Serial.parseInt();        // второе допустимое целое число
  25.     bval = Serial.parseInt();        // третье допустимое целое число
  26.  
  27.     if (Serial.read() == '\n')       // передача окончена
  28.     {
  29.       // устанавливаем яркость светодиода
  30.       analogWrite(RED, rval);
  31.       analogWrite(GREEN, gval);
  32.       analogWrite(BLUE, bval);
  33.     }
  34.   }
  35. }

См.также

Внешние ссылки