1. Загрузите программу, которая позволяет изменить цвет окна обработки с помощью потенциометра, подключенного к Arduino. Сделайте это до установки переходника ХВее на плату Arduino, чтобы избежать коллизий UART, которые обсуждались ранее в этой главе. Если на переходнике есть перемычка или переключатель для выбора режима подключения/отключения ХВее к UART, то сам переходник при программировании платы Arduino можно не извлекать. Уточните это в документации на ваш переходник ХВее. Код программы, читающий данные потенциометра и передающий их на компьютер, приведен в листинге 11.1.
Листинг 11.1. Программа Arduino для отправки данных на компьютер - pot_to_processing/arduino_read_pot
// Отправка данных потенциометра на компьютер
const int POT=0; // Аналоговый вход для подключения потенциометра
int val;
// Переменная для хранения данных потенциометра
- 238 -
void setup()
{
Serial.begin(9600); // Запуск последовательного порта
}
void loop()
{
val = map(analogRead(POT), 0, 1023, 0, 255); //
//Чтение и масштабирование данных
//Отправка данных
Serial.println(val);
delay(50); // Задержка
}
2. Отключите плату Arduino от компьютера и подсоедините к ней переходник вместе с модулем ХВее. Подключите потенциометр к аналоговому входу 0, как показано на электрической схеме, изображенной на рис. 11.16.
3. Для питания платы Arduino используйте один из методов, описанных в предыдущем разделе. Я выбрал сетевой USB-адаптер питания.
4. Подключите ХВее USB Explorer с другим запрограммированным модулем ХВее к компьютеру с помощью кабеля USB. Если модули настроены правильно, Rx светодиод на переходнике USB ХВее Explorer будет быстро мигать в момент получения данных.
5. Перед использованием приходящих данных в Processing-приложении откройте монитор последовательного порта в Arduino IDE. Выберите последовательный порт, к которому подключен ваш переходник USB ХВее Explorer, и убедитесь, что данные поступают в компьютер (рис. 11.17).
6. После того как вы убедитесь, что данные поступают, закройте монитор последовательного порта и запустите программу на Processing для регулировки цвета окна. Проверьте, что последовательный порт выбран правильно. Текст программы на Processing приведен в листинге 11.2.
Листинг 11.2. Программа на Processlng для чтения последовательных данных и установки цвета экрана - pot_to_processing/processlng_d,splay_color
// Программа на Processing для чтения переменной и изменения цвета экрана
// Подключение и инициализация библиотеки serial
import processing.serial.*;
Serial port;
float brightness = 0; // Переменная для хранения значения потенциометра
void setup()
{
// Размер окна
size(500,500);
port = new Serial(this, "COM3", 9600); // Инициализация
// последовательного порта
- 239 -
port.bufferUntil('\n');// Символ конца строки
}
void draw()
{
background(0,0,brightness);// Перерисовать окно
}
void serialEvent (Serial port)
{
brightness = float(port.readStringUntil('\n')); // Получить переменную
}
Рис. 11.16. Схема соединения платой Arduino с потенциометром и переходником ХВее
- 240 -
Рис. 11.17. Данные, переданные по беспроводному каналу в монитор последовательного порта
При запуске программы она должна работать так же, как это было при подсоединении платы Arduino непосредственно к компьютеру. Теперь вы можете ходить вокруг дома и офиса (если питаете Arduino от батареи) и менять цвет на экране компьютера.
11.3.3. Пример 2: управление RGB-светодиодом
В предыдущем примере мы убедились, что возможна беспроводная передача данных от Arduino к компьютеру. Теперь используем код из главы 6 для управления RGB-светодиодом, чтобы проверить, что можно отправлять данные без проводов от компьютера к плате Arduino. Удостоверившись в успешном обмене данными между компьютером и Arduino по беспроводному соединению, вы сможете создавать множество интересных приложений (некоторые есть на веб-странице для этой главы).
Сначала загрузим программу (листинг 11.3) на плату Arduino. Подобный пример был рассмотрен в главе 6. Принимаем строку значений RGB и устанавливаем цвет RGB-светодиода.
Листинг 11.3. Управление RGB-светодиодом через последовательный порт - processing_control)RGB/list_control
// Отправка многоразрядных значений
// Константы выводов RGB-светодиода
const int RED =11;
const int GREEN =10;
const int BLUE =9;
// Переменные значений выводов RGB
int rval=0;
int gval=0;
int bval=0;
- 241 -
void setup()
{
Serial.begin(9600);// Инициализация последовательного
Читать дальше