ESPr Developerを使ってOLED制御する為の準備

OLEDをスマホから制御したいと思ったものの・・・
mgo-tec電子工作」のページで、ESPr Developerによるキャラクター&グラフィック有機EL ( OLED ) WS0010の制御に関する記事があります。大変興味深く勉強させて頂いています。
私が拝見させて頂いたのは、下記の3つのページで特に3番目のスマホ操作をしてみたいと思い、No1から順に実験してみました。No1,2は記載されている手順に従って進めることで比較的容易に実現出来ましたが、No3は私にとってはハードルが高いものでした。また、調べると私のESPr DeveloperのFLASHサイズは2MBで、フォントファイルのアップロードが出来ないことも判り、モチベーションは下がりました。

  1. ESP-WROOM-02 ( ESP8266 )の GPIO を増設して キャラクタディスプレイ 8bitモード制御してみた
  2. GPIO 増設した ESP-WROOM-02 ( ESP8266 )で、8bitモードのグラフィックディスプレイ を制御してみた
  3. 視認性クッキリ! 大き目ドットの OLED WS0010 で日本語漢字フォント電光掲示板風スクロール&スマホ操作

ただ、No2の記事の最後に「ここまでできれば、日本漢字フォントを表示させることが可能」と記載されていました。この言葉から、グラフィックモードでOLEDのドットを文字フォント通りに制御すればよいと理解し、ブラウザから文字変更は出来ないまでも、プログラム内で設定した固定文字のスクロールは出来るだろうと思ってトライしてみました。結果の動画を掲載します。

速度,文字変更は出来ませんが、固定文字スクロールはとりあえず出来るようになりました。配線は上のリストのNo.3と同じです。初期設定、OLEDへの書き込み部分等は、No.2プログラムをベースにして、文字部分表示,スクロール等を検討しました。

OLED用データ変換と書き込み
固定文字とは言っても、フォントデータ自体知りませんのでその確認から始めます。16X16フォントは、16X16 =256ドットで一つの文字を表現し、各ドットの状態(High/Low)を定義したものと理解しました。下記「①16進数表示例(横2列表示)」にある様にディスプレイへの書き込み単位である8(ビット/行)単位で縦16行,横2列で1文字を定義することがある様です。
一方、下記「④OLED(WS0010)書き込み」にある様に、OLEDは 8(ビット/列)X 縦2行 X  横100列のレイアウトになっている為、①の横表示を②ドット表示変換、③縦表示変換し、OLEDに8ビット単位で書き込みます。
この様にして、順番にOLEDの全ドット書き込み後、少し時間をおいて、1列分シフトし再び書き込みを開始します。この処理を繰り返すことで、文字がスクロールすることを確認出来ました。

データ変換用エクセルVBA
OLEDに書き込む8ビット単位のデータを毎回作成していたら大変ですので、エクセルVBAで変換プログラムを作成しました。エクセルシート上の入力欄に好きな言葉を入力して「検索」ボタンをクリックすると、ESPr® Developer用のプログラム内の配列変数に設定する値を取得することが出来ます。(下図最下部)
この配列の値を、OLEDの上段1列、下段1列、上段2列、下段2列、上段3列・・・、の様に順番に設定すれば、OLED上に文字を描くことが出来ます。

ESPr Developerプログラムに設定した状態を示します。

データ変換プログラム(ブラウザ対応)
ブラウザ対応の変換プログラムも作成(下記リンク)
変換プログラムブラウザー版へのリンク

ブラウザー版で変換コードを貼り付けプログラム起動状況

まとめ
今回は、OLED(WS0010)の使い方確認になってしまいましたが、次回は「mgo-tec電子工作」には、はるかに内容のレベルは落ちますが、スマホからOLED出力を変更することにトライしてみたいと思います。

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です