中国製エアバンドレシーバーキット改造に取り組んでいます。外部デジタル局発もオリジナルアルミケースに一緒に入れられないかと考えました。
まずは表示ですが、SSD1306コントローラ搭載のグラフィック液晶をキャラクタ液晶替わりに使いました。
グラフィック液晶の寸法はちっちゃくて、前面パネルに収まりそうです。またArduinoもPro miniならケースの空いているところに詰め込むことができます。
オリジナルケースの制限から、グラフィック液晶使用、更にスイッチ集約でファンクションスイッチはロータリーエンコーダーだけを使うことにします。
ブロックダイヤグラムは次になります。
I'm trying to install a digital local oscillator within the original Chinese airband receiver kit. Accordingly, I shall make up a compact local oscillator circuit with a tiny graphic LCD and Arduino Pro Mini board. To reduce function keys I made the newer sketch by using a Rotary encoder and its push switch operation approaching. Such combination leads to below circuit diagram.
そのためにスケッチを大幅入れ替えしました。
ファンクションスイッチ関連ではプッシュスイッチ付きのロータリーエンコーダーを採用し、シングルプッシュでファンクション切り替え応答、
ダブルクリックでメモリー書き込みとオートスキャンへの切り替えとする新たな操作方式としました。
1.ロータリーエンコーダー付属プッシュスイッチのONでファンクション切り替え待ち。
FUと選択中のファンクションをLED#13(ハートビート用)切り替えタイミングで切り替え表示
2.ファンクション選択中にもう一度プッシュスイッチONすると選択中の機能に切り替わる。
「周波数増減」「ステップ周波数選択」「メモリーチャンネルをREでスキャン呼出」「書き込みメモリーチャンネル選択」
3.各ファンクション状態で、プッシュスイッチをダブルON(500ms以内に二回押す)すると各機能で選択中の周波数などをメモリーへ記憶する。
「周波数増減」では周波数を、「ステップ周波数選択」ではステップ周波数を「メモリーチャンネルでスキャン呼出」では自動スキャンモードへ、「書き込みメモリーチャンネル選択」では表されている周波数を選択したメモリーチャンネルへ。
各設定はEEPROMに記録し、次回電源ON時に呼び出される。
To utilize the rotary encoder's push switch I adopted a double crick operation. Operation methods are below:
1. When the push switch is on, the machine's going into FUNCTION selection mode by the rotary encoder. The display of function code is blincking displayed by heartbeat timing('#13 LED on/off).
2. Then the rotary encoder's push switch is on, the function is determined temporarily decided.
FUNCTIONs are "Frequency increasing & decreasing", "STEP frequency increasing & decreasing", "Reading out the frequency of the selected memory channel", and "Writing the frequency on the selected memory channel".
3. Then the rotary encoder's push switch is double click on ( 2 times during 500mS), memory write is performed. Specially SCAN mode it changes into AUTOMATIC SCAN mode.
※ ロータリーエンコーダーはベンバクストンさんのLIBを利用してます。PU2CLRリカルトさんのLIBでも引用されています。ただで使っていて、不平言ってもまずいですが、このREのLIBはチャタリングには強いが、動き出しが弱い(チャタリングと判断するみたい)ので回しても応答がちょっと遅れます。コードはシンプルなのですが、まだ読めていません。
今回スイッチのチャタリングを取り、ダブルクリックにも対応するためTIMER関数を作りました。mSベースのタイミングモニターとして今後使えそうです。
I'm much thanking Mr.Ben Buxton for his giving Arduino LIB of the rotary encoder.
To avoid to use delay(), I had composed Timer() for semi real-time processing by using millis().
追伸
いつもだと、回路ができてからスケッチに取り掛かるんですが、今回はまずスケッチができて、次にSSD1306を中国製エアバンドレシーバーキット用ケースに入れる検討をしています。SSD1306LCDは取り付け穴とかが無くて、どうして取り付けるか、ケース開口部をどうするかなど逡巡中。Pro Miniの取り付けもどうするかです。