使用定时器和PWM与Arduino

时间:2013-03-03 16:39:27

标签: timer arduino pwm

当其他代码正在运行时,我正试图让LED淡入淡出,作为一个很好的状态指示器。我在这里问过如何做到这一点,我得到了使用msTimer2库的建议。这似乎有效,直到我尝试在代码中使用analogWrite。它只是跳过那一部分。当我删除库它再次工作,但当然我没有状态指示器工作。为什么我的代码不起作用?

int ledPin = 10;
int brightness = 0;
int fadeAmount = 1;
#include <MsTimer2.h>

void flash() {
  for(int fadeValue = 20 ; fadeValue <= 21; fadeValue +=1) {   
    delay(20000);                            
  }

    for(int fadeValue = 20 ; fadeValue <= 220; fadeValue +=1) {
    analogWrite(ledPin, fadeValue);          
        delay(50);                            
  }

  for(int fadeValue = 220 ; fadeValue >= 50; fadeValue -=1) {
    analogWrite(ledPin, fadeValue);           
    delay(50);
  }

    for(int fadeValue = 50 ; fadeValue <= 110; fadeValue +=1) {
    analogWrite(ledPin, fadeValue);          
    delay(130);                            
  }

  for(int fadeValue = 110 ; fadeValue >= 20; fadeValue -=1) {
    analogWrite(ledPin, fadeValue);          
    delay(250);
  }



}

void setup() {
  pinMode(10, OUTPUT);
  pinMode(9, OUTPUT);
  pinMode(11, OUTPUT);

  MsTimer2::set(500, flash); 
  MsTimer2::start();
}

void loop() {
  digitalWrite(9, 1);
  delay(1000);
  digitalWrite(11, 1);
  delay(1000);
  digitalWrite(9, 0);
  delay(1000);
  digitalWrite(11, 0);
  delay(1000);
  analogWrite(9, brightness);    
  brightness = brightness + fadeAmount;
  delay(400);   
}

0 个答案:

没有答案