• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Arduino unoでLED点滅周期が乱れる)

Arduino unoでLED点滅周期が乱れる

このQ&Aのポイント
  • Arduino unoでLED点滅周期が乱れる理由は?
  • Arduino unoのblinkプログラムでLEDの点滅時間を観測した結果、周期が乱れることがあります。
  • LEDの点滅時間が約2倍になったり、OFF時間が約2倍になったりする理由として、digitalWrite()の命令時間の影響が考えられます。

質問者が選んだベストアンサー

  • ベストアンサー
  • koujikuu
  • ベストアンサー率43% (429/993)
回答No.1
Dragonhopper
質問者

お礼

ありがとうございます。  Arduino 始めて1週間の初心者です。 下記のように割り込み禁止を入れて確認しました。  正しく動作するのは void loop() { の直後に  noInterrupts(); を入れた場合でした。  割り込み許可を再度入れた場合は正常に動作しませんでした。 マニュアルでは「割り込み許可がデフォルト」とあり、どのような割り込みが許可されていて、影響しているかは不明ですが。  ミリ秒の遅延をかける時は問題ない(誤差が小さい)ですが、このような短時間の遅延の場合は気を付けないと思いました。 int led = 13; void setup() { pinMode(led, OUTPUT); } void loop() { noInterrupts(); digitalWrite(led, HIGH); // interrupts(); // noInterrupts(); delayMicroseconds(1); // interrupts(); // noInterrupts(); digitalWrite(led, LOW); // interrupts(); // noInterrupts(); delayMicroseconds(1); // interrupts(); }

関連するQ&A