Arduinoで遊ぼう - キャラクタLCDにビッグなフォントを表示する
Posted by arms22 on 2011年07月06日

2016/8/3
BigFontライブラリ更新。Arduino 1.6.xに対応しました。
2011/12/18
BigFontライブラリ更新。Arduino 1.0に対応しました。
(16x2行超小型キャラクタLCDに表示している様子)
ArduinoブログでキャラクタLCDにビッグなフォントを表示する Phi_Big_Font ライブラリが紹介されていたので試してみたよ。
Big Fonts On LCD Library Turns To Second Version
http://arduino.cc/blog/2011/05/27/big-fonts-on-lcd-library-turns-to-second-version/
Phi_Big_Font ライブラリ
http://liudr.wordpress.com/libraries/phi_big_font/
Phi_Big_Font ライブラリはキャラクタLCDに、通常の6倍もの大きさの文字を表示するArduino用のソフトウェアライブラリだ。このライブラリは1つの文字を表示する為に縦に2行、横に3文字を使う(文字と文字の間に1文字の空白が入る)。16文字×2行のキャラクタLCDなら1行に4文字、20文字×4行なら2行に5文字の文字を表示することができる。表示できる文字の種類は0~9、a~zとA~Zの英数字で、記号類は表示できない。
少し離れたところからキャラクタLCDの普通サイズの文字を読むと小さく読み辛い。しかし、このライブラリを使えば文字が大きく表示され、離れた場所からでも読める。車やバイクの速度計、距離センサ、あるいはガイガーカウンタなどの表示にベストなライブラリだ。
(20x4行キャラクタLCDに表示している様子)
一般的なキャラクタLCDはCGRAM(Character Generator RAM)と呼ばれる8文字分の文字パターンを書き込めるRAM領域が用意されている。Phi_Big_Font ライブラリはこのCGRAMに独自の文字パターンを書き込み、それらを組み合わせて大きな文字を表示している。
BigFontライブラリ
Phi_Big_FontライブラリのAPIは昔ながらのCスタイルなので基本機能はそのままに、Arduinoスタイルのライブラリに仕上げてみた。
BigFontライブラリ
http://github.com/arms22/BigFont/releases/tag/v1.0.0
ライブラリのインストールは上記URLからZIPファイルをダウンロードして、Arduino IDEのメニューからスケッチ→ライブラリをインクルード→.ZIP形式のライブラリをインストールでダウンロードしたZIPファイルを選んでください。
主な関数
- attach(lcd)
BigFontライブラリにキャラクタLCDをアタッチします。 - clear()
画面をクリアし、カーソルをホームに移動します。 - home()
カーソルをホームに移動させます。 - setInvert(invert)
文字を反転させます。 - setCursor(col,row)
指定した位置にカーソルを移動させます。 - print()
ビッグなフォントで文字を表示します。
回路図

キャラクタLCD vs Arduino
VSS <-- GND
VDD <-- 5V
VO <-- 半固定抵抗の中点をつなぐ(両端は5VとGND)
RS <-- 7
R/W <-- GND
E <-- 6
D4 <-- 5
D5 <-- 4
D6 <-- 3
D7 <-- 2
K (バックライトLEDのカソード) <-- GND
A (バックライトLEDのアノード) <-- 100Ωの抵抗を直列に入れて5Vをつなぐ
サンプルスケッチ
#include <LiquidCrystal.h>
#include <BigFont.h>
// キャラクタLCDクラス(RS=>7, E=>6, D4=>5, D5=>4, D4=>3, D3=>2)
LiquidCrystal lcd(7, 6, 5, 4, 3, 2);
// ビッグフォントクラス
BigFont bigf;
void setup() {
// キャラクタLCDを初期化
lcd.begin(16, 2);
// 通常フォントで表示
lcd.print("Hello, World!");
// キャラクタLCDをビッグフォントクラスにアタッチ
bigf.attach(&lcd);
// 3秒待つ
delay(3000);
}
void loop() {
// カーソルをホームポジションに移動
bigf.home();
// ビッグフォントでランダム値を表示
bigf.print(random() % 10000);
// 200ミリ秒待つ
delay(200);
}
Arduinoで遊ぼう - キャラクタLCDモジュール
http://arms22.blog91.fc2.com/blog-entry-203.html
武蔵野電波のプロトタイパーズ - 第16回「液晶ゲームを作ってみよう」
http://pc.watch.impress.co.jp/docs/column/musashino_proto/20091001_318437.html
Ads by Google
9 Comments
■■ ■■
■■ ■■
■■ ■■ ■■
■■ ■■ ■■
■■
■■ ■■
こんな感じです。
■■ ■■
■■ ■■
■■ ■■
■■ ■■
■■ ■■
■■ ■■
こう見える方が、Kに見える気がしますね。
元のライブラリがおかしいかもしれませんね。
Hのパターンと似てますし、区別が難しいのかも。
とても面白いものを紹介して頂きありがとうございました。
早速PropellerのPropForthに移植させていただきました。
フォントを少し変えて表示キャラクタも増やしました。ちょっと無理そうな文字もありますが。
PropForthのバグのせいか僕のコードがよくないのかどちらかのせいでアスキーコード5Fからおかしな表示になってしまってます。
僕のコードのバグでおかしな表示になっていました。
BigFontはキャラクタLCDでなにか注意をさせる時の表示にも使えますね。
わりと文字も見やすいですし。
IDEをバージョンアップしたら、ビックフォントが使えなくなりました。
とても気に入っていただけに残念です。
最新バージョンでも使える方法がありましたら教えてください。
https://github.com/arms22/BigFont/releases/tag/v1.0.0
↑ こちらのURLからダウンロードできなかったため次のURLからダウンロードしました。
https://github.com/arms22/BigFont/releases/