Arduino:Примеры/Dimmer

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

Перевод: Максим Кузьмин (Cubewriter) Контакты:</br>* Skype: cubewriter</br>* E-mail: cubewriter@gmail.com</br>* Максим Кузьмин на freelance.ru
Проверка/Оформление/Редактирование: Мякишев Е.А.


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

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

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

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

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

Цепь

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

Dimmer-circuit3.png

Схема

Simplefade pin9 schem.png

Код для Arduino

 1 /*
 2   Регулятор яркости
 3  
 4  Демонстрирует передачу данных с компьютера на Arduino (в данном случае – для управления яркостью светодиода). Данные отсылаются отдельными байтами, и каждый содержит значение в диапазоне от 0 до 225. Arduino считывает эти баты и использует их, чтобы управлять яркостью светодиода.
 5  Цепь:
 6 * Светодиод подсоединен к 9-ому цифровому контакту и «земле».
 7 
 8  Последовательная передача данных осуществляется с помощью Processing, Max/MSP или другой подобной программы.
 9  
10  Создан в 2006 Дэвидом А. Меллисом (David A. Mellis),
11  Модифицирован 30 августа 2011 Томом Иго (Tom Igoe)
12  и Скоттом Фитцджеральдом (Scott Fitzgerald).
13  
14  Этот код не защищен авторским правом.
15  
16  http://www.arduino.cc/en/Tutorial/Dimmer
17  
18  */
19 
20 const int ledPin = 9;      // контакт, к которому подключен светодиод 
21 
22 void setup()
23 {
24   // инициализируем последовательную передачу данных:
25   Serial.begin(9600);
26   // задаем ledPin как выходной контакт:
27   pinMode(ledPin, OUTPUT);
28 }
29 void loop() {
30   byte brightness;
31 
32   // проверяем, есть ли данные от компьютера:
33   if (Serial.available()) {
34     // считываем самый последний байт
35     // (его значение будет варьироваться от 0 до 255):
36     brightness = Serial.read();
37     // задаем яркость на светодиоде:
38     analogWrite(ledPin, brightness);
39   }
40 }

Код для Processing

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

 1  /* Код к Processing для этого примера
 2 
 3  // Регулятор яркости – пересылает данные через последовательный порт
 4 
 5  // Автор – Дэвид А. Меллис
 6 
 7  // Этот код не защищен авторским правом.
 8  */
 9  
10  import processing.serial.*;
11  Serial port;
12  
13  void setup() {
14  size(256, 150);
15  
16  println("Available serial ports:");
17  println(Serial.list());
18  
19  // Воспользуемся первым портом из этого списка (под номером 0).
20  // Последний параметр (9600) – это скорость передачи данных.
21  // Он должен соответствовать значению,
22  // указанному в функции Serial.begin() в Arduino-скетче.
23 
24  port = new Serial(this, Serial.list()[0], 9600);  
25  
26  // если вам известно название порта, используемого платой Arduino,
27  // то его можно указать сразу: 
28  // port = new Serial(this, "COM1", 9600);
29  }
30 void draw() {
31  // «растягиваем» градиент от черного к белому
32  for (int i = 0; i < 256; i++) {
33  stroke(i);
34  line(i, 0, i, 150);
35  }
36  
37  // передаем текущую X-позицию мыши на последовательный порт
38  // в виде одного байта:
39  port.write(mouseX);
40  }

Код для Max

 1 /* Патч к Max/MSP v5 для этого примера */
 2  
 3 ----------begin_max5_patcher----------
 4 1008.3ocuXszaiaCD9r8uhA5rqAeHIa0aAMaAVf1S6hdoYQAsDiL6JQZHQ2M
 5 YWr+2KeX4vjnjXKKkKhhiGQ9MeyCNz+X9rnMp63sQvuB+MLa1OlOalSjUvrC
 6 ymEUytKuh05TKJWUWyk5nE9eSyuS6jesvHu4F4MxOuUzB6X57sPKWVzBLXiP
 7 xZtGj6q2vafaaT0.BzJfjj.p8ZPukazsQvpfcpFs8mXR3plh8BoBxURIOWyK
 8 rxspZ0YI.eTCEh5Vqp+wGtFXZMKe6CZc3yWZwTdCmYW.BBkdiby8v0r+ST.W
 9 sD9SdUkn8FYspPbqvnBNFtZWiUyLmleJWo0vuKzeuj2vpJLaWA7YiE7wREui
10 FpDFDp1KcbAFcP5sJoVxp4NB5Jq40ougIDxJt1wo3GDZHiNocKhiIExx+owv
11 AdOEAksDs.RRrOoww1Arc.9RvN2J9tamwjkcqknvAE0l+8WnjHqreNet8whK
12 z6mukIK4d+Xknv3jstvJs8EirMMhxsZIusET25jXbX8xczIl5xPVxhPcTGFu
13 xNDu9rXtUCg37g9Q8Yc+EuofIYmg8QdkPCrOnXsaHwYs3rWx9PGsO+pqueG2
14 uNQBqWFh1X7qQG+3.VHcHrfO1nyR2TlqpTM9MDsLKNCQVz6KO.+Sfc5j1Ykj
15 jzkn2jwNDRP7LVb3d9LtoWBAOnvB92Le6yRmZ4UF7YpQhiFi7A5Ka8zXhKdA
16 4r9TRGG7V4COiSbAJKdXrWNhhF0hNUh7uBa4Mba0l7JUK+omjDMwkSn95Izr
17 TOwkdp7W.oPRmNRQsiKeu4j3CkfVgt.NYPEYqMGvvJ48vIlPiyzrIuZskWIS
18 xGJPcmPiWOfLodybH3wjPbMYwlbFIMNHPHFOtLBNaLSa9sGk1TxMzCX5KTa6
19 WIH2ocxSdngM0QPqFRxyPHFsprrhGc9Gy9xoBjz0NWdR2yW9DUa2F85jG2v9
20 FgTO4Q8qiC7fzzQNpmNpsY3BrYPVJBMJQ1uVmoItRhw9NrVGO3NMNzYZ+zS7
21 3WTvTOnUydG5kHMKLqAOjTe7fN2bGSxOZDkMrBrGQ9J1gONBEy0k4gVo8qHc
22 cxmfxVihWz6a3yqY9NazzUYkua9UnynadOtogW.JfsVGRVNEbWF8I+eHtcwJ
23 +wLXqZeSdWLo+FQF6731Tva0BISKTx.cLwmgJsUTTvkg1YsnXmxDge.CDR7x
24 D6YmX6fMznaF7kdczmJXwm.XSOOrdoHhNA7GMiZYLZZR.+4lconMaJP6JOZ8
25 ftCs1YWHZI3o.sIXezX5ihMSuXzZtk3ai1mXRSczoCS32hAydeyXNEu5SHyS
26 xqZqbd3ZLdera1iPqYxOm++v7SUSz
27 -----------end_max5_patcher-----------

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

MaxDimmer.png

См.также

  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)

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