Arduino:Примеры/Dimmer

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

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


Регулятор яркости[1]

Данный пример демонстрирует, как передать данные с персонального компьютера на плату Arduino, чтобы управлять яркостью светодиода. Данные передаются отдельными байтами, и значение каждого из которых варьируется в промежутке от 0 до 255. Arduino считывает эти байты, а затем использует для того, чтобы задать яркость светодиода. Байты можно отправлять при помощи любой программы, которая имеет доступ к последовательному порту компьютера. Ниже показаны примеры для Processing и Max/MSP version 5.

Необходимое оборудование

  • Плата Arduino;
  • Светодиод;
  • 220-омовый резистор;

Необходимое ПО

Цепь

Светодиод подключаем к 9-ому цифровому контакту. Если нужно, используем резистор. Для большинства светодиодов будут работать резисторы на 220 и 330 Ом.

Схема

Код для Arduino

/*
  Регулятор яркости
 
 Демонстрирует передачу данных с компьютера на Arduino (в данном случае – для управления яркостью светодиода). Данные отсылаются отдельными байтами, и каждый содержит значение в диапазоне от 0 до 225. Arduino считывает эти баты и использует их, чтобы управлять яркостью светодиода.
 Цепь:
* Светодиод подсоединен к 9-ому цифровому контакту и «земле».

 Последовательная передача данных осуществляется с помощью Processing, Max/MSP или другой подобной программы.
 
 Создан в 2006 Дэвидом А. Меллисом (David A. Mellis),
 Модифицирован 30 августа 2011 Томом Иго (Tom Igoe)
 и Скоттом Фитцджеральдом (Scott Fitzgerald).
 
 Этот код не защищен авторским правом.
 
 http://www.arduino.cc/en/Tutorial/Dimmer
 
 */

const int ledPin = 9;      // контакт, к которому подключен светодиод 

void setup()
{
  // инициализируем последовательную передачу данных:
  Serial.begin(9600);
  // задаем ledPin как выходной контакт:
  pinMode(ledPin, OUTPUT);
}
void loop() {
  byte brightness;

  // проверяем, есть ли данные от компьютера:
  if (Serial.available()) {
    // считываем самый последний байт
    // (его значение будет варьироваться от 0 до 255):
    brightness = Serial.read();
    // задаем яркость на светодиоде:
    analogWrite(ledPin, brightness);
  }
}

Код для Processing

Этот код (см. ниже) будет отправлять байты через последовательный порт на Arduino, чтобы менять яркость светодиода.

 /* Код к Processing для этого примера

 // Регулятор яркости – пересылает данные через последовательный порт

 // Автор – Дэвид А. Меллис

 // Этот код не защищен авторским правом.
 */
 
 import processing.serial.*;
 Serial port;
 
 void setup() {
 size(256, 150);
 
 println("Available serial ports:");
 println(Serial.list());
 
 // Воспользуемся первым портом из этого списка (под номером 0).
 // Последний параметр (9600) – это скорость передачи данных.
 // Он должен соответствовать значению,
 // указанному в функции Serial.begin() в Arduino-скетче.

 port = new Serial(this, Serial.list()[0], 9600);  
 
 // если вам известно название порта, используемого платой Arduino,
 // то его можно указать сразу: 
 // 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);
 }

Код для Max

/* Патч к Max/MSP v5 для этого примера */
 
----------begin_max5_patcher----------
1008.3ocuXszaiaCD9r8uhA5rqAeHIa0aAMaAVf1S6hdoYQAsDiL6JQZHQ2M
YWr+2KeX4vjnjXKKkKhhiGQ9MeyCNz+X9rnMp63sQvuB+MLa1OlOalSjUvrC
ymEUytKuh05TKJWUWyk5nE9eSyuS6jesvHu4F4MxOuUzB6X57sPKWVzBLXiP
xZtGj6q2vafaaT0.BzJfjj.p8ZPukazsQvpfcpFs8mXR3plh8BoBxURIOWyK
rxspZ0YI.eTCEh5Vqp+wGtFXZMKe6CZc3yWZwTdCmYW.BBkdiby8v0r+ST.W
sD9SdUkn8FYspPbqvnBNFtZWiUyLmleJWo0vuKzeuj2vpJLaWA7YiE7wREui
FpDFDp1KcbAFcP5sJoVxp4NB5Jq40ougIDxJt1wo3GDZHiNocKhiIExx+owv
AdOEAksDs.RRrOoww1Arc.9RvN2J9tamwjkcqknvAE0l+8WnjHqreNet8whK
z6mukIK4d+Xknv3jstvJs8EirMMhxsZIusET25jXbX8xczIl5xPVxhPcTGFu
xNDu9rXtUCg37g9Q8Yc+EuofIYmg8QdkPCrOnXsaHwYs3rWx9PGsO+pqueG2
uNQBqWFh1X7qQG+3.VHcHrfO1nyR2TlqpTM9MDsLKNCQVz6KO.+Sfc5j1Ykj
jzkn2jwNDRP7LVb3d9LtoWBAOnvB92Le6yRmZ4UF7YpQhiFi7A5Ka8zXhKdA
4r9TRGG7V4COiSbAJKdXrWNhhF0hNUh7uBa4Mba0l7JUK+omjDMwkSn95Izr
TOwkdp7W.oPRmNRQsiKeu4j3CkfVgt.NYPEYqMGvvJ48vIlPiyzrIuZskWIS
xGJPcmPiWOfLodybH3wjPbMYwlbFIMNHPHFOtLBNaLSa9sGk1TxMzCX5KTa6
WIH2ocxSdngM0QPqFRxyPHFsprrhGc9Gy9xoBjz0NWdR2yW9DUa2F85jG2v9
FgTO4Q8qiC7fzzQNpmNpsY3BrYPVJBMJQ1uVmoItRhw9NrVGO3NMNzYZ+zS7
3WTvTOnUydG5kHMKLqAOjTe7fN2bGSxOZDkMrBrGQ9J1gONBEy0k4gVo8qHc
cxmfxVihWz6a3yqY9NazzUYkua9UnynadOtogW.JfsVGRVNEbWF8I+eHtcwJ
+wLXqZeSdWLo+FQF6731Tva0BISKTx.cLwmgJsUTTvkg1YsnXmxDge.CDR7x
D6YmX6fMznaF7kdczmJXwm.XSOOrdoHhNA7GMiZYLZZR.+4lconMaJP6JOZ8
ftCs1YWHZI3o.sIXezX5ihMSuXzZtk3ai1mXRSczoCS32hAydeyXNEu5SHyS
xqZqbd3ZLdera1iPqYxOm++v7SUSz
-----------end_max5_patcher-----------

Код, указанный выше, соответствует картинке, которая изображена ниже. Скопируйте его и вставьте в новое окно Max.

См.также

  1. Serial
  2. Serial.read()
  3. analogRead()
  4. analogWrite()
  5. Graph
  6. Physical Pixel
  7. Virtual Color Mixer
  8. Serial Call Response ASCII
  9. SerialEvent
  10. Serial input (Switch (case) Statement)

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