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

아두이노 터치 브레이크아웃 게임: 2.4" TFT LCD로 클래식 아케이드 구현

부품 및 소모품

아두이노 우노1개
AZ-Delivery 2.4 TFT LCD 터치 디스플레이 아두이노 쉴드1개 (ILI9341 드라이버, 8비트 병렬 통신, 240x320 해상도)

앱 및 온라인 서비스

프로젝트 소개

아두이노 우노와 TFT LCD 화면(240x320, ILI9341 드라이버, 8비트 병렬 통신)으로 만든 클래식 브레이크아웃 게임의 소형 버전입니다.

게임 설명

최대 8행의 벽돌을 가진 여러 스테이지가 있으며, 두 행마다 다른 색상, 프로그래밍 가능한 패턴으로 벽돌 켜기/끄기 가능. 단일 공을 사용하며, 터치 패널로 패들을 좌우 이동해 벽과 패들로 공을 튕겨 벽돌을 제거합니다. 패들이 공을 놓치면 턴을 잃습니다.

행마다 점수가 다릅니다: uint8_t pointsForRow[] = {7, 7, 5, 5, 3, 3, 1, 1};

각 레벨마다 패들 크기와 공 크기 설정 가능. 공을 칠 때마다 속도 증가, 각 스테이지별 초기 속도 설정 가능. 패들 어느 부분에 맞느냐에 따라 수평 속도도 변화.

새 스테이지 정의 예시:

아두이노 터치 브레이크아웃 게임: 2.4  TFT LCD로 클래식 아케이드 구현

조작 방법

양손으로 기기를 잡고 엄지로 화면을 터치해 패들을 좌우로 이동.

아두이노 터치 브레이크아웃 게임: 2.4  TFT LCD로 클래식 아케이드 구현

새 스테이지 정의

다음 구조체로 새 스테이지 정의:

typedef struct game_type {
  int ballsize, playerwidth, playerheight, exponent;
  int top, rows, columns, brickGap, lives;
  int wall[GAMES_NUMBER];
  int initVelx, initVely;
} game_type;

배열에 추가:

game_type games[GAMES_NUMBER] = {
  { 10, 60, 8, 6, 40, 8, 8, 3, 3, {0x18, 0x66, 0xFF, 0xDB, 0xFF, 0x7E, 0x24, 0x3C}, 28, -28 },
  // ... 더 많은 스테이지
};

벽 패턴

8x8 비트 배열로 정의. 예: {0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA}는 체커보드 패턴 생성 (좌우 대칭).

아두이노 터치 브레이크아웃 게임: 2.4  TFT LCD로 클래식 아케이드 구현

하드웨어

AZ-Delivery 2.4인치 TFT LCD, 저항식 4와이어 터치스크린, 내장 SD 카드 리더. 쉴드 형태라 아두이노 위에 꽂기만 하면 됩니다.

아두이노 터치 브레이크아웃 게임: 2.4  TFT LCD로 클래식 아케이드 구현

라이브러리

#include <Adafruit_GFX.h>    // 핵심 그래픽 라이브러리
#include <Adafruit_TFTLCD.h>
#include <TouchScreen.h>

터치스크린 캘리브레이션

MCUFriend_kbv 라이브러리의 "TouchScreen_Calibr_native" 예제로 캘리브레이션. 시리얼 모니터로 결과 확인 후 "PORTRAIT CALIBRATION" 값 사용.

const int XP=8, XM=A2, YP=A3, YM=9; // 240x320 ID=0x9341
const int TS_LEFT=118, TS_RT=931, TS_TOP=72, TS_BOT=887;
// x = map(p.x, LEFT=118, RT=931, 0, 240)
// y = map(p.y, TOP=72, BOT=887, 0, 320)

애니메이션

정적 속도를 사용해 위치 업데이트: pos += vel * dt;

부동소수점 연산 회피

ILI9341 해상도 240x320으로 픽셀 참조에 9비트씩 필요. 16비트 정수 사용 시 6비트가 소수부로 남음 (바이너리 지수 6). 0.000~0.63 범위 표현 가능. 정수 연산만으로 처리:

state.ballx += state.velx;
state.bally += state.vely;
checkBallCollisions(..., state.ballx >> game->exponent, state.bally >> game->exponent);

데모 모드

#define DEMO_MODE 주석 해제하면 패들이 공을 자동 추적.

즐기세요!

새 패턴과 레벨을 만들어 공유하세요!

코드

회로도

아두이노 터치 브레이크아웃 게임: 2.4  TFT LCD로 클래식 아케이드 구현

제조공정

  1. 아두이노 나노와 MPU-6050으로 실시간 자이로스코프 게임 만들기
  2. 아두이노 우노와 OLED 디스플레이로 클래식 퐁(Pong) 게임 만들기: 단계별 튜토리얼
  3. 아두이노로 휴대용 정전식 터치 피아노 만들기: 단계별 가이드
  4. DIY 아두이노 USB 게임 컨트롤러 - 나만의 고성능 게임패드 만들기
  5. 아두이노 나노와 MAX7219로 만드는 24x16 LED 퐁 게임 콘솔
  6. 거대 레고 미니피겨 아두이노 아나마트로닉스 오퍼레이션 게임 제작기
  7. USB-BLE 무선 MIDI 어댑터: 뮤지션을 위한 끊김 없는 연결
  8. 픽셀 체이서: 아두이노 나노로 만든 인터랙티브 원탭 LED 게임
  9. 아두이노 Due에서 음성 인식 및 합성 마스터하기
  10. 아두이노로 크롬 공룡 게임 자동화하기 – LDR과 파이썬으로 장애물 감지