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

aitendoの小型グラフィック液晶を動かす

 またaitendoの2015福袋(LCD)の動作確認記事です。今回はFSTN液晶モジュール(128x64/SPI) [F12864G25412P1701] を動かしてみました。 

 この液晶はu8glibというライブラリを使って動かします。幸いArduinoでそのまま使えるライブラリも用意されていて、いろんなサンプルプログラム(exanple)もその中に入ってます。

 とはいってもaitendoの商品なのでそうそう簡単に動いてはくれません。以下動かす時の注意点などをまとめておきます。

▼うまくいくとこんな表示が出来ます
U8gのロゴ
 かなり小さな画面ですが、グラフィック液晶なのでいろんなことに使えるはずです。
 ちなみにaitendoのWebに同じ画面の写真が出ていますが、表示の上下が逆で、画像が2ドットくらい左にずれています。また画面右端にはおそらく画像メモリー初期化前のゴミみたいなものが表示されています。たぶん違うドライバで動かした状態の写真だと思います。

▼回路図
FSTN液晶ドライブ回路
 左はArduino、右は液晶モジュールで、SPIインターフェイスになっています。

 ちなみにaitendoのWebでは直結するように書かれています。3.3Vで動くArduinoならそれでもOKですが、UNOなど5Vで動く基板に繋ぐ場合はこの回路図のようにレベル変換してやらないといけません。ひょっとしたら、5Vトレラントな液晶モジュールなのかも知れませんが、資料で確認できなかったのでこうしておきました。

▼ブレッドボード
FSTN液晶をブレッドボードで動かす

▼u8gロゴ表示のスケッチ
/*
aitendoのFSTN液晶モジュールの動作確認
 (128x64/SPI) [F12864G25412P1701] 
 2015/1/25 ラジオペンチ http://radiopench.blog96.fc2.com/
 このプログラムはu8glibのexampleをカストマイズしたものです。
 https://code.google.com/p/u8glib/
 */

#include "U8glib.h"

U8GLIB_MINI12864 u8g(13, 11, 10, 9);        // UC1701用のライブラリを使用

void drawLogo(uint8_t d){
  u8g.setFont(u8g_font_gdr25r);
  u8g.drawStr(0+d, 30+d, "U");             // U
  u8g.setFont(u8g_font_gdr30n);
  u8g.drawStr90(23+d,10+d,"8");            // 8
  u8g.setFont(u8g_font_gdr25r);
  u8g.drawStr(53+d,30+d,"g");              // g
  u8g.drawHLine(2+d, 35+d, 47);            // 横線
  u8g.drawVLine(45+d, 32+d, 12);           // 縦線
}

void drawURL(void){
  u8g.setFont(u8g_font_4x6);
  u8g.drawStr(1,54,"code.google.com/p/u8glib");
}

void setup(void) {
  u8g.setContrast(180);                  // 液晶のコントラスト設定
}

void loop(void) {
  u8g.firstPage();  
  do {
    drawLogo(0);
    drawURL();
    u8g.setColorIndex(1);
  } 
  while( u8g.nextPage() );
  delay(1000);  
}
 これはu8blibのexampleに入っていたプログラムをこの液晶用にカストマイズしたものです。以下にポイントを書いておきます。

◆ライブラリの指定方法
 オリジナルのプログラムには必要なライブラリを選んでその行のコメントアウトを消すように書かれています。でもこの液晶のコントローラチップのUC1701用の定義はオリジナルのプログラムには含まれていません。u8glibのdevicesの表から必要な定義を探す必要があります。
対応デバイスリスト
 UC1701にはMINI12864という定義を使うようです。

◆コントラスト調整
 aitendoのWebでは u8g.setContrast(0)に設定と書いてありますが、u8g.setContrast(180)くらいがいいです。ドライバのプログラムが違うのでこのあたりは変わってくるのでしょう。

 ということで何とか動かすことができました。exampleにはいろんなデモが入っていますがそのうちの一つを動画で紹介します。

▼グラフィックデモ画面

 電源ONからデモを繰り返す動画です。バックライト点灯直後にちらっと見えるランダムな模様は、初期化前のRAMの内容が表示されているのだと思います。

 これでaitendoの2015福袋(LCD)の中で、楽に動かせて面白そうなそうなものはとりあえずおしまいです。2015円という値段でかなり遊ばせてもらいました。aitendoの商品は簡単には動かない物が多いですが、それを何とかして動くようにする過程はいろいろ勉強になります。

 1月29日追記:u8glibの定義方法についての追加説明の記事を書きました。
カレンダー
12 | 2015/01 | 02
- - - - 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コード