Освой программирование играючи

Сайт Александра Климова

Шкодим

/* Моя кошка замечательно разбирается в программировании. Стоит мне объяснить проблему ей - и все становится ясно. */
John Robbins, Debugging Applications, Microsoft Press, 2000

04.Communication: Dimmer

Пример демонстрирует, как можно посылать данные из компьютера на плату для управления яркостью светодиода. Данные поступают в виде отдельных байтов от 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 и водим мышкой над созданным окном в любую сторону. При движении влево яркость светодиода будет уменьшаться, при движении вправо - увеличиваться.

Dimmer

Реклама