산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Manufacturing Technology >> 제조공정

아두이노 나노로 테트리스 게임 만들기: DIY 16×8 LED 매트릭스

부품 및 소모품

부품수량
아두이노 나노 R31
12mm 푸시버튼 스위치4좌/우/하/회전
74HC595 시프트 레지스터 (직렬-병렬)2열 제어용
슬라이드 스위치 (전원)1
5mm 황색 LED12816열 × 8행

필요 도구

앱 및 온라인 서비스

프로젝트 소개

직접 납땜한 16×8 LED 매트릭스(2개 74HC595로 열 제어, 8개 행 애노드 직접 구동)와 아두이노 나노로 테트리스 게임을 구현했습니다. 버튼 입력 시 비프음 발생.

하드웨어 구조

소스 코드

/* Author: Jae Yeong Bae, UBC ECE, 2013.01.18 */
unsigned char latchPin = 3, clockPin = 2, dataPin = 4, rowPin = 5;
long delays = 0; short delay_ = 500;
long bdelay = 0; short buttondelay = 150, btdowndelay = 30, btsidedelay = 80;
unsigned char blocktype, blockrotation;
int lines = 0;
boolean block[8][18], pile[8][16], disp[8][16];
boolean lib[10][5][7];  // 0~9 숫자 폰트 (게임오버 점수 표시용)

void setup() {
  // lib[] 배열에 0~9 숫자 5x7 패턴 정의
  // 랜덤 시드 생성 (아날로그 핀 노이즈 활용)
  // 타이머1 설정: 2kHz 인터럽트 → LEDRefresh() 호출
  // 핀 모드 설정, newBlock(), updateLED(), Serial.begin(9600);
}

void loop() {
  // 자동 낙하 타이밍
  if (delays < millis()) { delays = millis() + delay_; movedown(); }
  // 버튼 읽기 (아날로그 임계값 500)
  int button = readBut();
  if (button == 1) rotate();      // 상/회전
  if (button == 2) moveright();   // 우
  if (button == 3) moveleft();    // 좌
  if (button == 4) movedown();    // 하/즉시 낙하
}

// 블록 이동/회전/충돌 체크/라인 클리어/게임오버/점수 표시 등 구현
// LEDRefresh(): 타이머 인터럽트에서 행별 스캔 (핀 배선 오류 소프트웨어 보정 포함)

회로도

아두이노 나노로 테트리스 게임 만들기: DIY 16×8 LED 매트릭스

제조공정

  1. 아두이노 나노와 MPU-6050으로 실시간 자이로스코프 게임 만들기
  2. 아두이노 디지털 주사위: LCD 기반 랜덤 넘버 제너레이터 만들기
  3. DIY 아두이노 TV B-Gone: 모든 TV를 끄는 만능 리모컨
  4. DIY 아두이노 USB 게임 컨트롤러 - 나만의 고성능 게임패드 만들기
  5. 아두이노 나노와 MAX7219로 만드는 24x16 LED 퐁 게임 콘솔
  6. 픽셀 체이서: 아두이노 나노로 만든 인터랙티브 원탭 LED 게임
  7. 아두이노 8×8 LED 매트릭스 플립 시계 – DIY 실시간 시계 프로젝트
  8. 아두이노 나노와 네오픽셀 매트릭스로 만드는 네온 퐁 게임
  9. 아두이노 나노로 만드는 휴대용 가이거 계수기
  10. Never Ride Alone: 스마트 자전거 안전 시스템