idea#2: chromeTouchのバージョンアップ

chromeTouch

以前からメンテナンスしているGoogle Chrome用の拡張機能、chromeTouchのバージョンアップです。
現在のバージョンは2.7ですが、バージョン3の機能は上手のようなものにしたいと思っています。

  1. ページ上にGoogleガジェット置き場を作る
  2. ページ左右にスクロールバーと同じスピードでスクロール可能にするための専用スペースを設ける(画面上は見えないけど)

いずれも想像しづらい内容かもしれませんが、自分が欲しい機能なのでさっさとつくってしまいたいです。

ただ、どちらもオプションをどのように提供するかで迷っています。
特に「2」の方は、「ドラッグの速度」の1オプションとして提示すれば良い気もしますし、左右の専用スペースの幅も設定できたほうが良いかもしれません。
左右の専用スペースを別の用途で使いたいというユーザーがいるかも知れませんし、かといってオプション画面はなるべくシンプルに保ちたい・・・

ソフトウェア名称・・・chromeTouch
工数見積もり・・・5.0人日

idea#1: 画像→WordPressテーマファイル変換ツール

パーツ選択

早速書きだしていこうと思います。
これは今日思いつきたてホヤホヤのアイディアです。

WordPressのテーマは有償・無償を問わず数多く公開されており、テーマ作成ツールも以前見たり使ったりした気がしますが、何ていうかもっと簡単に画像を1枚ぺろっとアップロードして、画面上で「メニュー」とか「コンテンツ」とかのパーツをマウスドラッグで選択していくと、あっという間にWordPressのテーマを作ってくれるやつです。

WordPressってバージョンが上がるごとに、テーマに要求する仕様が増えていくので、手作業で作るのは結構面倒なことが多いのです。

WordPress以外のCMSにも対応しているとなお良い。
アップロード可能な画像はPNGオンリーでも良い。

ソフトウェア名称・・・image2theme(仮)
予想工数・・・4.0人日(初期ベータ版。WordPressのみ対応)

100のソフトウェアアイディア

停滞気味のドラゴンレーダーはさておき、・・・本当はさておきたくないのですが、、どうしても「遊びの」時間を作れないので、ともかくも作りたいと思ったものをどんどんアウトプットしていこうと思います。
こうでもしないと、頭の中がパンクしそうなんです。

本当にしょうもないものから、誰かの役になりそうなものまで、次々にソフトウェアを作る欲求がとめどなくあふれて来るのです。
これまで未完成のアイディアをブログに書いたりするのは、何となくもったいない感じ(誰かにアイディアだけ真似されたくない)がしていたのですが、どうせ作れないのなら同じだっと開き直ることにしました。

むしろ誰かに作ってほしいものばかりなので(少なくとも私が欲しいものばかり)、もしこんなのすでにあるよ~とか、作ってみたよ何てすばらしい方がいらっしゃれば、コメント下さいませ。

idea

100個出るかはわかりませんが・・・(ーー;

オラ、ドラゴンレーダーを作るぞ(13)

***13.1 最終構造の決定

先日購入したケースをパートナーに見せびらかしていたら、丸い窓ではなく後ろの四角い窓を正面にしたほうがいいのではないかと言われました。

こっちが丸窓
こっちが丸窓
これが四角い窓。購入したLCD(WBX280V009)にぴったしサイズ。
これが四角い窓。購入したLCD(WBX280V009)にぴったしサイズ。

うーん。確かに四角いほうがLCDを無駄なく使えるんだけどなあ。
でもドラゴンレーダーのあの形が頭にあるものだから、やっぱり丸窓がいいんだよなあ。

「丸い窓から基板とか見えているとかっこいいじゃない。」
な、なるほど。
確かにこの丸いところからArduino Duemilanoveの例の青基板が見えていたら、知らない人が見たら感心してくれるかも・・・
ということで、丸窓ではなく四角い窓を正面にすることにしました。

完成イメージ
完成イメージ


一度そう決めてしまうと、LCDとArduinoの位置が確定してしまったので、いっそのこと先に配線周りのごちゃごちゃを何とかしてしまおう!ということにしました。
ブレッドボードだと片付けるたびにケーブルが抜けて、取り回しにくいんですよね~。

***13.2 必要パーツの購入

というわけで、配線をきれいにするためのパーツを購入しました。

|~商品名|~説明|
|ピンヘッダ(オスL型) 2×40 (80P)|2列になっているL字形のピンヘッダーです。LCDからユニバーサル基盤への接続に使います。|
|ピンヘッダ(オスL型) 1×40 (40P)|こっちはArduinoからユニバーサル基盤へ接続するときに使うもの。|
|シングルピンソケット(低メス) 1×14 (14P)|これが失敗・・・「低メス」の文字を見落としていましたorz
通常のピンソケットと違って一個ずつ切り離せて便利だなあと思っていたら、深さが浅いので普通のピンヘッダーだとすぐ抜けてしまう。|
|ユニバーサル基盤 47 x 72mm 2.54mmピッチ ICB-288|これだけ近所のパーツショップで買ってきました。|

L字型のピンヘッダーの存在をたまたま知ったのですが、これがあればArduinoの勇姿を基板で隠すことなく見せつけられそうだ!と思い購入しました。
それで、秋月電子さんから即効で送られてきたので、居ても立ってもいられずにハンダ作業開始!
完成イメージは次のとおりです。

ある意味この図が設計書
ある意味この図が設計書



要するに、LCDとArduinoを背中合わせにして、それぞれのピンソケットをL字ピンヘッダーでつないでしまおうという作戦です。
完全にハンダと銅線でつなげてしまうとArduinoとLCDが再利用できないので、取り外しやすくかつコンパクトにまとまった、素晴らしい構成なのだっ!!(超自画自賛モード)

***13.3 いざハンダゴテ

要となるユニバーサル基板と短く切ったビニール線との死闘が始まったわけですが、LCDとArduinoを背中合わせにしたせいか、8ピンの順番が逆になってしまい、さらにL字ソケットをつなげているため何がどうつながらないといけないのか大混乱してしまいました。

ようやく出来上がったのがこれ↓

ジャーン
ジャーン

これ動きそうにないだろ・・・だって??
ふふっ、あんたいい勘してるぜ・・・

LCDにつなげるまでもなく、テスターで導通確認をしたところ12本中4本しかつながっていませんでした(T T)。
つながっていたかと思ったらショートしている(つながってはいけないところが接触してしまっている)箇所もあったりして・・・

半日かけてこの有様ですが、買ったはいいけど使い方が分からなかったテスターの使い方がわかったので、それで良しとしよう。

デジタルマルチメータ MAS-830L マニュアルレンジ
デジタルマルチメータ MAS-830L マニュアルレンジ

以前購入したのがこのテスターです(デジタルマルチメータ MAS-830L マニュアルレンジ)。
アナログのテスターが使いやすいと本で見ていたのですが、購入時にあいにく品切れだったため、安かったこいつを買いました(1,000円)。
届いてみたら超かわいい!
真っ黄色のラバーケースに包まれていて、これだけでおもちゃみたいです。案の定2歳の息子がおもちゃ替わりにしていたりします。

上の写真のレバー位置が導通確認のポジションで、この状態でつながっているかどうか確認したい部分の両端をテスターに接続した赤/青の測定リードでつつくと、導通時には「ピー」という音がします(画面には抵抗値も表示されます)。
他のポジションは今のところ理解していませんが、この導通ポジションに関しては完全に理解しましたよ!

さて作り直しなわけですが、ピンソケット(黒い穴が開いているやつ)はべったりハンダ付けしてしまったし、ビニール線も扱いにくいし、一からつくり直そうと近所のパーツショップに自転車を飛ばします。
・・・と付いてみたらなぜか休み∑(゜ε゜!!坂道きついのに・・・
仕方ないのでうちに帰って、失敗作からハンダを吸い取り線で一個ずつ吸い取って再チャレンジすることにしました。

基板作成ver.2。LCD側です。
基板作成ver.2。LCD側です。

・・・どう思われるかはわかりませんが、自分の中では最高最善の出来です。
作り上げたあとはうっとりと眺めこんでしまいました。

こっちがArduino接続側
こっちがArduino接続側

基板のLCD側にピン接続するケーブルを這わせ、Arduino側に3.3V(プラス極。赤いリード線につながっているの)とGND(マイナス極。基板上の錫メッキ線)を這わせました。
ああ、うっとり・・・

自分で基板上のホールの穴の数を数えたり、糸ノコで基板を小さく加工したり、ホールの位置とピンヘッダーの位置を検討したりと、初めて機械いじりらしいことができて、かつ完成できたことがこんなに嬉しいとは・・・

LCDにつなげたところ
LCDにつなげたところ

さらにArduinoにつなげたところ
さらにArduinoにつなげたところ



出来上がりだけ見ると「ふーん」という感じかもしれませんが、私自身からみると奇跡の構造です。

そしてケースに入れたところ・・・!
そしてケースに入れたところ・・・!

パートナーのイメージ通り、後ろの丸窓からArduinoのかわいい姿が。
パートナーのイメージ通り、後ろの丸窓からArduinoのかわいい姿が。


この後、接触不良を直したり、つけ忘れていたプルダウン用の抵抗を付けたりしたのですが、概ねスムーズに作業が完了しました。
それもこれも全てテスターのおかげです。
基盤づくりをこれから始める人は、絶対にテスターが必須ですので、ハンダごてと一緒に買い揃えましょう!

そしてこれが、実際に動かしたところです。

ケースに全部収まって、チャックの間からUSBケーブルをちょろっと出すことができるので、すごく取り回しがいいです。
出来たぞー!!

新しいブログリーダーを作りました

これまで使っていたブログリーダー、Bloglinesが2010年11月1日を持ってサービス終了することを受けて、似たようなインターフェースのブログリーダーが欲しいと思い、自分で作ることにしました。

■FamLines BLOG READERについて

これを作っている間はドラゴンレーダーの作成も停滞気味でしたが、ようやくリリースできたのでこれからはドラゴンレーダーに専念できそうです(お仕事は?)。

今書いていて気が付きましたが、本当にどうでもいいのですが、ブログリーダーとドラゴンレーダーって字面が似てますよね。

オラ、ドラゴンレーダーを作るぞ(12)

*** 12.1 LCDでの色表現

LCDを自由自在(?)に使いこなせることが分かったので、早速画面のデザインをしようと思ったのですが、LCDでの色表現ってHTMLでいう「#FFFFFF(白色)」みたいな表記ではないことに改めて気づきました。

FFFFFFはすなわち24ビットカラーですが、ILI9325などのLCDで色を指定する場合は16bitで指定する必要があります。
白色は0xffffですし、青色は0x001fといった感じです。

そういう色見本みたいのがどこかに転がってるんだろうと、軽~く考えて検索してみたのですが、なぜか見つからない!?
拾ったライブラリなどでは「#define ORANGE 0xFC00」みたいに定数定義していたりします。

それじゃあということで、色見本ページを作りました。
カラーピッカーも作りましたので、欲しい色の16bitカラーが確認できると思います。

16bit Color Picker & Color List

・・・それとも、本当はみんな違う方法で色指定しているんでしょうか??
う~ん、不明だ。

オラ、ドラゴンレーダーを作るぞ(11)

*** 11.1 タッチパネルをどうするか

LCD操作の目処が立ったので、あとはGPSとコンパスモジュール・・・と思っていたのですが、そういえば今回買ったLCDってタッチパネルが付いてるんですよね。
せっかく付いているんだから試してみたい!

・・・と思ったのですが、Arduinoのピン数が足りなくなりそう。

LCD接続のためにすでに12本のピンが使用済みで、残るピン数は8本。
改めてタッチパネルの使用ピン数を確認してみたところ、なんと5本(x1, x2, y1, y2, タッチ状態チェック)。
ということは、LCDとタッチパネルをつなげただけで17本のピンを消費してしまい、残るピンはたったの3本だけになってしまうぅ。。

ドラゴンレーダーには、少なくともコンパスモジュールとGPSモジュールが必要なのですが、これらには何本必要なんだろ。

まずコンパスモジュールはこれ、HMC6352搭載デジタルコンパスモジュール
マニュアルによると・・・2本必要。

GPSモジュールはこれ、SparkFun Electronicsの32 Channel LS20031 GPS 5Hz Receiver
これも2本必要だと・・

てことは、ピンが1本足りない!!
どれかいらなそうなの無いかなあと本気で探してみましたが、もちろんそんな無駄ピンは使ってない。

*** 11.2 タッチパネル諦めてボタンにするか、もしくは・・・

そもそもタッチパネルを何に使うのかといいますと、ドラゴンレーダーのユーザー機能としては、縮尺を変えることができないといけないし、管理機能(ドラゴンボール=お宝の位置座標を登録する)にも色々画面操作できないといけないので、そういったユーザーインターフェースで使おうと思っていたのです。

これが使えないとなると、ボタン?みたいのでやるしか無いかあ。。
まあボタンも機械っぽくていいかなあ。

それとも、3軸加速度センサーをつけて、Wiiみたいなインターフェースを実現するとか!
う~ん・・技術力がついていけなさそうだ・・
でも、傾けるとカーソルが動くようなインターフェースも面白いかもなあ・・・。

とにかく!残る8本-GPSの2本-コンパスの2本=残る4本でユーザーインターフェースをつくんないと。
ああ・・・タッチパネルが4本でよかったらなあ・・・(←しつこい)

オラ、ドラゴンレーダーを作るぞ(10)

*** 10.1 画像も表示できたよ

前回の記事からさらに一ヶ月経ってしまいました。
その間何をしていたかと言いますと、来る10月31日にサービス終了してしまうBloglinesの代替サービスを作っていました。
それについてはまた後ほどアナウンスするとして、ようやくその代替サービスの開発が一段落したので、まだドラゴンレーダー作りを再開です。

前回、ようやくLCDとArduinoがつながったところまで進めていたので、もう少しLCDの使い込みをすることにします。
ここから先はソフトウェアの領域なので、ハンダゴテを握らなくて済むのが楽だー。

画像出力のサンプルコードを以前拾っていたので、それを動かしてみました。

楽勝楽勝♪
これまでのハードウェアで難儀したのが嘘のように、あっさり動作しました。

*** 10.2 描画速度が3倍に!

画像の出力は出来ましたが、何だか描画が遅いかなあ・・・
テケテケ~と表示されるのは、作った本人は楽しいものですが、人が見たら遅いと思うだろうなあ。

サンプルコードとは別のライブラリコードを見ていたところ、何だか電子工作室 – 2.4/2.8インチ QVGA液晶表示器の制御で公開されているライブラリコードのほうがすっきり書かれていることに気がつきました。

ということで、電子工作室のライブラリを頑張って移植してみました!

例えば↓これ。

変更前
void LCD_Writ_Bus(char VH,char VL)  
{  
  unsigned char i,temp,data;
  data=VH;
  for(i=0;i<8;i++)   {     temp=(data&0x01);     if(temp)       digitalWrite(i,HIGH);     else       digitalWrite(i,LOW);     data=data>>1;
  }
  digitalWrite(LCD_WR,LOW);
  digitalWrite(LCD_WR,HIGH);
  data=VL;
  for(i=0;i<8;i++)   {     temp=(data&0x01);     if(temp)       digitalWrite(i,HIGH);     else       digitalWrite(i,LOW);     data=data>>1;
  }
  digitalWrite(LCD_WR,LOW);
  digitalWrite(LCD_WR,HIGH);
}

変更後。こんなにすっきり
void LCD_Write_Bus(char VH,char VL)
{
    // 上位バイト出力
    PORTD = (VH & 0xFF);
    digitalWrite(LCD_WR,LOW);
    digitalWrite(LCD_WR,HIGH);

    // 下位バイト出力
    PORTD = (VL & 0xFF);
    digitalWrite(LCD_WR,LOW);
    digitalWrite(LCD_WR,HIGH);
}

データの出力を行うD0~D7の8ピンに対して、元のソースでは何度もdigitalWrite関数を呼び出していたのですが、新コードではPORTD(Arduinoのポート操作用のキーワード)を使ってすっきり簡潔になりました。

この変更により、ものすごく描画速度が早くなった!
これぞ8bitアクセスの醍醐味!(?)

この移植作業を行ったおかげで、Arduinoのコーディング方法がだいぶ理解できてきた~。

*** 10.3 文字も表示できた!

移植した電子工作室のライブラリには文字表示の関数も用意されていたので、それを使って文字表示できることを確認しました。

↑ちょっと見えづらいですが、カタカナや一部の漢字もきれいに表示出来ています。
ありがたや~

それと、改めてLCD(ILI9325)のリファレンスを読み直していると、縦表示と横表示の切り替えができることがわかりました。
今回作るドラゴンレーダーでは横表示の方が都合が良いので、横表示に変えてみました。

変更したのはLCD_Init関数の中の下記の箇所です。

LCD_Out(0x0003, 0x1028); → LCD_Out(0x0003, 0x1018);

リファレンスに詳しく(英語で)書かれていますので、必要な方はリファレンスのp.55~56(8.2.5. LCD Driving Wave Control (R02h)をご参照ください。

*** 10.4 ケース発見!

そして、今日一番の出来事ですが、ドラゴンレーダーを収めるのにぴったりなケースをGeogesで見つけてしまいました!

ドラゴンレーダー用のケース。本当は写真入れです。
ドラゴンレーダー用のケース。本当は写真入れです。

以前から「惜しい」ケースをGeogesで見つけていたのですが、こんなにぴったりのが売られているなんて・・・・
写真ケースにはむしろ微妙なデザインですが(おい)、ドラゴンレーダーを収めるには本当にサイズぴったりで、見つけたときは自分のために作ってくれたとしか思えませんでした。
ありがとうGeoges!!

周りがチャックになっていて、ぱかっと開く。しかも中はふわふわ。
周りがチャックになっていて、ぱかっと開く。しかも中はふわふわ。
丸い穴部分が少し大きいので、ボール紙でマスキング。改良の余地あり。
丸い穴部分が少し大きいので、ボール紙でマスキング。改良の余地あり。
後ろにも窓が付いていて、これがなんとILI9325と超ぴったり!もはやILI9325のために作ったとしか思えない。
後ろにも窓が付いていて、これがなんとILI9325と超ぴったり!もはやILI9325のために作ったとしか思えない。

今は配線をブレッドボードで行っているのでごちゃごちゃしていますが、ユニバーサル基盤できれいに作り直したら早速はめてみます。
楽しみだ~

*** 10.5 本日までの報告書

本日版の最終ソースです
移植した電子工作室のライブラリも含まれていますので、良かったら使ってください。

あと、PORTDを使うために少し配線も見直しました。

|~LCD側|~Arduino側|
|DB10|D0|
|DB11|D1|
|DB12|D2|
|DB13|D3|
|DB14|D4|
|DB15|D5|
|DB16|D6|
|DB17|D7|
|RS|D8|
|WR|D9|
|CS|D10|
|RESET|D11|
|LEDA、VCC(3箇所)、RD|3V3|
|DB0~DB7、LEDK1~LEDK4、GND(2箇所)|GND(1kΩの抵抗を一つ入れて)|


オラ、ドラゴンレーダーを作るぞ(9)

*** 9.1 LCDが動かない!ピクリともしない!

前回のエントリーからなんと1ヶ月くらい経ってしまいました。
その間帰省をしていたり、仕事が忙しくなったということもあるのですが、なんといってもLCDが動かないのでブログも書きようがないという状況です。

この1ヶ月間何をしていたかというと、とにかく知識をつけるために電子工作の本を読みまくっていました。
図書館に行って理解できそうな本を取り上げてはざっと読んでみて、ためになりそうな本は借りてきて・・・を繰り返し、その都度分かったことをドラゴンレーダーに適用しては失敗してという感じです。

その中でも一番勉強になったのは次の本です。

★ 作る・できる/基礎入門 電子工作の素 [単行本]

各ページの横に電子工作についての基礎知識がふんだんに書かれており、これまでどの本を読んでも書いていなかった電子工作の「常識」が少しずつ理解できるようになってきました。
もう図書館に返却してしまいましたが、この本は自分でも一冊買おうと思っています。

↑に挙げた本やその他の本で知った、今回のLCDトラブルに関係ありそうな知識として、次のようなものがありました。

|GNDとVCC|間違いなく笑われそうですが、LCDにGNDとVCCをつなげていませんでした。だってどこにも書いてないんだもん・・・。
GNDとは電源のマイナス側、VCCとは電源のプラス側のことで、あまりにも常識なので回路図などでは省略されることもあるそうです。
今回購入したLCDにもVCCとGNDというソケットがあったのですが、これまで見てきたサンプルでは触れられていなかったので、全く無視していました。
電源なしでは何も動きませんよね(笑)|
|プルアップ・プルダウン|これはWebで得た知識ですが(プルアップ・プルダウンについて)、単純にVCCとGNDに線をつなぐだけだと電流の向きが不安定になるそうで、GND側に抵抗を入れるのだそうです(これはプルダウン)。プルアップはその逆なんだそうですが、いまいち理解できていません。。
最初はこのプルダウンの抵抗を入れていなかったのですが、GND側に抵抗を入れるようにしました。|
|電圧のスレッショルド|パーツには有効な電圧の範囲があって、その範囲を外れると正しく動かないのだそう。|
|間違った電圧をつなげたとき|アンプ関係の話で読んだ知識ですが、高すぎる電圧をかけるとパーツから「ブーン」という唸りがすることがあるそうです。|

以上の知識を踏まえて色々と模索した結果、前回Arduinoを3.3V化したつもりが、どうもこれが上手くいっていないのではないかと。
購入したLCDの動作電圧は「2.6~3.5V」となっており、Arduino Duemilanoveそのままの5Vでは動いてくれません。

LCDと悪戦苦闘しているときにLCDから突然「ブーン」という小さな唸り音が聞こえてきたことがありました。
何をやってもうんともすんとも言ってくれなかったので、ちょっとでも反応があって喜んでいたのですが(バカ)、後から得た知識からするとどうも5Vを流してしまって規定の動作電圧を超えた電圧を流していたのではないかと思われます。

その後妥協の電子工作:4線式抵抗膜方式タッチパネル付きLCDパネルの試用に書かれてあった

ちなみに「WBX280V009」でも同様の方法で8ビット化できますが、この場合は、11番端子をVCC(6番)に接続しないと8ビットモードでは動作しません。

妥協の電子工作に書かれていた8bit化のための処置
妥協の電子工作に書かれていた8bit化のための処置


を行い、プルダウン抵抗を取り付けた後、3.3VにしたときだけArduino本体についているLEDが点滅しなくなったことに気がつきました。
5Vに設定したときだけLEDが点滅するので、3.3V化に失敗しているのかなと。

前回行ったのは次の写真の作業。

だめだめ3.3V化
だめだめ3.3V化


それで今回行ったのはパターンカットのやり直しと(ちゃんと切れていなかったようなので、もう一回やり直してみたら、明らかに線が残っていた・・・)、次の写真の箇所のはんだ付け。
一つ前の写真で「ここはどこともつながっていない」と書かれているところ。

三端子レギュレータの「IN」とおぼしき場所をつなげた
3端子レギュレータの「IN」とおぼしき場所をつなげた

もともと三端子レギュレータの「OUT」しかつなげてなかったので、電流が流れるはずがない。。とは思っていたものの、どう見てもこの場所は無関係な出っ張りだろうと思い、無視していました。
反対側の「IN」とつながっているのかなあというのが今の理解。

*** 9.2 LCDの現状

たった今さっき三端子レギュレータのハンダ付けを行ったところで、物は試しとPCとUSB接続したところ、なっなんと、LCDが光った!!光ったよ~っっっ!!!

LCDとごちゃごちゃ配線
LCDとごちゃごちゃ配線

LCD側についていた「LEDA」というソケットとArduinoの5Vをつなげていたのですが、「LEDK1」~「LEDK4」をGNDにつなげるようにしたところ、突然LCDが真っ白く輝いてくれました!!!
ふぎゃーーっっ

LCDもArduinoも壊れていなかったんだ~。
心底ほっとしましたよ!

*** 9.3 ・・・と思ったら、今LCDが動いた!色が出た!!

ここまでブログを書いてきてあれっと思ったのですが、なぜかLEDAを5Vにつなげていました。
なんでだっけと思いだしていたところ、ITDB02-2.4 8Bit Mode Demoに書かれている接続方法を真似たことを思い出しました。

それでもう一度このページを見なおしたところ、なんと!LEDAは3.3Vって書いてあるぞ?色々やっているうちに接続を間違えてしまっていたようです。
でも動いていたしなあと思いながらも、LEDAを3.3Vにつなげ直したところ、さっきよりも明るさが減ったような感じ・・・
と見ていたら、夢にまで見た綺麗なブルーが我がLCDに写っているではありませんか!
ま、マジですか?!

勢いでYoutubeに動画をアップしてしまった。

一番の難関をやっとこさ越えたぞ~~~~~っっっっっ!!!

*** 9.4 ここまでのまとめ!

ということで、いったん現在のドラゴンレーダーの配線についてまとめて置きます。

|~LCD側|~Arduino側|
|RD|D1|
|DB12|D2|
|DB13|D3|
|DB14|D4|
|DB15|D5|
|DB16|D6|
|DB17|D7|
|RS|D8|
|WR|D9|
|CS|D10|
|RESET|D11|
|DB10|D12|
|DB11|D13|
|LEDA、VCC(3箇所)|3V3|
|DB0~DB7、LEDK1~LEDK4、GND(2箇所)|GND(1kΩの抵抗を一つ入れて)|

それでこっちがスケッチ(Arduinoのソース)
あちこちのサンプルソースをツギハギしているので、元ソースがどこだったのか思い出せませんが・・・

*** 9.5 今日までの報告書

ブックマークしたページ

|~タイトル|~説明|
|妥協の電子工作 – 4線式抵抗膜方式タッチパネル付きLCDパネルの試用|数少ないWBX280V009の情報でした。ありがとうございました!!|
|電子工作室|ここの2.4/2.8インチ QVGA液晶表示器の制御というページで、「QVGA液晶表示器用ライブラリ」というライブラリが公開されており、大いに参考にさせていただきました。|
|ITDB02-2.4 8Bit Mode Demo|このページを見て、ArduinoとLCDの接続にはVCCとGNDの接続が必要なことを知りました。|
|プルアップ、プルダウン|分かりやすく説明されたページです。|

次は文字表示だ!

オラ、ドラゴンレーダーを作るぞ(8)

*** 8.1 Arduino Duemilanoveの3.3V化

例によってワタシ、ハードウェアワカリマセン状態に変わりはないので、3.3V化改造に書かれている手順の通りに進めました。

すごく分かりやすく書かれているのですが、あちらこちらで理解できない説明があるんですよね・・・
自分なりに読み解いて、こんな感じでつなげてみました。

!注意!まだこの組み立てで動いていません!良い子は真似しないでください!
!注意!まだこの組み立てで動いていません!良い子は真似しないでください!


あと、表面のパターンカットも自信ないのですが、ググってみたところカッターナイフやマイナスのドライバーで傷をつけるということなので、そのようにしてみました。

分かりにくいけど、パターンカットした後。違うところまで傷ついているような・・・
分かりにくいけど、パターンカットした後。違うところまで傷ついているような・・・


あと、ピンヘッダそのものは購入していたのですが、2つのピンヘッダをつなげるコードを買っていない!
っていうか、このコードなんていう名前なの?(T T)
ピンソケットが両側にくっついているような感じなんだけど・・・

そういえば、LCDのピンソケットで半分にぶった切った残りがあるから、それをジャンパワイヤの先にくっつけちゃえ。
我ながらいい思い付きだと思ったのですが、ピンソケットをニッパーできるのはかなり無理があり、どんどん駄目パーツが増えていく・・・

ピンソケットの亡骸。ほんとごめんなさい。
ピンソケットの亡骸。ほんとごめんなさい。


とにもかくにも、やっと3.3V化が完了したぞ~。

パターンカットが一番びびりました。後戻りできないから・・・
パターンカットが一番びびりました。後戻りできないから・・・


*** 8.2 配線してみたけど・・・

Arduino Forum › Software › Development › Arduino control the 2.4″ TFT LCDを参考に、ArduinoとLCDをつなげていきます。
が、購入したLCDと微妙に違うので、なんか番号が違うんだよなあ。。

とりあえずこんな感じでつなげてみました。

|Arduino Duemilanove側|WBX280V009-PCB(ILI9325)側|
|デジタル0|DB10|
|デジタル1|DB11|
|デジタル2|DB12|
|デジタル3|DB13|
|デジタル4|DB14|
|デジタル5|DB15|
|デジタル6|DB16|
|デジタル7|DB17|
|デジタル8|RS|
|デジタル9|WR|
|デジタル10|CS|
|デジタル11|RESET|
|GND|DB0~7をブレッドボード経由で|

そして、USBでPCにつなげて、itdb02のサンプルコードを流し込む!!
一発で動くといいなあ~♪
(そんなに甘くはない・・・)

これがサンプルコードのスケッチ。

#include <ITDB02.h>
 
ITDB02 lcd(0,1,2,3,4,5,6,7,8,9,10,11);
 
void setup()
{
  lcd.Initial();
  lcd.CleanLCD();
}
 
void loop()
{
  lcd.Setcolor(0x00,0xffff);
  lcd.Dispshowstr(80,300,"iteadstudio.com");
}

どきどきしながら「アップロード」ボタンを押す!
ってこんな無造作にアップしていいものなのかもよく分からない!

いつものようにTXとRXのLCDがテケテケと点滅し、そして・・・あれ、TXだけが延々点滅しているぞ・・・
よく分からないけど、いったんUSBを外し、うーんどうしよう。

*** 8.3 問題の切り分け

いっぺんにLCDの8bit化とArduinoの3.3V化をやったので、原因箇所とおぼしきものはすごく多い。
とりあえず大まかに切り分けるとこんなところでしょうか。

  • LCDの8bit化のチップ抵抗付け替えをミスった
  • Arduinoの3.3V化の手順に誤りがある(配線方法の間違い)
  • Arduinoの3.3V化の作業に誤りがあった(ハンダ付けがへた)
  • ArduinoとLCDの配線に誤りがある
  • LCDが壊れている。または自分が壊した。
  • Arduinoを壊した。

一番嫌なのは、Arduinoそのものが壊れたのではないかということです。
いったん配線を外して、一番シンプルな、LEDをデジタル13ピンとGNDにつけて点滅させるプログラムが動くかどうかを試してみました。

と、アップロードしようとすると今度はArduino IDEにエラーメッセージが。
こんな感じのエラーが出ます。

avrdude: stk500_getsync(): not in sync: resp=0x30
avrdude: stk500_disable(): protocol error, expect=0x14, resp=0x51

あ~・・・どんどん悪くなっていく~・・・
どうもコードの接触不良とか配線ミスが原因らしいのですが、なんといってもさっきパターンカットとかしたばっかりだしなあ(大汗)

3.3Vのほうについていた電源切り替えのピンソケットを5Vに変えて再トライしたところ、今度は動いたっっ!!!
LEDが点滅してくれました。良かった~。Arduinoそのものはまだ死んでいないようです。

5Vに差し込んだり3.3Vに差し込んだりしても、いずれも問題ないようなので、改めて3.3VにつなげてLCD用のサンプルコードをアップロードします。
今度はTXとRXが数秒点滅した後止まって・・・LCDを期待の目で見つめるのですが・・・うんともすんとも言わないなあ。
まったく無反応です。

う~ん・・・やっぱり配線が悪いのかなあ。
また後日チャレンジすることにします。

現状の組み立て。動いてないこともあり非常にしょぼく見える。
現状の組み立て。動いてないこともあり非常にしょぼく見える。