Cat hungry.png
Здравствуйте! Собираем деньги на перевод материалов по электронике(https://www.allaboutcircuits.com/education/). Реквизиты указаны здесь.

Arduino:Примеры/Dimmer

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

Перевод: Максим Кузьмин (Cubewriter)
Перевел 2686 статей для сайта.

Контакты:

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


Регулятор яркости[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)

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

  1. Arduino - Dimmer