各セグメントの明るさをPWMで調光することで、表示が変わる時にクロスフェードするようになりました。
クロスフェードもタスクで実行
6つのVFDのダイナミック点灯はタスクになっていて、コア0で実行されています。このダイナミック点灯のタスクには、VFDの各セグメントごとにPWMの機能が実装されており、セグメント毎に32段階の明るさを設定できます。
今回は、VFDの各セグメントのON,OFFが変更になったら、クロスフェードするようにPWM値を自動で変更する機能を追加しました。この機能もタスクにしました。このタスクはダイナミック点灯に影響しないようコア1で実行することにします。
ダイナミック点灯や、クロスフェードはタスクによって自動実行されているので、ループ文の中は数字をカウントアップする処理しかありません。ESP32のタスクは便利ですね。
クロスフェードできました
数字が変更になる際に、前の数字がふわっと消えながら、新しい数字がふわっと表示されます。このため、数字の変化の時には上の写真のように文字が重なって見えます。
クロスフェードでは、消える速さよりも点灯する速さを2倍速くすることで、可読性を上げてみました。実際の表示の様子が上の動画です。電球のようなふわっとした数字の変化が楽しめるようになりました。
さて次回は
VFDが点灯する仕組みが出来上がったので、時計へ向けてメインボードに搭載されているリアルタイムクロックが使えるよう、機能を追加したいと思います。
これまでの歩みは以下の通りです。
コメント
Hello. Could ypu please share Arduino code?
Thank you.
Hi Alex.
Source code is available only to customers who have purchased the kit.
Please contact us if you wish to purchase.
We can arrange it for you.