マイコンArduinoを使って電光掲示板を作る。
続き
先ず、新しいモジュールSLX-5024に必要なケーブル類を作りました。
制御用ケーブルと電源ケーブル
ブレッドボードに差し込めるようにゼムクリップを切ってはんだ付け
接続した様子
LED点灯用電源と制御用電源は共用にしました。
Arduinoとモジュールの接続
信号線は11本 + GND
結線
マイコン コネクタ
D0 1
D1 2
D2 3
D3 4
D4 5
D5 6
D6 8
D7 9
D8 10
D9 11
D10 12
GND 7
電源 コネクタ
GND 1
5V 2
5V 3
GND 4
GND 5
5V 6
試しに電源だけを繋いで見ました。
明るすぎて周りが真っ暗に写っています。
このモジュールは本体のみで点灯可能です。ただ、データを送って無いのででたらめな表示になります。
実験用のコントロールが出来るプログラム
// slx_5024
void setup() {
// put your setup code here, to run once:
pinMode(0,OUTPUT); // デジタルピンのD0を出力に設定する
pinMode(1,OUTPUT); // デジタルピンのD1を出力に設定する
pinMode(2,OUTPUT); // デジタルピンのD2を出力に設定する
pinMode(3,OUTPUT); // デジタルピンのD3を出力に設定する
pinMode(4,OUTPUT); // デジタルピンのD4を出力に設定する
pinMode(5,OUTPUT); // デジタルピンのD5を出力に設定する
pinMode(6,OUTPUT); // デジタルピンのD6を出力に設定する
pinMode(7,OUTPUT); // デジタルピンのD7を出力に設定する
pinMode(8,OUTPUT); // デジタルピンのD8を出力に設定する
pinMode(9,OUTPUT); // デジタルピンのD9を出力に設定する
pinMode(10,OUTPUT); // デジタルピンのD10を出力に設定する
digitalWrite(0,HIGH); // SE L 自動でRAM切り替わり
digitalWrite(1,LOW); // A/BB 書き込み用RAM選択
digitalWrite(2,LOW); // A3 アドレス
digitalWrite(3,LOW); // A2 アドレス
digitalWrite(4,LOW); // A1 アドレス
digitalWrite(5,LOW); // A0 アドレス
digitalWrite(6,LOW); // GREEN 緑データ
digitalWrite(7,LOW); // CLK クロック
digitalWrite(8,LOW); // WE 書き込み信号 Hで書き込み
digitalWrite(9,LOW); // RED 赤データ
digitalWrite(10,LOW); // ALE アドレスラッチ Hで有効
// アドレス0
digitalWrite(5,LOW); // A0 アドレス
digitalWrite(4,LOW); // A1 アドレス
digitalWrite(3,LOW); // A2 アドレス
digitalWrite(2,LOW); // A3 アドレス
digitalWrite(9,LOW); // RED 赤データ
digitalWrite(6,LOW); // GREEN 緑データ
clock_n(32); // クロック
digitalWrite(10,HIGH); // ALE アドレスラッチ Hで有効
digitalWrite(8,HIGH); // WE 書き込み信号 Hで書き込み
digitalWrite(8,LOW); // WE 書き込み信号 Hで書き込み
digitalWrite(10,LOW); // ALE アドレスラッチ Hで有効
// アドレス1
digitalWrite(5,HIGH); // A0 アドレス
digitalWrite(4,LOW); // A1 アドレス
digitalWrite(3,LOW); // A2 アドレス
digitalWrite(2,LOW); // A3 アドレス
digitalWrite(9,LOW); // RED 赤データ
digitalWrite(6,LOW); // GREEN 緑データ
clock_n(32); // クロック
digitalWrite(10,HIGH); // ALE アドレスラッチ Hで有効
digitalWrite(8,HIGH); // WE 書き込み信号 Hで書き込み
digitalWrite(8,LOW); // WE 書き込み信号 Hで書き込み
digitalWrite(10,LOW); // ALE アドレスラッチ Hで有効
// アドレス2
digitalWrite(5,LOW); // A0 アドレス
digitalWrite(4,HIGH); // A1 アドレス
digitalWrite(3,LOW); // A2 アドレス
digitalWrite(2,LOW); // A3 アドレス
digitalWrite(9,LOW); // RED 赤データ
digitalWrite(6,LOW); // GREEN 緑データ
clock_n(32); // クロック
digitalWrite(10,HIGH); // ALE アドレスラッチ Hで有効
digitalWrite(8,HIGH); // WE 書き込み信号 Hで書き込み
digitalWrite(8,LOW); // WE 書き込み信号 Hで書き込み
digitalWrite(10,LOW); // ALE アドレスラッチ Hで有効
// アドレス3
digitalWrite(5,HIGH); // A0 アドレス
digitalWrite(4,HIGH); // A1 アドレス
digitalWrite(3,LOW); // A2 アドレス
digitalWrite(2,LOW); // A3 アドレス
digitalWrite(9,LOW); // RED 赤データ
digitalWrite(6,LOW); // GREEN 緑データ
clock_n(32); // クロック
digitalWrite(10,HIGH); // ALE アドレスラッチ Hで有効
digitalWrite(8,HIGH); // WE 書き込み信号 Hで書き込み
digitalWrite(8,LOW); // WE 書き込み信号 Hで書き込み
digitalWrite(10,LOW); // ALE アドレスラッチ Hで有効
// アドレス4
digitalWrite(5,LOW); // A0 アドレス
digitalWrite(4,LOW); // A1 アドレス
digitalWrite(3,HIGH); // A2 アドレス
digitalWrite(2,LOW); // A3 アドレス
digitalWrite(9,LOW); // RED 赤データ
digitalWrite(6,LOW); // GREEN 緑データ
clock_n(32); // クロック
digitalWrite(10,HIGH); // ALE アドレスラッチ Hで有効
digitalWrite(8,HIGH); // WE 書き込み信号 Hで書き込み
digitalWrite(8,LOW); // WE 書き込み信号 Hで書き込み
digitalWrite(10,LOW); // ALE アドレスラッチ Hで有効
// アドレス5
digitalWrite(5,HIGH); // A0 アドレス
digitalWrite(4,LOW); // A1 アドレス
digitalWrite(3,HIGH); // A2 アドレス
digitalWrite(2,LOW); // A3 アドレス
digitalWrite(9,LOW); // RED 赤データ
digitalWrite(6,LOW); // GREEN 緑データ
clock_n(32); // クロック
digitalWrite(10,HIGH); // ALE アドレスラッチ Hで有効
digitalWrite(8,HIGH); // WE 書き込み信号 Hで書き込み
digitalWrite(8,LOW); // WE 書き込み信号 Hで書き込み
digitalWrite(10,LOW); // ALE アドレスラッチ Hで有効
// アドレス6
digitalWrite(5,LOW); // A0 アドレス
digitalWrite(4,HIGH); // A1 アドレス
digitalWrite(3,HIGH); // A2 アドレス
digitalWrite(2,LOW); // A3 アドレス
digitalWrite(9,LOW); // RED 赤データ
digitalWrite(6,LOW); // GREEN 緑データ
clock_n(32); // クロック
digitalWrite(10,HIGH); // ALE アドレスラッチ Hで有効
digitalWrite(8,HIGH); // WE 書き込み信号 Hで書き込み
digitalWrite(8,LOW); // WE 書き込み信号 Hで書き込み
digitalWrite(10,LOW); // ALE アドレスラッチ Hで有効
// アドレス7
digitalWrite(5,HIGH); // A0 アドレス
digitalWrite(4,HIGH); // A1 アドレス
digitalWrite(3,HIGH); // A2 アドレス
digitalWrite(2,LOW); // A3 アドレス
digitalWrite(9,LOW); // RED 赤データ
digitalWrite(6,LOW); // GREEN 緑データ
clock_n(32); // クロック
digitalWrite(10,HIGH); // ALE アドレスラッチ Hで有効
digitalWrite(8,HIGH); // WE 書き込み信号 Hで書き込み
digitalWrite(8,LOW); // WE 書き込み信号 Hで書き込み
digitalWrite(10,LOW); // ALE アドレスラッチ Hで有効
// アドレス8
digitalWrite(5,LOW); // A0 アドレス
digitalWrite(4,LOW); // A1 アドレス
digitalWrite(3,LOW); // A2 アドレス
digitalWrite(2,HIGH); // A3 アドレス
digitalWrite(9,LOW); // RED 赤データ
digitalWrite(6,LOW); // GREEN 緑データ
clock_n(32); // クロック
digitalWrite(10,HIGH); // ALE アドレスラッチ Hで有効
digitalWrite(8,HIGH); // WE 書き込み信号 Hで書き込み
digitalWrite(8,LOW); // WE 書き込み信号 Hで書き込み
digitalWrite(10,LOW); // ALE アドレスラッチ Hで有効
// アドレス9
digitalWrite(5,HIGH); // A0 アドレス
digitalWrite(4,LOW); // A1 アドレス
digitalWrite(3,LOW); // A2 アドレス
digitalWrite(2,HIGH); // A3 アドレス
digitalWrite(9,LOW); // RED 赤データ
digitalWrite(6,LOW); // GREEN 緑データ
clock_n(32); // クロック
digitalWrite(10,HIGH); // ALE アドレスラッチ Hで有効
digitalWrite(8,HIGH); // WE 書き込み信号 Hで書き込み
digitalWrite(8,LOW); // WE 書き込み信号 Hで書き込み
digitalWrite(10,LOW); // ALE アドレスラッチ Hで有効
// アドレス10
digitalWrite(5,LOW); // A0 アドレス
digitalWrite(4,HIGH); // A1 アドレス
digitalWrite(3,LOW); // A2 アドレス
digitalWrite(2,HIGH); // A3 アドレス
digitalWrite(9,LOW); // RED 赤データ
digitalWrite(6,LOW); // GREEN 緑データ
clock_n(32); // クロック
digitalWrite(10,HIGH); // ALE アドレスラッチ Hで有効
digitalWrite(8,HIGH); // WE 書き込み信号 Hで書き込み
digitalWrite(8,LOW); // WE 書き込み信号 Hで書き込み
digitalWrite(10,LOW); // ALE アドレスラッチ Hで有効
// アドレス11
digitalWrite(5,HIGH); // A0 アドレス
digitalWrite(4,HIGH); // A1 アドレス
digitalWrite(3,LOW); // A2 アドレス
digitalWrite(2,HIGH); // A3 アドレス
digitalWrite(9,LOW); // RED 赤データ
digitalWrite(6,LOW); // GREEN 緑データ
clock_n(32); // クロック
digitalWrite(10,HIGH); // ALE アドレスラッチ Hで有効
digitalWrite(8,HIGH); // WE 書き込み信号 Hで書き込み
digitalWrite(8,LOW); // WE 書き込み信号 Hで書き込み
digitalWrite(10,LOW); // ALE アドレスラッチ Hで有効
// アドレス12
digitalWrite(5,LOW); // A0 アドレス
digitalWrite(4,LOW); // A1 アドレス
digitalWrite(3,HIGH); // A2 アドレス
digitalWrite(2,HIGH); // A3 アドレス
digitalWrite(9,LOW); // RED 赤データ
digitalWrite(6,LOW); // GREEN 緑データ
clock_n(32); // クロック
digitalWrite(10,HIGH); // ALE アドレスラッチ Hで有効
digitalWrite(8,HIGH); // WE 書き込み信号 Hで書き込み
digitalWrite(8,LOW); // WE 書き込み信号 Hで書き込み
digitalWrite(10,LOW); // ALE アドレスラッチ Hで有効
// アドレス13
digitalWrite(5,HIGH); // A0 アドレス
digitalWrite(4,LOW); // A1 アドレス
digitalWrite(3,HIGH); // A2 アドレス
digitalWrite(2,HIGH); // A3 アドレス
digitalWrite(9,LOW); // RED 赤データ
digitalWrite(6,LOW); // GREEN 緑データ
clock_n(32); // クロック
digitalWrite(10,HIGH); // ALE アドレスラッチ Hで有効
digitalWrite(8,HIGH); // WE 書き込み信号 Hで書き込み
digitalWrite(8,LOW); // WE 書き込み信号 Hで書き込み
digitalWrite(10,LOW); // ALE アドレスラッチ Hで有効
// アドレス14
digitalWrite(5,LOW); // A0 アドレス
digitalWrite(4,HIGH); // A1 アドレス
digitalWrite(3,HIGH); // A2 アドレス
digitalWrite(2,HIGH); // A3 アドレス
digitalWrite(9,LOW); // RED 赤データ
digitalWrite(6,LOW); // GREEN 緑データ
clock_n(32); // クロック
digitalWrite(10,HIGH); // ALE アドレスラッチ Hで有効
digitalWrite(8,HIGH); // WE 書き込み信号 Hで書き込み
digitalWrite(8,LOW); // WE 書き込み信号 Hで書き込み
digitalWrite(10,LOW); // ALE アドレスラッチ Hで有効
// アドレス15
digitalWrite(5,HIGH); // A0 アドレス
digitalWrite(4,HIGH); // A1 アドレス
digitalWrite(3,HIGH); // A2 アドレス
digitalWrite(2,HIGH); // A3 アドレス
digitalWrite(9,LOW); // RED 赤データ
digitalWrite(6,LOW); // GREEN 緑データ
clock_n(32); // クロック
digitalWrite(10,HIGH); // ALE アドレスラッチ Hで有効
digitalWrite(8,HIGH); // WE 書き込み信号 Hで書き込み
digitalWrite(8,LOW); // WE 書き込み信号 Hで書き込み
digitalWrite(10,LOW); // ALE アドレスラッチ Hで有効
digitalWrite(1,HIGH); // A/BB 書き込み用RAM選択
}
void loop() {
}
void clock() {
digitalWrite(7,HIGH); // クロック
digitalWrite(7,LOW); // クロック
}
void clock_n(int n) {
for (int i = 0;i < n;i++)
clock();
}
このプログラムを実行
アドレス0からアドレス15までアドレスが違うだけでやっていることは同じです。
digitalWrite(9,LOW); // RED 赤データ
digitalWrite(6,LOW); // GREEN 緑データ
両データともLをセットしてclock_n(32); // クロック、それを全列行っています。
クロックを送った後にALE、WEで書き込み操作
最後のdigitalWrite(1,HIGH); // A/BB 書き込み用RAM選択
即ち全面クリア。
基本このプログラムをfor文などで回すだけ。
実験
// アドレス0
digitalWrite(5,LOW); // A0 アドレス
digitalWrite(4,LOW); // A1 アドレス
digitalWrite(3,LOW); // A2 アドレス
digitalWrite(2,LOW); // A3 アドレス
digitalWrite(9,HIGH); // RED 赤データ
digitalWrite(6,LOW); // GREEN 緑データ
clock_n(32); // クロック
digitalWrite(10,HIGH); // ALE アドレスラッチ Hで有効
digitalWrite(8,HIGH); // WE 書き込み信号 Hで書き込み
digitalWrite(8,LOW); // WE 書き込み信号 Hで書き込み
digitalWrite(10,LOW); // ALE アドレスラッチ Hで有効
// アドレス0
digitalWrite(5,LOW); // A0 アドレス
digitalWrite(4,LOW); // A1 アドレス
digitalWrite(3,LOW); // A2 アドレス
digitalWrite(2,LOW); // A3 アドレス
digitalWrite(9,LOW); // RED 赤データ
digitalWrite(6,HIGH); // GREEN 緑データ
clock_n(32); // クロック
digitalWrite(10,HIGH); // ALE アドレスラッチ Hで有効
digitalWrite(8,HIGH); // WE 書き込み信号 Hで書き込み
digitalWrite(8,LOW); // WE 書き込み信号 Hで書き込み
digitalWrite(10,LOW); // ALE アドレスラッチ Hで有効
// アドレス0
digitalWrite(5,LOW); // A0 アドレス
digitalWrite(4,LOW); // A1 アドレス
digitalWrite(3,LOW); // A2 アドレス
digitalWrite(2,LOW); // A3 アドレス
digitalWrite(9,HIGH); // RED 赤データ
digitalWrite(6,HIGH); // GREEN 緑データ
clock_n(32); // クロック
digitalWrite(10,HIGH); // ALE アドレスラッチ Hで有効
digitalWrite(8,HIGH); // WE 書き込み信号 Hで書き込み
digitalWrite(8,LOW); // WE 書き込み信号 Hで書き込み
digitalWrite(10,LOW); // ALE アドレスラッチ Hで有効
// アドレス8
digitalWrite(5,LOW); // A0 アドレス
digitalWrite(4,LOW); // A1 アドレス
digitalWrite(3,LOW); // A2 アドレス
digitalWrite(2,HIGH); // A3 アドレス
digitalWrite(9,HIGH); // RED 赤データ
digitalWrite(6,LOW); // GREEN 緑データ
clock_n(16); // クロック
digitalWrite(9,LOW); // RED 赤データ
digitalWrite(6,HIGH); // GREEN 緑データ
clock_n(16); // クロック
digitalWrite(10,HIGH); // ALE アドレスラッチ Hで有効
digitalWrite(8,HIGH); // WE 書き込み信号 Hで書き込み
digitalWrite(8,LOW); // WE 書き込み信号 Hで書き込み
digitalWrite(10,LOW); // ALE アドレスラッチ Hで有効
それぞれ基本のプログラムと違うのは太字の部分だけです。
色々と書き替えて試して下さい。
次回はfor文などで小さくまとめていきます。
では、また。