ikkei blog

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

ラズパイ5でLoRa無線

2024年12月27日 11時05分08秒 | ラズパイ
CrowViewでラズパイ5を簡単に操作できるのは良いのですが
Pythonは初めて触ったのでちょっと手こずりました。
ラズパイはGPIOをシリアルポートに切り替えするのに再起動が必要と分かったので
ダイオードを追加することになりました。




delay( 10000 ); これかぁ

2024年12月17日 08時22分57秒 | 組み込みソフト
同じ著者の別の本にあったのがこれです。
こちらはラズパイなのでOSがあります。
OSがあれば無限ループを終端においてOSから起動できるので
このときsleepするのはいいでしょう。

Pythonのtime.sleep(1) は Arduinoのdelay(1000) ですから
これをそのまま Arduino に持ってきたんでしょう。



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行で済ませてます。