SN3E0066.jpg
しばらく前に秋月電子で20文字×4行のキャラクタ表示液晶(SC2004CSLB。SUNLIKE社 SC2004C)を買った。
当時、PICで制御してみたいなーともくろんでいてたんだけど、あっさり投げ出していたのだった。

arduinoの場合、(リファレンスいわくHitachi HD44780とその互換チップセットをベースにした)LCDを制御するライブラリが標準装備なので、print感覚で文字表示できる、はず。。。

とりあえず、同梱の説明書にある、「バックライトの電源を液晶側を共有」するようにちまちまとハンダづけする。J2にハンダを盛ってショートさせ、R8に添付されてた抵抗100Ω×3を並列に接続。

同梱されてたピンヘッダを何も考えずにモジュール背面にとりつけたのだけど、ネットで見かけた作例だとピンソケットを全面にとりつけている人もいた。そしたらジャンプワイヤで簡単に接続出来てお試ししやすいのか。そういう考え方もあるんだなー。

すでに取りつけてしまったものはCTRL+Zでとりはずすこともできず。さりとて電子工作初学者の自分は、ハンダを吸い取るのもおっくうで、このまま進むことにするのだった。

ユニバーサル基板にソケットとコントラスト調整用の半固定抵抗をのっけた。
説明書によれば、pin3 コントラスト調整用電源は、「=Vssで最も濃くなる」とあったので、何も考えずにGNDに繋いだら、何も表示していない部分や表示した文字の上下に不必要なドットが現れてしまった。
手元に500Ωの半固定抵抗があったので、えいやっと繋いだけど、180度中、コントラスト調整として意味があるのは30度ぐらいだけになってしまった。残りの150度ぐらいは何も映らない。。。

スケッチはただのコピペ。
使ってる液晶が20桁4行なので、初期化パラメータだけちょびっと変更。

#include <LiquidCrystal.h>

LiquidCrystal lcd(12, 11, 10, 5, 4, 3, 2);

void setup()
{
lcd.begin(20, 4);
lcd.clear();
lcd.cursor();
lcd.blink();
lcd.setCursor(0, 0);
lcd.print("ohayo");
lcd.setCursor(2, 1);
lcd.print("oyasumi");
lcd.setCursor(4, 2);
lcd.print("ore dayo ore ore");
lcd.setCursor(6, 3);
lcd.print("moshi moshi");
}

void loop()
{
}


もはや制御らしい制御がコードに現れてこないのがすごい。
リファレンスによれば、blink()の結果はディスプレイ次第だそう。この液晶モジュールではカーソル位置に、下線→黒塗りつぶし四角のアニメーションが表示された。

環境:
  Windows 7 Ultimate x64
    Arduino 0018 (IDE)
  Arduino Duemilanove 328