なんでも作っちゃう、かも。

Arduino/Make/フィジカルコンピューティング/電子工作あたりで活動しています。スタバの空きカップを使ったスタバカップアンプなど製作。最近はもっぱらArduinoと3Dプリンタの自作に興味があります。

Arduinoで遊ぼう - キャラクタLCDにビッグなフォントを表示する

Posted by arms22 on 2011年07月06日 9  0

2016/8/3
BigFontライブラリ更新。Arduino 1.6.xに対応しました。

2011/12/18
BigFontライブラリ更新。Arduino 1.0に対応しました。


ビッグフォントLCD
(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の普通サイズの文字を読むと小さく読み辛い。しかし、このライブラリを使えば文字が大きく表示され、離れた場所からでも読める。車やバイクの速度計、距離センサ、あるいはガイガーカウンタなどの表示にベストなライブラリだ。

ビッグフォント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サンプル回路図

キャラクタ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


LCDシールドキット(緑)
LCDシールドキット(緑)
posted with amazlet at 16.08.03
スイッチサイエンス
売り上げランキング: 178,490


【永久保証付き】Arduino Uno
スイッチサイエンス
売り上げランキング: 1,993



スポンサーサイト
該当の記事は見つかりませんでした。
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。