“第二十二课--Microduino 串口调试/zh”的版本间的差异
(→设备) |
853387039@qq.com(讨论 | 贡献) (→串口控制led灯) |
||
第54行: | 第54行: | ||
*程序 | *程序 | ||
<source lang="cpp"> | <source lang="cpp"> | ||
− | String comdata = "";// | + | #define led_pin 13 |
− | + | ||
+ | String comdata = ""; //显示的字符串 | ||
+ | String onedata = ""; //判断clean缓存字符串 | ||
+ | |||
void setup() | void setup() | ||
− | { | + | { |
− | Serial.begin( | + | Serial.begin(9600); |
− | pinMode( | + | pinMode(led_pin,OUTPUT); |
+ | while(!Serial) | ||
+ | { | ||
+ | } | ||
} | } | ||
+ | |||
void loop() | void loop() | ||
{ | { | ||
− | while (Serial.available() > 0) // | + | |
− | { | + | while (Serial.available() > 0) //判断串口是否有输入 |
− | comdata += char(Serial.read()); | + | { |
− | delay(2);// | + | comdata = ""; //清空显示字符 |
+ | onedata += char(Serial.read()); //读取字符 | ||
+ | comdata += onedata; //同上 | ||
+ | delay(2); //等待串口缓存 | ||
} | } | ||
− | if (comdata=="on") | + | |
− | + | if(comdata=="on") | |
+ | digitalWrite(led_pin,HIGH); | ||
else if(comdata=="off") | else if(comdata=="off") | ||
− | + | digitalWrite(led_pin,LOW); | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | onedata = ""; //缓存字符串清空 | |
− | + | Serial.println(comdata); | |
+ | delay(100); | ||
} | } | ||
+ | |||
</source> | </source> | ||
+ | |||
===结果=== | ===结果=== | ||
*实物监视: | *实物监视: |
2014年11月17日 (一) 09:51的版本
Language | English |
---|
目的以往程序串口都用来监视,实际上是将数据写出,今天讲讲如何读取串口接收的数据,并进行控制。 设备
实验一串口接收字符串只要Microduino core和Microduino Ft232RL,不需要任何外置元件。
String comdata = "";//定义一个字符串类型变量
void setup()
{
Serial.begin(115200);//配置波特率
}
void loop()
{
while (Serial.available() > 0) //有串口缓冲数据就一直循环
{
comdata += char(Serial.read()); //读取数据,每次只读取一个字节
delay(2);//串口缓冲
}
if (comdata.length() > 0)
{
Serial.println(comdata); //打印串口数据
comdata = "";//清空数据
}
}
结果在串口监视界面填写发送数据框写入任意数据,点击发送(或按回车),在接收数据显示框就显示发送的数据文字。 注意:
实验二串口控制led灯
#define led_pin 13
String comdata = ""; //显示的字符串
String onedata = ""; //判断clean缓存字符串
void setup()
{
Serial.begin(9600);
pinMode(led_pin,OUTPUT);
while(!Serial)
{
}
}
void loop()
{
while (Serial.available() > 0) //判断串口是否有输入
{
comdata = ""; //清空显示字符
onedata += char(Serial.read()); //读取字符
comdata += onedata; //同上
delay(2); //等待串口缓存
}
if(comdata=="on")
digitalWrite(led_pin,HIGH);
else if(comdata=="off")
digitalWrite(led_pin,LOW);
onedata = ""; //缓存字符串清空
Serial.println(comdata);
delay(100);
}
结果
D13引脚接一个led灯。在串口监视界面填写发送数据框写入“on”,点击发送(或按回车),led点亮;写入“off”,点击发送(或按回车),led熄灭;其他情况下led都维持前一个状态。
在串口监视界面填写发送数据框写入“on”,点击发送(或按回车),返回“on led:1”;写入“off”,点击发送(或按回车),返回“off led:0”;其他情况下返回发送的字符串并且led值都维持前一个状态。 串口接收字符串详细参考:http://www.geek-workshop.com/thread-158-1-1.html 串口接收字符串转化成数组详细参考:http://www.geek-workshop.com/thread-260-1-1.html 视频 |