google-site-verification: google3bd66dd162ef54c7.html
fc2ブログ

ESP32を使ってオシロの画面にアナログ時計を表示

◆まえがき
1月2日の記事にオシロの画面に 2021 正月 と表示させるプログラムを掲載しました。その記事の最後に、ESP32はこういうことをするのに向いているので、アナログ時計を表示させることが出来るのでは?ということを書きました。

これを実際にやってみようと思ったのですが、同じことを既に誰かがやっているかも知れません。ということで、ネットを検索してみました。調べてみると国内には見つからなかったのですが、YouTubeを検索するとESP32でオシロにアナログ時計を書かせている動画がいくつか出て来ました。これなら自分で作らないでも良いので楽ちん、ということで試してみました。

◆参考にしたサイト
YouTubeから辿ってたどり着いた、hackster.io の下記の記事を参考にしました。
Extremely Simple Oscilloscope Clock with ESP32
この記事に掲載されているファイルの ESP32_OscilloscopeClock_v1.0.rar を解凍して出て来るプログラムを実行することで、めでたく時計が表示されました。何も修正しなくても一発で時計が表示されたのはちょっと驚きでした。

◆カストマイズ
そんなことで、やりたかったことが簡単に出来てしまったので拍子抜けなのですが、プログラムの中身を見てみました。

NTPサーバーから時刻を取得することも出来るようになっていますが、時刻合わせは起動時の1回だけ。その後はソフトウエアタイマーの値を使って1秒をカウントしていました。あと、デバッグ用にEXCELに時計の座標データーを流す機能が付いていましたが、とりあえずこの機能は不要です。

NTPサーバーから時刻を取得するのはESP32らしくて良いのですが、時計として使う、というか人に見せるには手動で時刻合を合わせる機能が欲しいところです。あと、EXCEL用にデーターを吐く機能はいらない、というかコードが見辛くなるので削除したくなりました。

ということでプログラムを手直ししました。

ここまで文字ばかり続いたので、先にカストマイズ後の画面を入れておきます。
オシロの画面にアナログ時計

以下、この画面を表示する仕掛けの説明です。

◆プログラムコード (program code)
20210117_ESP32OsilloClockRp_v200.ino 拡張子を .txt から .ino に変更してください (change extension .txt to .ino)
DataTable_RP.h 拡張子を .txt から .h に変更し、上記のプログラムと同じフォルダーに置いてください。 (change extension .txt to .h. save at the same folder as .ino)

Arduino IDEの画面は以下のようになるはずです。

インクルードファイル

プログラムの変更点としては、押しボタンによる時刻合わせ機能を付けました。時刻合わせモードに入ると秒針を0秒の位置に移動します。その状態でボタン操作で分針が移動し、長押しすると高速移動します。ゼロ秒のタイミングでモードスイッチを戻すことで時計と同期します。また、秒針のデザインを少し変えています。

◆回路図 (クリックで別窓に拡大表示)
回路図
時刻合わせのために、モード切り替えスイッチと針の正逆の回転スイッチを追加しています。

◆ハード外観
ESP32オシロアナログ時計ブレッドボードと使用部品ガニ股ブレッドボードを使うと配線が楽なのですが、持っている人は少ないでしょうから普通のブレッドボードで作りました。

◆時計の描画波形
時計描画の時間軸波形
オシロの普通のモード(時間軸モード)で見るとこういう波形になっていて、約8.5ms周期で繰り返しています。ます。これをX-Yモードで表示することでアナログ時計になります。

◆動画





◆まとめ
すばらしい記事を公開してくださった maurohh さん、Mauro Pintus さんに感謝します。

スイッチで簡単に時刻合わせが出来るので、イベント会場など WiFiが無い場所でも使えて便利だと思います。

このプログラムではオリジナルの通りに時間をソフトでカウント(millisの値で同期)しています。しかしどうせやるならタイマー割り込みで時刻同期するようにしたいところです。実はちょっとやって見たのですが、マルチタスクで動いているのでセマフォを使った排他制御が必要になってちょっと厄介でした。そんなことで、そこは別の記事で取り上げてみたいと思います。

【2022/4/12追記】

このプログラムのオリジナルのコードは下記で開発されたものです。

http://www.dutchtronix.com/ScopeClock.htm 

これYoutubの動画のコメントでやんわりと指摘されたので追記しておきます。

hackster.io の記事を見てこれを作り出典も明記していますが、さらに元があったということでした。

【2023/2/24追記】

描画の向きを指定出来るようにしました。

プログラム:20230224_ESP32OsilloClockRp_v250 .ino

150,151行にある下記のコメントを外すとその軸を描画する向きが反転します。

// x = 256 - x; // X軸を反転させたい場合はコメントアウトを外す(2023/02/24追加)

// y = 256 - y; // Y軸を反転させたい場合はコメントアウトを外す(        )

・関連ツイッター



関連記事

コメントの投稿

管理者にだけ表示を許可する

ビックリ

こんばんは。
ページ開いたら、オシロが時計になっていてビックリしました。
原理の理解なんて私にはむりですが、それにしても、衝撃的です

今年もいろいろなコンテンツ楽しみにしています

re:ビックリ

記事を楽しんでいただいているようで、ありがとうございます。

懐かしいなぁ

はじめまして、とんとかいも2号と申します。
オシロのディスプレイにX,Yを使って文字表示.....う〜ん、懐かしいです。
その昔、テレビの映像信号をオシロのX,Yに入れて映しだしたり、8bitパソコンのディスプレイ代わりにしたりして遊んでいました(笑)
まだインターネットが登場していない頃ですけど。

re:懐かしいなぁ

この記事を気に入っていただいたようで、ありがとうございます。

昔は2次元で高速表示出来るのはオシロくらいしか無かったので、いろいろ工夫して表示させましたよね。

表示が反転します

お世話になります。

素晴らしいアイディアを公開して頂き、ありがとうございました。

さっそく表示させてみました。時計は正常に動くのですが、表示が反転します。(裏から見れば正常な状態です)

また、その状態でX,Y軸を反対につなぐと反転はなおりますが、今度は右に90度傾いてしまいます。

オシロは、菊水の536Aです。(骨董品です)お手数とは存じますが、スケッチで修正箇所などあれば、ご教示を頂ければ幸いと存じます。

何卒、よろしくお願いいたします。

re:表示が反転します

レポートありがとうございます。
菊水の536Aの取説読んだら、XYモードの時のX軸は電圧が高いと輝点が左に移動するんのですね。普通は右なのですが、そう言う仕様も有りなのでプログラムをちょっと修正して対応しました。

具体的には、下記のようにDotの関数の定義部に値を反転するかどうかコメントアウトで指定可能にしました。
inline void Dot(int x, int y) {
// x = 256 - x; // X軸を反転させたい場合はコメントアウトを外す(2023/02/24追加)
// y = 256 - y; // Y軸を反転させたい場合はコメントアウトを外す(        )

この修正を加えたプログラムを記事の末尾の【2023/2/24追記】の部分に追加しておいたので動作確認して頂けると幸いです。

No title

おはようございます。
早速ありがとうございました。
こちらの環境でコンパイルしましたら、error: stray 357 273 277が出ます。文字コードが異なるのかどうかわかりませんが。この状態でも、元のバージョンは問題なくコンパイルできました。取り急ぎ、ご連絡致します。

HKさん、こんにちは

こちらでも再確認しましたが、ブログに掲載したファイルで正常にコンパイル出来てアップロード、動作にも問題はありませんでした。なお、ファイルはUTF-8エンコードのBOM付きになっています。

と言うことで申し訳ありません、そちらでエラーが出る原因は不明です。たぶん文字コードの問題だと思いますがそちらで解決して頂くしかありません。
あるいはうまく動いているファイルに修正部分を書き加える手もあります。

ありがとうございました。

お手数をおかけして申し訳ありません。
わかりました。あとは、こちらの問題ですので色々トライしてみます。今回、骨董オシロに活躍の場を頂いて感謝しております。また、色々とご教示を頂きありがとうございました。

動作しました。

こんにちは。
お世話になっております。
今ほど、ソースをテキストエディターで開いて、UTF8 BOM無しで保存してからコンパイルしましたら無事にとおりました。ありがとうございました。
お騒がせして、申し訳ございません。

re:動作しました。

HKさん、了解しました。

ファイルのエンコードをShift-JISにしておけば文字化けの心配は無いのですが、海外の読者の方もいらしゃるのでUTF-8にしています。

ただBOM無しのUTF-8だといきなりブラウザで開いた時に文字化けする場合があるので仕方なくBOM付きにしています。たぶんFC2のどこかの設定に問題があるのだと思います。

コメントの重複、削除しておきます。

re2:動作しました。

こんばんは。
文字コードの件についてご説明を頂き、ありがとうございました。公開される方にも、色々とご苦労があるのですね。
この度は、お世話になりありがとうございました。
カレンダー
11 | 2023/12 | 01
- - - - - 1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31 - - - - - -
プロフィール

ラジオペンチ

Author:ラジオペンチ
電子工作を中心としたブログです。たまに近所(東京都稲城市)の話題など。60過ぎて視力や器用さの衰えを感じつつ日々挑戦!
コメントを入れる時にメールアドレスの記入は不要です。なお、非公開コメントは受け付けていません。
記事の内容のご利用は読者の自己責任でお願いします。

記事が気に入ったらクリックを!
最新記事
カテゴリ
最新コメント
リンク
FC2カウンター
検索フォーム
月別アーカイブ
RSSリンクの表示
QRコード
QRコード