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

픽셀 체이서 게임

구성품 및 소모품

Arduino Nano R3
× 1
Adafruit NeoPixel 링:WS2812 5050 RGB LED
× 1
납땜 브레드보드 절반 크기
× 1
저항 10k 옴
× 1
SparkFun 푸시버튼 스위치 12mm
× 1
점퍼 와이어(일반)
× 1

앱 및 온라인 서비스

Arduino IDE

이 프로젝트 정보

저는 게임 개발자였으며 ​​모바일 게임 개발의 성배 중 하나는 최고의 "원 탭" 게임을 만드는 것입니다.

마이크로 컨트롤러, 버튼 및 일종의 시각적 피드백을 사용하여 멋진 원클릭 "물리" 게임을 만들 수 있는지 확인하고 싶었습니다.

PIXEL CHASER를 소개합니다!

상당히 쉬운 빌드이므로 바로 시작하겠습니다!

어떤 부품이 필요합니까?

다음이 필요합니다.

<울>
  • Arduino Nano(또는 2개의 사용 가능한 IO 핀이 있는 모든 마이크로 컨트롤러)
  • RGB "NeoPixel" 링 또는 스트립
  • 모멘터리 버튼
  • 10k 저항기
  • 브레드보드
  • 와이어
  • 1단계

    Nano를 브레드보드의 한쪽 끝에 놓고 USB 커넥터를 가장자리에 놓습니다.

    2단계

    쉽게 접근할 수 있도록 가능한 한 가장자리에 가깝게 버튼을 브레드보드의 다른 쪽 끝에 놓습니다.

    3단계

    버튼 측면 중 하나와 브레드보드의 GND 레일 사이에 10k 저항을 추가합니다. 이것은 버튼의 기본 LOW 상태가 됩니다. 버튼을 눌렀을 때 마이크로 컨트롤러 및 기타 구성 요소가 손상될 수 있으므로 저항을 사용하여 VCC와 GND 사이에 단락이 발생하지 않도록 합니다.

    4단계

    버튼 반대쪽의 점퍼선을 VCC 레일에 연결합니다. 버튼을 누르면 하이가 됩니다.

    5단계

    버튼의 GND 쪽에서 Nano의 D3에 점퍼선을 연결합니다. 버튼의 상태를 결정하기 위해 D3을 읽을 것입니다.

    6단계

    RGB 스트립/링을 브레드보드에 연결합니다. VCC 와이어를 VCC 전원 레일에 연결하고 GND 와이어를 GND 전원 레일에 연결하고 DI(데이터 입력) 와이어를 Nano의 D4에 연결합니다. D4로 픽셀을 제어할 것입니다.

    7단계

    Nano의 5V 핀에서 VCC 전원 레일에 와이어 점퍼를 연결한 다음 Nano의 GND 핀에서 GND 전원 레일에 점퍼 와이어를 연결합니다.

    8단계

    코드를 업로드하고 플레이하세요!

    이 프로젝트를 즐겼기를 바랍니다!

    내 YouTube 채널에서 이와 같은 재미있는 프로젝트를 더 찾을 수 있습니다.

    나를 따르십시오:

    http://twitter.com/unexpectedmaker

    https://www.facebook.com/unexpectedmaker/

    https://www.instagram.com/unexpectedmaker/

    https://www.patreon.com/unexpectedmaker

    https://www.tindie.com/stores/seonr/

    <섹션 클래스="섹션 컨테이너 섹션 축소 가능" id="코드">

    코드

    <울>
  • 픽셀 체이서 게임 - Arduino 코드
  • 픽셀 체이서 게임 - Arduino 코드Arduino
    Arduino에 이 코드를 추가하고 빌드 지침을 따르세요!
    /*------------------------------------------------ ------------------------------------------픽셀 체이서 게임 - v1.0.0 - 24 /03/2019.AUTHOR/LICENSE:작성자 Seon Rozenblum - [email protected] 2016 라이센스:GNU GPL v3 http://www.gnu.org/licenses/gpl-3.0.htmlLINKS:블로그:expectedmaker.comYOUTUBE:youtube .com/c/unexpectedmakerDISCLAIMER:이 소프트웨어는 기술 지원 없이 "있는 그대로" 제공되며 어떤 목적으로든 유용성에 대해 명시적이든 묵시적이든 보증하지 않습니다. 목적:이 컨트롤러는 리플로우 마스터에서 실행되는 소프트웨어입니다. Unexpected Maker에서 만든 오븐 토스터 컨트롤러HISTORY:24/03/2019 v1.0.0 - 초기 릴리스.참고:이것은 진행중인 작업입니다...------------------- -------------------------------------------------- ------*/// 라이브러리 관리자에서 설치한 이 라이브러리가 필요합니다.#include #include "OneButton.h"// 스트립이 연결된 GPIO는 무엇입니까#define PIXELPIN 4// 얼마나 많은 Ne o스트립의 픽셀#define NUMPIXELS 24// 버튼이 연결된 GPIO는 무엇입니까?#define BUTTON_TAP 3// 기본 lowOneButton 버튼으로 버튼 초기화TAP(BUTTON_TAP, false);// 픽셀 스트립 초기화Adafruit_NeoPixel 픽셀 =Adafruit_NeoPixel(NUMPIXELS , PIXELPIN, NEO_GRB + NEO_KHZ800);// 변수 다발int playerIndex =-1;int playerIndexTrail =-1;int playerDirection =1;float nextMove =0;float currentPlayerSpeed ​​=150;unsigned long countdown =0;int 적군 인덱스 =- 1;int coinIndex =-1;int score =0;int bestScore =0;int lastScore =0;bool gameOver =false;void setup(){ // 버튼 핀을 입력으로 만듭니다. pinMode( BUTTON_TAP, INPUT ); // 버튼에 클릭 기능을 붙인다. buttonTAP.attachClick(singleClick); buttonTAP.attachLongPressStart(longClick); // 스트립을 초기화하고 밝기를 20%로 설정합니다. pixels.begin(); 픽셀.setBrightness(20); // 플레이어가 나타나고 이동을 시작하기 전에 2초 카운트다운을 설정합니다. countdown =millis() + 2000;}void loop(){ // 버튼 상태를 체크해야 하는 모든 주기 buttonTAP.tick(); // 게임이 게임 오버 상태이면 루프를 일찍 종료합니다. if ( gameOver ) return; // 레벨의 픽셀 표시 상태를 설정합니다. // 적의 위치와 코인 위치를 설정합니다. SetLevel(); // 플레이어가 준비될 때까지 1초 동안 기다립니다. if ( countdown> millis() ) { pixels.show(); 반품; } // 모든 플레이어 표시, 이동 및 게임 로직이 여기에 있습니다. DisplayPlayer(); // 업데이트된 픽셀 색상을 하드웨어로 보냅니다. pixel.show();}// 모든 픽셀을 blackvoid로 설정하여 레벨을 지웁니다. ClearLevel(){ for(int i=0;i=0 ) pixels.setPixelColor(playerIndexTrail, pixels.Color(0, 0, 0)); if ( playerIndex>=0) {pixels.setPixelColor(playerIndex,pixels.Color(0, 100, 0)); playerIndexTrail =플레이어 인덱스; } // 플레이어를 현재 방향으로 이동합니다. playerIndex +=playerDirection; // 스트립 가장자리에서 플레이어를 래핑합니다. if ( playerIndex <0 ) playerIndex =NUMPIXELS - 1; 그렇지 않으면 ( playerIndex ==NUMPIXELS ) playerIndex =0; 픽셀.setPixelColor(플레이어 인덱스, 픽셀.색상(0, 255, 0)); // 플레이어가 동전을 쳤습니까? // 그렇다면 점수를 높이고 코인과 적의 위치를 ​​재설정하고 레벨을 지우십시오 // 다음 루프는 SetLevel()이 적과 코인을 재설정합니다 // 플레이어 속도는 모든 코인 히트에 대해 증가합니다 if ( playerIndex ==coinIndex ) { 적 인덱스 =-1; 코인 인덱스 =-1; 점수++; currentPlayerSpeed ​​=제약(currentPlayerSpeed ​​- 10, 50, 150); 클리어레벨(); 픽셀.setPixelColor(플레이어 인덱스, 픽셀.색상(0, 255, 0)); } // 플레이어가 적을 공격했습니까? // 마지막/최고 점수를 설정하고 게임 오버 else if ( playerIndex ==적인 인덱스 ) { lastScore =score; if ( 점수>=bestScore ) bestScore =점수; 게임 끝(); 게임오버 =사실; 적 인덱스 =-1; 코인 인덱스 =-1; 플레이어 인덱스 =-1; } }}// 단일 버튼 clickvoid singleClick(){ // 플레이어가 표시될 때까지 입력 없음 if ( countdown> millis() ) return; // 플레이어 방향 전환 playerDirection =-playerDirection;} // 긴 버튼 clickvoid longClick(){ // 게임 오버 상태 전환 // 게임이 종료된 경우 게임을 시작하고 진행 중인 게임을 취소합니다. gameOver =!gameOver; if ( gameOver ) { 적 인덱스 =-1; 코인 인덱스 =-1; 플레이어 인덱스 =-1; 현재 플레이어 속도 =150; 클리어레벨(); } else { ClearLevel(); 점수 =0; 현재 플레이어 속도 =150; 카운트다운 =밀리() + 2000; }}

    제조공정

    1. MPU-6050을 사용한 Arduino 자이로스코프 게임
    2. Arduino 디지털 주사위
    3. Arduino Pong 게임 - OLED 디스플레이
    4. DIY 37 LED 룰렛 게임
    5. Arduino 게임 컨트롤러
    6. Arduino 터치 브레이크아웃 게임
    7. 수제 16x8 매트릭스의 Arduino Nano 테트리스 게임
    8. Arduino 반발 전자기 부상
    9. arduino를 사용한 자동화된 Dino 게임
    10. Alexa에 의해 활성화된 Arduino 홈 컨트롤러