2017-10-07 41 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库串行通信(它使我们的生活变得更轻松):)

让我们知道,如果它的工作原理。