※個人の感想ですスマートフォン用の表示で見る※個人の感想ですこの広告は、90日以上更新していないブログに表示しています。大阪日本橋のデジットで売られている32x16ドットマトリクスLEDをIchigoJamから制御するお話。IchigoJamのBASICからでは速度的につらかった。本気でやるときは機械語でよろしくすべし。準備32x16ドットマトリクスLEDはデジットに買いに行ってもいいし、上記の共立エレショップから通販してもいい。このマトリクスLEDモジュールは簡易資料/PDFにあるように10ピンのコネクタが背面にある。このコネクタにつなぐケーブルもついでに購入しておくと便利。ケーブルは適当なところで切断して、各線をピンヘッダに半田付けしておくとブレッドボードに接続しやすくなる。ENABLEの計6本の信号をOUT1〜6端子で制御することにする。マトリクスLEDモジュールの電源はVCC(ロジック部電源)とVLED(LED駆動電圧)の二つが必要でともに5Vとなっている。IchigoJamのVCCは3.3Vだと思うので別のところから5Vを供給することにする。制御方法このマトリクスLEDモジュールは、SIN_1〜3にそれぞれデータを出力してCLOCKを立ち上げること16回。その後一旦ENABLEを非アクティブにして、LATCHでデータ更新、再度ENABLEをアクティブにする。これでSIN_1で指定した行の1ライン分(32ドット)が出力されるようになっている。16ラインあるのでこれを16回繰り返すと32x16となる。21020行目で一旦ENABLEを非アクティブにしておく。110〜120行目が画面左半分の16x16の表示データ。配列の[0]が最上行、[15]が最下行。130〜140行目が画面右半分の16x16の表示データ。配列の[16]が最上行、[31]が最下行。ちなみにこんなデータはスプレッドシート的なものでこんな感じに作ってみた。緑が左側半分の16x16、黄色が右半分の16x16。210行目から390行目までのFORループで16行分のループ。変数iが何行目かを示している。220行目の変数cはSIN_1に出力するデータ。今回のループで出力する位置がHになるように1をi回左シフトしている。230行目の変数dはSIN_2に出力するデータ。配列から画面左半分の1行分である16ビット値を取り出している。240行目の変数eはSIN_3に出力するデータ。配列から画面右半分の1行分である16ビット値を取り出している。250行目から340行目までのFORループも16回のループだが、こちらはラッチの1回分である16ビット分の送出のためのループ。eは左方向に1ビットずつシフトして最上位ビットが0以外なら対応するSIN_*にHを出力し、0ならLを出力する。320〜330行目でCLOCKをL→HすることでSIN_1〜3のデータを取り込ませる。350行目で一旦ENABLEを非アクティブにして360〜370行目でLATCHさせ、380行目でENABLEをアクティブにする。これで1行分の表示が更新される。390行目のnextは変数iのループのためのnext。400行目でこの処理の先頭に戻して無限ループとしている。結果とても遅くて1画面更新するのに約4秒かかっている。それを16行分に分割した時間ずつ、各1行が点灯し他の行が消灯しているという状況。ちなみに比べてもしょうがないけどSTM32F4-Discoveryで作ったCプログラムでは、1ms周期で割り込みを起こさせてそこで1行分の更新をするようにしている。1画面に16msかかる感じなのでちらつきは感じない。IchigoJamでの動作はちらつきとかそういうレベルではないので、BASICからの制御はちょっと使えない感じ。複数行に同じ表示をする場合はSIN_1で複数ビットをHにすればよいので、例えば全面点灯/全面消灯みたいなものなら、1画面の点灯に上記プログラムの1行分の処理でまかなえる。最短の点滅周期だと4秒÷16×2くらいでいけると予想する。2015年の最高傑作。読者になる検索リンクはてなブログブログをはじめる(無料)お知らせ最新記事ロードバイクの乗り始めに何を買ったのか(5)ロードバイクの乗り始めに何を買ったのか(4)ロードバイクの乗り始めに何を買ったのか(3)ロードバイクの乗り始めに何を買ったのか(2)ロードバイクの乗り始めに何を買ったのか月別アーカイブはてなブログをはじめよう!rohiさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。