Arduino:Примеры/Управление RGB-светодиодом с помощью палитры цветов из программы на Processing

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

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


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


Управление RGB-светодиодом с помощью палитры цветов из программы на Processing

Данный пример демонстрирует управление RGB-светодиодом с помощью палитры цветов из программы на Processing. "Кликая" мышкой по палитре цветов в окне программы вы сможете настраивать цвет светодиода.

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

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

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

Arduino uno example rgb serial ints 1.png

Код для Arduino

 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 }

Код для Processing

 1 import processing.serial.*;                                            // импортируем библиотеку для работы с последовательным портом
 2 PImage img;                                                            // объект для хранения изображений
 3 Serial port;                                                           // обьект для работы с последовательным портом
 4 
 5 
 6 /*
 7 Функция setup() в Processing, аналогична функции в Arduino
 8 */
 9 void setup()
10 {
11   size(640,256);                                                       // устанавливаем размер окна программы равный размеру изображения hsv.jpg
12   img = loadImage("hsv.jpg");                                          // импортируем фоновое изображение hsv.jpg
13   port = new Serial(this, "COM9", 9600);                               // инициализация последовательного порта
14                                                                        // ВАЖНО! измените номер Com-порта т.е. "COM3" на ваш номер последовательного порта
15                                                                        // в Linux или Mac это может быть, например "/dev/ttyUSB0"
16                                                                        // ПОМНИТЕ! Скорость обмена данными по последовательному порту между Arduino и программой на Processing
17                                                                        // должны совпадать для избежания возникновения ошибок  
18 }
19 
20 /*
21 Функция draw() будет вызываться непрерывно
22 */
23 void draw()
24 {
25   background(0);                                                       // устанавливаем черный фоновый цвет
26   image(img,0,0);                                                      // загружаем в окно фоновое изображение, где
27                                                                        // img - наше изображение (hsv.jpg)
28                                                                        // 0,0 - координаты для размещения фонового изображения (верхний левый угол)
29 }
30 
31 /*
32 Функция mousePressed() вызывается каждый раз при нажатии кнопки мыши
33 */
34 void mousePressed() 
35 {
36   color c = get(mouseX, mouseY);                                       // получаем RGB-цвет по позиции курсора
37   String colors = int(red(c))+","+int(green(c))+","+int(blue(c))+"\n"; // формируем строку RGB значений
38   print(colors);                                                       // распечатываем строку в консоль для отладки
39   port.write(colors);                                                  //отправляем данные на Arduino
40 }

Сохраните проект на Processing и поместите в папку с проектом данное изображение:

Hsv.jpg

См.также

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