목차
1588BS
- 8*8 Dot matrix Display
- Water Clear
- Low Power
- High brightness

부품 뒷면의 핀 위치에 따라 A타입, B타입으로 나뉩니다.
A 타입
핀이 가운데 쪽에 있고 위쪽에 8개, 아래쪽에 8개 있는 형태가 A 타입입니다.

B 타입
핀 번호가 24번까지 있으며 위쪽에 12개 아래쪽에 6개 있는 형태가 B 타입입니다.

A타입. 1588BS, DotMatrix 제어
튓면
구조

8×8 도트 매트릭스에 HELLO 를 출력하는 실험입니다.

부품 목록
| 부품명 | 아두이노 UNO R3 |
|
|---|---|---|
| 기능 | 아두이노 모듈 | |
| 수량 | 1 | |
| 판매처 | https://kit128.com/goods/view?no=337 |
| 부품명 | 1588BS |
|
|---|---|---|
| 기능 | Dot Matrix 8*8 | |
| 수량 | 1 | |
| 8*8 |
핀 연결
| 1588BS 핀 | UNO R3 핀 |
|---|---|
| 1 | 5 |
| 2 | 4 |
| 3 | 3 |
| 4 | 2 |
| 5 | A0 |
| 6 | A1 |
| 7 | A2 |
| 8 | A3 |
| 9 | 13 |
| 10 | 12 |
| 11 | 11 |
| 12 | 10 |
| 13 | 9 |
| 14 | 8 |
| 15 | 7 |
| 16 | 6 |
1588BS 핀 는 좌측 하단이 1번 이고, 좌측 상단이 16번 입니다.

소스코드
최신 소스코드는 [파일]=>[예제]=> [WhiteAT UNO]=>[Starter] =>[03_1588BS] 에 있으며
라이브러리는 아두이노 개발환경 을 참조하세요
/*
알찬 아두이노 세트(입문자용) 예제중
1588BS A 타입 도트매트릭스 예제 입니다.
HELLO 를 TEXT를 이동하는 예제
알찬 아두이노 세트(입문자용): https://kit128.com/goods/view?no=133
출처: http://whiteat.com/Arduino
*/
#include <FrequencyTimer2.h>
#define SPACE { \
{0, 0, 0, 0, 0, 0, 0, 0}, \
{0, 0, 0, 0, 0, 0, 0, 0}, \
{0, 0, 0, 0, 0, 0, 0, 0}, \
{0, 0, 0, 0, 0, 0, 0, 0}, \
{0, 0, 0, 0, 0, 0, 0, 0}, \
{0, 0, 0, 0, 0, 0, 0, 0}, \
{0, 0, 0, 0, 0, 0, 0, 0}, \
{0, 0, 0, 0, 0, 0, 0, 0} \
}
#define H { \
{0, 1, 0, 0, 0, 0, 1, 0}, \
{0, 1, 0, 0, 0, 0, 1, 0}, \
{0, 1, 0, 0, 0, 0, 1, 0}, \
{0, 1, 1, 1, 1, 1, 1, 0}, \
{0, 1, 0, 0, 0, 0, 1, 0}, \
{0, 1, 0, 0, 0, 0, 1, 0}, \
{0, 1, 0, 0, 0, 0, 1, 0}, \
{0, 1, 0, 0, 0, 0, 1, 0} \
}
#define E { \
{0, 1, 1, 1, 1, 1, 1, 0}, \
{0, 1, 0, 0, 0, 0, 0, 0}, \
{0, 1, 0, 0, 0, 0, 0, 0}, \
{0, 1, 1, 1, 1, 1, 1, 0}, \
{0, 1, 0, 0, 0, 0, 0, 0}, \
{0, 1, 0, 0, 0, 0, 0, 0}, \
{0, 1, 0, 0, 0, 0, 0, 0}, \
{0, 1, 1, 1, 1, 1, 1, 0} \
}
#define L { \
{0, 1, 0, 0, 0, 0, 0, 0}, \
{0, 1, 0, 0, 0, 0, 0, 0}, \
{0, 1, 0, 0, 0, 0, 0, 0}, \
{0, 1, 0, 0, 0, 0, 0, 0}, \
{0, 1, 0, 0, 0, 0, 0, 0}, \
{0, 1, 0, 0, 0, 0, 0, 0}, \
{0, 1, 0, 0, 0, 0, 0, 0}, \
{0, 1, 1, 1, 1, 1, 1, 0} \
}
#define O { \
{0, 0, 0, 1, 1, 0, 0, 0}, \
{0, 0, 1, 0, 0, 1, 0, 0}, \
{0, 1, 0, 0, 0, 0, 1, 0}, \
{0, 1, 0, 0, 0, 0, 1, 0}, \
{0, 1, 0, 0, 0, 0, 1, 0}, \
{0, 1, 0, 0, 0, 0, 1, 0}, \
{0, 0, 1, 0, 0, 1, 0, 0}, \
{0, 0, 0, 1, 1, 0, 0, 0} \
}
byte col = 0;
byte leds[8][8];
// pin[xx] on led matrix connected to nn on Arduino (-1 is dummy to make array start at pos 1)
int pins[17] = { -1, 5, 4, 3, 2, 14, 15, 16, 17, 13, 12, 11, 10, 9, 8, 7, 6 };
// col[xx] of leds = pin yy on led matrix
int cols[8] = { pins[13], pins[3], pins[4], pins[10], pins[06], pins[11], pins[15], pins[16] };
// row[xx] of leds = pin yy on led matrix
int rows[8] = { pins[9], pins[14], pins[8], pins[12], pins[1], pins[7], pins[2], pins[5] };
const int numPatterns = 6;
byte patterns[numPatterns][8][8] = {
H, E, L, L, O, SPACE
};
int pattern = 0;
void setup() {
// sets the pins as output
for (int i = 1; i <= 16; i++) {
pinMode(pins[i], OUTPUT);
}
// set up cols and rows
for (int i = 1; i <= 8; i++) {
digitalWrite(cols[i - 1], HIGH);
}
for (int i = 1; i <= 8; i++) {
digitalWrite(rows[i - 1], HIGH);
}
clearLeds();
// Turn off toggling of pin 11
FrequencyTimer2::disable();
// Set refresh rate (interrupt timeout period)
FrequencyTimer2::setPeriod(2000);
// Set interrupt routine to be called
FrequencyTimer2::setOnOverflow(display);
setPattern(pattern);
}
void loop() {
pattern = ++pattern % numPatterns;
slidePattern(pattern, 60);
}
void clearLeds() {
// Clear display array
for (int i = 0; i < 8; i++) {
for (int j = 0; j < 8; j++) {
leds[i][j] = 0;
}
}
}
void setPattern(int pattern) {
for (int i = 0; i < 8; i++) {
for (int j = 0; j < 8; j++) {
leds[i][j] = patterns[pattern][i][j];
}
}
}
void slidePattern(int pattern, int del) {
for (int l = 0; l < 8; l++) {
for (int i = 0; i < 7; i++) {
for (int j = 0; j < 8; j++) {
leds[j][i] = leds[j][i + 1];
}
}
for (int j = 0; j < 8; j++) {
leds[j][7] = patterns[pattern][j][0 + l];
}
delay(del);
}
}
// Interrupt routine
void display() {
digitalWrite(cols[col], HIGH); // Turn whole previous column off
col++;
if (col == 8) {
col = 0;
}
for (int row = 0; row < 8; row++) {
if (leds[col][7 - row] == 1) {
digitalWrite(rows[row], HIGH); // Turn on this led
}
else {
digitalWrite(rows[row], LOW); // Turn off this led
}
}
digitalWrite(cols[col], LOW); // Turn whole column on at once (for equal lighting times)
}
결과
‘H’, ‘E’,’L’,’L’,’O’ TEXT 가 좌측으로 이동합니다.





결과 동영상
타입 B. 1588BS, DotMatrix 제어
뒷면

구조

8×8 도트 매트릭스에 HELLO 를 출력하는 실험입니다.

부품 목록
| 부품명 | 아두이노 UNO R3 |
|
|---|---|---|
| 기능 | 아두이노 모듈 | |
| 수량 | 1 | |
| 판매처 | https://kit128.com/goods/view?no=337 |
| 부품명 | 1588BS |
|
|---|---|---|
| 기능 | Dot Matrix 8*8 | |
| 수량 | 1 | |
| 8*8 |
핀 연결
| 순번 | 1588BS 핀 | UNO R3 핀 |
|---|---|---|
| 1 | 1 | A5 |
| 2 | 2 | A4 |
| 3 | 3 | A3 |
| 4 | 4 | A2 |
| 5 | 13 | 13 |
| 6 | 14 | 12 |
| 7 | 15 | 11 |
| 8 | 16 | 10 |
| 9 | 17 | 9 |
| 10 | 18 | 8 |
| 11 | 19 | 7 |
| 12 | 20 | 6 |
| 13 | 21 | 5 |
| 14 | 22 | 4 |
| 15 | 23 | 3 |
| 16 | 24 | 2 |
1588BS B 타입은 좌측 하단이 1번 이고, 좌측 상단이 24번 입니다.

소스코드
최신 소스코드는 [파일]=>[예제]=> [WhiteAT UNO]=>[Starter] =>[03_1588BS_B] 에 있으며
라이브러리는 아두이노 개발환경 을 참조하세요
/*
[WAT-AK133]알찬 아두이노 세트(입문자용) 예제중
1588BS B 타입 도트매트릭스 예제 입니다.
HELLO 를 TEXT를 이동하는 예제
알찬 아두이노 세트(입문자용): https://kit128.com/goods/view?no=133
출처: http://whiteat.com/Arduino
*/
#include <FrequencyTimer2.h>
#define SPACE { \
{0, 0, 0, 0, 0, 0, 0, 0}, \
{0, 0, 0, 0, 0, 0, 0, 0}, \
{0, 0, 0, 0, 0, 0, 0, 0}, \
{0, 0, 0, 0, 0, 0, 0, 0}, \
{0, 0, 0, 0, 0, 0, 0, 0}, \
{0, 0, 0, 0, 0, 0, 0, 0}, \
{0, 0, 0, 0, 0, 0, 0, 0}, \
{0, 0, 0, 0, 0, 0, 0, 0} \
}
#define H { \
{0, 1, 0, 0, 0, 0, 1, 0}, \
{0, 1, 0, 0, 0, 0, 1, 0}, \
{0, 1, 0, 0, 0, 0, 1, 0}, \
{0, 1, 1, 1, 1, 1, 1, 0}, \
{0, 1, 0, 0, 0, 0, 1, 0}, \
{0, 1, 0, 0, 0, 0, 1, 0}, \
{0, 1, 0, 0, 0, 0, 1, 0}, \
{0, 1, 0, 0, 0, 0, 1, 0} \
}
#define E { \
{0, 1, 1, 1, 1, 1, 1, 0}, \
{0, 1, 0, 0, 0, 0, 0, 0}, \
{0, 1, 0, 0, 0, 0, 0, 0}, \
{0, 1, 1, 1, 1, 1, 1, 0}, \
{0, 1, 0, 0, 0, 0, 0, 0}, \
{0, 1, 0, 0, 0, 0, 0, 0}, \
{0, 1, 0, 0, 0, 0, 0, 0}, \
{0, 1, 1, 1, 1, 1, 1, 0} \
}
#define L { \
{0, 1, 0, 0, 0, 0, 0, 0}, \
{0, 1, 0, 0, 0, 0, 0, 0}, \
{0, 1, 0, 0, 0, 0, 0, 0}, \
{0, 1, 0, 0, 0, 0, 0, 0}, \
{0, 1, 0, 0, 0, 0, 0, 0}, \
{0, 1, 0, 0, 0, 0, 0, 0}, \
{0, 1, 0, 0, 0, 0, 0, 0}, \
{0, 1, 1, 1, 1, 1, 1, 0} \
}
#define O { \
{0, 0, 0, 1, 1, 0, 0, 0}, \
{0, 0, 1, 0, 0, 1, 0, 0}, \
{0, 1, 0, 0, 0, 0, 1, 0}, \
{0, 1, 0, 0, 0, 0, 1, 0}, \
{0, 1, 0, 0, 0, 0, 1, 0}, \
{0, 1, 0, 0, 0, 0, 1, 0}, \
{0, 0, 1, 0, 0, 1, 0, 0}, \
{0, 0, 0, 1, 1, 0, 0, 0} \
}
byte col = 0;
byte leds[8][8];
// pin[xx] on led matrix connected to nn on Arduino (-1 is dummy to make array start at pos 1)
int pins[17] = { -1, A5, A4, A3, A2, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2 };
// col[xx] of leds = pin yy on led matrix
int cols[8] = { pins[12], pins[11], pins[10], pins[9], pins[8], pins[7], pins[6], pins[5] };
// row[xx] of leds = pin yy on led matrix
int rows[8] = { pins[16], pins[15], pins[14], pins[13], pins[4], pins[3], pins[2], pins[1] };
const int numPatterns = 6;
byte patterns[numPatterns][8][8] = {
H, E, L, L, O, SPACE
};
int pattern = 0;
void setup() {
// sets the pins as output
for (int i = 1; i <= 16; i++) {
pinMode(pins[i], OUTPUT);
}
// set up cols and rows
for (int i = 1; i <= 8; i++) {
digitalWrite(cols[i - 1], HIGH);
}
for (int i = 1; i <= 8; i++) {
digitalWrite(rows[i - 1], HIGH);
}
clearLeds();
// Turn off toggling of pin 11
FrequencyTimer2::disable();
// Set refresh rate (interrupt timeout period)
FrequencyTimer2::setPeriod(2000);
// Set interrupt routine to be called
FrequencyTimer2::setOnOverflow(display);
setPattern(pattern);
}
void loop() {
pattern = ++pattern % numPatterns;
slidePattern(pattern, 60);
}
void clearLeds() {
// Clear display array
for (int i = 0; i < 8; i++) {
for (int j = 0; j < 8; j++) {
leds[i][j] = 0;
}
}
}
void setPattern(int pattern) {
for (int i = 0; i < 8; i++) {
for (int j = 0; j < 8; j++) {
leds[i][j] = patterns[pattern][i][j];
}
}
}
void slidePattern(int pattern, int del) {
for (int l = 0; l < 8; l++) {
for (int i = 0; i < 7; i++) {
for (int j = 0; j < 8; j++) {
leds[j][i] = leds[j][i + 1];
}
}
for (int j = 0; j < 8; j++) {
leds[j][7] = patterns[pattern][j][0 + l];
}
delay(del);
}
}
// Interrupt routine
void display() {
digitalWrite(cols[col], HIGH); // Turn whole previous column off
col++;
if (col == 8) {
col = 0;
}
for (int row = 0; row < 8; row++) {
if (leds[col][7 - row] == 1) {
digitalWrite(rows[row], HIGH); // Turn on this led
}
else {
digitalWrite(rows[row], LOW); // Turn off this led
}
}
digitalWrite(cols[col], LOW); // Turn whole column on at once (for equal lighting times)
}
결과
‘H’, ‘E’,’L’,’L’,’O’ TEXT 가 좌측으로 이동합니다.





제품 구매
[WAT-AK133]알찬 아두이노 키트(초보자용) 은 https://kit128.com/goods/view?no=133 에서 구매하실 수 있습니다.
.


