あけましておめでとうございます。
今年もよろしくおねがいします。
さて、新年恒例の秋月電子のお楽しみ袋を買ってきました。
去年も買いましたがほとんど活用できなかったので
今年こそはと吟味して選びました。
まず、使えそうなキットorパーツがあること
表面実装パーツがないこと
去年の謎の鍵、バッテリーチャージャーがないこと
を条件に選定。
選んだのはこれ
絶対使わないであろう256MBのメモリがありますが...
去年に比べれば使えそうなものが多いです
ただ大量に入っていた両方ピンがさしてあり、曲がってる謎ソケットはどう使うのか全くわかりません。
さて、この袋で最も目玉のLEDマトリクスを使えるようにします。
これは2004年頃秋月で取り扱っていたキットのようです。
現在は取り扱っておらず取説もリンク切れです。
しかし、キットをまとめている人。
キットの制作者、当日使った人のページを元に調べます。
下記が参考にしたサイトです。
秋月電子 32x16ドットLEDマトリックス表示装置パーツセット
32×16ドットLED マトリクス表示装置パーツセット (K-00798)
USB-IO 32x16ドットLEDマトリクス接続 のりつぐのメモ/ウェブリブログ
まとめると
- キットの抵抗R2,R3はジャンパ
- R4,R5は390Ω、ただし全点灯はさけたほうがよい
- コネクタはCN1A,B,CN2A,B共通
- 基板を連結させれば16x64になる
- コネクタ配列は9,7,5,3,1
- 10,8,6,4,2
- コネクタ1 LED PWR -> Vout
- コネクタ2 Sin1 -> IO12
- コネクタ3 Sin2 -> IO13
- コネクタ4 Sin3 -> IO14
- コネクタ5 CLOCK -> IO16
- コネクタ6 LATCH -> IO15
- コネクタ7 STROBE -> IO2
- コネクタ8 IC PWR -> Vout
- コネクタ9 GND
- コネクタ10 GND
- 16chはクロック1マイクロ秒で設定
はんだで抵抗・ジャンパ・ピンソケットをつけていきます。
制御に使用するのはArduino 互換でもあり、無線LAN機能ももつESP WROOM 02
コネクタと接続します。VoutとVcc、GNDは別ブレッドボードで接続します。
arduinoはマイクロ秒のディレイが3マイクロ秒以上でないと安定しないみたいなので
とりあえず50マイクロ秒で設定する。
#include<esp8266wifi.h>
extern "C" {
#include "user_interface.h"
}
unsigned int sin1 = 0x0001;//縦
unsigned int sin2 = 0xffff;//横1
unsigned int sin3 = 0xffff;//横2
int shiftsin =0;
void setup() {
Serial.begin(115200);
//ピンをOutputモードに切り替え
pinMode(2, OUTPUT);//strobe
pinMode(12, OUTPUT);//sin1
pinMode(13, OUTPUT);//sin2
pinMode(14, OUTPUT);//sin3
pinMode(15, OUTPUT);//latch
pinMode(16, OUTPUT);//clock
//シリアルポートに文字列出力
Serial.println("setup OK");
}
void bitchecker(unsigned int sin0,int portnum){
sin0 &=0x0001;
if(sin0==1){
digitalWrite(portnum,HIGH);
}else{
digitalWrite(portnum,LOW);
}
}
// the loop function runs over and over again forever
void loop() {
unsigned int tmp_sin1=sin1;
unsigned int tmp_sin2=sin2;
unsigned int tmp_sin3=sin3;
digitalWrite(15,HIGH);//LatchをHIGH
digitalWrite(2,HIGH);
for(int i=0;i<16;++i){ //sin16bit書き込み
digitalWrite(16,LOW); //clock
bitchecker(tmp_sin1,12);
bitchecker(tmp_sin2,13);
bitchecker(tmp_sin3,14);
delayMicroseconds(50);
digitalWrite(16,HIGH);//clock
tmp_sin1 = tmp_sin1 >>1;
tmp_sin2 = tmp_sin2 >>1;
tmp_sin3 = tmp_sin3 >>1;
delayMicroseconds(50);
}
digitalWrite(15,LOW); //Latch low 書き込み
digitalWrite(2,LOW); //STLOBE HIGH
delayMicroseconds(50);
delay(500);
sin1 = sin1 <<1;
}
ESP-WROOM-02で実際に動かしてみた結果
これだけならarduinoでいいんだけど、
将来的にネットワークから文字を持ってきたいのでESPで実現した。
以上、ここまでありがとうございました。