본문 바로가기
Arduino(아두이노) 활용 강좌

Arduino Uno 로 HC-SR04 초음파 센서를 사용해서 거리에 따라 MAX7219 (8X8) 도트매트릭스 모듈에 디스플레이 출력해 보기

by 오마이엔지니어 2022. 12. 14.
반응형

Arduino Uno 로 MAX7219 (8X8) 도트매트릭스 모듈의 사용방법을 알아보고
추가로 HC-SR04 초음파 센서를 사용해서 거리에 따라 MAX7219 (8X8) 도트매트릭스 모듈에
디스플레이를 출력해 보는 프로젝트입니다

MAX7219 (8X8) 도트 매트릭스 모듈은 8-Digit LED 드라이버 MAX7219 칩
을 기반으로 제작된
8열 8행의 디스플레이 모듈 입니다
아두이노 나 AVR, PIC, STM 등의 마이크로 컨트롤러로 손쉽게 제어 가능하기 때문에 유용합니다
또한 입, 출력 인터페이스로 제작되어 여러개의 매트릭스 모듈을 연결해서 사용이 가능합니다

max7219.pdf
0.18MB

<8X8 매트릭스 모듈 이미지>

<8X8 매트릭스 모듈 상세사양>

HC-SR04 초음파 센서는 VCC, Trig, Echo, GND 4핀으로 구성된 초음파 원리를 이용해

거리를 측정 할 수 있는 센서입니다
측정거리는 20~5000mm 이며, 측정 유효 각도는 15도 이내 입니다
5V전원 공급후 Trig 핀을 통해 10us 의 펄스를 인가하면 센서는 8개의 40KHz 펄스를 발생시키고, 측정된 거리에 따라 150us~25ms의 
펄스를 Echo 핀을 통해 출력하는 방식 입니다


사용된 부품

Arduino Uno R3 (Italy)
MAX7219 8X8 도트매트릭스 모듈

HC-SR04 초음파센서 모듈
미니 브래드보드
5V 액티브 부저
점퍼케이블


사용된 키트
아두이노 도트 매트릭스 키트

구성 배선도 - 8X8 도트매트릭스 모듈 출력해 보기

구성 배선도 - HC-SR04 초음파 센서를 사용해서 거리에 따라 8X8 도트매트릭스 모듈 출력해 보기

사용된 라이브러리

LedControl.zip
0.01MB
ultrasonic.zip
0.00MB
binary.zip
0.00MB

위 3개의 라이브러리는 필수로 설치가 필요합니다
라이브러리 추가 방법은 Arduino IDE 설치하기 포스팅을 참조해 주세요

사용된 예제소스 

MAX7219.txt
0.00MB
MAX7219 HC-SR04_OX.txt
0.00MB
MAX7219 HC-SR04_SMILE.txt
0.00MB


주의사항
기본적으로 위 첨부된 3가지 라이브러리가 필수로 필요하며
HC-SR04 초음파 센서 같은 경우 중국에서 생산되어 유통되는 여러가지 버전이 있기때문에
믿을수 없는 사이트에서 구매한 확인되지 않은 버전의 제품을 사용할 경우
ultrasonic 라이브러리와 맞지 않아 제대로 동작 되지 않을수 있습니다

 

첫번째 MAX7219 예제는 아두이노로 간단하게 8X8 도트매트릭스 모듈의 출력 테스트를 해보는 예제입니다

#include "LedControl.h"
LedControl.h 라이브러리를 사용합니다

LedControl lc=LedControl(12,11,10,1);
10번핀은 CS, 11번핀은 CLK, 12번핀은 DIN 으로 배선합니다


void setup() {
lc.shutdown(0,false);
lc.setIntensity(0,8);
lc.clearDisplay(0);
}
8X8 도트매트릭스를 출력해 줍니다

void writeArduinoOnMatrix() 
void rows() 
void columns()

void single()
매트릭스를 행과열 그리고 1개씩 차례대로 출력해 줍니다


두번째 MAX7219 HC-SR04_OX 는 초음파 센서로 일정 거리안에 물체가 감지 되었을때 (O표시)와
그렇지 않을때 (X표시) 8X8 도트릭스 모듈이 출력 되는 예제입니다 

#include <Ultrasonic.h>
#include "LedControl.h"
#include "binary.h"
위 3가지 라이브러리를 사용합니다

Ultrasonic sensor (6,5);// PIN 6 = TRIG // PIN 5 = ECHO
LedControl lc = LedControl(8,10,9,1);// DIN = 8  // CS = 9 // CLK = 10
int Buzzer = 3; // define Buzzer pin

초음파센서 TRIG핀은 6번, ECHO핀은 5번
8X8 도트매트릭스 모듈 DIN은 8번, CS는 9번, CLK는 10번
액티브 부저는 3번 핀으로 배선합니다

unsigned long delaytime=1000;
딜레이 타임입니다

byte ff[8]= {  
B00111100,
B01000010,
B10000001,
B10000001,
B10000001,
B10000001,
B01000010,
B00111100
};

byte ft[8]= {
B10000001,
B01000010,
B00100100,
B00011000,
B00011000,
B00100100,
B01000010,
B10000001};

위 부분은 8X8 도트매트릭스를 byte 로 세팅해 주는 부분입니다

int dist = sensor.Ranging(CM);
if(dist<30){
하단 부분에서 if 문을 사용할것이므로 거리에 따라 물체가 30cm 안에 감지 되었을때 byte ff[8]
물체가 30cm 안에 감지되지 않았을때 byte ft[8] 로 2가지로 나눠서 세팅되게 됩니다
(dist<30 부분을 수정해서 30cm을 원하는 거리로 수정 할수 있습니다)

아래 링크의 LED Matrix Editor 사이트를 이용해서 다양한 모양을 btye로 변환할 수 있습니다
https://xantorohara.github.io/led-matrix-editor/

원하는 모양으로 매트릭스를 체크하고 Insert를 눌러서 아두이노 코드로 변환후 
As byte arrays 를 체크하면 바이트로 변환된 값을 얻을수 있습니다
테스트 할때 모양이 안 맞으면 좌우로 회전 시켜서도 변환값을 얻을수 있습니다 

LED Matrix Editor 사이트 는 구글에 검색하면 많은 사이트가 있으니 다른 사이트를 이용해도 됩니다

void setup() {
  lc.shutdown(0,false);
  lc.setIntensity(0,8);
  lc.clearDisplay(0);  
  pinMode(Buzzer, OUTPUT); // Buzzer pin as output
}
셋업에서 8X8 도트매트릭스 모듈을 출력하고, 부저역시 인식 시킵니다

void loop(){
 int dist = sensor.Ranging(CM);
  if(dist<30){
      lc.setRow(0,0,ff[0]);
  lc.setRow(0,1,ff[1]);
  lc.setRow(0,2,ff[2]);
  lc.setRow(0,3,ff[3]);
  lc.setRow(0,4,ff[4]);
  lc.setRow(0,5,ff[5]);
  lc.setRow(0,6,ff[6]);
  lc.setRow(0,7,ff[7]);
  digitalWrite(Buzzer,HIGH);
루프에서 if문을 사용해서 거리에 따라 물체가 30cm 안에 감지 되었을때
byte ff[8] 이 도트 매트릭스에 출력 되고 부저가 HIGH 로 켜집니다


  }else{
      lc.setRow(0,0,ft[0]);
  lc.setRow(0,1,ft[1]);
  lc.setRow(0,2,ft[2]);
  lc.setRow(0,3,ft[3]);
  lc.setRow(0,4,ft[4]);
  lc.setRow(0,5,ft[5]);
  lc.setRow(0,6,ft[6]);
  lc.setRow(0,7,ft[7]);
  digitalWrite(Buzzer,LOW);
else로 그밖의 거리에 따라 물체가 30cm 안에 감지 되지 않았을때
byte ft[8] 이 도트 매트릭스에 출력 되고 부저가 LOW 로 꺼집니다


  }delay(100);
}
딜레이 타임입니다

MAX7219 HC-SR04_SMILE 예제는 초음파 센서로 일정 거리안에 물체가 감지 되었을때 (웃는얼굴)와
그렇지 않을때 (찡그린얼굴) 8X8 도트릭스 모듈이 출력 되는 예제입니다
byte 부분만 LED Matrix Editor 사이트를 이용해서 바꿔주었고 배선 및 테스트는 동일합니다

프로젝트 동영상 - 8X8 도트매트릭스 모듈 출력해 보기


프로젝트 동영상 - HC-SR04 초음파 센서를 사용해서 거리에 따라 8X8 도트매트릭스 모듈 출력해 보기


이렇게 아두이노로 간단하게 8X8 도트매트릭스 모듈과 Hc-SR04 초음파 센서를 사용해서
일정거리 물체 감지시 매트릭스 모듈에 자신이 원하는 다양한 모양을 출력할 수 있습니다

아래 링크의 LED Matrix Editor 사이트를 이용해서 다양한 모양을 btye로 변환할 수 있습니다

https://xantorohara.github.io/led-matrix-editor/

반응형

댓글