ikkei blog

電子工作やパズルのブログです。主にLEDを使った電子工作をやっています。

delay( 10000 ); 再び

2024年12月15日 21時56分04秒 | 組み込みソフト
風呂に入っている時に
ひょっとして dealy 関数に何か消費電流低減とかの技があったりするのか?
と思って風呂上がってさっそく実験してみました。
プログラムはこれ

loop(
    while(true){
        delay( 10000 );
    }
}

ESP32

delay 無し 79.7mA
delay( 1 );  49.7mA
delay( 10 );  48.6mA
delay( 100 );  48.6mA
delay( 1000 );  48.5mA
delay( 10000 );  48.5mA

うーーん、確かに効果はある。10以上にしても変わらないけどね。
delay関数の中でsleepとかしてるんだろうか?

ならば、UNOならどうなんだろう?

Arduino UNO

delay 無し 51.0mA
delay( 1 );  61.0mA
delay( 10 );  61.2mA
delay( 100 );  61.2mA
delay( 1000 );  61.2mA
delay( 10000 );  61.2mA

あれれ?UNOだとdelayの方が消費電流多いね。

ここまでやって気が付いた。
無限ループで動作止めてる時の消費電流気にしてどうすんだ!

結論
ESP32のdelay関数は消費電流が小さくなる。
だけど無限ループに入れるdelayはやっぱり意味がない。

おまけ
デバッグで動作を止める時私は
while(1);
と1行で済ませてます。