Melanie 发表于 2014-10-9 22:41:41

新手求助,不太懂代码顺序

原是想要达到用touch sensor控制音乐速度,同时呼吸灯自己闪烁,但是很运行的很不好,根本无法控制


int tune[] =
{
NOTE_D3,NOTE_D3,NOTE_D4,NOTE_D5,NOTE_D5,NOTE_D4,NOTE_D3,NOTE_D2,
};

float duration[]=
{
1,1,1,1,1,1,1,1,1,1,1,1,2,0.5,1
};
int length;
int tonePin=11;
int touchPin=4;
int currentState=0;
int lastState=0;
int Melanie=400;

void setup()
{
pinMode(tonePin,OUTPUT);
pinMode(3,OUTPUT);
pinMode(5,OUTPUT);
pinMode(6,OUTPUT);
pinMode(touchPin,INPUT);

length = sizeof(tune)/sizeof(tune);
}

void loop()
{

    for (int a=0; a<=255;a++)            
{
    analogWrite(6,a);
    analogWrite(3,a);
    analogWrite(5,a);
    delay(5);                                    
}
    for (int a=255; a>=0;a--)         
{
    analogWrite(6,a);
    analogWrite(3,a);
    analogWrite(5,a);
    delay(5);                        
}   
currentState=digitalRead(touchPin);
if(currentState==1&&currentState!=lastState)
{
if(Melanie>0) Melanie-=100;
else Melanie=400;
}
for(int x=0;x<length;x++){
    tone(tonePin,tune);
    delay(Melanie*duration);
    noTone(tonePin);

} lastState=currentState ;
   

麻烦了,谢谢

delay(5000);

}

Melanie 发表于 2014-10-9 22:42:32

拜托各位了

xinhoujue 发表于 2014-10-10 08:36:48

熟悉C语言+程序架构=成功!加油,努力吧!

林定祥 发表于 2014-10-10 16:04:42

这段干什么用的?
for (int a=0; a<=255;a++)            
   {
   analogWrite(6,a);
   analogWrite(3,a);
   analogWrite(5,a);
   delay(5);                                    
   }
   for (int a=255; a>=0;a--)         
   {
   analogWrite(6,a);
   analogWrite(3,a);
   analogWrite(5,a);
   delay(5);                        
   }
和 delay(5000);
会降低触摸的感觉的,是否可以用其他方法,或可以提出原来这么做的理由.

Be1ieve 发表于 2014-10-10 18:42:12

還沒仔細看,不過先抓到一堆delay,要注意在delay的時間內是不會有動作的
學一下中斷跟執行緒
页: [1]
查看完整版本: 新手求助,不太懂代码顺序