制作一个手势控制的小灯,用两个行迹的传感器,从左往右挥手,灯变亮,从右往左挥手,灯变暗直到灭,但是实际运行变亮正常,变暗只能减一下,从右往左挥过手后,plus总是1,正常应该是0,哪位能帮我查出程序中的逻辑错误。
int plus;//加操作许可标志
int minus;//减操作许可标志
int val;//小灯亮度
int val1;//传感器1中间变量
int val2;//传感器2中间变量
int Sensor1pin=2;//传感器1
int Sensor2pin=3;//传感器2
int Ledpin=5;//LED
void setup()
{
Serial.begin(9600);//测试用
pinMode(Ledpin, OUTPUT);
pinMode(Sensor1pin, INPUT);
pinMode(Sensor2pin, INPUT);
val=0;
}
void loop()
{
val1=digitalRead(Sensor1pin);
val2=digitalRead(Sensor2pin);
if (val1==0)
{
if (val2==1)
{if(val<5)
{ plus=1;}
}}
if (val2==0)
{
if (val1==1)
{if (val>0)
{
minus=1;
}}
}
if (plus==1)//如果加操作许可为1,右传感器为0,说明手从左侧到右侧,val加1
{
if (val2==0)
{
val++;
plus=0;
delay(500);
}
if (minus==1)//减操作
{
if (val1==0)
{
val=val-1;
minus=0;
delay(500);
}
}
}
analogWrite(Ledpin,val*51);//亮度为5档
Serial.print("val=");//此处为测试用
Serial.print(val);
Serial.print(" Sensor1 is ");
Serial.print(val1);
Serial.print(" Sensor2 is ");
Serial.println(val2);
Serial.print("plus=");
Serial.print(plus);
Serial.print(" minus=");
Serial.println(minus);
Serial.println ();
}
|