树莓派B+拥有4个USB口,而Arduino正好有USB转串口,这样我们就能够很容易的利用这一对接口来实现树莓派与Arduino之间的串口通信。
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();
}
树莓派端的程序:
import serial
import time
data=""
ser=serial.Serial("/dev/ttyACM0",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()
运行结果: