0

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

0 に答える 0