不好意思,可能是我没有表达好。
我要实现的功能是计数,有一号电机和二号电机,每个电机由一个红外控制,(红外初始状态输出低电平),连接蓝牙进行串口调试,当我发送'A'时。一号电机一直转动转动,当红外检测到有东西通过时,延时2S,计数+1,(设定计数最大值为2),当记到最大值后电机一直停止。再发送'B',二号电机开始转动,(当红外检测到有东西通过时,延时2S,计数+1,(设定计数最大值为3),当记到最大值后电机一直停止),这部分和一号电机执行差不多。
这是目前重新改的程序
int pin1=22;int pin2=23;int pin3=24;int pin4=25;int pin5= 2;
int pin6=26;int pin7=27;int pin8=28;int pin9=29;int pin10=3;
int i=0;
int val;
void setup()
{
pinMode (pin1,OUTPUT);pinMode (pin2,OUTPUT);pinMode (pin3,OUTPUT);pinMode (pin4,OUTPUT);pinMode (pin5,INPUT);
pinMode (pin6,OUTPUT);pinMode (pin7,OUTPUT);pinMode (pin8,OUTPUT);pinMode (pin9,OUTPUT);pinMode (pin10,INPUT);
Serial.begin(9600);
}
void go_one ()
{digitalWrite (pin1,LOW);digitalWrite (pin2,HIGH);digitalWrite (pin3,HIGH);digitalWrite (pin4,HIGH);delay(2);
digitalWrite (pin1,LOW);digitalWrite (pin2,LOW);digitalWrite (pin3,HIGH);digitalWrite (pin4,HIGH);delay(2);
digitalWrite (pin1,HIGH);digitalWrite (pin2,LOW);digitalWrite (pin3,HIGH);digitalWrite (pin4,HIGH);delay(2);
digitalWrite (pin1,HIGH);digitalWrite (pin2,LOW);digitalWrite (pin3,LOW); digitalWrite (pin4,HIGH);delay(2);
digitalWrite (pin1,HIGH);digitalWrite (pin2,HIGH);digitalWrite (pin3,LOW);digitalWrite (pin4,HIGH);delay(2);
digitalWrite (pin1,HIGH);digitalWrite (pin2,HIGH);digitalWrite (pin3,LOW);digitalWrite (pin4,LOW);delay(2);
digitalWrite (pin1,HIGH);digitalWrite (pin2,HIGH);digitalWrite (pin3,HIGH);digitalWrite (pin4,LOW);delay(2);
digitalWrite (pin1,LOW);digitalWrite (pin2,HIGH);digitalWrite (pin3,HIGH);digitalWrite (pin4,LOW);delay(2);}
void stop_one ()
{digitalWrite (pin1,HIGH);digitalWrite (pin2,HIGH);digitalWrite (pin3,HIGH);digitalWrite (pin4,HIGH);}
void go_two ()
{digitalWrite (pin6,LOW);digitalWrite (pin7,HIGH);digitalWrite (pin8,HIGH);digitalWrite (pin9,HIGH);delay(2);
digitalWrite (pin6,LOW);digitalWrite (pin7,LOW);digitalWrite (pin8,HIGH);digitalWrite (pin9,HIGH);delay(2);
digitalWrite (pin6,HIGH);digitalWrite (pin7,LOW);digitalWrite (pin8,HIGH);digitalWrite (pin9,HIGH);delay(2);
digitalWrite (pin6,HIGH);digitalWrite (pin7,LOW);digitalWrite (pin8,LOW); digitalWrite (pin9,HIGH);delay(2);
digitalWrite (pin6,HIGH);digitalWrite (pin7,HIGH);digitalWrite (pin8,LOW);digitalWrite (pin9,HIGH);delay(2);
digitalWrite (pin6,HIGH);digitalWrite (pin7,HIGH);digitalWrite (pin8,LOW);digitalWrite (pin9,LOW);delay(2);
digitalWrite (pin6,HIGH);digitalWrite (pin7,HIGH);digitalWrite (pin8,HIGH);digitalWrite (pin9,LOW);delay(2);
digitalWrite (pin6,LOW);digitalWrite (pin7,HIGH);digitalWrite (pin8,HIGH);digitalWrite (pin9,LOW);delay(2);}
void stop_two ()
{digitalWrite (pin6,HIGH);digitalWrite (pin7,HIGH);digitalWrite (pin8,HIGH);digitalWrite (pin9,HIGH);}
void loop ()
{
while (Serial.available())
{
val = Serial.read();
delay(100);
}
switch (val)
{
case 'A':
{
for (int a=0;a<1;a++)
{
switch(a)
{
case 0 :
{
Serial.println("11"); n = digitalRead (pin5) ;
switch(n==LOW&&i<1)
{
case 0: delay (2000); i++; break;
case 1 : go_one (); break;
}
}
break;
case 1 : stop_one(); break;
}
}
i=0;
}
break;
case 'B':
{
for (int b=0;b<1;b++)
{
switch(b)
{
case 0 :
{
Serial.println("21"); n = digitalRead (pin10) ;
switch(n==LOW&&i<1)
{
case 0: delay (2000); i++; break;
case 1 : go_two (); break;
}
}
break;
case 1 : stop_two(); break;
}
}
i=0;
}
break;
}
}
现在遇到的问题是:发送'A',一号电机按要求正常运行,当发送'B'时,有时候一号电机转动,但不能正常执行一号电机的程序(当记到最大值时,不能停止),有时候二号电机转动,也不能运行二号电机程序(当记到最大值时不能停止)。。用窗口监视器检测打印正常。
请问这时什么原因造成的??感谢耐心解惑,谢谢! |