본문 바로가기
아두이노

아두이노 러닝맨 만들기

by 모빌리티키즈 2024. 10. 7.
728x90
반응형

휴대용 아두이노 게임 콘솔 - 1부 - 러닝맨 만들기

안녕하세요, 여러분! 오늘은 16x2 LCD와 2개의 버튼을 사용하여 휴대용 Arduino 게임 콘솔을 만드는 방법을 소개하려고 합니다. 이 프로젝트에서는 Endless Runner 게임을 배경 음악과 음향 효과와 함께 실행할 수 있는 휴대용 게임기를 만들어 볼 거예요. Temple Run, Jetpack Joyride, Canabalt와 같은 인기 있는 모바일 게임을 떠올리시면 됩니다. 😊

16x2 LCD 및 2개의 버튼이 있는 휴대용 Arduino 게이머를 만들고 배경 음악과 음향 효과로 Endless Runner 게임을 실행하세요!

 

프로젝트 개요

이 게임은 조슈아 브룩스(Joshua Brooks)의 Endless Runner 코드를 기반으로 하며, 배경 음악, 음향 효과, 최고 점수 추적 기능을 추가했습니다. 또한 다양한 배경 음악 간에 전환할 수 있는 기능도 포함되어 있어요. 스프라이트를 업데이트하여 나무와 지팡이를 든 소년이 러너로 등장하는 테마를 더 숲 같게 만들었습니다. 모든 것이 휴대용 인클로저에 들어 있어 언제든지 쉽게 게임을 즐길 수 있습니다.

필요한 부품

  • Arduino Uno
  • 16x2 LCD 화면
  • 2개의 버튼
  • 2개의 피에조 스피커
  • ProtoStax_MmlMusicPlayer 라이브러리

주요 기능

  1. 배경 음악 및 음향 효과: ProtoStax_MmlMusicPlayer Arduino 라이브러리를 사용하여 배경 음악과 음향 효과를 백그라운드에서 재생합니다. 메인 루프에서는 버튼 누름 처리와 게임 진행을 담당합니다.
  2. 스프라이트 업데이트: 5x8 캐릭터로 해리 포터를 만들어 테마를 더 숲 같게 만들었습니다.
  3. 휴대용 인클로저: 모든 부품을 휴대용 인클로저에 넣어 언제든지 게임을 즐길 수 있습니다.

음악 재생

음악은 MML 표기법으로 PROGMEM 또는 SRAM에 저장된 문자열로 지정됩니다. 이를 통해 자신이 좋아하는 음악으로 쉽게 바꾸거나 목록에 추가할 수 있습니다. 사용할 수 있는 MML 점수 라이브러리가 많이 있으므로, 이를 활용해 자신만의 터치를 추가할 수 있습니다.

스프라이트 수정

스프라이트를 수정하여 자신만의 게임 테마를 만들 수도 있습니다. 예를 들어, 해리 포터 테마를 적용하여 나무와 지팡이를 든 소년이 러너로 등장하게 할 수 있습니다.

다음 단계

이제 데모를 통해 최종 제품이 어떤 모습인지 살펴보겠습니다. 다음 포스트에서는 실제로 게임을 만드는 과정을 자세히 다룰 예정이니 기대해 주세요!

 

이제 만드는 방법부터 시작하겠습니다!

1단계: 하드웨어 준비

아래 비디오는 게임 상자를 조립하는 단계를 보여줍니다.

ProtoStax Portable Arduino Game Boy - 배경 음악 및 사운드 FX가 있는 무한 러너 게임 구축

저는 여기서 ProtoStax Enclosure 시스템을 사용하여 Game Boy를 휴대할 수 있게 만들고 Arduino Uno, LCD 화면, 버튼 및 피에조 스피커 등 모든 것을 담고 있습니다. ProtoStax는 모듈식 인클로저 시스템이며 조각으로 교체하거나 교체하여 기능과 주변 장치를 추가할 수 있습니다.

Arduino용 ProtoStax 인클로저로 시작하여 상단 플레이트를 ProtoStax LCD Kit V2(I2C LCD 모듈(포함)용 컷아웃 및 장착 구멍이 있음)로 교체했습니다. 그런 다음 Short-Side Wall 중 하나를 ProtoStax 키트로 교체하여 순간 푸시 버튼 스위치(2개의 패널 장착 푸시 버튼 스위치 포함)를 구입했습니다.

아래 회로도에 따라 회로를 배선하기 위해 몇 가지 점퍼 와이어를 사용했습니다. 나는 순간적인 푸시 버튼 스위치에 몇 개의 점퍼 와이어를 납땜했습니다. 나는 또한 두 개의 피에조 스피커를 프로토 보드의 작은 조각에 놓았기 때문에 와이어 리드가 매우 유연하기 때문에 모양을 유지하기 위해 약간의 무게가 있습니다. 접지 핀은 또한 두 피에조 사이(및 두 버튼 사이)에서 공유되어 Arduino에 대한 연결 수를 줄입니다.

모든 것을 닫기 전에 먼저 LCD 모듈의 전위차계를 조정하여 최상의 시청을 위해 대비를 조정하고 싶을 것입니다.

ProtoStax 휴대용 Arduino 게임 보이 서킷

2 단계 : 소프트웨어 준비

GitHub 페이지(아래 링크)의 예제 스케치를 사용할 수 있으며, 여기에는 실행 방법에 대한 지침도 있습니다.

스케치는 다음 라이브러리를 사용합니다.

  • ProtoStax_MmlMusicPlayer
  • MmlMusic (ProtoStax_MmlMusicPlayer MmlMusic 라이브러리를 확장하므로 기본 라이브러리가 필요함)
  • JC_Button(버튼 누름에 사용)
  • LiquidCrystal_I2C(LCD 디스플레이용)

위의 라이브러리도 설치하려면 지침을 따라야 합니다.

3 단계 : 실행

스케치를 컴파일하여 Arduino Game Boy에 업로드합니다. Button1(버튼이 더 가깝고 Arduino의 핀 2에 연결됨)을 눌러 게임을 시작합니다. 게임이 진행 중일 때 Button1은 다가오는 장애물(숲 속의 나무)을 피하기 위해 러너가 점프(지팡이를 든 해리 포터)하도록 하는 데 사용됩니다.

게임이 진행되는 동안 Button2(버튼은 사용자로부터 더 멀리 떨어져 있으며 Arduino의 핀 3에 연결됨)를 누르면 해리 포터, 왕좌의 게임 또는 젤다의 전설 간에 음악이 전환됩니다!

또한 러너가 점프하거나 러너가 장애물에 부딪혀 게임이 종료될 때 음향 효과가 있습니다.

주자가 장애물에 부딪힐 때까지 게임은 계속됩니다. 포인트는 거리에 따라 부여됩니다. 게임은 시작 시 최고 점수를 추적하고 표시합니다. 배경 음악이 반복되므로 게임을 하는 동안 계속 재생되어 높은 점수를 얻을 수 있습니다! 😊

보기에 가장 적합한 대비를 얻으려면 먼저 LCD 모듈의 전위차계를 조정해야 합니다. 1단계: 하드웨어 준비에서 이 작업을 수행해야 합니다.아직 수행하지 않았더라도 걱정하지 마십시오. ProtoStax 인클로저의 상판을 열어 LCD 모듈과 전위차계에 액세스할 수 있습니다 - 적절하다고 생각되는 대로 조정한 다음 모든 것을 다시 닫으십시오!

심층 분석:

음악 매크로 언어 - MML 및 ProtoStax_MmlMusicPlayer

이 프로젝트는 ProtoStax_MmlMusicPlayer 라이브러리를 사용하므로 Arduino에서 사운드/음악을 쉽게 재생할 수 있습니다.

MML(Music Macro Language) 구문으로 작성된 문자열로 재생할 전체 악보를 지정할 수 있습니다. 예를 들어 해리 포터 테마 음악의 점수는 다음과 같습니다.

const char harryPotter[] PROGMEM = {"T144 O6 r2 D4 G.4 A#8 A4 G2 >D4<  >C.2<   A.2  G.4 A#8 A4  F2 G#4  D.1   D4  G.4 A#8 A4  G2 >D4<  >F2< >E4<  >D#2< B4  >D#.4< >D8< >C#4<  C#2 B4  G.1  A#4  >D2< A#4  >D2< A#4  >D#2< >D4<  >C#2< A4  A#.4 >D8< >C#4<  C#2 D4  >D.1<   r4 A#4    >D2< A#4  >D2< A#4  >F2< >E4<  >D#2< B4  >D#.4< >D8< >C#4< C#2 A#4  G.1 r r r r r r r r"};

music2.play_P(harryPotter); // will play whole score in the background without blocking

T144는 템포를 지정하고 O6은 옥타브를 지정합니다. 그런 다음 음표는 CDEFGAB 등으로 표시되며 음표 지속 시간은 C8(8분음표), D4(4분음표) 등으로 표시됩니다. 나머지는 R/r2/R4 등으로 지정됩니다. 점선 음표는 C.2(점선 반음표)로 지정됩니다. ">"와 "<"는 한 옥타브를 올리거나 내리는 데 사용됩니다 - "C4 > C4 <"는 6번째 옥타브에서 C의 4분음을 연주한 다음 7번째 옥타브에서 C의 4분음을 연주합니다(마지막 <은 그 다음에 오는 모든 것에 대해 옥타브를 다시 6으로 떨어뜨립니다).

여러 개의 ProtoStax_MmlMusicPlayer 인스턴스를 만들어 여러 개의 점수를 재생할 수 있습니다 - 이 숫자는 사용 가능한 타이머의 수에 의해서만 제한됩니다. 전체 점수는 백그라운드에서 재생되므로 메인 루프에서 다른 활동을 할 수 있습니다. Arduino Game Boy에서는 Arduino Uno에 사용할 수 있는 두 개의 타이머가 있으므로 두 개의 인스턴스를 사용합니다. 첫 번째 인스턴스는 배경 음악을 재생합니다. 두 번째 인스턴스는 사운드 효과를 재생하는 데 사용됩니다 - 러너의 점프 소리 또는 장애물에 부딪힐 때 어-오 소리!

조슈아 브룩스(Joshua Brooks)의 무한 러닝맨 게임 엔진 수정

원본 코드의 기본 게임 엔진은 그대로 유지했지만 많은 수정을 가했습니다.

러너(Runner)와 터레인(Terrain)에 사용된 스프라이트를 업데이트했습니다. 이를 위해 LCD Custom Character Generator를 사용했습니다.

Run Position 1, Run Position 2, Jump, Jump Lower, Obstacle, Obstacle Left 및 Obstacle Right의 7가지 스프라이트가 사용됩니다. 러너가 해리 포터처럼 작은 지팡이를 들고 있도록했습니다! 😊 내 아마추어 시도를 용서하십시오! 장애물을 위해 금지된 숲과 같은 나무를 만들었습니다!

자신의 예술적 능력을 발휘하여 적절하다고 생각되는 대로 스프라이트를 수정하여 자신만의 게임 테마를 만들 수 있습니다! 이를 자신만의 테마 음악 및 사운드 FX와 결합하면 자신만의 재미있는 게임을 즐길 수 있습니다!

 
 
 
 
1 / 7  달리기 위치 1 - 지팡이를 든 소년!

게임이 진행 중일 때 재생할 배경 음악을 추가했습니다. 해리 포터, 왕좌의 게임 또는 젤다의 전설의 3가지 선택이 있습니다. 버튼 2의 누름을 추적하고 재생 중에 버튼 2를 누를 때마다 세 가지 배경 음악 선택 사이를 전환합니다.

또한 게임이 시작될 때, 러너가 점프할 때, 러너가 장애물에 부딪힐 때와 같은 다양한 지점에서 사운드 효과를 추가했습니다.

또한 최고 점수를 추적하고 플레이가 끝날 때 화면에 최고 점수를 표시합니다.

[재미있는 사실 - 속임수를 쓰고 "신 모드"로 들어가고 싶다면 자동 재생을 활성화하도록 PIN_AUTOPLAY 설정하기만 하면 됩니다!]

앞으로의 계획

항상 그렇듯이 자신의 추가 사항으로 이 프로젝트를 어떻게 발전시킬 수 있는지에 대해 이야기하면서 마무리하고 싶습니다! 코드 샘플을 가지고 놀고 코드를 이해하는 데 익숙해지면 더 많은 작업을 수행하여 학습을 확장하는 것이 항상 좋습니다.

다음은 이 프로젝트를 진행할 수 있는 방법에 대한 몇 가지 제안입니다.

  • LCD Custom Character Generator를 사용하여 나만의 스프라이트를 만들어 나만의 게임 변형을 만들 수 있습니다.
  • 연주되는 MML 문자열을 직접 만들어 배경 음악과 음향 효과를 만들 수 있습니다.
  • 플레이어가 최고 점수를 기록했을 때 음향 효과를 추가하십시오 - 이것은 게임 플레이 중이거나 게임이 끝날 때일 수 있습니다! 게임 플레이 중에는 플레이어가 장애물에 부딪히는 데 방해가 되지 않도록 짧은 사운드 효과를 고려하는 것이 좋습니다! 😂 게임 플레이 중에 짧은 사운드 효과를 추가하고 게임이 끝난 후 더 긴 축하 음악을 추가할 수 있습니다!
  • 플레이어가 높은 점수를 기록하고 게임이 종료되면 축하 음악과 함께 축하 배너를 표시합니다.
  • 플레이어가 높은 점수를 받았을 때 자신의 이름을 입력할 수 있도록 합니다. 최고 점수와 플레이어 이름 목록이 있습니다.
  • Button2를 사용하여 게임 시작 전에 설정/최고 점수 메뉴 화면을 전환합니다 - 사용자는 이 설정 화면을 사용하여 배경 음악 및 사운드 FX 설정을 선택할 수 있습니다.
  • 두 개의 버튼을 사용하여 이동(위 또는 아래)을 제어하는 Flappy Bird와 같은 다른 게임을 만듭니다.
  • 버튼 2(또는 일련의 버튼 2 누름)를 사용하여 "신 모드"를 활성화하고 자동 재생을 활성화하고 점수를 높이십시오! 😊

이 프로젝트를 확장할 수 있는 다른 방법을 생각해 볼 수 있습니까? 아래에서 공유해 주세요! 😊 

즐거운 제작 되세요! 😊

 

playtunes_bb_8LmvMBVjiQ.jpg
0.56MB
ProtoStax_MmlMusicPlayer-main.zip
12.87MB
ProtoStaxEndlessRunnerGame.zip
9.54MB

728x90
반응형