아두이노
아두이노 디스플레이 출력 - FND(7-Segment)/ 도트매트릭스
ADELA_J
2023. 7. 17. 16:42
<캐소드 타입>
>> 내꺼는 여기서 불나옴
a를 high로 해야 Gnd로 전류가 흘러서 불이 나올 수 있음.
만약 Anode라면
pinMode(A, LOW)하고 5V로(출력)해야함
5V 전류가 흘러야 불이 나옴. 그래야 A2번을 LOW로 해야 전류가 흐를수있기때문에
<숫자 1 출력>
<0부터 9까지 순차적으로 출력하기>
<도트 매트릭스 디스플레이>
4행 LedControl name = LedControl(int DIN, int CLK, int CS, int Device);
> 연결된 DIN, CLK, CS의 숫자를 입력하고 (연결되어 있는 숫자 입력) Device에 연결되어있는 매트릭스 개수를 입력한다.
7행 shutdown (int addr, boolean state);
> 절전 모드를 제어하는 함수
addr = 연결된 매트릭스 주소, trun면 절전모드로 들어가 off, false면 절전모드 해제
<한개만 불켜지는거>
<한줄로 켜지는거>
10행. n번째 매트릭스 n번째 열, byte값으로 led제어
▶ 이렇게 써도 된다 : dot.setColumn(0,4,B11111111);
<하트 지나가는거 만들기>
더보기
#include <LedControl.h>
LedControl dot = LedControl(12,10,11,1);
byte heart[] = {
B01101100,
B11111110,
B11111110,
B11111110,
B01111100,
B00111000,
B00010000,
B00000000
};
void setup(){
dot.shutdown(0, false);
dot.setIntensity(0,5);
dot.clearDisplay(0);
}
void loop(){
dotmatrix();
delay(200);
}
void dotmatrix(){
for(int i=0; i<8; i++){
dot.setRow(0, i, heart[i]);
}
for (int i=0; i<8; i++){
if((heart[i]&0b10000000)>0){
heart[i]=heart[i]<<1;
heart[i]+=B00000001;
}
else{
heart[i] = heart[i]<<1;
}
}
}
<숫자 하나씩 출력>
더보기
#include <LedControl.h>
LedControl Dote = LedControl(12,10,11,1);
byte digits[10][8] = //0~9까지의 숫자를 byte 타입 2차원 배열로 구성
{ //10개의 숫자(digits), 8 byte의 신호
{ //숫자0
B00111000,
B01000100,
B01000100,
B01000100,
B01000100,
B01000100,
B01000100,
B00111000
},
{ //숫자1
B00010000,
B00110000,
B00010000,
B00010000,
B00010000,
B00010000,
B00010000,
B00111000,
},
{ //숫자2
B00111000,
B01000100,
B00000100,
B00000100,
B00001000,
B00010000,
B00100000,
B01111100
},
{ //숫자3
B00111000,
B01000100,
B00000100,
B00011000,
B00000100,
B00000100,
B01000100,
B00111000
},
{ //숫자4
B00000100,
B00001100,
B00010100,
B00100100,
B01000100,
B01111100,
B00000100,
B00000100
},
{ //숫자5
B01111100,
B01000000,
B01000000,
B01111000,
B00000100,
B00000100,
B01000100,
B00111000
},
{ //숫자6
B00111000,
B01000100,
B01000000,
B01111000,
B01000100,
B01000100,
B01000100,
B00111000
},
{ //숫자7
B01111100,
B00000100,
B00000100,
B00001000,
B00010000,
B00100000,
B00100000,
B00100000
},
{ //숫자8
B00111000,
B01000100,
B01000100,
B00111000,
B01000100,
B01000100,
B01000100,
B00111000
},
{ //숫자9
B00111000,
B01000100,
B01000100,
B01000100,
B00111100,
B00000100,
B01000100,
B00111000
}
};
void setup(){
Dote.shutdown(0, false); //절전모드로 (첫번째 모듈, 절전모드안한다)설정
Dote.setIntensity(0,7); //밝기를 조절(첫번째 모듈, 1~15까지 원하는 밝기)
Dote.clearDisplay(0); //LED를 초기화 설정(첫번째 모듈)
}
void loop(){
int i, j; //for문에 사용할 변수
for (i=0; i<10; i++){
for (j=0; j<8; j++) //j는 미리 제작한 비트맵의 y축 8비트 신호를 하나씩
{
Dote.setRow(0, j, digits[i][j]);
}
delay(500);
}
}
tinkercad.com