2017-10-07 38 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庫串行通信(它使我們的生活變得更輕鬆):)

讓我們知道,如果它的工作原理。