AD9833でファンクションジェネレータを作る3 エンコーダ、OLED

published_with_changes 更新日: event_note 公開日:

labelAD9833 labelファンクションジェネレータ

 3 ロータリエンコーダとOLED

参考にしているAD9833 Waveform Generatorにロータリエンコーダについての記述があります。

ロータリエンコーダを2つ使っていて、ひとつは x1, x10, x100, x1000 というように設定周波数の倍率を選ぶ役割で、もう一つは現在の周波数から増減させる役割のようです。AD9850 Waveform Generatorの動画を見て、なんとなくこのようにイメージできました。
また、2つのロータリエンコーダはプッシュスイッチ付です。たぶんこれはロータリエンコーダで選んだ周波数を決定(セット、反映)する役割かなぁと思います。

入手したロータリエンコーダはこれです


アルプス電気EC11もどきを使っています。部品を追っていくと下図のような回路でした。

CW、CCWとプッシュスイッチ用に、それぞれ10kΩのプルアップ抵抗と0.01uF(?)のチャタリング防止コンデンサが入っています。



Arduinoで使うためのライブラリは、Rotary Encoder Arduino Libraryで、参照させていただいている2件のブログと同じです。
基本的にスケッチは、迷走の果て・Tiny Objects AD9833 DDSモジュールを試す(13) 現状のものを利用させていただくつもりです。<m(__)m>
回路もこの回路図をベースにしたいと思います。整理されていてとても分かりやすいです。


液晶OLEDは手持ちだった1.6インチ 130x130 のカラーTFTのSSD1283Aを使います。SPI接続です。


ライブラリは、GitHubにあるSSD1283A for Arduinoを使います。

ライブラリのページに次のような記述があります。どうも、LCDWIKI_GUIのアドインのような感じです。

        This library supports SSD1283A to use with Adafruit_GFX and/or LCDWIKI_GUI.
        The code is extracted from LCDWIKI_SPI and adapted for single controller use and Adafruit_GFX.
        Only HW SPI is supported.


サンプルスケッチを見ると、SSD1283A.hの前にLCDWIKI_GUI.hをインクルードしています。
ということで、gitcnd/LCDWIKI_GUIをライブラリに追加します。


このライブラリでは、画面の向きを4方向に変更できるようです。イメージ的には上記の写真のような縦表示ではなく、AD9833 Waveform Generatorで示されているような横表示にしたいと思っています。

縦横同じ130ドットなのですが、横表示の方が自然で見やすいです。横向きにすると、このようになりました。表示のさせ方はオリジナルから少し変えています。




Powered by Blogger | Designed by QooQ

keyboard_double_arrow_down

keyboard_double_arrow_down