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

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

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


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


Управление цветом фона окна программы на Processing с помощью Arduino и потенциометра

Данный пример демонстрирует управление цветом фона окна программы на Processing с помощью Arduino и потенциометра. Arduino считывает значение с потенциометра и посылает их в последовательный порт, программа на Processing считывает данные с последовательного порта и изменяет цвет фона окна программы. При повороте движка потенциометра цвет фона окна программы будет меняться от черного к синему.

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

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

Соедините контакт 5V Arduino с любым крайним контактом потенциометра, а контакт GND Arduino с другим крайним контактом потенциометра. Средний контакт потенциометра соедините с 0-ым аналоговым входом Arduino.

Arduino uno pot serial.png

Код для Arduino

 1 #define POT 0                                   // подключаем потенциометр к аналоговому выводу A0
 2 
 3 int val;                                        // для хранения значений, считанных с потенциометра
 4 
 5 void setup()
 6 {
 7   Serial.begin(9600);                           // инициализация последовательного порта на скорости 9600 бод
 8 }
 9 
10 void loop()
11 {
12   val = map(analogRead(POT), 0, 1023, 0, 255);  // считываем значение с потенциометра и приводим к другому диапазону
13                                                 // диапазон 0-255 выбран, поскольку интенсивность RGB цветов 
14                                                 // задаются 8-битными значениями т.е. от 0 до 255
15   Serial.println(val);                          // отправка полученного значения
16   delay(50);                                    // задержка 50 мс
17 }

Код для Processing

 1 import processing.serial.*;                         // импортируем библиотеку для работы с последовательным портом
 2 Serial port;
 3 
 4 float brightness = 0;                               // переменная для хранения полученных значений потенциометра
 5 
 6 /*
 7 Функция setup() в Processing, аналогична функции в Arduino
 8 */
 9 void setup()
10 {
11   size(500,500);                                    // задаем размер окна программы
12   port = new Serial(this, "COM3", 9600);            // инициализация последовательного порта
13                                                     // ВАЖНО! измените номер Com-порта т.е. "COM3" на ваш номер последовательного порта
14                                                     // в Linux или Mac это может быть, например "/dev/ttyUSB0" 
15                                                     // ПОМНИТЕ! Скорость обмена данными по последовательному порту между Arduino и программой на Processing
16                                                     // должны совпадать для избежания возникновения ошибок
17   port.bufferUntil('\n');                           // буферизация последовательного порта до получения символа новой строки '\n'
18 }
19 
20 /*
21 Функция draw() будет вызываться непрерывно,
22 в свою очередь вызывая функцию background() для изменения цвета фона окна программы
23 */
24 void draw()
25 {
26   background(0,0,brightness);                       // задаем цвет фона окна программы
27                                                     // в данном случае красный и зеленый компоненты заблокированы и установлены в 0
28                                                     // переменная brightness, хранящая значения потенциометра изменяет интенсивность синего компонента
29 }
30 
31 /*
32 Функция serialEvent() вызывается каждый раз, когда выполняется условие port.bufferUntil('\n')
33 т.е. появление в символа перевода строки.
34 */ 
35 void serialEvent (Serial port)
36 {
37   brightness = float(port.readStringUntil('\n'));   // считываем значение потенциометра и преобразуем к типу float
38 }

См.также

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