您的位置:首页 > 产品设计 > UI/UE

树莓派与Arduino串口通信

2015-02-06 14:53 274 查看
树莓派与Arduino之间的串口连接其实非常简单,条件允许的话就直接用树莓派的串口连接arduino的USB转串口。

在arduino端的程序

String recv="";
int led=3;
void setup()
{
pinMode(led,OUTPUT);
Serial.begin(9600);
Serial.println("Hello,Mr. Pi");
Serial.flush();
}
void loop()
{
if(Serial.available()>0)
{
while(Serial.available()>0)
{
recv +=char(Serial.read());
//Serial.print("character receive: ");
// Serial.println(number,DEC);
digitalWrite(led,HIGH);
delay(100);
digitalWrite(led,LOW);
delay(100);
}
if(recv.length()>0)
{
Serial.println("I received: "+recv);
recv="";
}
}
else
{
digitalWrite(led,HIGH);
delay(1000);
digitalWrite(led,LOW);
delay(1000);
}
Serial.flush();
}
在树莓派端采用python的serial模块编程,如果没有安装改模块,可以使用pip install python-serial命令来安装该模块。

树莓派端的程序:

import serial
import time
data=""
ser=serial.Serial("COM5",9600)
ser.flushInput()
ser.flushOutput()
def recv(serial):
while True:
data=ser.read(1)
if data=="":
continue
while 1:
n=ser.inWaiting()
#print n
if n>0:
data+=ser.read(n)
time.sleep(0.1)
else:
break
return data

def main():
while True:
try:
data=recv(ser)
print data
ser.flushInput()
send=raw_input("input your message to Mr. Arduino:")
ser.write(send)
#data=recv(ser)
#print data
except KeyboardInterrupt:
ser.close()
if __name__=="__main__":
main()


运行结果如图:
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: