제조공정
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 |
안녕하세요! 나는 arduino 기회를 배우고 있습니다. 그리고 나는 내 오래된 노키아에서 고전 아케이드 뱀 게임을 복사하기로 결정했습니다. 자, 여기 있습니다.
16x16 LED 매트릭스, 조이스틱 및 Arduino UNO를 사용했습니다. 쉬운 일이 아니었고 각 led가 일관되게 연결되었습니다. 그래서 이동 로직이 조금 까다롭습니다.
여기에서 뱀 캐릭터를 제어할 수 있습니다. 맛있는 음식을 먹고 자라서 죽습니다. 프로그램 코드를 업그레이드할 준비가 되었습니다.
재미와 즐길 수 있습니다. 마음에 드셨다면 두 번 생각하지 마시고 제 유튜브와 인스타그램을 구독하세요 :) 러시아어로 되어 있지만 곧 자막을 만들 예정입니다.
섹션> <섹션 클래스="섹션 컨테이너 섹션 축소 가능" id="코드">
#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);}
제조공정
구성품 및 소모품 Arduino UNO × 1 Arduino용 PHPoC WiFi 실드 × 1 버튼 × 4 브레드보드(일반) × 1 저항 10k 옴 × 1 열수축 튜브 × 1 이 프로젝트 정보 초보자라면 아두이노 - 버튼 튜토리얼에서 버튼에 대해 배울 수 있습니다. 여기에서 더 간단한 하드웨어(PHPoC만 해당)를 사용하여 비슷한 프로젝트를 만들었습니다. 데모 데이터 흐름 웹 브라
구성품 및 소모품 Arduino Nano R3 × 1 LED 매트릭스 × 1 포토 저항기 × 1 브레드보드(일반) × 1 DS3231 × 1 앱 및 온라인 서비스 Arduino IDE 이 프로젝트 정보 몇 미터 떨어진 방의 시계 디스플레이를 읽으려면 이러한 LED 매트릭스 디스플레이가 필요합니다. 좋은 가격에 4셀 디스플레이를 구입한 후 Hackster에서 사용 가능한 프로젝트를