急速未来 发表于 2017-11-12 07:07:22

咪头控制呼吸灯程序,跳不出for 循环

做了一个咪头控制呼吸灯的小东西,实现拍一下手呼吸灯逐渐变化,再拍一下手呼吸灯灭,代码正常执行,
如果直接控制灯的亮灭,可以实现,但是加上呼吸灯的代码后,可以亮并且呼吸,但再拍一下手就不灭了,用打印看了一下,我自己判断为跳不出for循环,想请教大神看下,我哪里出问题了,在这里先谢谢了!
代码如下



int Pin1=A5;//(模拟引脚都可以)
/*Arduino A5接咪头负极(从外形上看引脚短的一边或与外壳有连接的一边)
另外一边接5v.注意:咪头负极要接一个10K的下拉电阻*/
int Pin2=10;//Arduino 10脚接LED正极(数字脚都可以)
int n=0;//存储读取的模拟值
boolean toggle=false;
unsigned long fristClap=0;//第一次拍手
unsigned long nextlap=0;//下一次拍手
unsigned int claps=0;//拍手的次数
unsigned long timeDiff=0;//时间间隔

void setup()
{
pinMode(Pin2,OUTPUT);//定义10脚为输出模式
Serial.begin(9600);
}

void loop()
    {
          n=analogRead(Pin1);//模拟读取A5的值
          if (n>515)
          {
            fristClap=millis();
            claps++;
         if(claps==2)
             {
               timeDiff=fristClap-nextlap;
               if (timeDiff>300&&timeDiff<2500)
               {
               toggle=!toggle;
               claps=0;
               }
            else
             claps=1;
         }
       nextlap=fristClap;
      }
    if (toggle)
       {
      Serial.println ("111");
         for (int value = 0 ; value < 255; value++)//value=value-1
         {
          analogWrite(Pin2, value);
         delay(8);
         }
       for (int value = 255; value >0; value--)//value=value-1
         {
         analogWrite(Pin2, value);
         delay(8);
         }
       delay(1000);
      }
    else
       {
         Serial.println ("222");
         analogWrite(Pin2, 0);
         delay(200);
         
       }
}

Stormer 发表于 2017-11-14 21:07:41

本帖最后由 Stormer 于 2017-11-14 21:11 编辑


因为FOR循环的时候是不检测 toggle的值的,所以会一直运行。 加个判断,跳出来就好了。


if (toggle)
       {
   
         for (int value = 0 ; value < 255; value++)//value=value-1
         {
if (toggle==false)
{
   value =300;
}
else
{      analogWrite(Pin2, value);
         delay(8);
}
         }

.....
if (toggle==false)
{
   value =0;
}
.........

analogWrite(Pin2, 0);

急速未来 发表于 2017-11-15 17:48:14

Stormer 发表于 2017-11-14 21:07
因为FOR循环的时候是不检测 toggle的值的,所以会一直运行。 加个判断,跳出来就好了。




原来是这样,我只知道跳不出来,却不知道怎么解决,谢谢啦!又学到新东西了:)

guansir518 发表于 2017-11-29 22:45:40

我也是新手,就算在for 里加了if 判断,我想硬件是不会时时更新toggle的值吧
页: [1]
查看完整版本: 咪头控制呼吸灯程序,跳不出for 循环