转自 http://blog.sina.com.cn/s/blog_624e2b450100l7p8.html
今天我们一起来学习Arduino的串口通讯。
Arduino与计算机通信所使用的USB接口就是下载程序时所用的USB接口,同时Arduino USB串口线也可作为Arduino供电线。当Arduino与其他设备通信时,需要用到“Serial”系列函数。
下面介绍几个常“Serial”函数。
1、Serial.begin ()—设置串行每秒传输数据的速率(波特率)。在同计算机通讯时,使用下面这些值:300, 1200, 2400, 4800, 9600, 14400, 19200, 28800, 38400, 57600或 115200。你也可以在任何时候使用其它的值,比如,与0号或1号接口通信就要求特殊的波特率。
2、Serial.print ()—从串行端口输出数据。
3、Serial.println ()—从串行端口输出数据,跟随一个回车(ASCII 13, 或 '\r')和一个换行符(ASCII 10, 或 '\n')。这个函数所取得的值与Serial.print()一样。
4、Serial.read ()—读取持续输入的数据。
还记得我们上一篇博文中介绍Arduino接口分布图时说到的TX/TR LED 吧!
TX (T:Transmitter 发送) 表示为Arduino发送指令信息给计算机,RX (R:Receive 接收) 表示为Arduino接收来自计算机的指令信息,当下载程序或与计算机通信时,这两个指示灯就会不停的闪烁 。
这里要特别提醒Arduino新手一点的是:我们在下载程序或是做串口通讯实验时一定不能在没有一定要等TX/TR LED 不再闪烁时再拔掉USB线,否则会给损坏你的Arduino芯片,我深受其害 。接下来我们就DIYRobot 为我们提供的Arduino 168P 基础套件互动媒体 做两个串口通讯的实验。
实验一 Arduino串口助手显示
本实验中我们让Arduino在串口助手中循环显示:
“Welcome to http://electrondiy.taobao.com/ ”注意了串口助手里只能显示英文字符和数字,不能显示汉字。
程序如下图:
注意了:我们在程序写的波特率9600和串口调试助手中右下角的波特率9600要一致的否则无法通讯。
实验二 Arduino与串口通讯——人机对话
那么再来编写一个用计算机给Arduino发送指令的小程序吧! 当我们发送字符"a",Arduino串口助手中就会显示“OK GOOD Job”。这是因为我将a赋值给val,Arduino接收到来自计算机的信号后,运行到Serial.read ()指令就会将读取的数值赋值给val,经if语句进行判断,如果经判断为真将执行if{}内指令,所以串口助手就会显示:“OK GOOD Job”。原理就是这么简单!
程序如下图:
不要忘了看看Tx与Rx指示灯的闪烁情况。