首页 > 代码库 > Dimmer: 通过移动鼠标来改变 LED 的亮度

Dimmer: 通过移动鼠标来改变 LED 的亮度

原文地址 - https://www.arduino.cc/en/Tutorial/Dimmer

调光器

本例展示了如何通过个人电脑发送数据到 Arduino / Genuino 开发板来控制一个LED的亮度。数据用单独的字节发送,每一个数字的范围是0到255。程序读取这些字节并用他们来设置LED的亮度。

硬件需求

Arduino 或Genuino开发板

LED

220欧电阻

软件需求

Processing 或

Max/MSP version 5

电路

把一个220欧的限流电阻接到数字引脚9并与LED串接。LED的长针脚(阳极)应该连接到电阻的输出端,短针脚(阴极)接到GND

技术分享

原理图

 

技术分享

代码

	/*  调光器通过从电脑发送数据到Arduino开发板,来控制LED的亮度。传送的数据为单字节,数据范围为0到255. Arduino读取这些字节数据并用它们设置LED的亮度。电路:LED连接了数字引脚9和接地。串口连接到Processing, Max/MSP, 或其他的串口程序。编写日期:2006编制人员:David A. Mellis更新日期:2011年8月30日更新人员:Tom Igoe、Scott Fitzgerald翻译日期:2016年12月14日翻译人员:苏杭本示例公布在公众网络上. http://www.arduino.cc/en/Tutorial/Dimmer */const int ledPin = 9;      // LED所连接的引脚void setup() {  // 初始化串口连接:  Serial.begin(9600);  // 初始化LED引脚作为输出:  pinMode(ledPin, OUTPUT);}void loop() {  byte brightness;  // 检查是否有数据从电脑发送过来:  if (Serial.available()) {    // 读取最后发送的字节数据(从0到255):    brightness = Serial.read();    // 设置LED的亮度:    analogWrite(ledPin, brightness);  }}/* 本例Processing代码 // Dimmer - 发送数据到一个串口 // 由David A. Mellis编写 //本示例的代码公布在公众网络上. import processing.serial.*; Serial port; void setup() { size(256, 150); println("Available serial ports:"); // 如果使用Processing 2.1或以上的版本, 请用 Serial.printArray() println(Serial.list()); // 使用本列表中的第一个端口(序号0)。你可以改变这个序号来选择你的Arduino所连接的端口。 // 最后一个参数(例如9600)是通讯的速度,它与你的Arduino程序中的Serial.begin() // 参数必须对应。   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/MSP v5补丁----------begin_max5_patcher----------1008.3ocuXszaiaCD9r8uhA5rqAeHIa0aAMaAVf1S6hdoYQAsDiL6JQZHQ2MYWr+2KeX4vjnjXKKkKhhiGQ9MeyCNz+X9rnMp63sQvuB+MLa1OlOalSjUvrCymEUytKuh05TKJWUWyk5nE9eSyuS6jesvHu4F4MxOuUzB6X57sPKWVzBLXiPxZtGj6q2vafaaT0.BzJfjj.p8ZPukazsQvpfcpFs8mXR3plh8BoBxURIOWyKrxspZ0YI.eTCEh5Vqp+wGtFXZMKe6CZc3yWZwTdCmYW.BBkdiby8v0r+ST.WsD9SdUkn8FYspPbqvnBNFtZWiUyLmleJWo0vuKzeuj2vpJLaWA7YiE7wREuiFpDFDp1KcbAFcP5sJoVxp4NB5Jq40ougIDxJt1wo3GDZHiNocKhiIExx+owvAdOEAksDs.RRrOoww1Arc.9RvN2J9tamwjkcqknvAE0l+8WnjHqreNet8whKz6mukIK4d+Xknv3jstvJs8EirMMhxsZIusET25jXbX8xczIl5xPVxhPcTGFuxNDu9rXtUCg37g9Q8Yc+EuofIYmg8QdkPCrOnXsaHwYs3rWx9PGsO+pqueG2uNQBqWFh1X7qQG+3.VHcHrfO1nyR2TlqpTM9MDsLKNCQVz6KO.+Sfc5j1Ykjjzkn2jwNDRP7LVb3d9LtoWBAOnvB92Le6yRmZ4UF7YpQhiFi7A5Ka8zXhKdA4r9TRGG7V4COiSbAJKdXrWNhhF0hNUh7uBa4Mba0l7JUK+omjDMwkSn95IzrTOwkdp7W.oPRmNRQsiKeu4j3CkfVgt.NYPEYqMGvvJ48vIlPiyzrIuZskWISxGJPcmPiWOfLodybH3wjPbMYwlbFIMNHPHFOtLBNaLSa9sGk1TxMzCX5KTa6WIH2ocxSdngM0QPqFRxyPHFsprrhGc9Gy9xoBjz0NWdR2yW9DUa2F85jG2v9FgTO4Q8qiC7fzzQNpmNpsY3BrYPVJBMJQ1uVmoItRhw9NrVGO3NMNzYZ+zS73WTvTOnUydG5kHMKLqAOjTe7fN2bGSxOZDkMrBrGQ9J1gONBEy0k4gVo8qHccxmfxVihWz6a3yqY9NazzUYkua9UnynadOtogW.JfsVGRVNEbWF8I+eHtcwJ+wLXqZeSdWLo+FQF6731Tva0BISKTx.cLwmgJsUTTvkg1YsnXmxDge.CDR7xD6YmX6fMznaF7kdczmJXwm.XSOOrdoHhNA7GMiZYLZZR.+4lconMaJP6JOZ8ftCs1YWHZI3o.sIXezX5ihMSuXzZtk3ai1mXRSczoCS32hAydeyXNEu5SHySxqZqbd3ZLdera1iPqYxOm++v7SUSz-----------end_max5_patcher----------- */

Processing代码

示例代码中的Processing程序将从电脑的串口发送字节码到开发板以控制LED亮度。

参考

Max代码

上面示例中的Max/MSP补丁看起来就像是以下的图片。复制并粘贴到一个新的补丁窗口。

技术分享

另见

  • serial()
  • serial.read()
  • analogRead()
  • analogWrite()
  • ASCIITable - 演示 Arduino 串口输出的进阶功能.
  • Graph - 传送数据到电脑,并用它在 Processing 内画图.
  • Midi - 序列地发送 MIDI 音调信息.
  • MultiSerialMega - 使用 Arduino Mega 上的两个串口端口.
  • PhysicalPixel - 从 Processing 或者 Max/MSP 发送数据到 Arduino 来点亮或熄灭 LED 灯.
  • ReadASCIIString - 解析一段逗号分隔的数字字符串,从而使 LED 变亮或暗.
  • SerialCallResponse -使用呼叫-回应方式(握手)发出多个变量值.
  • SerialCallResponseASCII - 使用呼叫-回应方式(握手)发出多个变量值,并在发送前进行ASCII编码.
  • Serial Event:演示如何使用 SerialEvent().
  • VirtualColorMixer - 从 Arduino 向电脑发送多个变量值,并且使用 Processing 或 Max/MSP 来读取.


最终版本编辑2015/07/29 SM

QQ 群

欢迎加入我们的大家庭 技术分享 点击加入 硬创联盟 Arduino 群号 8580606

 

翻译:硬创联盟翻译组翻译员 – 苏杭
审核:硬创联盟翻译组技术语文审核 - 神奇海螺,Lepton-华,成都阿杰

Dimmer: 通过移动鼠标来改变 LED 的亮度