아두이노

아두이노 디스플레이 출력 - FND(7-Segment)/ 도트매트릭스

ADELA_J 2023. 7. 17. 16:42

<캐소드 타입>

>> 내꺼는 여기서 불나옴

a를 high로 해야 Gnd로 전류가 흘러서 불이 나올 수 있음. 

 

 

만약 Anode라면

pinMode(A, LOW)하고 5V로(출력)해야함

5V 전류가 흘러야 불이 나옴. 그래야 A2번을 LOW로 해야 전류가 흐를수있기때문에

 

<숫자 1 출력>

 

<0부터 9까지 순차적으로 출력하기>

 

<도트 매트릭스 디스플레이>

 

출처 : https://blog.naver.com/boilmint7/221988414506

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