[알찬 아두이노] M1588BR, DotMatrix 제어

M1588BR matrix

1588BR

  • 8*8 Dot matrix Display
  • Water Clear
  • Low Power
  • High brightness

 

 

 

핀 번호

뒷면

핀 번호가 24번까지 있으며  사용하는 핀은 18개입니다. ( 위쪽에 12개 아래쪽에 6개)

구조

 

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

부품 목록
부품명 아두이노 UNO R3

기능 아두이노 모듈
수량 1
판매처 https://kit128.com/goods/view?no=337

 

부품명 1588BR

기능 Dot Matrix 8*8
수량 1
8*8
핀 연결
순번 1588BR 핀 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

1588BR 은 좌측 하단이 1번 이고, 좌측 상단이 24번 입니다.

소스코드

최신 소스코드는 [파일]=>[예제]=> [WhiteAT UNO]=>[Starter] =>[03_1588BS_B]  에 있으며
라이브러리는 아두이노 개발환경  을 참조하세요

/*
1588BR 도트매트릭스 예제 입니다.
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 가 좌측으로 이동합니다.

제품 구매

HL-M1588BR 도트매트릭스는 https://kit128.com/goods/view?no=744 에서 구매하실 수 있습니다.

.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다