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

뱀 LED 16x16 매트릭스 게임

구성품 및 소모품

Arduino UNO
× 1
입니다.
RGB LED 픽셀 매트릭스, NeoPixel NeoMatrix
이것은 잘 모르겠습니다. 나는 aliexpress에서 내 led 매트릭스를 샀습니다. 링크는 여기 http://ali.pub/4wxs2s
× 1
점퍼 와이어(일반)
× 1
아날로그 조이스틱(일반)
× 1
브레드보드(일반)
× 1

이 프로젝트 정보

안녕하세요! 나는 arduino 기회를 배우고 있습니다. 그리고 나는 내 오래된 노키아에서 고전 아케이드 뱀 게임을 복사하기로 결정했습니다. 자, 여기 있습니다.

16x16 LED 매트릭스, 조이스틱 및 Arduino UNO를 사용했습니다. 쉬운 일이 아니었고 각 led가 일관되게 연결되었습니다. 그래서 이동 로직이 조금 까다롭습니다.

여기에서 뱀 캐릭터를 제어할 수 있습니다. 맛있는 음식을 먹고 자라서 죽습니다. 프로그램 코드를 업그레이드할 준비가 되었습니다.

재미와 즐길 수 있습니다. 마음에 드셨다면 두 번 생각하지 마시고 제 유튜브와 인스타그램을 구독하세요 :) 러시아어로 되어 있지만 곧 자막을 만들 예정입니다.

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

코드

<울>
  • 코드
  • 코드C/C++
    #include //매트릭스 설정#define NUM_LEDS 256#define DATA_PIN 3#define BRIGHTNESS 8//joystick settings#define pinX A2 // ось X джойстика#define pinY A1 // ось Y джо#йст swPin 2 // кнопка джойстикаint 뱀[256]; // 뱀 요소의 배열int snakeSize =2; // 실제 뱀 크기 int snakeSpeed ​​=500;int row; // 행 번호int col; // 열 번호int lastDirection =135; // 시작 방향int i, newDirection, OlddX =1, OlddY, f;int red, green, blue, fred, fgreen, fblue; //colorsCRGB leds[NUM_LEDS];void setup() { red =random(0, 255); 녹색 =무작위(0, 255); 파란색 =무작위(0, 255); 프레드 =무작위(127, 255); fgreen =랜덤(127, 255); fblue =랜덤(127, 255); Serial.begin(9600); 핀모드(핀X, 입력); 핀모드(핀Y, 입력); 핀모드(swPin, 입력); 디지털 쓰기(swPin, HIGH); FastLED.addLeds(LED, NUM_LEDS); FastLED.setBrightness(밝기); for( i=0; i<=255; i++ ){ 뱀[i] =0; } for( i=0; i<=snakeSize; i++ ){ 뱀[i] =lastDirection+i; } f =무작위(0, 255); FastLED.show();}int Snakedirection(int last, int dX, int dY ){ dX =map(dX, 0, 1000, -1, 1); dY =맵(dY, 0, 1000, -1, 1); if(dX ==0 &&dY ==0 &&OlddX !=dX){ dX =OlddX; } if(dY ==0 &&dX ==0 &&OlddY !=dY){ dY =OlddY; } int newDirection =마지막; if( dX !=0 ){ // X 방향으로 이동 if ( row&1 ){ if( col ==0 &&dX ==1){ newDirection =last -15; } else if( 열 ==15 &&dX ==-1){ newDirection =마지막 +15; } else newDirection =마지막 + dX; // 참고 } else { if( col ==0 &&dX ==1){ newDirection =마지막 +15; } else if( 열 ==15 &&dX ==-1 ){ newDirection =마지막 -15; } else newDirection =마지막 - dX; // не четная } } if( dY <0){ // Y DOWN 방향으로 이동 if(row ==15 &&dY ==-1){newDirection =col;} else if ( row&1 ){ newDirection =last + ( 열*2)+1; // 참고 } else { newDirection =last + (16-col-1)+(16-col); // не четная } } if( dY> 0){ // Y UP 방향으로 이동 if( row ==0 &&dY ==1){ newDirection =255 - col;} else if ( row&1 ){ newDirection =last - (마지막 - 16*행) - (16 - 열); // 참고 } else { newDirection =last - (col*2)-1; // не четная } } OlddX =dX; OlddY =dY; return newDirection;}int snakeMove(int snakeDirection){ for( i=0; i<=255; i++ ){ if( snake[i] ==snakeDirection ){ 죽음(); } } FastLED.clear(); for(i=snakeSize; i>=1; i--){ 뱀[i] =뱀[i-1]; } 뱀[0] =뱀 방향; for( i=0; i<=255; i++ ){ if( 뱀[i] ){ leds[뱀[i]].setRGB(빨강, 녹색, 파랑); } } FastLED.show(); 행 =(int)(snakeDirection/16); // 행 번호 if ( row&1 ){ col =(row+1) * 16 - snakeDirection - 1; } else { 열 =뱀 방향 - 행 * 16; } return snakeDirection;}void food( int eated ){ if( eated ==f ){ snakeSize++; f =랜덤(0, 255); 빨간색 =프레드; 녹색 =f녹색; 파란색 =f파란색; 프레드 =랜덤(0, 255); fgreen =랜덤(0, 255); fblue =랜덤(0, 255); 뱀 속도 =뱀 속도 / 1.1; } else { leds[f].setRGB(fred, fgreen, fblue); FastLED.show(); }}죽음(){ snakeSize =2; 뱀 속도 =500; 빨간색 =255; 녹색 =0; 파란색 =0; }무효 색상(boolean sw){ if(!sw){ red =random(0,255); 녹색 =무작위(0,255); 파란색 =무작위(0,255); }} 무효 루프() { 색상( digitalRead(swPin) ); newDirection =Snakedirection(lastDirection, analogRead(pinX), analogRead(pinY)); lastDirection =뱀 이동(newDirection); 음식(newDirection); 지연(snakeSpeed);}

    회로도


    제조공정

    1. Arduino 게임 컨트롤러
    2. MAX7219가 있는 24x16 매트릭스의 Arduino Pong 게임
    3. 수제 16x8 매트릭스의 Arduino Nano 테트리스 게임
    4. Bluetooth가 탑재된 Arduino로 LED 제어!
    5. LED 매트릭스 + 모션 센서 도어 디스플레이 [Arduino Holiday]
    6. Arduino Quadruped
    7. 픽셀 체이서 게임
    8. 단일 LED 매트릭스 Arduino 플립 시계
    9. Arduino RGB 컬러 믹서
    10. Arduino Uno로 LED 매트릭스 제어