2017-10-07 14 views
0

私たちはardiunoとpythonをインタフェースしています。異なる間隔でPythonからardiunoに信号を送る必要があります。データを送信してデータを受け取るためにループを使用していますループの中でPythonからのシグナルを得る。 しかし、ループを使わずにpythonからardiunoに信号を送るために、同じコードを使用したとき、うまくいきました。pythonとarduinoのインタフェース

のArduino UNO

を、これは内部の我々のコード

int ra = 3; 
int ya = 4; 
int ga = 5; 
int rb = 6; 
int yb = 7; 
int gb = 8; 
int x1=0; 
int x2=0; 
int x=0; 
int led=10; 

void setup() { 
Serial.begin(9600); 
pinMode(ra,OUTPUT); 
pinMode(ya,OUTPUT); 
pinMode(ga,OUTPUT); 
pinMode(rb,OUTPUT); 
pinMode(yb,OUTPUT); 
pinMode(gb,OUTPUT); 
pinMode(led,OUTPUT); 
} 
void loop() { 
if(Serial.available()){ 
x2=Serial.parseInt(); 
//x2++; 

Serial.end();} 



if ((x2>=0)&&(x2<=9)) 
{ 
    x=x2; 
    switch(x) 
    { 
    case 0 : 
    digitalWrite(ga,HIGH); 
    digitalWrite(rb,HIGH); 

    delay(8000); 
    digitalWrite(ga,LOW); 
    digitalWrite(ya,HIGH); 
    digitalWrite(yb,HIGH); 
    delay(3000); 
    digitalWrite(ya,LOW); 
    digitalWrite(yb,LOW); 
    digitalWrite(rb,LOW); 
    //digitalWrite(ra,HIGH); 
    delay(50); 

    digitalWrite(gb,HIGH); 
    digitalWrite(ra,HIGH); 

    delay(12000); 
    digitalWrite(gb,LOW); 
    digitalWrite(yb,HIGH); 
    digitalWrite(ya,HIGH); 
    delay(3000); 
    digitalWrite(yb,LOW); 
    digitalWrite(ya,LOW); 
    digitalWrite(ra,LOW); 
    delay(50); 



    break; 


    case 1: 
    digitalWrite(ga,HIGH); 
    digitalWrite(rb,HIGH); 

    delay(5000); 
    digitalWrite(ga,LOW); 
    digitalWrite(ya,HIGH); 
    digitalWrite(yb,HIGH); 
    delay(3000); 
    digitalWrite(ya,LOW); 
    digitalWrite(yb,LOW); 
    digitalWrite(rb,LOW); 
    //digitalWrite(ra,HIGH); 
    delay(50); 
    digitalWrite(gb,HIGH); 
    digitalWrite(ra,HIGH); 

    delay(5000); 
    digitalWrite(gb,LOW); 
    digitalWrite(ya,HIGH); 
    digitalWrite(yb,HIGH); 
    delay(3000); 
    digitalWrite(ya,LOW); 
    digitalWrite(yb,LOW); 
    digitalWrite(ra,LOW); 
    break; 

    case 2: 
    digitalWrite(ga,HIGH); 
    digitalWrite(rb,HIGH); 

    delay(9000); 
    digitalWrite(ga,LOW); 
    digitalWrite(ya,HIGH); 
    digitalWrite(yb,HIGH); 
    delay(3000); 
    digitalWrite(ya,LOW); 
    digitalWrite(yb,LOW); 
    digitalWrite(rb,LOW); 
    delay(50); 
    digitalWrite(gb,HIGH); 
    digitalWrite(ra,HIGH); 

    delay(9000); 
    digitalWrite(gb,LOW); 
    digitalWrite(ya,HIGH); 
    digitalWrite(yb,HIGH); 
    delay(3000); 
    digitalWrite(ya,LOW); 
    digitalWrite(yb,LOW); 
    digitalWrite(ra,LOW); 
    break; 

    case 3: 
    digitalWrite(ga,HIGH); 
    digitalWrite(rb,HIGH); 

    delay(12000); 
    digitalWrite(ga,LOW); 
    digitalWrite(ya,HIGH); 
    digitalWrite(yb,HIGH); 
    delay(3000); 
    digitalWrite(ya,LOW); 
    digitalWrite(yb,LOW); 
    digitalWrite(rb,LOW); 
    delay(50); 
    digitalWrite(gb,HIGH); 
    digitalWrite(ra,HIGH); 

    delay(12000); 
    digitalWrite(gb,LOW); 
    digitalWrite(ya,HIGH); 
    digitalWrite(yb,HIGH); 
    delay(3000); 
    digitalWrite(ya,LOW); 
    digitalWrite(yb,LOW); 
    digitalWrite(ra,LOW); 
    break; 

    case 4: 
    digitalWrite(ga,HIGH); 
    digitalWrite(rb,HIGH); 

    delay(15000); 
    digitalWrite(ga,LOW); 
    digitalWrite(ya,HIGH); 
    digitalWrite(yb,HIGH); 
    delay(3000); 
    digitalWrite(ya,LOW); 
    digitalWrite(yb,LOW); 
    digitalWrite(rb,LOW); 
     delay(50); 
     digitalWrite(gb,HIGH); 
    digitalWrite(ra,HIGH); 

    delay(15000); 
    digitalWrite(gb,LOW); 
    digitalWrite(ya,HIGH); 
    digitalWrite(yb,HIGH); 
    delay(3000); 
    digitalWrite(ya,LOW); 
    digitalWrite(yb,LOW); 
    digitalWrite(ra,LOW); 
    break; 

    case 5: 
    digitalWrite(ga,HIGH); 
    digitalWrite(rb,HIGH); 


    delay(18000); 
    digitalWrite(ga,LOW); 
    digitalWrite(ya,HIGH); 
    digitalWrite(yb,HIGH); 
    delay(3000); 
    digitalWrite(ya,LOW); 
    digitalWrite(yb,LOW); 
    digitalWrite(rb,LOW); 
    delay(50); 
    digitalWrite(gb,HIGH); 
    digitalWrite(ra,HIGH); 


    delay(18000); 
    digitalWrite(gb,LOW); 
    digitalWrite(ya,HIGH); 
    digitalWrite(yb,HIGH); 
    delay(3000); 
    digitalWrite(ya,LOW); 
    digitalWrite(yb,LOW); 
    digitalWrite(ra,LOW); 
    break; 

    case 6: 
    digitalWrite(ga,HIGH); 
    digitalWrite(rb,HIGH); 

    delay(2100); 
    digitalWrite(ga,LOW); 
    digitalWrite(ya,HIGH); 
    digitalWrite(yb,HIGH); 
    delay(3000); 
    digitalWrite(ya,LOW); 
    digitalWrite(yb,LOW); 
    digitalWrite(rb,LOW); 
    delay(50); 
    digitalWrite(gb,HIGH); 
    digitalWrite(ra,HIGH); 

    delay(2100); 
    digitalWrite(gb,LOW); 
    digitalWrite(yb,HIGH); 
    digitalWrite(ya,HIGH); 
    delay(3000); 
    digitalWrite(yb,LOW); 
    digitalWrite(ya,LOW); 
    digitalWrite(ra,LOW); 

    break; 

    case 7: 
    digitalWrite(ga,HIGH); 
    digitalWrite(rb,HIGH); 

    delay(24000); 
    digitalWrite(ga,LOW); 
    digitalWrite(ya,HIGH); 
    digitalWrite(yb,HIGH); 
    delay(3000); 
    digitalWrite(ya,LOW); 
    digitalWrite(yb,LOW); 
    digitalWrite(rb,LOW); 
    delay(50); 
    digitalWrite(gb,HIGH); 
    digitalWrite(ra,HIGH); 

    delay(24000); 
    digitalWrite(gb,LOW); 
    digitalWrite(yb,HIGH); 
    digitalWrite(ya,HIGH); 
    delay(3000); 
    digitalWrite(yb,LOW); 
    digitalWrite(ya,LOW); 
    digitalWrite(ra,LOW); 


    break; 

    case 8: 
    digitalWrite(ga,HIGH); 
    digitalWrite(rb,HIGH); 

    delay(28000); 
    digitalWrite(ga,LOW); 
    digitalWrite(ya,HIGH); 
    digitalWrite(yb,HIGH); 
    delay(3000); 
    digitalWrite(ya,LOW); 
    digitalWrite(yb,LOW); 
    digitalWrite(rb,LOW); 
    delay(50); 
    digitalWrite(gb,HIGH); 
    digitalWrite(ra,HIGH); 

    delay(28000); 
    digitalWrite(gb,LOW); 
    digitalWrite(yb,HIGH); 
    digitalWrite(ya,HIGH); 
    delay(3000); 
    digitalWrite(yb,LOW); 
    digitalWrite(ya,LOW); 
    digitalWrite(ra,LOW); 
    break; 

    case 9: 
    digitalWrite(ga,HIGH); 
    digitalWrite(rb,HIGH); 

    delay(30000); 
    digitalWrite(ga,LOW); 
    digitalWrite(ya,HIGH); 
    digitalWrite(yb,HIGH); 
    delay(3000); 
    digitalWrite(ya,LOW); 
    digitalWrite(yb,LOW); 
    digitalWrite(rb,LOW); 
    delay(50); 
    digitalWrite(gb,HIGH); 
    digitalWrite(ra,HIGH); 

    delay(30000); 
    digitalWrite(gb,LOW); 
    digitalWrite(yb,HIGH); 
    digitalWrite(ya,HIGH); 
    delay(3000); 
    digitalWrite(yb,LOW); 
    digitalWrite(ya,LOW); 
    digitalWrite(ra,LOW); 
    break; 
    }} 
    }  

答えて

0

あなたはSerial.endを(使用して、そこからデータを読み込んだ後のArduinoのシリアルポートを閉じている)されて使用してループ でそれを使用する方法ループ関数。 Serial.end()ステートメントを削除/コメントすると、Arduinoのシリアルポートのデータが引き続き受信されます。

https://www.arduino.cc/en/Serial/End

を参照してください。また、私は(それは私たちの生活が少し楽になります)あなたは、シリアル通信用のPythonでpyserialライブラリを使用していると信じて:)

それが動作するかどうか、私たちは知ってみましょう。

関連する問題