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.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-----------
 */

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-华,成都阿杰

时间: 2024-10-18 12:17:16

Dimmer: 通过移动鼠标来改变 LED 的亮度的相关文章

qt学习(三):鼠标图标改变

qt学习 (三):鼠标图标改变 当你进入一个美好的qt软件场景,比如游戏,电脑的黑白图标会让程序逊色不少, 1改图标要加光标的头文件, 2 载入光标图, 3 再设置改光标就可以了 1在头文件中加 #include <QtGui>  //光标类的父类 //再在public成员中声明换的函数void keyPressEvent(QKeyEvent *k); //声明按键换图的函数         .h文件    --注意头文件和声明 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

jQuery实现鼠标拖动改变Div高度

最近项目中需要在DashBoard页面做一个事件通知栏,该通知栏固定位于页面底部,鼠标拖动该DIV实现自动改变高度扩展内容显示区域. 以下是一个设计原型,基于jQuery实现,只实现了拖动效果,没有做页面美化,可以根据需求做相应修改. 直接上代码 1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd&quo

PWM调整2个LED的亮度00--FF,255级亮度自动调节 【原创】

把STC12C5A60S2.H .STC12C2052AD.H头文件放到 C:\Keil\C51\INC\ STC单片机头文件[51CTO-->单片机-->STC单片机官方头文件] 下载链接 链接:http://pan.baidu.com/s/1pJKK4w7 密码:a0re 测量2个LED的端的电压 0 ~ 4.8V 逐渐增减变化 /* 工程创建MCU选取,Atmel 89C55 单片机: STC12C5A60S2   晶振:12M 功能:PWM调整2个LED的亮度00--FF,255级亮度

OpenCV笔记(四)——两幅图像线性混合、改变图像的亮度和对比度

一.两幅图像线性混合 线性混合,就是g(x) = a*f1(x) + b*f2(x).其中g为输出,f1.f2为输入.a+b=1. 作用1:线性混合可以用于去噪,假设噪声的产生符合均值为零.标准差的独立分布.多个高斯分布求平均值,即可去除噪声. 作用2:用于两张图片的切换.a从大到小变化,b从小到大变化.g就渐渐从f1变到f2. OpenCV提供了addWeighted函数,完成上述功能: C++: void addWeighted(InputArray src1, double alpha,

鼠标经过改变颜色

<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <title>qwer</title><base target="_blank" /> <meta charset="utf-8" />

C# listbox鼠标选择改变改行颜色的另一种方便方法

今日因为要做一个园区播放器,里面包含音乐播放器和任务播放等功能.其中音乐列表用到了listbox这个控件.由于listbox控件简单,没有选择改变选择项颜色的方法,网上花了很多时间,都不能简单地做成音乐播放到那里,列表那里就变色的效果. 大神们的方法都是高深复杂的.我觉得学一下可以,但项目需要的快速响应,我就选择了自己突然想到的一种方法. 大概的原理: 1.在listbox上面新建一个panel控件,用于覆盖选择行的值 2.panel上面放一个label,text值就是selectitem 3.

鼠标拖动改变层的大小

<html><head><title>拖动改变层的大小</title><meta content="text/html; charset=gb2312" http-equiv="Content-Type"><style> {box-sizing: border-box; moz-box-sizing: border-box}#testDiv { background-color: buttonf

HTML中关于鼠标指向改变div显示

利用样式表中 display属性来实现 例如 <html> <title>aaaaa</title> <head> <style> #changing1{ width:980px; height:760px; left:0px; top:50px; position:absolute; background-image:url(images/xs1.png); display:block;}#changing2{ width:980px; hei

jquery 鼠标拖动改变div大小

一个非常简单的例子: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv=&qu