Timer 使用定时器和PWM与Arduino
我试图在其他代码运行时让LED淡入淡出,作为一个很好的状态指示器。我在这里问过如何做到这一点,我得到了使用msTimer2库的建议。这似乎是可行的,直到我尝试在代码中使用analogWrite。它只是跳过了那部分。当我移除库时,它会再次工作,但是当然,我没有让状态指示器工作。为什么我的代码不能工作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() {
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内部结构”中查找到)。