ロビの目のパターン表示その3
2015年11月22日
前回はロビの目に仕込んだドットマトリックスLED(以下DMLEDと記載)をロビのプログラムで制御して表示ました。
今回は左右の表示を変えて2桁の数字を表示してみます。
前回までは両目同じパターンを表示したので左右のLEDを並列につないで1個のLEDと同様に制御できました。
違うデータを表示するには列か行を分ける必要があります。
こちらの説明のように7×5ドットの場合12本のピンで制御します。
行(縦方向)を分けた場合は12+5で17本のピンが必要です。
列(横方向)を分けた場合は12+7で19本のピンが必要です。
入力に6ピン使っているので最低でも23本のピンが必要です。
Arduino nanoのデジタルピンが18本、アナログピンが8本で22本しかありません。
入力を5本にすれば足りるのですが、入力ピンをHIGHかLOWの2値で判定しているのでデータの数は32に減ってしまいます。
数字を表示する場合、横のドット数は5ドットあれば十分なので今回カラム制御は5ピンとします。
ArduinoとDMLEDの配線は前回のものを変更します。
接続の詳細やDMLEDの設置方法についてはこちらの記事を参照してください。
行の制御信号線は左右のLEDでそれぞれを接続していましたが今回は右目の信号線を違うピンに接続します。
必要な出力デジタルピンは列が5本、行が5×2本の計15本という事になります。
Arduino nanoのデジタルピンは14本なので足らない1本はアナログピンを使います。
デジタルピンとして使えるアナログピンはA0〜A5なので前回余ってるA6、A7は使えないのでA3〜A5をA4〜A6にずらしました。
これで余っているピンは7カラムから5カラムに変更して余ったD2,D8とD0,D1,A3となります。
なおアナログピンでプルアップ抵抗が使えるのはデジタルピンになれるのA0〜A5ですので今回入力ピンとして割り当てたA0〜A4でプルアップ抵抗が使えます。
DMLEDとArduinoの接続は以下の通りです
・右目LED 12PINと左目LED 6PINをArduino D2の抵抗につなげる(黒線1)
・右目LED 11PINと左目LED 5PINをArduino D3の抵抗につなげる(緑線1)
・右目LED 2PINと左目LED 4PINをArduino D4の抵抗につなげる(灰色線)
・右目LED 9PINと左目LED 9PINをArduino D5の抵抗につなげる(青線1)
・右目LED 4PINと左目LED 2PINをArduino D6の抵抗につなげる(青線2)
・右目LED 5PINと左目LED 11PINをArduino D7の抵抗につなげる(緑線2)
・右目LED 6PINと左目LED 12PINをArduino D8の抵抗につなげる(黒線2)
・左目LED 1PINをArduino D9につなげる(赤線)
・右目LED 3PINをArduino D10につなげる(橙線)
・左目LED 10PINをArduino D11につなげる(ピンク線)
・左目LED 7PINをArduino D12につなげる(黄色線)
・左目LED 8PINをArduino D13につなげる(茶色線)
・右目LED 1PINをArduino A3につなげる(赤線)
・右目LED 3をArduino D8につなげる(橙線)
・右目LED 10PINをArduino D2につなげる(ピンク線)
・右目LED 7PINをArduino D0(RX)につなげる(黄色線)
・右目LED 8PINをArduino D1(TX)につなげる(茶色線)
DMLEDおよび口のLED基板とArduinoの接続は以下の通りです
・口のLED基板の入力コネクター(写真下側)の右端のケーブル(黒線)をArduinoのGND PINにつなげる
・口のLED基板の入力コネクター(写真下側)の右から2番目のケーブル(赤線)をArduinoのVIN PINにつなげる
・右目のLED基板の入力コネクター(写真右側)の左から3番目のケーブル(青線)をArduinoのA0 PINにつなげる
・右目のLED基板の入力コネクター(写真右側)の左から2番目のケーブル(緑線)をArduinoのA1 PINにつなげる
・右目のLED基板の入力コネクター(写真右側)の左端のケーブル(黄色線)をArduinoのA2 PINにつなげる
・左目のLED基板の入力コネクター(写真左側)の左から3番目のケーブル(青線)をArduinoのA4 PINにつなげる
・左目のLED基板の入力コネクター(写真左側)の左から2番目のケーブル(緑線)をArduinoのA5 PINにつなげる
・左目のLED基板の入力コネクター(写真左側)の左から3番目のケーブル(黄色線)をArduinoのA6 PINにつなげる
今回使用したスケッチ(プログラム)です。
robi_eye_col5.txt
これをコピーアンドペースト(メモ帳でコピー、Arduinoで編集→貼付け)でArduinoで開いているスケッチを書き換えてください。
→アイコンでコンパイルとマイコンに書込みを行います。
この時スケッチの保存先を聞いてきますので任意のフォルダー名前で保存しておいてください。
赤色DMLEDを使う場合はアノード(+)とカソード(−)が逆になるのでdigitalWriteの第2引数のLOWとHIGHを入れ替えてください。
数字のパターンは10〜19でを変える場合はこのデータの0と1の値を変えてください。
データは1〜59はそのまま2桁の数字で表示されます。
なお54はロビのアイドリング時に表示されるデータになるのでそのままだとアイドリング時に54と表示されてしまいます。
これを回避するためスケッチで54のデータはロビのアイドリングパターン(54で定義されているパターン)を表示します。
そのため数字の54を表示する場合はデータ62にします。
その他データ60は数字の0が表示され、データ61はパターン定義で定義されたパターン(? ?)が表示されます。
またデータ63は前の表示を変えたくない時に使います。
標準のプログラムでポーズデータはLEDの色が指定されているのでこれでパターンが変えられるのを防ぐときはこのデータをLEDの値として定義します。
ロビ側のプログラムは以下のURLからダウンロードする事ができます。
Robi_dmled.zip
ADDON\数字表示.RM4は0x0ef2に表示したいデータを入れてコールします。
<calc>
<mem_w size="2" adr="0x0ef2"/>
</calc>
<wait size="1" adr="0x0b43"/>
<call filename="ADDON\数字表示.RM4"/>
4\0001分数える3.RM4は1分タイマーのプログラムです。
ADDON\ロビンゴxxxxはロビンゴゲームで数字表示するためのプログラムです。
ロビンゴゲームを動かすにはこちらのプログラムが別途必要です。
ロビモーションエディターでも数字を表示する事ができます。
詳しくは前回の記事を参照してください。
実際にこのプログラムを動かした動画です。
目のLEDの電圧のHIとLOWを入力データとしているためデータの数は最大64までです。
LEDはアナログデータなのでArduinoのプルアップ抵抗を使えば中間値も読み取れるはずですが電圧が一定しません(PWMで明るさをコントロール?)。
中間値が読み取れればもっとデータの範囲が増やせるはずです。
興味のある方は是非チャレンジしてみてはいかがでしょう。
なお本改造はロビ本体への影響を及ぼす可能性があるのであくまでも自己責任という事でお願いします。
目次に戻る