樹莓派與Arduino的串列埠通訊
阿新 • • 發佈:2018-12-31
樹莓派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()
執行結果: