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

Arduino Uno 로 MAX7219 (8X8) 도트 매트릭스 모듈과 MPU-6050 자이로센서를 사용해서 미로 탈출 게임 만들어 보기

by 오마이엔지니어 2020. 5. 9.
반응형

Arduino Uno 로 MAX7219 (8X8) 도트 매트릭스 모듈과 MPU-6050 자이로센서를 사용해서
자이로 센서로 미로를 탈출 하는 미로 탈출 게임을 만들어 보는 프로젝트입니다

 

 

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


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

 

 


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

 



MPU-6050 은 3축 자이로 센서와 3축 가속도 센서의 기능이 결합된 센서 모듈 입니다
AVR 또는 Arduino 의 I2C bus 인터페이스를 사용하며 DMP(Digital Motion Processer) 기능은
센서 값과 복잡한 계산을 할수 있으며 펌웨어로 프로그래밍 가능하게 합니다
Robot 자동화 시스템, GPS, 게임 등 다양한 용도로 활용이 가능합니다

 

<MPU-6050 센서 이미지>

 

 

사용된 부품

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

MPU-6050 자이로센서 모듈
점퍼케이블
미니 브래드보드



구성 배선도

 

 

  

사용된 예제소스  

MAX7219_MPU-6050_Escape from the maze.txt

 

사용된 라이브러리

LedControl.zip


LedControl 라이브러리를 첨부하였습니다

라이브러리 추가 방법은 Arduino IDE 설치하기 포스팅을 참조해 주세요


주의사항
위 첨부된 LedControl 라이브러리를 다운로드 해 설치해 주고 위 첨부된 "MAX7219_MPU-6050_Escape from the maze"
예제를 다운로드 해서 스케치 업로드 해 줍니다

배선시 MPU-6050 자이로센서의 SCL 과 SDA 이 아두이노의 A5, A4 에 제대로 연결 되었는지 확인합니다

예제코드를 살펴보면
#include <LedControl.h>
#include<Wire.h>
위 2가지 라이브러리를 사용합니다, Wire.h 는 아두이노 IDE 설치시 기본 포함되어 있는 라이브러리 입니다

const int PIN_LED_DIN = 12; // Pin LED DataIn
const int PIN_LED_CS = 11; // Pin LED LOAD(CS)
const int PIN_LED_CLK = 10; // Pin LED Clock
const int LEDS_AMOUNT = 1; // The number of leds chained, currently the code only supports one.
const int LEDS_BRIGHTNESS = 8; // Intensity of the led, a number between 1-15
매트릭스 모듈 아두이노 핀 세팅을 확인 할 수 있습니다

DIN-12, CS-11, CLK-10 순입니다
LED BRIGHTNESS (밝기)도 1~15까지 조정할 수 있습니다, 8로 설정되어 있습니다

const int MPU_ADDR = 0x68;  // I2C address of the MPU-6050
MPU-6050 I2C 주소는 0x68 입니다

/**
 * 's': Start position
 * 'f': Finish position
 * 'X': Wall
 * ' ': Movement zone
 */
시작위치 s, 종료위치 f, 벽은 X, 움직이는 공간은 ' ' 입니다

const char LEVELS[][LEVELS_ROWS][LEVELS_COLUMNS] = {
  // Level 1
  {
    {'X','s','X','X','X','X','X','X'},
    {'X',' ','X','X','X','X','X','X'},
    {'X',' ','X',' ',' ',' ',' ','X'},
    {'X',' ','X',' ','X','X',' ','X'},
    {'X',' ','X',' ','X','X',' ','X'},
    {'X',' ','X',' ','X','X',' ','X'},
    {'X',' ',' ',' ','X','X',' ','X'},
    {'X','X','X','X','X','X','f','X'},
  },
  // Level 2
  {
    {'X','X','X','X','X','X','s','X'},
    {'f',' ',' ','X','X','X',' ','X'},
    {'X','X',' ','X',' ',' ',' ','X'},
    {'X',' ',' ','X',' ','X','X','X'},
    {'X',' ','X','X',' ','X','X','X'},
    {'X',' ','X','X',' ','X','X','X'},
    {'X',' ',' ',' ',' ','X','X','X'},
    {'X','X','X','X','X','X','X','X'},
  },
  // Level 3
  {
    {'X','X','X','X','X','X','X','X'},
    {'X',' ',' ',' ','X',' ',' ','s'},
    {'X',' ','X',' ','X',' ','X','X'},
    {'X',' ','X',' ',' ',' ','X','X'},
    {'X',' ','X','X','X','X','X','X'},
    {'X',' ','X','X','X','X','X','X'},
    {'X',' ','X','X','X','X','X','X'},
    {'X','f','X','X','X','X','X','X'},
  }
  /*
  // Level Template
  {
    {'X','X','X','X','X','X','X','X'},
    {'X','X','X','X','X','X','X','X'},
    {'X','X','X','X','X','X','X','X'},
    {'X','X','X','X','X','X','X','X'},
    {'X','X','X','X','X','X','X','X'},
    {'X','X','X','X','X','X','X','X'},
    {'X','X','X','X','X','X','X','X'},
    {'X','X','X','X','X','X','X','X'},
  }
  */
};

레벨에 따라 미로가 위 처럼 변합니다
자이로 센서의 각도를 조정해서 미로 탈출 게임을 진행 할 수 있습니다

프로젝트 동영상

 

반응형

댓글