Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Timer 使用定时器和PWM与Arduino_Timer_Arduino_Pwm - Fatal编程技术网

Timer 使用定时器和PWM与Arduino

Timer 使用定时器和PWM与Arduino,timer,arduino,pwm,Timer,Arduino,Pwm,我试图在其他代码运行时让LED淡入淡出,作为一个很好的状态指示器。我在这里问过如何做到这一点,我得到了使用msTimer2库的建议。这似乎是可行的,直到我尝试在代码中使用analogWrite。它只是跳过了那部分。当我移除库时,它会再次工作,但是当然,我没有让状态指示器工作。为什么我的代码不能工作 int ledPin = 10; int brightness = 0; int fadeAmount = 1; #include <MsTimer2.h> void flash() {

我试图在其他代码运行时让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);   
}
int-ledPin=10;
int亮度=0;
int-fadeAmount=1;
#包括
无效闪光(){

对于(int fadeValue=20;fadeValue analogwrite是一种PWM,使用timer2,因此存在资源冲突。谢谢!在阅读了更多关于PWM的内容后,我已经猜到它一定是这样的。您知道任何解决方案可以同时运行两位代码,还是根本不可能?您是否尝试使用引脚5和6而不是9和11?插脚9和10使用相同的定时器/计数器(定时器/计数器1),这可能是问题的根源。插脚5和6使用定时器/计数器0(我从Dale Wheat的书“Arduino内部结构”中查找到)。