CLK(D10) : 아두이노와 모듈이 동기화 하는 핀
DIN(D12): 데이터를 주고 받는 핀
CS(D11): 칩을 선택하는 핀
ledcontrol
8X8 매트릭스의 (0,0)을 켰다가 끔.
1행의 왼쪽(0,0)부터 1행의 오른쪽으로 하나씩 켜지고 8개 다 켜지면 꺼짐
1행의 왼쪽(0,0)부터 1행의 오른쪽으로 하나씩 켜지고 8개 다 켜지면
2행의 왼쪽(1,0)부터 2행의 오른쪽.... 8행의 제일 오른쪽(7,7)까지 다 켜지면 꺼짐(lc.clearDisplay(0);)
1행부터 8행까지 켜졌다가 1행부터 8행까지 순차적으로 꺼짐
void loop() {
byte value = B11111111;
int i;
for (i = 0; i < 8; i++) {
lc.setRow(0, i, value);
delay(500);
}
for (i = 0; i < 8; i++) {
lc.setRow(0, i, 0);
delay(500);
}
}
왼쪽(1열)부터 세로로 불이 켜지고 8열까지 켜지면 1열부터 꺼짐
void loop() {
byte value = B11111111;
int i;
for (i = 0; i < 8; i++) {
lc.setColumn(0, i, value);
delay(500);
}
for (i = 0; i < 8; i++) {
lc.setColumn(0, i, 0);
delay(500);
}
}
웃는 얼굴예제로 lc.setColumn( ) 실행할 경우 반시계방향으로 90도 회전한 결과가 나옴
void loop() {
byte a[8] = {
B00000000,
B00100100,
B00100100,
B00000000,
B01111110,
B01111110,
B00111100,
B00000000
};
int i;
for (i = 0; i < 8; i++) {
lc.setColumn(0, i, a[i]);
delay(500);
}
delay(500);
lc.clearDisplay(0);
delay(500);
}
배열을 왼쪽으로 회전하면
왼쪽(1열)부터 오른쪽(8열)로 하나씩 켜짐
void loop() {
byte a[8] = {
0b00000000,
0b00001100,
0b01101110,
0b00001110,
0b00001110,
0b01101110,
0b00001100,
0b00000000
};
int i;
for (i = 0; i < 8; i++) {
lc.setColumn(0, i, a[i]);
delay(500);
}
delay(500);
lc.clearDisplay(0);
delay(500);
}
2차배열을 이용한 표정바꾸기 (위 표정바꾸기 예제와 동일 결과)
#include "LedControl.h"
LedControl lc=LedControl(12,10,11,1);
byte a[][8]={
{
0b00000000,
0b00100100,
0b00100100,
0b00000000,
0b01111110,
0b01111110,
0b00111100,
0b00000000
},{
0b00000000,
0b11100111,
0b01000010,
0b00000000,
0b00000000,
0b00111100,
0b01000010,
0b10000001
},{
0b10000001,
0b01000010,
0b00100100,
0b00000000,
0b00111100,
0b01111110,
0b11111111,
0b00000000
}
};
void setup() {
lc.shutdown(0,false);
lc.setIntensity(0,8);
lc.clearDisplay(0);
}
void loop() {
for(int i=0;i<3;i++){
for(int j=0;j<8;j++){
lc.setRow(0,j,a[i][j]);
}
delay(1000);
}
}
<<(비트연산자) 각 비트값이 왼쪽으로 한 자리씩 이동하고 마지막 오른쪽 끝자리는 "0"으로 채우는 동작
void loop() {
byte data = B00000001;
int i;
for (i = 0; i < 8; i++) {
lc.setRow(0, 0, data);
data = data << 1;
delay(500);
}
}