2019年5月27日月曜日

Arduino+74HC595+8×8nマトリクスLED(3)

Fritzingにて実装の検討。
あれこれパターンをこねくり回して結線できそうで、かつ拡張できそうな感じで基板分割したものが出来上がりました。


基板分割は
1.外部からのデータ入力および行スキャン制御部
2.列点灯パターン送出部
3.LEDマトリクス固定部
という感じにしました。秋月のC基板を使うことにしたのですが、自分の技量と相談し、2がシフトレジスタ2つと抵抗16本その他配線を考えると、これ以上詰め込むのは現時点では無理があります。

検討が終わったので早速実装してみました。今回は2から始めました。同じものを二枚作る必要があり、先行試作のような感じで自分の技量で作れるかどうかの確認も兼ねています。



Fritzingのおかげで作業の全体像が一応みえてますので、作成した基板ビューを見つつはんだ付け。どの部品からつけるか、線材をどのように差し込んでどれと結線するか、といった実際の作業の段取りは、まだまだ経験不足ですね。結局5時間ほどかかってしまいました。

各コネクタは上の8ピン×2がマトリクス用(左からQ7~Q1)、左右の4ピンがシフトレジスタ信号(上からSRCLR、SER、SRCLK、RCLK)、左右の2ピンが電源用(上からGND、VCC)となっています。この基板を足していくことで、1枚当たりマトリクスを二つ増やせる、という目論見になっています。ただ、今回は全てユニバーサル基板で作成しますが、大量にマトリクスつかうぞ、となったらこの作業量を毎回行うのはできる限り避けたい。パーツ付けてはんだ付けだけで済むようにできるなら是非そうしたいです。
列パターン送出用基板は同一のものを複数使うので、この基板だけでも基板作成サービスに発注するのが現実的ですね。


一応ブレットボードに作ってあった1.行スキャン制御部相当がありましたので、ピン一つ一つあたって動作確認しておきました。一応それっぽく動くようなので、2をもう一つと3を作成しなければ。
また、それぞれの基板を結ぶ接続線を圧着工具で大量につくらねばなりません。

これからが大変ですね…

2019年5月25日土曜日

Arduino+74HC595+8×8nマトリクスLED(2)

FritzingとかいうCADを使ってみることにして、8*8LEDマトリクスを3個使った電光掲示板(仮)の回路図というよりも概略図っぽいものを書いてみました。
トランジスタアレイ(TBD62083APG)については標準のダーリントンドライバで代用、ドットマトリクスは公式フォーラムで行側カソードのものを見つけピン配置も一致していたので代用しました。

保護抵抗は適当に330Ωを突っ込んであります。


2019年5月21日火曜日

Arduino+74HC595+8×8nマトリクスLED(1)

なんとなくではあるものの、マトリクス1つならばスクロールもできるようになったので、マトリクスと74HC595(秋月のSN74HC595N)をもう一つ足して8×16で遊んでみることに。
【参考文献】
全ての発端。マトリクスとシフトレジスター。これがいいんです。
https://hadatti.files.wordpress.com/2012/02/8x8matrix_logic_circuit.jpg

ドットマトリクスのピン配置(たまたま同じ型番使ってる方発見。データシートだけではどこが一番ピンかわかんねーんですわ)
http://akagi13213.hatenablog.com/entry/2017/10/22/224406

8*8ドットマトリクス用美咲フォント(これがなければウンザリするほどフォントを手打ちしなきゃいけません。素晴らしいものを公開してくださってありがとう。感謝感激)
http://nuneno.cocolog-nifty.com/blog/2016/03/arduino-e818.html

トランジスタアレイについては、どこのサイトで知ったか忘れました。Arduino直でマトリクス制御しているサイトで、8個分の電流をArduinoの入出力ピンで受け取るとやばいよ!回避するにはトランジスタアレイをつかうんやで、という表記をみたもので…


なぜか各ページのプログラムは参考にせず、自力で書きました(笑)
ただしフォント周りはライブラリになっていたのでさくっと使わせていただきましたよ。


2019年5月14日火曜日

Arduino始めました。

いまさらですが、Arduinoを始めてみました。
この日記では、個人的な覚書に終始して、具体的なプログラムとか回路とかには触れないつもりです。あしからず。

某キャットアイの某キネティックなテールライトのような、ブレーキ掛けたっぽい挙動の時に明るく光るテールライトを作る、という目標を立てました。一応ですよ、一応。


で、初心者はどちらかというと回路とプログラミングのお勉強を兼ねたLEDチカチカということになっています。1本から複数本へと順調にレベルアップし、複数桁の7セグへと順当進化しました。ダイナミック点灯なる概念が出てきてなんとかクリアしたのですが、Arduinoからの信号線が大量に出ていくことになりますね。7セグ(実は小数点込で8セグ)と3桁ですので8+3=11本の信号線が必要になりますが、桁増やしていくといずれArduinoのピンが足りなくなる、機能を維持しつつ減らすことできないの?という疑問が。

調べてみるとまず3to8ラインデコーダという、3ビットを10進数0~7へ置き換えるIC(74HC138)を発見。これを使うとそれなりに信号線が削減できてご満悦、とはならず、原理的に複数セグメントを同時に選択することができないので、せいぜい表示桁の切り替え側に使うことぐらいしかできませんでした。それでも8桁ダイナミック点灯時は、桁切り替えの制御ピンは8本からそれぞれのビット用と制御用の計4本に半減できるのですが。

7セグの制御方法はそれなりに把握したので、次は8×8LEDマトリクスで電光掲示板をば。
これ8行×8列のLEDで構成されていて、8桁7セグと制御方法が似通っているんですね。
こうなると信号線を極力減らしたいということで、調べてみるとシフトレジスタ(SN74HC595N)というICがヒット。これはシリアルでビット列を投げると0~7のピンでそれぞれのビットに対応するものを個別にON/OFFできるというもの。(素直にパラレルに変換って書けばいいのに)
これを使えば同期用信号線と込々で3本ないし4本で制御できます。しかもこのIC自体を直列につないでいくと制御できるピン数が増えていくので願ったりかなったりです。
LED8本接続して使い方を実験してそれなりに把握しました。

これでLEDマトリクスもなんとか制御できそうだ、ということで入手してみると、LEDの配置とピン配置の対応がぐちゃぐちゃになっていました…なにこれ頭悪いorz

フォントを作って表示する関係で、できればシフトレジスタに投げるビット列はマトリックス内のLEDの配置に合わせたものにしたい、のですが…

このぐちゃぐちゃ問題、巷ではどう解決しているんでしょうね?ネット上の作例あたってみても、ぐちゃぐちゃ問題の解決方法はなんか触れられていないような気がするんです。

ESP32 Devkit C での疑問点

 前回の投稿から放置状態にあった当ブログですが、再び何かしら作ろうということで、スマートコンセントもどきに取り組んでいます。 回路なども一応動作するものができたのですが、ブレッドボードから移行するために基板に用意しておいたピンソケットにESP32を取り付けたところ、なぜか動作しま...