記事一覧

Arduinoでドットマトリックスで問題

2013.03.11

先日組んだドットマトリックスですが、忘れないうちに回路図をアップしておきます。
ファイル 33-1.png
動作はごく簡単なもので、
・シフトレジスタ(74HC164)で1列分のパターンを作成し
・デコーダ(74HC138)で対応する列の出力をLOWにする
という動作を列数分繰り返すというものです
が、ここで問題発生・・・
1)まず、動画を見れば一目瞭然ですが、消えているはずのLEDが微妙に光って見えてしまいます。これは、シフトレジスタでパターンを送り出す時に、一瞬ですが通過するLEDに電源が入り光ってしまうものだと思われます
図で表すと
■■■■■■■
と右端のLEDを点灯したい場合、シフトレジスタの動きでは
■■■■■■■
■■■■■■
■■■■■■■
 ・
 ・
と順次送り出す動作をするのですが、その際に通過するLEDが灯ってしまうようです。ミリ秒単位の動きなので無視できる範囲かと想定していましたが、残像効果のせいで全体的にぼやっと光ってしまいました。この点は、シフトレジスタの準備が完了するまで、デコーダ側で入力を抑制する、という動作をしなければなりません。
G2AかG3AをArduinoのピンにつないで制御する必要がありそうです。

2)もう一つはドットマトリックスの表示向きの問題です。
動画では一見正しく表示できているようですが、実際には取り付け方向からみて90度回転して表示されています。
「た」ならこんな感じ
ファイル 33-2.png
LEDが1個なら取り付け方向を調整すればいいのですが、2個以上つないで取り付ける場合、ちょっと無理があります。
こちらはプログラム的にXとYの行列入れ替えをする必要がありそうです。

にほんブログ村 その他趣味ブログ 電子工作へ
にほんブログ村

Arduinoでドットマトリックス・美咲フォントを表示してみる

2013.03.08

先日ブレッドボードに組んだドットマトリックスですが、文字を表示するの何かいい方法はないか?と探ってみたところ、8x8ドットに表示するのにちょうどよい「美咲フォント」なるものを発見しました。
すでに先人は美咲フォントをEEPROMに流し込んで漢字を表示することも実践されているようです。が、とりあえずお試しモードなので、変数エリアにパターンを定義して数文字表示できればよいかと
と、思ってはみたもののかなり苦戦しました
フォントファイルの構造を調べ、エクセルのVBA+関数と格闘して文字をビットのパターンに変換、出来上がった16進の数字をArduinoのソースにコピペして整形すれば使えるように。。。するまで数時間掛かりました
読者の方は成果だけお召し上がりください
エクセルファイル「Fontx2Util」
(実行にはMicrosoftExcelが必要です)
こんな感じでフォントからパターンを取り出せます
ファイル 32-1.png

苦労した割にはスケッチはあっさりしたものです(笑)
AR_DOTKNJ01.zip

美咲フォントのホームページは
こちらです

美咲フォントは実際には7x7ドットの定義なのですが、文字列を並べて表示するには丁度良いようで、解像度の低いグラフィックディスプレイによく使われているようです。(ソフト的に文字間を調整する必要がない)
このフォントで、以前作ったような流れる掲示板を作れたらなぁ、と構想を膨らませてみました。


ようつべカスタマイザ

ダイナミック点灯、意外と微妙で消しているはずのドットがほんのり光っています。名刺ケースかぶせても滲んでる・・・
まだまだタイミングの調整が必要そうです

タグ:Arduino ドットマトリックス 74HC138 74HC164 シフトレジスタ

Arduinoでドットマトリックスの実験(ピンの節約)

2013.03.06

キャラクタLCDを載せるとそれだけで結構なピンが取られてしまうので、昨日はArduinoでスイッチを増設する際のデジタルピンの節約について考えました。
と、思っていたところ、アナログピンもデジタルピンとして利用できるということが書かれていました。
(まあ、当たり前といえば当たり前ですが、やりかたが分からなった・・・)
http://nekosan0.bake-neko.net/structure_digital_port.html

センサやらLCDやらバンバン刺していった私のArduino、アナログ4本とデジタル1本が残っている。ということで、以前から温めていた実験をしてみました。


ようつべカスタマイザ

以前PICでドットマトリックスの流れる時計を作った時に、74HC138 というデコーダICを使ってダイナミック点灯というのをやってみたんですが、今回は先日のシフトレジスタ(74HC164)と組み合わせて、ピンを節約しながら8x8のドットマトリックスをコントロールする実験をしてみました。
ピンの消費数は、
シフトレジスタ→2本
デコーダIC→3本
なので、都合5本のピンでマトリックスをそれとなく表示できました。
次回以降、回路図などを紹介していきたいと思います。

タグ:Arduino ドットマトリックス 74HC138 74HC164 シフトレジスタ

電子回路入門講座

2013.03.06


「電子回路入門講座」という本を買いました。
ド文系人間の私ですが、やはり回路の基礎知識ぐらいは理解しておきたいと思い、簡単すぎず、難しすぎずという自己基準にて選択しました。
ただ、読み始めてみるとやはり、自分的にはややハードルが高かったかも・・・と後悔
まず、コイルとコンデンサの理論のところで「微分・積分」が出てきます。私がむか~し理系の道を断念したのは、この微積分を理解できなかったからだったのですが・・・電気の世界では避けて通れない道のようです。。。
この本は当然のように微積分が理解できている前提で書かれています。そこで、微分入門というキーワードでググってみると
微分積分入門
というサイトを発見。かなり丁寧に解説されています。
じーっくり読んでみると、何となくですが分かったような気になり、さらに
測量技術者のための微分入門
を読んで、なるほど誤差の理論にも応用されているのか、と納得。
改めてコイル、コンデンサの章を読み返してみて、数式の意味くらいは分かるようになりました。
この本、弟子回路についてかなり広範囲に書かれている割にそれぞれが深そうなので、まだ先は長そうですが読み進めるのが楽しみになってきました。

タグ:参考書 勉強

直列スイッチを考えてみる

2013.03.05

秋月で大気圧センサーを買いました。600円のと350円のがあって、ピンが半田付けされているかどうかの違いと考えやすい方を買ったのですが、帰ってネットで調べるとSPIとI2Cというインターフェイスの違いもあったようで・・・
安い方→MPL115A1使用大気圧センサーモジュール(SPI)
高い方→MPL115A2使用大気圧センサーモジュール(I2C)(丸ピン実装済み完成品)
I2CならArduinoとは2本の線でデータのやり取りをできますが、SPIだと都合4本のピンが消費されることになります。ので、お金の余裕がある人はケチらずI2C用のMPL115A2を購入されることをお勧めします。(私の場合100%道楽なので、ちょっとした苦労も楽しみの一部と割り切ることに・・・)
MPL115A1に関しては、「Arduinoの動かせ方入門」の以下のページが参考になります。
気圧センサー(MPL115A1)で大気圧と標高を測定して見ます
こちらで提供されているスケッチで何の苦労もなく、適度な気圧が求められました。

と、前置きはこれくらいにして、
ArduinoにLCD、気圧計をぶっ刺していって、使えるデジタルピンが残り一本となってしまいました。
今後、操作系の機能を付け加えるのにはスイッチ類を追加することになるので、入力ピンが1本では心細いです。
で、アナログ側を見ると、今のところ湿度センサと、温度センサが刺さっているくらいで余裕があります。
で、ちょっと考えてみたのが、直列につないだ抵抗それぞれにスイッチをぶら下げて、それぞれのスイッチが押された時にあるポイントの電圧が変化する(かも?)ので、そこをアナログ計測してやれば、どのスイッチが押されたか分かるのでは?
ということで、回路にするとこんなイメージです。
ファイル 27-2.png

スケッチはサラサラッとこんな感じ

void setup() {
Serial.begin(9600);
analogReference(DEFAULT);
}

void loop() {
int data = analogRead(5);
Serial.println(data);
delay(1000);
}

で、ブレッドボードに抵抗とスイッチを並べて組んでみました(スイッチ後半はリード線で代用)
ファイル 27-1.jpg

エクセルにて計測したアナログ値を比較
ファイル 27-3.png

アナログピンで読み取った値をxとすると、
1024 ÷ ( 1024 - x )
の答えが押されたスイッチの番号だと判別できます。
また、複数のボタンが押された場合は番号の小さい方のボタンが識別されます。
この方法だと1つのポートで複数のボタンを共有できそうです。

タグ:Arduino

ページ移動