2016-08-04 110 views
1

我需要通過串行通信與arduino通信樹莓pi。和溝通,我使用的是相同的波特率在兩側,但我依然無法做到這一點的事..樹莓pi - arduino串行通信

這是我的Arduino代碼

int ledPinSpeedOne = 11; 
int ledPinSpeedTwo = 12; 
int ledPinSpeedThree = 13; 

char inbyte; 

void setup() { 

    Serial.begin(9600); 

    pinMode(ledPinSpeedOne, OUTPUT); 
    pinMode(ledPinSpeedTwo, OUTPUT); 
    pinMode(ledPinSpeedThree, OUTPUT); 

    digitalWrite(ledPinSpeedOne, LOW); 
    digitalWrite(ledPinSpeedTwo, LOW); 
    digitalWrite(ledPinSpeedThree, LOW); 
} 

void loop() 
{ 

    if (Serial.available() > 0) { 
    delay(100); 
    inbyte=Serial.read(); 
    if (inbyte == '3') functionSpeedTwo(); 
    } 
} 

//functionSpeedTwo 
void functionSpeedTwo() { 
    digitalWrite(ledPinSpeedOne, LOW); 
    digitalWrite(ledPinSpeedTwo, HIGH); 
    digitalWrite(ledPinSpeedThree, LOW); 
} 

這裏是我的覆盆子pi邊,

#!/usr/bin/python 
import serial 
ser = serial.Serial('/dev/ttyACM0',9600) 
ser.write('3') 

這個東西有時不工作,但有時它的工作。任何人都可以幫助我解決這個問題。

+0

查看運行python腳本時是否重置了arduino。如果是這樣,請在用pyserial打開端口前設置控制線狀態 – handle

+0

「控制線狀態」是什麼意思? –

+0

當您運行腳本時,您的Arduino是否重置? – handle

回答

0

我已經解決了我的問題。訪問該值有一段時間間隔,我只需添加一個while循環以獲取值。在我的arduino代碼中,我添加了第24行的延遲。