「PIC AVR 工作室」サイトの日記的なブログです。
サイトに挙げなかった他愛ないことを日記的に書き残してます。
PIC AVR 工作室 ブログ



I2Cを繋いで表示するのは大変そうなので、
手っ取り早く定数配列で漢字のビットマップを
与えて表示してみようと言う作戦を取ってみました。

この間、C言語用のビットマップ定義を出力する
HSPのスクリプトを組んだものがあったんですが、
横8ドットを一まとめにするものとして作っていた
ので、スクリプトをちょっと手直しし、縦8ドット
を一まとめとして作り直しました。
(このHSPのスクリプトは後でサイトに貼って
 おきます)
http://picavr.uunyan.com/warehouse_8dotfont.html

で、出来上がったビットマップデータを一部分だけ
切り出して、あとはarduinoのライブラリ用の形式
に整えて、スケッチの中に直接埋め込んでみます。

こんな感じ。(不等号は全角にしてあります)

#include <ks0108.h> // library header
#include <Arial14.h> // font definition for 14 point Arial font.
#include "SystemFont5x7.h" // system font

static uint8_t kanji_sample[] PROGMEM = {
8, // width
64, // height

0x5D,0x55,0x7F,0x55,0x7F,0x55,0x5D,0x00,
0x1E,0x12,0x5D,0x7F,0x55,0x7F,0x5D,0x00,
0x44,0x5C,0x37,0x2C,0x5A,0x7F,0x5A,0x00,
0x7F,0x25,0x1B,0x1D,0x15,0x5D,0x7F,0x00,
0x22,0x2E,0x7A,0x4B,0x1A,0x2E,0x52,0x00,
0x4D,0x57,0x2D,0x57,0x3D,0x57,0x4D,0x00,
0x52,0x7F,0x0A,0x56,0x5D,0x34,0x56,0x00,
0x44,0x5C,0x37,0x2C,0x76,0x55,0x76,0x00
};

void setup(){
GLCD.Init(NON_INVERTED); // initialise the library, non inverted turns on written pixels
GLCD.ClearScreen();

GLCD.DrawBitmap(kanji_sample, 32,0, BLACK); //draw the bitmap at the given x,y position
}

void loop(){ // run over and over again
}


8文字分のフォントデータ64バイト分を定数定義に
押し込んであります。最初の8バイトが「亜」、
次が「唖」、その次が「蛙」という字のビットマップ
です。それぞれ8バイトずつで8文字なので64バイト。

それに加えて、arduinoのG-LCDライブラリで
ビットマップを表示するには配列の要素をuint8_t型
で定義し、最初の2バイトに横ドット数、縦ドット数
を指定する必要があるようです。
8と64がそれに相当。


ビットマップ部分の並びですが、文章では説明が
大変なのでこんな図を作ってみました。


この図の矢印のようにバイトデータが並んで
いるわけです。最初の8バイトが「亜」で、左側から
右側に向かって8バイト並んでいるイメージ。
要は、SG12864の内部を意識したデータ構造って
ことですね。

で表示してみるとこんな感じ。


うん。ひとまず満足、満足。


さて、定数部の定義をちょこっとだけ変えてみます。
ビットマップデータに手を加えず、縦と横のドット数
をこんな風に弄ってみます。

static uint8_t kanji_sample[] PROGMEM = {
64, // width
8, // height

横64ドット分(8文字)、縦8ドット分(1行)という
意味です。横1行に表示しようという作戦です。

…やっぱり上手く表示されます。こんな風に扱いが
簡単に済んでしまうのが、8×8ドット(というか
7×7ドット)に押し込めてある「美咲フォント」
の良いところですね。
(なぜ上手く行くのかは、先ほどの図とにらめっこ
 してみてください)


コンテキストを含めないと読解が難しい文字では
ありますが、8×8ドットというフォーマットは
やはり使い勝手が良いみたいです。


とりあえずプログラムからG-LCDに送り込む
ところまで持って来れたので、あとはJIS1、
JIS2をフルスペックで表示できるところまで
進めたいところ。



コメント ( 0 )




この間の、美咲フォントをマイコンで使っちゃおうと
いう作戦の続き。

ビットマップを簡単に表示するといえばやっぱり
G-LCDモジュール。
秋月で今なら1700円ですが、2100円だった頃に買った
まま放置してたハヤニエを引っ張り出して使います。
http://akizukidenshi.com/catalog/g/gP-02159/

買ったまま一度も使ったこと無かったので、まずは
G-LCDにモノを表示させるところから実験。

マイコンは手っ取り早くarduinoを使います。公式サイト
では Contributed Libraries としてライブラリが
公開されてて便利なので。
http://www.arduino.cc/playground/Code/GLCDks0108

面倒なのは配線。20ピン全部使うのと、あと
コントラストやバックライト周りの配線がちょっと
クセがあるようで…
特にコントラストはG-LCDから出力した電圧と
GNDの間を可変抵抗で分圧して、再度G-LCD
に接続する、みたいな変な接続が必要。要注意。

arduinoには例によってreduino-nanoを使用。やっぱ
ブレッドボードでお手軽が便利なのだ。

表示に使うスケッチも、公式サイトにサンプルスケッチ
が公開されているので、まずはこれをそのまま使用
します。
で、早速コンパイル…OK。
ライブラリだけじゃなくて、サンプルスケッチも
公開されている便利さがarduinoだよなぁ。いいなぁ。

配線にはちょっとクセが。公式サイトに配線関係の
ピンコネ表が載ってるんだけど、G-LCDの配線
って大きくは2種類あるみたい。
Pinout AとPinout Bという大きくは2種類で呼んで
いるみたいなんだけど、秋月謹製のデータシートと
見比べてみると、秋月で売ってるSG12864はPinout B
のようです。

一番気をつけるのは1番ピンと2番ピンの電源端子。
1番がGNDで、2番がVcc。それ以外も色々
異なっているんだけど。

とりあえず配線に間違えが無いことを確認してから
スケッチをアップロード。

出た。あっさりと。


写真だとちょっと見づらいけど、普通に表示されました。
ただ、FPSが表示されるっぽい所に「Drawing」
ってしか出ないな。スケッチの中身は全然読んでない
んだけど、公式サイトの写真を撮ったスケッチと
公開されたスケッチが違うのかな?

まぁ、機能確認の意味で繋いでみただけだからどうでも
いいんだけど。


それ以外で気になることが2点。一つはバックライトの
輝度。もう一つはピン配置。

バックライトですが、配線自体は簡単なんだけど、
抵抗値があってないのかな?まず300Ωで光らせて
見たところ、光ってるように見えない…

道具箱からさらに300Ωを引っ張り出してきて
並列にしてみる(150Ω)。一応光っている
ことは光っているみたい。暗いけど。

さらに300オームを並列にして、合計100Ω
で試してみる。やっぱり暗い…

デジカメを高感度(ISO400)にしてみて、
スローで撮ったのがこれ。


一応光っていることは間違えないみたいなんだけど、
なんか間違ってます?
ちなみにバックライトの色は黄緑のようです。


もう一つ。ピン配置。とりあえずarduinoのライブラリ
をそのまま使いましたが、I2C関係のピンを
使っちゃってる…
I2Cには美咲フォントを格納したEEPROMを繋いで
いわゆる「外部漢字ROM」としたいんだけどな。

I2Cと併用したいんだけど、これだとだめだねぇ…。
パッと見、ピン配置を好きなようにアサインしなおす
ことはできないみたい。

便利なライブラリなんだけど、その辺がちょっと
キビシイ…。ライブラリソースを弄ってしまうか、
それともarduino使わずにgccで独自にライブラリを
組みなおすか…

とりあえずの収穫はG-LCDが壊れてなくて、
ピン配置も判明したということだけでしたが…
表示に使えそうなのはいいんだけど、I2Cと
併用するとなるとarduinoだとちょっと厄介。
うーん。



コメント ( 0 )




船田戦闘機さんのサイトで
http://www.nnar.org/archives/1013
シャープのNetWalkerに。

大きさや形状、そしてメーカーがシャープだけに
またザウルスを復活か?と思ってたんだけど、
狙いはもっと違うみたい。

http://plusd.itmedia.co.jp/pcuser/articles/0908/27/news060.html
↑Simさんのサイトからitmediaのページに
飛んでみる。

ARMベースのubuntuポケットサイズネットブック
という新たなカテゴリってことなのかな。Atom登載
ネットブックに充分対抗できそう。

ネットブックとして使うならこれはこれで充分な
スペックだし、見れば見るほど面白そうだな。
409gで10時間バッテリー。シリコンストレージ
で高速起動。

VAIO-typePはポケットサイズとは
いえないサイズだったけど、これはポケットサイズ
といって違和感ないし。

USBもあるからいざとなればUSBキーボード
で入力しやすくも出来そう。ポメラは店頭で触って
みたけど、タッチタイプはあのサイズが限界だと
思った。だから、外部キーボードが付くかつかないか
は結構大事なのかなぁと。

そうそう。キーボード右上についている光学(?)の
ポインティングデバイス。こう言うデバイスをなんとか
自作できないかと思って、以前試しに自分の光学マウス
を上下ひっくり返して、ピックアップ部分を指で
なぞってみたんだけど、そこそこ動くような、
動かないような…。まぁ、それなりに動くみたい。

上下が逆になっちゃうことはなっちゃうんだけど、
某ソフトで上下を反転させれば一応使えることは
判った。
あとはレーザーだと目に入ったら危険っていうのと、
ピント位置(カメラレンズでいうところの被写界深度)
を逆にすごーく浅くして、指が接している時だけ
反応するようにしたら上手く動くと思うんだけどな。


話をNetWalkerにもどして。

あとは各社のIDE環境(MPlabやAVRstudio)など
が動くようになって欲しいなぁっていうのと、
USB-シリアル変換器が繋がるかどうか。
この辺が整備されれば、あまりwindowsに
もはや拘る必要もない気がするな。

(容量的には足りるのかな?そこまでの容量は
 もってないかもね)

いずれにしても、持ち歩く端末としては魅力的
だな。



コメント ( 0 )