Освой программирование играючи
/* Моя кошка замечательно разбирается в программировании. Стоит мне объяснить проблему ей - и все становится ясно. */
John Robbins, Debugging Applications, Microsoft Press, 2000
Пример демонстрирует, как можно посылать данные из компьютера на плату для управления яркостью светодиода. Данные поступают в виде отдельных байтов от 0 до 255. Данные могут поступать от любой программы на компьютере, которая имеет доступ к последовательному порту. В числе таких программ могут выступать Processing и Max/MSP version 5.
Для примера понадобится стандартная схема с резистором и светодиодом на выводе 9.
Скетч для Arduino.
const int ledPin = 9; // светодиод на выводе 9
void setup() {
Serial.begin(9600);
// устанавливаем режим на вывод
pinMode(ledPin, OUTPUT);
}
void loop() {
byte brightness;
// проверяем, есть ли данные от компьютера
if (Serial.available()) {
// читаем последние полученные байты от 0 до 255
brightness = Serial.read();
// устанавливаем яркость светодиода
analogWrite(ledPin, brightness);
}
}
Код для Processing
import processing.serial.*;
Serial port;
void setup() {
size(256, 150);
println("Available serial ports:");
println(Serial.list());
// Uses the first port in this list (number 0). Change this to select the port
// corresponding to your Arduino board. The last parameter (e.g. 9600) is the
// speed of the communication. It has to correspond to the value passed to
// Serial.begin() in your Arduino sketch.
port = new Serial(this, Serial.list()[0], 9600);
// Если вы знаете имя порта, используемой платой Arduino board, то явно укажите
//port = new Serial(this, "COM1", 9600);
}
void draw() {
// рисуем градиент от чёрного к белому
for (int i = 0; i < 256; i++) {
stroke(i);
line(i, 0, i, 150);
}
// записывем текущую X-позицию мыши в последовательный порт как байт
port.write(mouseX);
}
Запускаем Processing и водим мышкой над созданным окном в любую сторону. При движении влево яркость светодиода будет уменьшаться, при движении вправо - увеличиваться.