fc2ブログ

NOKIA 3300 LCD Arduino (1-2)

1月14日の nokia 3300 LCD 動作テストの備忘録です。
LCD初期化や文字図形出力には PETERさんの nokia 6100 LCD 用ライブラリを加工して使いました。

PETERさんの SparkFun Color LCD Shield library の紹介ページ
 http://peterdavenport.posterous.com/pages/prodjects

上記にリンクもありますが、Arduino Color LCD Shield Library
 http://sourceforge.net/projects/arduinocolorlcd/files/

解凍後、Main Library filesフォルダを Arduino IDE(0018~0023) の libraries フォルダへ(適当にリネーム nokia_3300)。

※LCD_driver.c を Nokia 3300 LCD 用に加工

・LCDInit→DATCTL のパラメーター 2箇所
20120121_01.jpg


・とりあえず上記の変更で色はOK,座標原点は向かって右下。
 一文字出力(LCDPutChar)は使用可能なれど座標が異なるので文字列出力(LCDPutStr)の順番が逆。
・LCDPutStr→LCDPutChar を使用した文字列出力なのでその順番を変更(やや強引?)
 座標初期値の修正やY<0での終了を入れるべき?など、まだ要修正ですね。
・(悪戯で一文字出力後、ディレイを入れました。YouTubeアップの動画撮影時は300)。常用するなら引数をもう一つ増やした方が現実的でしょう。
20120121_02.jpg


以下スケッチ。0018~0023で検証済です。

//*****************************************************************
// Nokia3300 LCD test
//*****************************************************************
//
#include "LCD_driver.h"
//Modify, LDC_driver.h (Written by Mr.Peter Davenport)
//
//*****************************************************************
//
void setup()
{
ioinit(); //Initialize I/O
LCDInit(); //Initialize the LCD
LCDContrast(25); // Sets LCD contrast
LCDClear(WHITE); // Clear LCD to solid white
//
// *************display_1st_message
//
LCDPutStr("Nokia 3300 LCD", 85,113, BLACK, WHITE);
LCDPutStr("with", 65,73, BLACK, WHITE);
LCDPutStr("Arduino", 45,85, BLACK, WHITE);
delay(2000);
//
LCDClear(BLACK);
delay(2000);
//
// *************display_circle
//
LCDDrawCircle (16, 15, 50, WHITE, 1);
LCDDrawCircle (22, 21, 44, WHITE, 1);
LCDSetRect(63, 0, 65, 128, 1, GREEN);
LCDSetRect(0, 64, 128, 65, 1, GREEN);
LCDPutStr(" TEST ", 57,83, BLACK, WHITE);
//
LCDDrawCircle (16, 15, 50, BLACK, 1);
LCDDrawCircle (22, 21, 44, BLACK, 1);
//
for (int hoge=50; hoge >= 5; hoge = hoge-3){
LCDDrawCircle (66-hoge, 65-hoge, hoge, RED, 1);
delay(500);
}
//
delay(1000);
//
// *************display_color_bar
//
LCDSetRect(0, 0, 128, 16, 1, BLUE); //ループを使わずダラダラ書きました。
LCDSetRect(0, 17, 128, 32, 1, RED);
LCDSetRect(0, 33, 128, 48, 1, MAGENTA);
LCDSetRect(0, 49, 128, 64, 1, GREEN);
LCDSetRect(0, 65, 128, 80, 1, CYAN);
LCDSetRect(0, 81, 128, 96, 1, YELLOW);
LCDSetRect(0, 97, 128, 112, 1, WHITE);
LCDSetRect(0, 113, 128, 128, 1, BLACK);
//
delay(5000);
LCDClear(WHITE);
}
//
//*****************************************************************
//
void loop()
{
LCDPutStr("CQ CQ CQ", 110,95, BLACK, WHITE); //Y座標に偶数を使うと文字が崩れる
LCDPutStr("DE CT5002", 93, 85, BLUE, WHITE);
LCDPutStr("CQ CQ CQ", 70, 95, ORANGE, WHITE);
LCDPutStr("DE CT5002", 53, 85, RED, WHITE);
//
LCDPutStr("Tokyo Japan", 34, 101, BLACK, WHITE);
//
LCDPutStr("I'm calling CQ,", 8, 117, BLUE, WHITE);
//
delay(1000);
LCDClear(WHITE);
}
スポンサーサイト



NOKIA 3300 LCD Arduino (1)

aitendo さんの新年セールで価格に釣られて購入した nokia 3300 LCD ですが、
”余計な物買っちゃったな~” と後悔するほど楽しくて、仕事が終ると深夜まで夢中になって弄っております。
Arduino もそうですが、こんなデバイスやユニットを持ち、タイムマシンに乗って30年程昔に行ったなら”自作のスーパースター”になれる事間違いなしですね。

(Arduino が学研の付録から本家モノに変わりました。
学研の方は水晶が乗っているのにRCクロック、本家16MHz が学研 8MHz ということに初めて気付き、やはり本家モノが欲しくなって水曜日の午後にストロベリーリナックスさんのHPから Duemilanove を注文、金曜日に到着しました。)
nokia3300LCD_arduino_00.jpg


Sparkfun の6100用シールドそのままの結線です。
(Sparkfun の回路では Arduino とは抵抗を介して結んでいますが、面倒なのでそのまま繋いでしまいました)
nokia3300LCD_arduino_01.jpg


さて、前回のブログでは Sparkfun の6100用サンプルを使い時計らしき画だけは出せましたが、金曜の夜から文字を出すのに一苦労、あれこれ弄っているうちに土曜の朝を迎えてしまいました。
全く動かない、あるいは一から作り上げて行かなければならないのであれば諦める(逃げる)言い訳も見つかるのですが、そこそこ動いて、でもなんか変?という状態が一番悔しくて、自分的にはハマる危険性大です。

結果、kokia さんのCDでも聞いてゆっくり過ごしたかった週末が nokia の LCD にどっぷり。
(オヤジくさい駄洒落)

20120114_01.jpg


Sparkfun にある6100用のライブラリを使い、S1D15G10 の DATCTL のパラメーターを弄れば鏡文字は直せました。
RGBの並びも2番目のパラメーターを1にすればライブラリの設定通りの色になりますが、、、
x、yともに座標が異なり文字列も”ジャパン”がナパJ?になってしまいます。

右の方は明方に撮った画像ですが、この段階ではまだ座標を理解しきれていません。
CQ CQ CQ を最上段に出し、Tokyo Japan が最下段に出るはずですが、逆です。
(アマチュア無線で”誰かいませんか~”の意味です。)

現在のところ、LCD_driver.c を数行書き換え、引数に気をつければきちんと表示するようになりました。



ライブラリのモディファイが必要ではありましたが、嬉しいくらい安いくせに16×2等のキャラクタLCDよりも格段に高い表現力ですね。恐れ入りました。
ハイレベルな液晶マニアの方々はもっと高解像度で複雑なプロトコルの液晶を見事に駆動されているようですが、私的には nokia 3300 で十分に悩み、楽しませていただきました。

(愛用のVadoHD の接写限界を超えてしまったので拡大ルーペを使って撮影しました。
汚い映像になってしまいましたが、実際の液晶画面はそれなりにクッキリと映っています=輝度低め。今時の携帯画面と比べるとやや寂しいのは否めません。)

昨晩の夜更かしが効いてきました。
スケッチとライブラリの修正箇所は数日中に改めてアップします。

2012年1月8日・秋葉原

新年を迎えました。

昨年はちょうど半ばから親の介護問題に直面し、思い起こせばそれ以来、作り終えていない物が幾つも、、。
まさにブログのサブタイ通り”喰い散らかし”状態です。
年末年始、ぐちゃぐちゃに散らかった工作机を前に反省しつつ、でも今年もマイペースで楽しん行こうと思います。

日曜日、秋葉原に寄ることが出来ました。
暮に引き続き、まずはaitendoさんへ。
BlueBabyという、PCのVGAとLVDSの液晶を結ぶ基板がインバーターとかスイッチ基板とのセットで¥999-。

実は秋からジャンクの一体型PCを弄っているのですが、液晶のインバーターを改造中にそれをぶっ壊してしまい、カッコ悪くなりますがインバーターは別物を使うハメになりました。
さてaitendoさんでインバーター単品だけ買って帰るつもりが、ふと床に並んだ新年セール品にインバーター単品の価格+@でBlueBaby基板まで?。じゃあ、そのセット買いましょう、ということでカゴに。

写真には写っていませんが10色20芯のフラットケーブル両端にブレッドボード用のピンが付いたケーブルがお一人2点まで¥99-、我慢できません。もちろん2本カゴに。

その近くにはノキア3300液晶が¥199-。
コレは学研の付録で遊べるかなと思うとまた我慢できずにカゴに。

ついでに特価ではありませんでしたが超小型?の16×2キャラクタLCDも買ってきました。



帰宅後、袋の中身を広げてしまうとそのまま休むことはできません。
新年早々余計な事に夢中になるなとか、また喰い散らかしかとか、いわゆる理性のブレーキという機能が効きそうになりますが、負けず?に工作机のPCで"nokia 3300"の情報集め。

現物を手に”裏にはデッカイ端子があるので配線も楽だな”と、つい9本のリードを半田付け。
正月明け早々、深夜に始めてしまいました。
しかしsparkfunにあった6100のライブラリを拝借しても四苦八苦。
バックライトの電圧も6100より若干高くしないと光らないような、、、。
結局、たぶん駄文さんのブログ(勝手にリンク)を参考に、ColorLCDShield.hの中のDATCTLのパラメーターを弄ってなんとか画だけは出てくれました。

20120110_02.jpg

プロフィール

Dellbee

Author:Dellbee
デルビィです(少年時代にハマったアマチュア無線局のコールサインを捩りました)。
子供の頃から電子電気・機械物弄りが好きで、今も自分の時間が取れた時は何か弄っています。

検索フォーム

ブロとも申請フォーム

QRコード

QR