

‘Turtle Smash’는 2.2인치 ILI9341 화면을 탑재하고, 범용 RP2040 USB 스틱과 6개의 푸시 버튼으로 구동되는 대포 게임입니다. 장갑을 입은 거북이가 대포를 조준하여 날아다니는 ‘전쟁 돼지’들을 쏩니다. 플레이어는 100발의 대포알을 받게 되며, 화면에는 남은 대포알 수와 명중 횟수가 표시됩니다. 펌웨어는 Raspberry Pi Pico SDK에서 C 언어로 작성되었으며, 디스플레이 라이브러리는 사용하지 않았습니다. 렌더러는 SPI를 통한 DMA를 사용하여 30fps로 실행됩니다.
이 프로젝트는 전자공학, 소프트웨어, AI가 어떻게 서로 연계되는지 배울 수 있는 기회입니다. 전자공학 측면에서는 디스플레이와 버튼을 마이크로컨트롤러에 연결하는 방법을 배우고, 각 핀의 기능을 파악하는 데 중점을 둡니다. 소프트웨어 측면에서는 디스플레이 드라이버, 렌더러, 게임 로직을 작성하고, 보드에서 실행하기 전에 에뮬레이터 화면을 통해 테스트해 봅니다.
AI 부분에서는 AI 코딩 도우미를 활용해 펌웨어를 작성하고 디버깅하는 방법을 배우게 되며, 우리가 지시를 내리고 하드웨어에서 결과를 확인한 뒤, AI가 잘못한 부분을 수정하는 과정을 거치게 됩니다.





디스플레이 핀 번호는 모듈의 실크스크린 표기를 따르며, 핀 1(VCC)은 정사각형 패드에 위치합니다.
RP2040 스틱에는 5V 및 GND 옆 왼쪽 가장자리에 3V3 패드가 하나 있으며, 디스플레이에는 이 전압이 두 번(VCC 및 LED) 필요합니다. 두 전선을 해당 패드에서 연결하십시오.
각 버튼은 하나의 GPIO를 GND에 연결합니다. 펌웨어가 내부 풀업 저항을 활성화하므로 별도의 저항이 필요하지 않습니다.
스틱에는 GND 패드가 하나 있으므로, 브레드보드 레일이나 동일한 패드에서 디스플레이의 접지와 버튼의 공통 단자를 연결하십시오. 스틱에 내장된 BOOT 또는 RST 버튼을 게임용 버튼으로 사용하지 마십시오.
이 명령어들은 데비안(Debian) 또는 우분투(Ubuntu) 리눅스용입니다. 다른 시스템에서는 패키지 관리자를 사용하여 동일한 도구를 설치하십시오.
1. 도구를 설치합니다:
2. Pico SDK 가져오기 (버전 2.3.1, 하위 모듈 포함):
3. 프로젝트 코드 가져오기:
4. 구축하기:
첫 번째 configure 실행 시 picotool도 함께 빌드되는데, 이 과정은 몇 분 정도 소요됩니다. 그 결과 build/src/tft_clock.uf2 파일이 생성됩니다.
선택 사항: 하드웨어 없이 에뮬레이트된 디스플레이를 상대로 게임을 실행하는 호스트 테스트를 수행합니다.
빌드하고 싶지 않다면, 다음 단계로 건너뛰고 이 Instructable에 첨부된 미리 빌드된 tft_clock.uf2 파일을 사용하세요.
유선 스틱을 컴퓨터에 연결하세요. 플래시할 때는 디스플레이를 연결하지 않아도 됩니다.
첫 번째 플래시:
BOOT 버튼을 사용하지 않는 이후 플래시: 스틱의 시리얼 포트를 1200보로 여세요. 스틱이 RPI-RP2로 재부팅되면 위와 같이 파일을 복사하세요.
또는 picotool로 불러오세요. picotool이 플래시하고 게임을 시작합니다:
몇 초 안에 타이틀 카드가 나타납니다. 화면이 흰색이나 검은색으로 유지되면 문제 해결 단계로 이동하세요.

타이틀 카드가 3초 동안 표시된 후, 4컷으로 구성된 스토리가 컷당 2초씩 표시되고, 그 후 게임이 시작됩니다.
공은 100개 주어집니다. 공을 맞히면 돼지가 터지고, 잠시 후 다시 나타납니다. 첫 번째 라운드에서는 사정거리를 파악할 수 있도록 점선으로 된 호가 표시됩니다.
핀과 SPI 속도는 src/config.h에 있습니다. 대포 각도, 파워, 돼지 속도, 중력 및 시작 볼은 src/game_config.h에 있습니다. 아트웍을 교체하려면 assets/ 폴더에 있는 PNG 파일을 편집하고 tools/ 폴더에 있는 생성기 스크립트를 다시 실행하세요. 호스트 측 테스트는 하드웨어 없이 에뮬레이트된 ILI9341을 상대로 게임을 실행합니다.
가장 좋아하는 AI 콘솔을 사용하여 게임 플레이를 변경하거나 완전히 새로운 게임을 만들어 보세요!
어떤 게임이든 배선은 동일합니다. 펌웨어만 변경하면 되며, AI 코딩 도우미가 이를 작성할 수 있습니다. Claude Code, Codex 또는 Cursor 등 원하는 도구를 사용하세요. 이 도구는 프로젝트 폴더를 읽고, 명령을 실행하며, 파일을 편집할 수 있어야 합니다.
1. 어시스턴트에서 프로젝트 폴더를 엽니다. README에는 하드웨어, 핀 및 빌드 명령이 설명되어 있으므로 어시스턴트가 먼저 읽을 수 있습니다. 어시스턴트가 무엇이든 변경하기 전에 README.md를 읽도록 지시하세요.
2. 어시스턴트가 볼 수 없는 것을 알려 줍니다. 보드에 무엇이 연결되어 있는지는 알려 주지 않으면 어시스턴트가 알 수 없습니다. 디스플레이, 6개의 버튼 및 USB 스틱의 핀을 명시하거나 README의 표를 가리켜 주세요. GPIO 핀은 3.3 V 전용이라고 알려 주세요.
3. 먼저 작은 변경을 요청하세요. 예:
4. 또는 새 게임을 요청하세요. 디스플레이 드라이버, 렌더러 및 버튼 입력은 이미 작성되어 있으므로 새 게임에는 새로운 게임 로직과 그림만 필요합니다. 예:
5. 보드에 손대기 전에 테스트하도록 요청하세요. 이 프로젝트에는 에뮬레이션된 디스플레이에서 게임을 실행하는 호스트 테스트가 있습니다. 어시스턴트에게 이 테스트가 계속 통과되도록 하고 변경할 때마다 펌웨어를 빌드하도록 지시하세요. 그런 다음 보드를 플래시하고 시험해 보세요.
6. 어시스턴트가 한 일을 확인하세요. 플래시하기 전에 변경 사항을 살펴보세요. 화면이 잘못 표시되거나 버튼이 아무 동작도 하지 않으면, 무엇이 보이는지와 어떤 버튼을 눌렀는지를 어시스턴트에게 정확히 알려 주세요. 어시스턴트는 여러분의 화면을 볼 수 없습니다.
7. 작업 내용을 저장하세요. 작동하는 변경 사항은 각각 커밋해 두세요. 그러면 다음 변경으로 게임이 망가졌을 때 되돌릴 수 있습니다.
어시스턴트가 틀리는 것: 핀 번호, 버튼 배선 및 직접 확인할 수 없는 물리적인 모든 사항입니다. 또한 틀린 내용을 확신에 차서 말하기도 합니다. 디스플레이와 보드가 최종 확인 수단입니다.
원문: https://www.instructables.com/Turtle-Smash-a-Cannon-Game-on-an-RP2040-and-a-22-T/