arduino怎么通过串口传输协议(Arduino编程串口通讯篇)

今天搞一个这样的小实验,让电脑控制Arduino板上LED灯闪烁的次数。

arduino怎么通过串口传输协议(Arduino编程串口通讯篇)(1)

能让电脑和Arduino直接通讯的方式当然是串口了,因为Arduino自带的IDE里面就有串口工具,而Arduino板上恰恰集成了串口的功能,因此搞起来很方便。

不要小看这个串口哦,里面蕴含着无尽的编程知识,甚至学习C语言用这个Arduino板也是非常快捷的,因为我们可以看到现象,而不是一味的去遐想。

工具

本次实验,我们用到的工具很简单。

  • 电脑
  • 数据线
  • Arduino

好了,需要的就这些。

arduino怎么通过串口传输协议(Arduino编程串口通讯篇)(2)

开始编程吧

我们先上程序吧

arduino怎么通过串口传输协议(Arduino编程串口通讯篇)(3)

我想稍微懂点Arduino编程的小伙伴都能看懂以上程序。

大家也可以粘贴复制程序自己亲自看一下现象。

int i; void setup() { pinMode(13, OUTPUT); Serial.begin(9600); } void loop() { if (Serial.available()>0) { char c=Serial.read(); for(i=0;i<c;i ) { digitalWrite(13, HIGH); delay(1000); digitalWrite(13, LOW); delay(1000); } } }

下面稍微说一下以上程序。

首先,设定LED灯的模式(输出)和串口通讯的波特率。

然后设定串口的工作方式,先检测串口是否收到的数据个数是否大于1,如果大于1,则进入函数,然后把电脑输入的数据读出来。

再然后我们在for循环中让LED循环,LED灯循环的次数就是我们接收到的数据。

实验现象

我让电脑给Arduino发送1!

arduino怎么通过串口传输协议(Arduino编程串口通讯篇)(4)

接下来看看Arduino上的小灯有什么反应吧.

arduino怎么通过串口传输协议(Arduino编程串口通讯篇)(5)

可以看到、LED灯会一直循环下去,我们给Arduino发送的数据是1,现象和我们预想的完全不一致!

最终的结果是循环了49次!

为什么会循环49次呢?

我们来看看上面程序中的这一句

char c=Serial.read();

意思是把读到的数据赋值给c。这本身没有过错,但是我们没有考虑到它的数据类型,我们发送的是字符1,字符1对应的10进制是49,所以在for循环中循环了49次。

这就涉及到ASCII码了,感兴趣的可以参考一下。

arduino怎么通过串口传输协议(Arduino编程串口通讯篇)(6)

那应该怎么改善这个问题呢?

解决的办法是加一句程序

int x=c-48;

48对应的是字符‘0’。

这样,在我们发送0-9之间的数据时,Arduino上的LED灯会按照我们的预想循环。

接下来,我们再次给Arduino发送1。

看一下实验现象,可以看到、只循环了一次。

arduino怎么通过串口传输协议(Arduino编程串口通讯篇)(7)

程序源码

最后的正确程序源码如下:

int i; void setup() { pinMode(13, OUTPUT); Serial.begin(9600); } void loop() { if (Serial.available()>0) { char c=Serial.read(); int x=c-48; for(i=0;i<x;i ) { digitalWrite(13, HIGH); delay(1000); digitalWrite(13, LOW); delay(1000); } } }

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页