2016-09-12 17 views
1

Arduinoシリアルポートに文字列testを書き込むPythonスクリプトがあります。 Arduinoのはtest文字列を受信した場合、それは...文字列okで応答し、アップしたいとすべきである13をLEDすべきArduinoへのPythonシリアル書き込みは、Arduinoのシリアルモニタのシリアル書き込みと異なります

問題:Arduinoのシリアルモニタがシリアルポートにtestを書き込むために使用された場合は、Arduinoのはokなどで応答 LED#13が点灯します。

しかし、Pythonスクリプトが同じシリアルポートにtestを書き込むと、何も起こりません。 Arduinoはシリアルポートに応答せず、LED#13は点灯しません。

ArduinoとLED 13からの応答がokの応答になるようにPythonスクリプトを修正する方法はありますか?

Arduinoのスケッチ

int ledPin = 13; 


void setup() { 
    Serial.begin(9600); 
    pinMode(ledPin, OUTPUT); 
} 


void loop() { 

    while(Serial.available() == 0) { } 

    if(Serial.readString() == "test\r\n") { 
     Serial.print("ok\r\n"); 
     digitalWrite(ledPin, HIGH); 
    } 

    readString = ""; // Clear recieved buffer 
    delay(100); 
} 

のPythonスクリプト

port = 'COM5' 
ser = serial.Serial(
    port=port, 
    baudrate=9600, 
    timeout=5 
) 

serial.write("test\r\n") 

response = serial.readline() 
print response 

答えて

2
port = 'COM5' 
ser = serial.Serial(
    port=port, 
    baudrate=9600, 
    timeout=5 
) 

# you need to sleep after opening the port for a few seconds 
time.sleep(5) # arduino takes a few seconds to be ready ... 

#also you should write to your instance 
ser.write("test\r\n") 
# and give arduino time to respond 
time.sleep(0.5) 
response = self.serial.readline() 
print response 

あなたは(あなたはおそらくser.ctsを待つ必要がある秒の固定数を待つためには明らかたくない場合送付)

+1

作品!!文字列のエンコーディングを試して1時間を費やしてlol – Nyxynyx

+0

私はPython + serial + ardiunoの経験を積んだ; –

+0

素晴らしい!関連する質問:Pythonの無限ループでは、Arduinoが 'test'を送信してから' ok'で返答するのに約2秒かかります。これをスピードアップする方法はありますか? – Nyxynyx

関連する問題