● 実験テーマ99

「PIC24F_カラーOLEDの表示実験」
(PIC24Fで、カラーOLEDの表示実験をしてみました。0.95inch 96*64dot 16bitカラーの物を使用しましたが、かなり手こずりました。)

以下、この実験の顛末記です。

■ 2017.11.4
  ・16bitカラーOLEDの表示テストをやってみたいが、価格が高い。
   キャリーボードが売られているものが良いが、価格がやや高い。
   aitendoの、韓国製の、NVK-128SC008F:128*128dot 1.5inch カラーOLED→ 2480円
   これ用のキャリーボード: IFB-NVK-128SC008F→ 150円
   実際組立に際しては、チップの、CR・ダイオード等が必要になる。
   ただ、OLEDモジュールのFPC接栓とボード間は、FFCコネクタにより接続されるので、スマートではある。
   触手が動きそうだが、今回はがまんして、解像度の低い安価なものにすることにした。

   解像度の低い安価なものとは、同じ、aitendoで販売している、
   韓国製の、NVK-064DC012F:96*64dot 0.95inch カラーOLED→ 980円
   ただ、これのキャリーボードは無い。
   aitendoの、説明だと、基板に直接半田付けするタイプとある。 
   普通に、基板側の角パッドにFPCの接栓を、半田付けできればよいのだが・・・
   とにかく、1つ購入して試してみることにした。
   これと一緒に、FPC-DIP変換基板(aitendoでは、マルチFPC変換基板と称してる。)「UPCB-3FPC-2.54」→ 100円
   も注文した。    


■ 2017.11.7
  ・
aitendoから、パーツ届く。


■ 2017.11.10
  ・これを進めるための参考資料としては、aitendo HPの当該ページにアップされている、OLEDデータシート・アプリノート・
   寸法図面・SSD1332データシート・初期化の参考コードがある。
   あと、色々調べている内に、有力な参考資料として、CQ出版の、京谷豊著「グラフィック表示モジュール応用製作集」
   という書籍があることを知る。
   この本の、第3章98ページに、Appendex1:ALO-095BWNN-J9の代替 NVK-064SC012Fを試用
   という今回のテーマにピッタリの記事があり、DC/DC周りの回路も記載されていたので、それも参考にすることにした。
   (但し、MPUは、AVR系)
   まずは、実験回路作成から始める。
   コントローラは、何時もの、PIC24Fトレーニング基板使用。


■ 2017.11.11
  ・実験環境検討。
   FPC-DIP変換基板を購入したが、DIP部が千鳥配列になっている。
   つまり上下が相対的にハーフピッチ(1.27mm)になる。
   秋月で、ハーフピッチの、Bタイプ 両面ユニバーサル基板:AE-2Mが400円で購入出来るので、この基板に 
   DC/DC部など組むことにする。

   カラーOLEDの電源としては、ロジック電源の、VDD= 3.3Vと、パネル電源の、VCC= 15Vが必要。
   その、15Vを、5V入力から、LT1172CN8(DC/DC)によって生成する。
   また、P_ON時からのタイミングが必要になるので、VCC_ON/OFF用の、TR回路も必要になる。


■ 2017.11.14
  ・秋月・マルツ手配分のパーツも届いているが、ソフトを先に考える。
   とりあえずの目標としては、SSD1332の初期化→ Display ON→ 全面クリア→ 初期メッセージ表示までさせてみる。
   ソースとして京谷さん作成のものが参考になるが、AVRで作成している。
   8080系インターフェース部分の、ポート構成も、PICと異なるし、使っているフォントも異なる。
   その辺をアジャストしていかないといけない。


■ 2017.11.15
  ・フォント出力の方法も異なっているようなので、使い慣れた、ドット描画による文字出力にした。
   ところで、QVGAの時のコントローラ:ILI9325には、ドット描画コマンド:0x22があったが、SSD1332には無い。
   たぶん、直線描画コマンド:0x21があるので、
始点・終点座標を同じにしてライン描画すれば、
   ドット描画すると思われる。これで試してみることに。


■ 2017.11.17
  ・とりあえず、最初のテストの、HEXまで準備出来た。
  ・テスト・ハード製作に入る。
   まずは、OLEDモジュールの、FPC接栓(0.7mmピッチ)から線出しして、FPC-DIP変換基板の、0.7mピッチ角パッド経由で、
   DIP部に半田付けしないといけないのだが、これが本当に出来るのか? やる前から不安があった。
   ここでアクシデント発生!!
   OLEDモジュールの、フレキ接栓、何か怪しいと思っていた。
   表面の接栓部(パッド部)は、保護膜なのか?白っぽい色をしている。(金属には見えない。)


   また、裏側のパッドは膜で覆われている。
   ※ FPC変換基板の、角パッドと、モジュール表面の接栓部を合わせて、半田付けしてみたが、半田結合出来ず。
   ただ、白っぽい色しているパッドには、半田メッキはされる。
   CQ本の写真のように、外径:0.29mmの、ポリウレタン銅線で、OLEDモジュールの接栓部に直接半田付けする方法
   しかないのか?
   この銅線は持ち合わせが無いので、いつもの、0.26mm ETFE線(被覆外形=0.56mm)で強引にやってみたが、
   これが、とてもじゃないけど半田付け作業出来ない。
   ブリッジはするし、パッドは壊れて来るしで、早々諦めることにした。(・・・とこの時点では思ったが・・・)

  ・自分としては初だが、ポリウレタン銅線を使ってみる。
   ストリッパで被覆を剥く必要ないのと、外径がより細いので、線が混んできた時にも作業はやり易くなるはず。
   秋月にて、0.29mmポリウレタン銅線 20mm 190円を注文した。
   また、OLEDモジュールを破損した可能性があるので、もう一つ注文しておいた。980円の追加出費だが・・


■ 2017.11.18
  ・一度諦めた、OLEDモジュールであるが、6〜 8pinの接栓パッドが一部壊れたが、よく見たら、未だ先の部分が
   残っていた。
   それにしても、かなりこの半田付けには神経を使った。
   ポリ線でなく、手持ちの、ETFT線を使ったが、0.7mmピッチのパッドでは、線が混んで並んでいる所では、
   被覆径の影響で、途中パッドに芯線を合わせるのに大苦労。
   それでも何とか作業は済んだが・・・
   後は、通電して試すことに。

   ここでもう一つ思いがけないことが・・・
   aitendoで購入した、マルチFPC変換基板だが、2.54mmピッチと明記してあるのにもかかわらず、
   精度が出てないようで(2.54mmより少ない、2.5mm位か?) 16pin列のピンヘッダが入らなかった。
   今回は実験なので、線出しで対応することにした。(おまけ程度の片面レジストの粗い基板なので仕方ないか・・)


■ 2017.11.21
  ・上冶具に接続される、実験用コントロール基板(DC/DC+TR SW他)+冶具ケーブルの製作も済んだ。

  <最初の実験ハードチェック>
   @ 電源ショートチェック→ OK
      +3.3V⇔GND, +5V⇔GND, +15V⇔GND
   A DC/DC未実装にて電源確認
→ OK
      +5V→ 5.22V
      +3.3V→ 3.24V
   B DC/DC実装にて電源確認→ OK
      +5V→ 5.22V
      +3.3V→ 3.24V
      DC/DC出力→ 14.92V
      VCC_ONにて、OLED-VCC:2pin= 14.92V(VCC_ON/OFF機能OK)

  ・いざ、動作チェックへ。
   まず、OLEDへの電源供給は良いようだが、全く表示せず。(明るくもならない。)
   単純配線ミス発見。
   OLEDの、VSSが、32pin(N.C)に繋がっていた。30pin:GNDが正解。
   付け直すも、症状変わらず。

   さらに回路図を転記した時のミスを発見。
   OLEDモジュールの、VBREF:25pinを、VDD:3.3Vに接続したが、ここは、OPENが正解。
   VBREF=内部昇圧回路の基準電圧だが、内部DC/DC未使用なので解放でOK。
   また、VDDB:28pin 内部昇圧回路の電源入力を、解放にしたが、ここをVDDに接続。
   まあこれはたぶんどちらでも良いと思うが・・・
   これらを修正したが、未だ症状変わらず。
   VCOMH:3pinのところに、何かしらの電圧が出るはずだが、P_ON時は、10V位出るが、直ぐに、0V付近まで
   下がってしまう。
   OLED初期化の中に、Set VCOMH Levelというのがあるが、ソフトが駄目なのか?


■ 2017.11.22
  ・
ソフト設定にミスは無さそう。
   VCOMH供給に係わる設定レジスタは、0xADコマンド:Set Master Config.
   これに続いて、0x8Eをセット
   これの意味は、
   @ VCC供給には、外部DC/DC出力を使用し、内部DC/DCは使わない。
   A VCOMHの供給には、内部の、VCOMHレギュレータを使用。

   ただ、このレギュレータのVREFの供給が内部で行われるのか、外部からのVCCを供給をするのかが、
   データシートだけだと不明で解りずらい。
   ただ、アプリケーション例では、VREFピンはopenになっている。
   良く判らなくなってきた。
   データシートの回路例も、京谷さんの本の回路も、VREFピン:25pinは、openになっている。
   今、テスターだと、VCC= 14.92V固定
   VCOMH= P_ON時、12V以上出ると(たいがいは、10V位maxで表示は全く出ない。)
   何やら表示が出始めるが、輝度は低い。
   しかしその後、徐々に、0Vに向かって低下していく。
   もしかしたら、リセット〜 VCC_ONシーケンスがNG?
   自作オシロで、RESET 対 VCC_ON,  VDD 対 RESETのタイミングを見たが、意図通りで問題なさそう。

  ・他に試した事→ これでも駄目だった。
   @ VREF:25pin openを、VCCに接続(クリップにて)
   A ちょっと荒療治かもしれないが、VCOMHを内部印加でなく、VCCにクリップで接続。
      手抜きでソフトは内部のままだが・・


■ 2017.11.23
  ・たぶん未だ、OLEDモジュールは生きていると思う。(未だ諦めきれないのだ・・)
   FPCに埋め込まれている、細長いコントローラICを手で触っても、殆ど発熱していない。
   冶具ケーブルの配線チェックをしてみた。
   冶具ケーブル供給元⇔OLEDユニット接栓にてテスターのΩ径で確認したが、問題無さそう。
   導通チェックはOK(末端のパッドまで付いているかは確認が難しいが・・)のようだが、
   半田付けの怪しい箇所を再ハンダしてみた。
   何とこれで初めてパネルが光ったが、モザイク模様のみ。
   この時の、VCC= 14.88V, VCOMH= 12.45V
   しかしこの後、また駄目になった。

  ・モザイク状の表示が出ている時の、VCOMH= 12.45Vだが、これは、0xBEコマンドのSET値:0x3Fで決まる。
   調べると、比率的に、VCCの、0.83倍相当なので、だいたい合っている。コマンドセットはOKか?


■ 2017.11.24
  ・やはり真面に動いてないようだ。
   下の写真は、さらに症状を細かく調べた時のもの。

  ・自作のオシロで、OLED制御信号のレベル等を確認してみた。
   ただ、Fcy=16Mでは、追従しないので、Fcy=4Mまで下げて確認。これでもWR/幅は狭く、オシロ表示は下がり切ってない
   がこれは良しとする。他も問題ないようである。


■ 2017.11.25〜 2017.11.26
  ・こうなったら、自作ロジアナで、データバスも一緒に確認してみようと思った。
   高速ロジアナではないので、さらにFcyを落として観測。
   PIC24Fには、内蔵の
Fosc = LPRC (低電力発振器=31kHz)があるので、Fcy= 31kHz/2= 15.5kまで下げて観測。
   下の写真のように大方タイミングは、問題なさそうである。


  ・これとは関係ないが、一つだけ判明したこと有り。
   今迄、P_ON時、VCOMHが出たり、出なかったりしていたのは、OLEDモジュール21pin:VDDのパッドが
   途中で切れかけていたのが原因だった。
   あまりにも再半田付けでパターンを酷使しているので当然と言えば、当然だが・・
   相変わらずこの辺は不安定である。


■ 2017.11.27
  ・ここまでやって駄目なので、いじり過ぎでパッドを痛めていることは確かだし、制御ICを破損した可能性もあるので、
   今度は本当に1号機でやるのを諦め、もう一つ購入しておいたOLED+ポリウレタン銅線で、OLEDモジュール冶具2号機
   を作って、再テストすることに決めた。

  ・0.29mmポリウレタン銅線にて、OLEDモジュール冶具2号機の製作に入る。
   片面ユニバーサルのランドがある面を表にして、OLEDモジュールを実装。
   なので、OLEDの裏面とは絶縁したいので、耐熱性のメンディングテープを貼った。
   ポリウレタン線での配線は初。
   ちょっと最初、被覆の剥き方に要領を得ず上手く行かなかったが、カッターで少し表面を削ってから、ハンダゴテの
   先の半田の塊の中に、線先を包むようにして熱して剥いたら上手く行く。
   ポリウレタン線は、被覆を含めても、径が、0.29mmと細く、0.7mmピッチのパッドでも十分クリアランスが取れるが
   近接ピンの半田ブリッジには気を使った。
   何とか作業は済んだ。

  ・モジュールの電源ショートチェックを行ってから、いざ通電チェックへ。
   とりあえず、初期メッセージのところで止めてみた。



   
良かった!! 文字色とロケートがおかしいが、メッセージは出た。
   文字色の指定は、CYANなのだが、YELLOWぽくなっている。
   また、!!のところまで一行目に表示されるはずだが?
   この時の、VCOMH= 12.40V, VCC= 14.92V

  ・とりあえず、今のプログラムで出来ている所まで、RUNさせてみた。
   文字列表示テスト+ASCIIテーブルの最初の96文字分表示テストの、2つだが、以下に結果を示す。

  ・初期メッセージで、一行当たりの文字数が合わないのは、後で調査するとして、
   ASCII文字描画では、表示文字数はバッチリ合っている。
   両者共に、文字色がおかしい?
   例えば、WHITE, BLACK, GREENは、OKだが、REDがNGで、BULUE、YELLOWがNGで、MAZENTAになる。
   また文字列描画で背景色のエリアが変?

  ・初期メッセージで、一行当たりの文字数が、12文字で改行しないで、10文字で改行していたのは、
   OLED_Str関数で使っている、XChar(X方向の文字数+1)の定義のミスでこれを修正してOKになる。
   修正後の、ヘッダーファイルのその部分を以下に示した。

// サイズ指定
#define ENDCOL 96 // X(colum)方向
#define ENDROW 64 // Y(raw)方向

#define XChar (short)((ENDCOL)/7) // =13→ X方向の文字数+1
#define YLine (short)((ENDROW)/7) // =9→ Y方向の文字数+1


■ 2017.11.28
  ・
文字色(カラー指定)問題から調査する。
   QVGAの時のコントローラ:ILI9325では、16bitカラーコードをそのまま指定出来ていたが、このOLEDの
   SSD1332では、16bitカラーコードから、RGB565フォーマットの、色成分を取得して、SSD1332のコマンド・セット
   の仕様に基すき、3要素共に、6bitでコントローラに書込む必要があった。
   この辺のからくりを良く理解してなかったのが大元の原因である。
   修正後の、ライブラリファイルのその部分を以下に示した。

/// 16bitカラーコード(RGB565)から色成分を取得
cc= (unsigned char)((color & 0x001F) << 1); // Color C (blue)→ コードをblueマスク=0x001F演算で、0b000BBBBBとし、
                             // さらにこのコマンドのデータセットフォーマットに従い、1bit左シフトで、0b00BBBBB0とする。
cb= (unsigned char)((color & 0x07E0) >> 5); // Color B (green)→ コードをgreenマスク=0x07E0演算し5bit右シフトで、0b00GGGGGGになる。
ca= (unsigned char)(((color & 0xF800) >> 11) << 1); // Color A (red)→ コードをredマスク=0xF800演算で、0b000RRRRRとし、
                                  // さらにこのコマンドのデータセットフォーマットに従い、1bit左シフトで、0b00RRRRR0とする。 
/// RGBデータ書込み  
OLEDCmdOne(cc); // Color C of the Line
OLEDCmdOne(cb); // Color B of the Line
OLEDCmdOne(ca); // Color A of the Line

  ・これで文字色問題は解決した。


■ 2017.11.29
  ・背景色問題の調査に入る。
   文字列描画関数では、背景色の指定が出来るが、ざっと見ると、5*8dotのフォント部分は文字以外は背景色で
   塗りつぶされるが、文字間の数ビット幅分のエリアが上の数ビット部分しか背景色で描画されてないようである。
   この部分のプログラムがどう動いているか、EXCELシートにフォントを書いて考察してみた。

   上図は、'1'を、(0,0)に表示させた時の様子を示す。
   X方向は、columアドレス、Y方向は、rowアドレスを示す。
   
5*8dotのフォント部分で、文字を構成しているドット以外のドットは背景色で打たれOK。
   しかし、文字間エリア:3*8dot部分は記述ミスで、塗りつぶされず、エリア外の上3ドット分しか打たれてない。
   
修正後の、ライブラリファイルのその部分を以下に示した。

/*****************************************
* ANK文字表示関数 8x8ドット
* 96/8=12文字/行 64/8=8行
* (0, 0) - (11, 7)の範囲
******************************************/
void OLED_Char(char colum, char line, unsigned char letter, unsigned short color1, unsigned short color2){
unsigned char j, i, Mask;

if((colum < 12) && (line < 8)){ // 範囲チェック
  for(j=0; j<5; j++){ // 横5ドット
   Mask = 0x80; // 上位ビットから表示
   for(i=0; i<8; i++){ // 縦1ライン分表示
     if((chrom[letter-0x20][j] & Mask) != 0)
       OLED_Pixel(colum*8+j+3, (line+1)*8-i, color1);
     else
       OLED_Pixel( colum*8+j+3, (line+1)*8-i, color2); //背景色
     Mask = Mask >> 1;
   }
  }
/*
  for(j=5; j<8; j++){
    OLED_Pixel(colum*8+j+3, (line+1)*8-i, color2); //背景色
  }
*/
  /// フォントは、5bot幅、残りの、3dot*8dotスペースを背景色で塗りつぶす。 171129
  for(j=5; j<8; j++){
    for(i=0; i<8; i++){
      OLED_Pixel(colum*8+j+3, (line+1)*8-i, color2); //背景色
    }
  } 
}
  
  ・この修正で背景色問題も解決した。

  ・やっとグラフィック描画に移れる。
   SSD1332には、アクセレータコマンドとして、直線描画と、四角形描画コマンドが用意されている。
   まずは、この直線描画コマンドを使って、斜め線を描いてみた。
   REDで、右肩上がりライン描画の後、BLUEで右肩下がり描画をさせクロスさせてみた。

   何故か上写真の通リ、右肩上がりはOKだが、右肩下がりはバラケてNG。
   WEB検索してみたら、これと同じ経験をされている方がいることを知る。
   「RECNY」さんのプログだが、まったく同じ症状である。
   この方、この件を、「放課後の電子工作 掲示板」に投稿されているようだが、結局良い回答は得られなかったようだ。
   この記事には続編があって、そこで自己解決したとあったので、それを私もやってみることに。
   詳しい説明は、その記事に譲るとして、私が試行してみた結果を以下にまとめてみました。

  ・やはりコントローラのバグなのかもしれない??
   この結果から自分なりの結論と対策を立てた。
    @ アクセレータによる直線描画コマンド:0x21は、ドット描画の為にだけ使う。
      (0x21を使わなくても、colum, lineアドレスセットコマンド:0x15/0x75でアドレス設定した後に、16bit→8bit(実質6bit)に
       分解した色データをチップに書込めば、dot描画するようだが、0x21コマンドを使えば、1回のコマンド発行で済むので
       特に変えない。)
    A Line描画関数は、今迄通り傾斜を判断して、ドット描画で描く方法に変更する。


■ 2017.11.30
  ・自分の考えでは、SSD1332のアクセレータコマンドの、Line描画コマンドには、右肩上がり線描画時のバグが
   あるという結論に至った。
   WEB検索で、Re Map設定(原点位置)を途中で変えることによって回避している例を見たが、昨日の記事のように
   単独では両者ともOKだが、クロス線でやると、設定を変えた時の影響が前に描画したラインに出てきてしまいNGになる。
   そもそも途中で設定を変えることはしたくないので、この件はあきらめ、ドット描画によるLine描画関数を書くことにした。
   これでOKになる。描画スピードもさほど気にならない。

  ・四角形コマンドにもバグらしきものがあるとの情報。
   ただ常に、左上原点で描けば問題ないらしい。
   自分としてはこれも今迄通りの、
Line描画関数を使って描くことにした。
   
四角形コマンドは、Fill Boxの時にだけ使用することにした。
   四角形描画テストとついでに円描画関数(これも何時ものやつ使用)を追加し円描画テストもOKになる。


■ 2017.12.1
  ・最後に、96*64dot BMPイメージの表示テストを行う。
   これは前の実験テーマ81の私の記事が参考になる。
  <手順>
   @ まず、テスト用BMP(RGB565フォーマットで、96*64dotサイズ)を用意する。
      画像加工のフリーソフト:GIMP2 を使う。
      WEB上にあるBMPファイルは、24bitカラーのものが多いのでこれを、16bitに減色し、RGB565フォーマット
      でセーブ。また同じ位の縦横比の画像を、96*64dotに、リサイズする。
   A BMPのバイナリーデータを、C言語で扱える形式(0x・・・)に変換してテーブルを定義
      これには、「レフトアームテクノロジー」さんのフリーウエア:Binary File Extractor を使用。

  ・展開したら、bmpテーブルサイズは、≒16kバイトになった。
   PIC24Fのプログラム(フラッシュ)領域へこれを配置する。(PIC24FJ64GA002のプログラム領域=64kバイトなので余裕)
   2つテーブルを用意し、BMP表示テストを行った。→ これもOKである。


■ 2017.12.2
  ・ASCII文字テーブル全192文字表示に拡大。
   これを最後にする。これも上手く行く。
   今迄、保護シートを付けたままOLED表示画面を撮影していましたが、ここで一区切りついたので
   保護シートを剥がして、各テスト画面を撮影し、このページ冒頭にアップしました。


※ ここから、追試:「BME280搭載の温湿度・気圧計にする」の記事です。

■ 2020.11.13
  ・バラックでの実験後、ずいぶんと時間が経ってしまいましたが、実験とは言え、結構スマートな感じで
   製作出来たので、これに温湿度・気圧センサーモジュール:BME280を搭載して、
温湿度・気圧計にしようと
   思い立ちました。
   BME280の工作としては、実験テーマ105でも既にやっているので、ソフトは、それが参考になります。
   7SEG表示にしてましたが、今回は、ちょっと文字が小さくなりますが、普通に、7x5フォントにしました。

  ・電源ユニット基板と、OLE基板は、実験で使った物を、そのまま使いました。
   電源ユニット基板の上に、新たに、
BME680搭載のPIC24F制御基板を作って、スタック接続することにしました。
   部品実装前の、各基板の配置関係は、以下のような感じになりました。

  ・部品を実装しました。

  ・まずは、実験時使用の、表示テスト・プログラムの、「PIC24F_COLOR_OLED_TEST.hex」を書込んだ。

   問題無く動いた。



   稼働時の電源コンディションは以下。
   +5V→ +5.22V
   +3.3V→ +3.29V
   +15V→ +14.85V
   消費電流→ 約40mA(Fcy= 16MHz・ベタ描画時)


■ 2020.11.14
  ・次に、BME
280を動かすプロジェクト:「PIC24F_BME280_TEST_3」を開始。
   電池駆動を考えているので、Fcy=16MHzから、4MHzにダウンした。
   ソースの方は、以前作成の物(OLEDを使ったもの・QVGAを使ったもの)があるので、ストレス無く直ぐに書けた。
   動作の方も問題無し。
   消費電流は、10mAほど下がって、約30mAといったところ。


<回路図>
 ・こちらから、どうぞ→ 「PIC24F_カラーOLED実験」
                「カラーOLED温湿度・気圧計」 ※ 追加更新:201118

<最終ソース及びヘッダファイル>
 ・こちらから、どうぞ→ PIC24F_COLOR_OLED_TEST.c

                    /// カラーOLEDライブラリ
                    SSD1332_OLEDlibPIC24F.c
                    SSD1332_OLEDlibPIC24F.h

                    /// アスキーフォント
                    ASCII_font.h

                    /// BMPイメージデータ
                    imagedata.h        // パチンコメーカーSANKYOのイメージキャラクタ
                    imagedata_2.h   // サンタクロース

//================================================================================

PIC24F_BME280_TEST_3(カラーOLED温湿度・気圧計プロジェクト):追加 201118>

 ・メインソース: PIC24F_BME280_TEST_3.c
 ・NYK-064SC012F カラーOLEDモジュール駆動用ライブラリソース及びヘッダファイル: 
   SSD1332_OLEDlibPIC24F.c→ 上記のカラーOLEDライブラリ名と同じですが、イメージ表示はしないので、
                    イメージファイルのインクルードと、イメージ表示関数はコメントアウトしました。
//#include "imagedata.h"
//#include "imagedata_2.h"

/*
// 未使用:201114
//////////////////////////////////////////////////////////
// 16bitBMPカラーイメージ表示関数
// 96x64dot対応
/////////////////////////////////////////////////////////
void OLED_Image(void)
{
short Xpos, Ypos;
int ptr;

/// BMPフォーマットのデータは、左下から右上に向かって配列されているので
/// この順で描画すると、上下逆様の画像表示になってしまう。
/// 右上の画素(ptr=(12426/2)-1)=6212, Xpos= 95, Ypos= 0)から下に向かって描画する必要がある。
ptr= 6212;
 for(Ypos=0; Ypos < ENDROW; Ypos++){
  for(Xpos=ENDCOL-1; Xpos > -1; Xpos--){
   OLED_Pixel(Xpos, Ypos, ImageData[ptr--]);
  }
 }
}
*/

    SSD1332_OLEDlibPIC24F.h→ 上記のカラーOLEDライブラリ名と同じですが、クロック設定のみ変更しました。
// #define CLOCK 16
#define CLOCK 4 // 201114


 ・PIC24F用I2Cライブラリソース及びヘッダファイル:
    skI2C_PIC24F_lib.c
    skI2C_PIC24F_lib.h

 ・アスキーフォント: 上記のアスキーフォント:ASCII_font.hと同じです。 


← 実験テーマ1に戻る   TOP PAGEに戻る   実験テーマ100へ →