【Arduino官方教程第一辑】示例程序 4-2 调光器
2016-05-11 18:13
567 查看
调光器
本例向你展示如何从电脑发送数据到Arduino或Genuino板来控制LED的亮度。数据以字节为单位发送,每个值的范围在这里应为0到255。程序会读取这些字节,并且使用它们来设置LED亮度。`你可以用电脑上任何可以读写串口的软件。若使用Processing和Max/MSP 5.x版本来监看,下面也提供了代码。
完成本例所需的硬件设备
Arduino板或Genuino板LED
220Ω电阻
完成本例所需的软件
Processing或者Max/MSP 5.x版本连接线
将220Ω限流电阻连接到9号引脚,并且在之间串联一个LED。LED的长脚(阳极)连电阻,短脚(阴极)连接到GND。
电路连接
原理图
例程代码
/* 调光器 展示从电脑发送数据到板子,并通过发送的数据控制LED的亮度。数据以字节为单位发送,每个byte范围这里是0到255。 电路搭建: 9号引脚接LED,并且连接到GND。 与Processing, Max/MSP, 或者其他串口程序。 代码是公开的。 */ const int ledPin = 9; // LED连接的引脚 void setup() { // 初始化串口连接: Serial.begin(9600); // 初始化ledPin为输出模式: pinMode(ledPin, OUTPUT); } void loop() { byte brightness; // 检查是否电脑传来了数据: if (Serial.available()) { // 读取最近的一个byte (应该是一个0-255的值): brightness = Serial.read(); // 将brightness设置给LED: analogWrite(ledPin, brightness); } }
以下为电脑上的代码,可二选一。其实用Arduino串口监视器也可。
Processing代码
Processing代码将会从电脑发送byte来控制LED。//调光器-将通过串口发送字节 //代码是公开的. 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位置作为byte输出 port.write(mouseX); }
Max/MSP v5 用的patch
请复制下面这些代码,并且粘贴到新建patch的串口。Max/MSP将会如以下图片一样显示。----------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-----------
相关资料
serial()serial.read()
analogRead()
analogWrite()
ASCIl表: 展示Arduino先进的串口输出函数。
调光器:轻点鼠标来改变LED的亮度。
数据图表:发送数据到电脑,并且使用Processing来绘图。
MIDI音乐: 以串口发送MIDI音符。
MIDI音乐[Mega]:使用Arduino Mega上的两个串口。
控制LED:从Processing或Max/MSP来开关LED.
读取ASCII字符串:解析一串用逗号分隔的整数(以字符串类型传递)来让LED渐隐。
串口双向调用:用双向调用/握手连接(handshaking)的方法发送多个变量值。
串口双向调用(使用ASCII码):用双向调用/握手连接(handshaking)的方法发送多个变量值,并且在转发之前将这些变量的值通过ASCII解码。
串口事件:展示SerialEvent()函数的使用。
虚拟调色盘:用Arduino发送多个变量的值到电脑,然后用Processing或Max/MSP读取它们。
更新进程
日期 | 日志 | 译者 |
---|---|---|
2016年 月 日 | 创建并翻译文档 | 唐家勋 |
邮箱:mrsteventang@gmail.com
QQ:649196486
转载请注明出处,一切只因为热爱。
希望您能指出宝贵意见,谢谢。
相关文章推荐
- UITableView中Cell报错[UITableView _configureCellForDisplay:forIndexPath:]
- hue安装运行时候提示:oozie share lib not installed in default location.
- Android酷炫实用的开源框架(UI框架)
- EmguCV控件Emgu.CV.UI.ImageBox及C# picturebox显示图片连续刷新出现闪烁问题
- Elasticsearch源码分析九--查询解析器QueryParser注册过程
- 用Gradle构建时,将密码等敏感信息放在build.gradle之外
- 【题解】UESTC_DP专题
- 有关Android Bluetooth - OBEX OPP文件传送
- iOS开发之基础视图—UIScrollView
- Quickling技术
- NGUI的UISprite动态染色的一种方法
- 性能更好的js动画实现方式——requestAnimationFrame
- UILabel自适应分行显示
- 移植游戏后,UI点击位置不正确。
- 淘宝sui学习笔记1:引用
- WebUI自动化测试的一些问题
- Attempt to present <UINavigationController: 0x7fdf1b100e00> on <ViewController:0x....>
- UINavigationBar设置
- 编辑UITableviewCell--Editing
- Recaman's Sequence