本文为旧博客 迁移的文章
串口是Arduino与其它设备进行通信的接口,我们需要很好的掌握它的使用。Arduino串口使用相关的函数共有10个(随着版本的升级,新版本加入了更多,具体请参见官网:http://www.arduino.cc/ )。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 Serial .begin (); Serial .end (); Serial .available ();Serial .read (); Serial .peek (); Serial .flush (); Serial .print (); Serial .println (); Serial .write (); Serial .SerialEvent();Serial .readBytes (buffer ,length);
发送1 2 3 4 5 6 7 8 9 10 11 12 13 #include <Wire.h> #include <LiquidCrystal_I2C.h> LiquidCrystal_I2C lcd (0x3F ,16 ,2 ) ;int i=0 ;void setup () { Serial .begin (9600 ); }void loop () { Serial .println (i); i++; }
接收1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 int val;int ledpin=13 ;void setup () { Serial .begin (9600 ); pinMode (ledpin,OUTPUT ); }void loop () { val=Serial .read (); if (val=='R' ) digitalWrite (ledpin,HIGH ); delay (500 ); digitalWrite (ledpin,LOW ); delay (500 ); Serial .println ("Hello World!" ); } }
输出ascii码1 2 3 4 5 6 7 8 9 10 11 int incomingByte = 0 ;void setup () { Serial .begin (9600 ); }void loop () { if (Serial .available () >0 ) { incomingByte = Serial .read (); Serial .print ("I received: " ); Serial .println (incomingByte,DEC); } }
Serial.println(incomingByte, DEC);
打印接到数据十进制表示的ascii码。
peek():
功能类似于read(),但是我们知道当调用一次read()后,缓冲区的数据流会被读取并删除read过的数据,也就是available值会减少,但peek()不会出现类似情况,其功能类似于检测缓冲区的头部数据,反复调用peek()返回的值是一样的。用得好的话可以精简很多代码。
write():
写入二进制数据到串行端口。这个数据是作为一个字节或字节序列发送的。如果发送字符串则需要用到print方法。
最后注意一下:当烧程序入板卡的时候,在完成前即L
、TX
、RX
灯闪烁前,断开数据线很可能损坏硬件。同时测试前养成按一次reset键
复位的习惯,这里特别注意,在打开串口监视器后,需要reset
一次,否则无法看到效果。
部分文章参考:Arduino串口的使用@yuzhongchun ,未经原作者同意。
welcome to https://iwwee.com