欢迎光临
我们一直在努力

通信部分-串口控制LED

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

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

硬件需求

Arduino板

LED (可选)

220Ω电阻(可选)

连接线

软件需求

Processing或Max/MSP 5.x版本

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

电路

clip_image002

原理图

clip_image004

代码

/*
   串口控制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的界面是这样的:

clip_image001

// 串口控制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———–

未经允许不得转载:Arduino-Maker » 通信部分-串口控制LED

支付宝扫码打赏 微信打赏

原创文章,若帮到您,欢迎打赏

分享到:更多 ()

评论 抢沙发

评论前必须登录!

 

线上商城

中贝斯特创客空间蘑菇云创客教育