【Arduino官方教程第一辑】示例程序 4-6 串口控制LED

翻译 2016年05月16日 13:45:50

串口控制LED

本例向你展示如何在Arduino或Genuino板从电脑接收消息。在接收到字母H时,就把LED打开。在接收到字母L时就关闭LED。

数据可以从Arduino IDE的串口监视器发送,也可以从Processing(下面有代码)或Flash(通过serial-net代理),PD或者Max/MSP等其他软件发送。

完成本例所需的硬件设备

Arduino板Genuino板
LED (可选)
220Ω电阻(可选)
连接线

完成本例所需的软件

Processing或Max/MSP 5.x版本

很多Arduino和Genuino 板都在13引脚有板载LED;如果你的板子没有内置LED,请将外部LED连接到13引脚。阳极(长脚)通过220Ω电阻连接到13引脚。阴极(短脚)连接到GND。

电路连接

图片来自官网

原理图

图片来自官网

例程代码

/*
  串口控制LED

用Arduino从电脑上接收数据。Arduino在接收到字母H时打开LED,在接收到L时关闭LED。
数据可以从Arduino IDE的串口监视器发送,也可以从Processing(下面有代码)或Flash(通过serial-net代理),PD或者Max/MSP等其他软件发送。

 电路搭建:
 * LED从13引脚连接到GND

 * 代码是公开的
 */

const int ledPin = 13; // LED引脚
int incomingByte;      // 串口数据存储

void setup() {
  // 初始化串口连接:
  Serial.begin(9600);
  // 以OUTPUT模式初始化LED:
  pinMode(ledPin, OUTPUT);
}

void loop() {
  // 检查是否有数据:
  if (Serial.available() > 0) {
    //读取数据流中最后一个字符:
    incomingByte = Serial.read();
    // 如果时字母H(ASCII码72), 打开LED:
    if (incomingByte == 'H') {
      digitalWrite(ledPin, HIGH);
    }
    // 如果时字母L(ASCII码76), 关闭LED:
    if (incomingByte == 'L') {
      digitalWrite(ledPin, LOW);
    }
  }
}

Processing代码

将下面代码复制到Processing。当你的鼠标经过中间方块时,13引脚的LED应该会打开。Processing Applet的界面是这样的:

图片来自官网

 // 串口控制LED

 // 展示如何向Arduino板发送数据
 // 如果鼠标在方形区域,就把LED打开,如果不在就关闭
 // 代码是公开的。



 import processing.serial.*;

 float boxX;
 float boxY;
 int boxSize = 20;
 boolean mouseOverBox = false;

 Serial port;

 void setup() {
 size(200, 200);
 boxX = width/2.0;
 boxY = height/2.0;
 rectMode(RADIUS);

 // 列举所有可用串口。
  //(若用了2.1或之前版本,请用Serial.printArray())
 Serial.printArray()
 println(Serial.list());

 // 打开第一个串口(假设Arduino连上的是这个)
 // 确保和Arduino设置的波特率相同(这里是9600)
 port = new Serial(this, Serial.list()[0], 9600);

 }

 void draw()
 {
 background(0);

 // 检查光标是否在方块上方
 if (mouseX > boxX-boxSize && mouseX < boxX+boxSize &&
 mouseY > boxY-boxSize && mouseY < boxY+boxSize) {
 mouseOverBox = true;
 // 改变方块颜色:
 stroke(255);
 fill(153);
 // 鼠标在方块内,发送H:
 port.write('H');
 }
 else {
 // 改变方块颜色到未选中状态:
 stroke(153);
 fill(153);
 // 鼠标在方块内,发送L:
 port.write('L');
 mouseOverBox = false;
 }

 // 画方块
 rect(boxX, boxY, boxSize, boxSize);
 }

Max 补丁

Max/MSP补丁生效后如图所示。请将代码复制下来并且粘贴到新建补丁new patch) 窗口。

----------begin_max5_patcher----------
1672.3oc2ZszaaiCD9ryuBBebQVCQRYao8xhf1cQCPVfBzh8RRQ.sDsM2HSZ
HQmlzh9eu7gjsjsEk7y0oWjiHoHm4aluYHGlueUmtiDuPy5B9Cv8fNc99Uc5
XZR2Pm726zcF4knDRlYXciDylQ4xtWa6SReQZZ+iSeMiEQR.ej8BM4A9C7OO
kkAlSjQSAYTdbFfvA27o2c6sfO.Doqd6NfXgDHmRUCKkolg4hT06BfbQJGH3
5Qd2e8d.QJIQSow5tzebZ7BFW.FIHow8.2JAQpVIIYByxo9KIMkSjL9D0BRT
sbGHZJIkDoZOSMuQT.8YZ5qpgGI3locF4IpQRzq2nDF+odZMIJkRjpEF44M3
A9nWAum7LKFbSOv+PSRXYOvmIhYiYpg.8A2LOUOxPyH+TjPJA+MS9sIzTRRr
QP9rXF31IBZAHpVHkHrfaPRHLuUCzoj9GSoQRqIB52y6Z.tu8o4EX+fddfuj
+MrXiwPL5+9cXwrOVvkbxLpomazHbQO7EyX7DpzXYgkFdF6algCQpkX4XUlo
hA6oa7GWck9w0Gnmy6RXQOoQeCfWwlzsdnHLTq8n9PCHLv7Cxa6PAN3RCKjh
ISRVZ+sSl704Tqt0kocE9R8J+P+RJOZ4ysp6gN0vppBbOTEN8qp0YCq5bq47
PUwfA5e766z7NbGMuncw7VgNRSyQhbnPMGrDsGaFSvKM5NcWoIVdZn44.eOi
9DTRUT.7jDQzSTiF4UzXLc7tLGh4T9pwaFQkGUGIiOOkpBSJUwGsBd40krHQ
9XEvwq2V6eLIhV6GuzP7uzzXBmzsXPSRYwBtVLp7s5lKVv6UN2VW7xRtYDbx
7s7wRgHYDI8YVFaTBshkP49R3rYpH3RlUhTQmK5jMadJyF3cYaTNQMGSyhRE
IIUlJaOOukdhoOyhnekEKmZlqU3UkLrk7bpPrpztKBVUR1uorLddk6xIOqNt
lBOroRrNVFJGLrDxudpET4kzkstNp2lzuUHVMgk5TDZx9GWumnoQTbhXsEtF
tzCcM+z0QKXsngCUtTOEIN0SX2iHTTIIz968.Kf.uhfzUCUuAd3UKd.OKt.N
HTynxTQyjpQD9jlwEXeKQxfHCBahUge6RprSa2V4m3aYOMyaP6gah2Yf1zbD
jVwZVGFZHHxINFxpjr5CiTS9JiZn6e6nTlXQZTAFj6QCppQwzL0AxVtoi6WE
QXsANkEGWMEuwNvhmKTnat7A9RqLq6pXuEwY6xM5xRraoTiurj51J1vKLzFs
CvM7HI14Mpje6YRxHOSieTsJpvJORjxT1nERK6s7YTN7sr6rylNwf5zMiHI4
meZ4rTYt2PpVettZERbjJ6PjfqN2loPSrUcusH01CegsGEE5467rnCdqT1ES
QxtCvFq.cvGz+BaAHXKzRSfP+2Jf.KCvj5ZLJRAhwi+SWHvPyN3vXiaPn6JR
3eoA.0TkFhTvpsDMIrL20nAkCI4EoYfSHAuiPBdmJRyd.IynYYjIzMvjOTKf
3DLvnvRLDLpWeEOYXMfAZqfQ0.qsnlUdmA33t8CNJ7MZEb.u7fiZHLYzDkJp
R7CqEVLGN75U+1JXxFUY.xEEBcRCqhOEkz2bENEWnh4pbh0wY25EefbD6EmW
UA6Ip8wFLyuFXx+Wrp8m6iff1B86W7bqJO9+mx8er4E3.abCLrYdA16sBuHx
vKT6BlpIGQIhL55W7oicf3ayv3ixQCm4aQuY1HZUPQWY+cASx2WZ3f1fICuz
vj5R5ZbM1y8gXYN4dIXaYGq4NhQvS5MmcDADy+S.j8CQ78vk7Q7gtPDX3kFh
3NGaAsYBUAO.8N1U4WKycxbQdrWxJdXd10gNIO+hkUMmm.CZwknu7JbNUYUq
0sOsTsI1QudDtjw0t+xZ85wWZd80tMCiiMADNX4UzrcSeK23su87IANqmA7j
tiRzoXi2YRh67ldAk79gPmTe3YKuoY0qdEDV3X8xylCJMTN45JIakB7uY8XW
uVr3PO8wWwEoTW8lsfraX7ZqzZDDXCRqNkztHsGCYpIDDAOqxDpMVUMKcOrp
942acPvx2NPocMC1wQZ8glRn3myTykVaEUNLoEeJjVaAevA4EAZnsNgkeyO+
3rEZB7f0DTazDcQTNmdt8aACGi1QOWnMmd+.6YjMHH19OB5gKsMF877x8wsJ
hN97JSnSfLUXGUoj6ujWXd6Pk1SAC+Pkogm.tZ.1lX1qL.pe6PE11DPeMMZ2
.P0K+3peBt3NskC
-----------end_max5_patcher-----------

相关资料

serial.read()
serial.available()
if statement
ASCIl表:展示Arduino先进的串口输出函数。
调光器:轻点鼠标来改变LED的亮度。
数据图表:发送数据到电脑,并且使用Processing来绘图。
MIDI音乐: 以串口发送MIDI音符。
多串口[Mega]:使用Arduino Mega上的两个串口。
原来标题译为MIDI音乐MEGA,是错译
控制LED:从Processing或Max/MSP来开关LED.
读取ASCII字符串:解析一串用逗号分隔的整数(以字符串类型传递)来让LED渐隐。
串口双向调用:用双向调用/握手连接(handshaking)的方法发送多个变量值。
串口双向调用(使用ASCII码):用双向调用/握手连接(handshaking)的方法发送多个变量值,并且在转发之前将这些变量的值通过ASCII解码。
串口事件:展示SerialEvent()函数的使用。
虚拟调色盘:用Arduino发送多个变量的值到电脑,然后用Processing或Max/MSP读取它们。


更新进程

日期 日志 译者
2016年5月16日 创建并翻译文档 唐家勋

译者:唐家勋
邮箱:mrsteventang@gmail.com
QQ:649196486
转载请注明出处,一切只因为热爱。
希望您能指出宝贵意见,谢谢。
我的微信公众号欢迎关注,2016年6月开始更新

相关文章推荐

【Arduino官方教程第一辑】示例程序 4-10 串口事件

本例向你展示SerialEvent()函数的使用。本函数将在loop()中自动被内部调用。 在我们写的代码中如果串口有任何数据(只要不是换行符),那么就将数据加到一个缓存字符串中。在收到换行符时就返...

Arduino - 串口操作函数与示例代码大全

本文总结了Arduino常用串口操作函数的说明、语法、参数、返回值。根据函数定义编写了示例代码,并通过实验解释了每个函数的具体用法。是对Arduino串口操作函数的较全面总结,可作为工具贴查找使用。
  • iracer
  • iracer
  • 2015-12-16 22:36
  • 19840

Arduino串口的使用

串口是Arduino与其它设备进行通信的接口,我们需要很好的掌握它的使用。Arduino串口使用相关的函数共有10个(随着版本的升级,新版本加入了更多,具体请参见官网:http://www.ardui...

【龙印】3d打印固件Marlin中bresenham算法注解

本文为在用龙芯1c做3D打印机过程中的笔记,对bresenham算法如何在marlin中实现进行了详细的注解。
  • caogos
  • caogos
  • 2016-08-29 16:54
  • 1665

异步赠书:Kotlin领衔10本新书(活动已结束)

敲重点:        活动规则:试读样章,评论区留言说一下你对本书的一些感想,同时关注异步社区博客,并留言你想要得到的图书。        活动时间:即日起-9月14日(活动奖项公告在9月15日日)...

Arduino通过串口控制舵机角度实验

要做向日葵式的太阳能收集器,除了找到光线外,还需要控制方向的部件,这里选择使用舵机控制方向,本实验室是用的是9克舵机。 舵机一般都是有可控制范围的,一般也是180度,当然也有小于180度的。 这次实验...

Arduino 通过串口字符串控制LED开关

Arduino 通过串口字符串控制LED开关

【Arduino官方教程第一辑】示例程序 1-1 读取模拟信号、串口操作

这个例子将向你展示如何读取真实世界中的模拟信号(Analog Read)。

【Arduino官方教程第一辑】示例程序 4-4 MIDI音乐

本例向你展示如何从Arduino或Genuino板通过标准5端子DIN接口(standard 5 poles DIN)发送MIDI音符标准发送到MIDI乐器。

【Arduino官方教程第一辑】示例程序 4-8 串口双向调用 (握手连接)

本例向你展示使用握手连接在Arduino和Genuino板和电脑之间建立多字节的通信(multi-byte communication)。
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)