素敵なステータスインジケーターとして、他のコードの実行中に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);
}