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

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

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

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


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


Управление цветом фона окна программы на 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. }

См.также

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