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

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

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


Pixel Art Mini Meow Animated.gif Черновик


Управление 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 }

См.также

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