大型RGBマトリックスシールド(B) [K-SLD8X8RGB-B-S]

大型RGBマトリックスシールド(B) [K-SLD8X8RGB-B-S]
在庫切れ


●概要

●仕様・機能

大型RGBフルカラードットマトリックスKEM23088と74HC595を搭載したシールドキット、詳細マニュアルがついていないので掲載情報だけで作成できる方にお勧め、部品配置図、びんぼうでいいのに対応、動作電源:5V、基板寸法:60.0x60.0x1.2mm、回路図、お一人様2点限り、表記価格:1



<構成部品一覧>

1/6W抵抗(R1-R8):100Ω(x8)
1/6W抵抗(R9-R24):150Ω(x16)
1206チップコンデンサ(C1-C3):104(0.1 uF)(x3)
1206チップタンタルコンデンサ(TAJ/C4):106(10uF)〜107(100uF)(x1)
ピンヘッダ(2.54mm/単列):10P (x1)
ビンソケット(2.54mm):16P(x2)
チップIC (SOP-16):TM74HC595(x3)
RGBフルカラードットマトリックス(2.3"/8x8) :KEM23088B (x1)
基板:(x1)






びんぼうでいいのU3Rで動作を確認しております。




基板側/びんぼうでいいの側

5V/5V
GND/GND
9/D9
10/D10
11/D11


参考スケッチ

//Pin connected to ST_CP of 74HC595
int latchPin = 10;
//Pin connected to SH_CP of 74HC595
int clockPin = 11;
////Pin connected to DS of 74HC595
int dataPin = 9;

//holders for infromation you're going to pass to shifting function

byte dataRED;
byte dataGREEN;
byte dataBLUE;
byte dataArrayRED[10];
byte dataArrayGREEN[10];
byte dataArrayBLUE[10];

void setup() {

//set pins to output because they are addressed in the main loop

pinMode(latchPin, OUTPUT);
Serial.begin(9600);

//Arduino doesn't seem to have a way to write binary straight into the code
//so these values are in HEX. Decimal would have been fine, too.

dataArrayRED[0] = 0xFF; //11111111
dataArrayRED[1] = 0xFE; //11111110
dataArrayRED[2] = 0xFC; //11111100
dataArrayRED[3] = 0xF8; //11111000
dataArrayRED[4] = 0xF0; //11110000
dataArrayRED[5] = 0xE0; //11100000
dataArrayRED[6] = 0xC0; //11000000
dataArrayRED[7] = 0x80; //10000000
dataArrayRED[8] = 0x00;

//Arduino doesn't seem to have a way to write binary straight into the code

//so these values are in HEX. Decimal would have been fine, too.

dataArrayGREEN[0] = 0xFF; //11111111
dataArrayGREEN[1] = 0xFE; //01111111
dataArrayGREEN[2] = 0xFC; //00111111
dataArrayGREEN[3] = 0xF8; //00011111
dataArrayGREEN[4] = 0xF0; //00001111
dataArrayGREEN[5] = 0xE0; //00000111
dataArrayGREEN[6] = 0xC0; //00000011
dataArrayGREEN[7] = 0x80; //00000001
dataArrayGREEN[8] = 0x00;

dataArrayBLUE[0] = 0xFF;
dataArrayBLUE[1] = 0xFE;
dataArrayBLUE[2] = 0xFC;
dataArrayBLUE[3] = 0xF8;
dataArrayBLUE[4] = 0xF0;
dataArrayBLUE[5] = 0xE0;
dataArrayBLUE[6] = 0xC0;
dataArrayBLUE[7] = 0x80;
dataArrayBLUE[8] = 0x00;

//function that blinks all the LEDs
//gets passed the number of blinks and the pause time
blinkAll_2Bytes(2,1000);

}

void loop() {

for (int j = 0; j < 10; j++) {

//load the light sequence you want from array

dataRED = dataArrayRED[j];
dataGREEN = dataArrayGREEN[j];
dataBLUE = dataArrayBLUE[j];

//ground latchPin and hold low for as long as you are transmitting

digitalWrite(latchPin, 1);

//move 'em out

shiftOut(dataPin, clockPin, dataGREEN);
shiftOut(dataPin, clockPin, dataRED);
shiftOut(dataPin, clockPin, dataBLUE);

//return the latch pin high to signal chip that it

//no longer needs to listen for information

digitalWrite(latchPin, 0);
delay(300);
}
}

// the heart of the program

void shiftOut(int myDataPin, int myClockPin, byte myDataOut) {

// This shifts 8 bits out MSB first,
//on the rising edge of the clock,
//clock idles low
//internal function setup

int i=0;
int pinState;
pinMode(myClockPin, OUTPUT);
pinMode(myDataPin, OUTPUT);

//clear everything out just in case to
//prepare shift register for bit shifting

digitalWrite(myDataPin, 0);
digitalWrite(myClockPin, 0);

//for each bit in the byte myDataOut�
//NOTICE THAT WE ARE COUNTING DOWN in our for loop
//This means that %00000001 or "1" will go through such
//that it will be pin Q0 that lights.

for (i=7; i>=0; i--) {
digitalWrite(myClockPin, 0);

//if the value passed to myDataOut and a bitmask result
// true then... so if we are at i=6 and our value is
// %11010100 it would the code compares it to %01000000
// and proceeds to set pinState to 1.

if ( myDataOut & (1< pinState= 1;
}
else {
pinState= 0;
}

//Sets the pin to HIGH or LOW depending on pinState

digitalWrite(myDataPin, pinState);

//register shifts bits on upstroke of clock pin

digitalWrite(myClockPin, 1);

//zero the data pin after shift to prevent bleed through

digitalWrite(myDataPin, 0);

}

//stop shifting

digitalWrite(myClockPin, 0);

}

//blinks the whole register based on the number of times you want to
//blink "n" and the pause between them "d"
//starts with a moment of darkness to make sure the first blink
//has its full visual effect.

void blinkAll_2Bytes(int n, int d) {
digitalWrite(latchPin, 0);
shiftOut(dataPin, clockPin, 0);
shiftOut(dataPin, clockPin, 0);
digitalWrite(latchPin, 1);

delay(200);
for (int x = 0; x < n; x++) {

digitalWrite(latchPin, 0);
shiftOut(dataPin, clockPin, 255);
shiftOut(dataPin, clockPin, 255);
digitalWrite(latchPin, 1);
delay(d);
digitalWrite(latchPin, 0);
shiftOut(dataPin, clockPin, 0);
shiftOut(dataPin, clockPin, 0);
digitalWrite(latchPin, 1);
delay(d);

}

}