バイクとカメラと戯れ言

バイクはXJ600 diversion、カメラはDMC-CM1、旅の様子やそのほか日々のことを書きます

新年秋月電子お楽しみ袋のLEDマトリクスを動かしてみた

あけましておめでとうございます。

今年もよろしくおねがいします。

 

さて、新年恒例の秋月電子のお楽しみ袋を買ってきました。

去年も買いましたがほとんど活用できなかったので

今年こそはと吟味して選びました。

 

まず、使えそうなキットorパーツがあること

表面実装パーツがないこと

去年の謎の鍵、バッテリーチャージャーがないこと

を条件に選定。

 

選んだのはこれ


f:id:grassbigboy:20190107202020j:image

絶対使わないであろう256MBのメモリがありますが...

去年に比べれば使えそうなものが多いです

 


f:id:grassbigboy:20190107202251j:image

ただ大量に入っていた両方ピンがさしてあり、曲がってる謎ソケットはどう使うのか全くわかりません。

 

さて、この袋で最も目玉のLEDマトリクスを使えるようにします。

f:id:grassbigboy:20190107212709j:plainf:id:grassbigboy:20190107212738j:plain

 

これは2004年頃秋月で取り扱っていたキットのようです。

現在は取り扱っておらず取説もリンク切れです。

しかし、キットをまとめている人。

キットの制作者、当日使った人のページを元に調べます。

下記が参考にしたサイトです。

 

秋月電子 32x16ドットLEDマトリックス表示装置パーツセット

32×16ドットLED マトリクス表示装置パーツセット (K-00798)

電光掲示板 - sea side she side

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マイクロ秒で設定

 はんだで抵抗・ジャンパ・ピンソケットをつけていきます。

f:id:grassbigboy:20190107212906j:plainf:id:grassbigboy:20190107212951j:plainf:id:grassbigboy:20190107213107j:plain

 

制御に使用するのはArduino 互換でもあり、無線LAN機能ももつESP WROOM 02

コネクタと接続します。VoutとVcc、GNDは別ブレッドボードで接続します。

f:id:grassbigboy:20190107214337j:plainf:id:grassbigboy:20190107214356j:plain

 

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で実際に動かしてみた結果

www.youtube.com

 

 これだけならarduinoでいいんだけど、

将来的にネットワークから文字を持ってきたいのでESPで実現した。

 

以上、ここまでありがとうございました。