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

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

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

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


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


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

См.также

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