제조공정
| × | 9 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 |
|
|
동영상:
개요
꽤 오랫동안 저는 한 사람만 플레이하면 되는 간단하면서도 재미있는 게임을 만들고 싶었습니다. 그것은 매우 간단합니다. 그것을 실행하는 데 하나의 Arduino Nano만 있으면 됩니다. LED 룰렛입니다. 게임의 목적은 빨간색과 노란색 LED를 피하면서 녹색 LED에서 멈추는 것입니다. 연주하고 만들기 쉬운 것 같고, 그렇습니다.
1단계
먼저 Fusion 360에서 장치를 설계하는 것으로 시작했습니다. 전면 플레이트에 9개의 LED, 6개의 빨간색, 2개의 노란색, 1개의 녹색을 포함하도록 설계했습니다. 하단에 택트 스위치가 들어갈 공간도 만들었습니다. 그런 다음 Millright CNC 라우터를 사용하여 내가 디자인한 조각을 잘라냈습니다.
그림> 그림>
2단계
게임 메커니즘은 다음과 같이 진행됩니다. 라이트는 두 가장자리 사이에서 앞뒤로 "이동"하고 버튼을 누를 때마다 중지됩니다. 즉시 반응하기 위해 인터럽트를 사용했습니다. 각 LED는 순환되는 어레이의 인덱스에 해당합니다. 현재 LED 인덱스도 자체 변수를 얻습니다. 또한 난이도에 따라 각 단계 사이에 지연이 있습니다. 시작 시 사용자는 버튼을 눌러 각 LED 변경 사이의 지연을 줄여 난이도를 선택합니다. 올바른 LED가 켜진 후 사용자는 두 번 클릭하여 잠글 수 있습니다.
3단계
나는 합판 조각에 멋진 마무리와 반올림을 추가하기 위해 사포를 사용했습니다. 그 후, 나는 조각들을 함께 고정하기 위해 뜨거운 접착제를 사용했습니다.
결론
이제 내가 간단한 게임을 하고 싶은 기분이 들 때, 길을 갈 때나 그저 화면에서 벗어나려고 할 때마다 이 장치는 나에게 멋진 휴식을 제공합니다. 나는 또한 각 LED를 녹색에서 멀어지게 하여 일정량의 점수를 주어 멀티플레이어를 만들 수 있으며, 마지막에 가장 적은 점수를 받은 사람이 승리하게 됩니다.
섹션> <섹션 클래스="섹션 컨테이너 섹션 축소 가능" id="코드">/*핀 2-10사용 TTBOUNCE 라이브러리는 https://github.com/TOLDOTECHNIK/TTBOUNCE*/#include섹션>int delay_time =0;const uint8_t led_array[9] ={ 4,3,5,6,7,8,9,10,11};const uint8_t 버튼 =2;uint8_t 난이도 =0;uint8_t current_led =0;bool dir_flag =true; //true는 오른쪽, false는 왼쪽bool game_ended =false;bool is_win =false;bool is_finished_selecting =false;TTBOUNCE b =TTBOUNCE(button);void doubleClick(){ Serial.println("더블 클릭"); is_finished_selecting =true; delay_time =floor(500/(난이도+1)); //공식:지연(ms 단위) =500 / (난이도 + 1) Serial.println("난이도:" + String(delay_time)); 스윕();} 무효 클릭(){ Serial.print("클릭 | "); digitalWrite(led_array[난이도], LOW); 난이도++; if(난이도>8){난이도 =0; } digitalWrite(led_array[난이도], 높음); Serial.println("난이도:"+String(difficulty)); 지연(100);} 무효 설정(){ Serial.begin(9600); b.attachDoubleClick(더블클릭); b.attachClick(클릭); b.setActiveLow(); b.enablePullup(); for(int i=0;i<9;i++){ pinMode(led_array[i], OUTPUT); } 스윕(); 맥박(); 난이도 =0; digitalWrite(led_array[난이도], HIGH); 동안(!is_finished_selecting){ b.update(); } b.업데이트(); 핀모드(버튼, INPUT_PULLUP); attachInterrupt(digitalPinToInterrupt(버튼), button_pressed, FALLING); delay(1000);}무효 루프(){ if(game_ended==false){ move_led(); 지연(delay_time); } else if(게임 종료){ Serial.println(게임 종료); Serial.println("게임 종료"); if(is_win){ Serial.println("당신이 이겼습니다"); for(int i=0; i<5;i++){ 펄스(); 지연(100); } } 스윕(); 게임 종료 =거짓; is_win =거짓; 지연(2000); }} 무효 move_led(){ digitalWrite(led_array[current_led], LOW); if(현재_led ==8){ dir_flag =거짓; 현재_led -=1; } else if(current_led ==0){ dir_flag =true; 전류 주도 +=1; } else if(dir_flag){ 현재_led +=1; } else if(!dir_flag){ 현재_led -=1; } digitalWrite(led_array[현재_led], HIGH);} 무효 펄스(){ for(int i=0; i<9;i++){ digitalWrite(led_array[i], HIGH); } 지연(100); for(int i=0; i<9;i++){ digitalWrite(led_array[i], LOW); }} 무효 스윕(){ for(int i=0; i<9;i++){ digitalWrite(led_array[i], HIGH); 지연(50); digitalWrite(led_array[i], LOW); } for(int i=8; i>=0;i--){ digitalWrite(led_array[i], HIGH); 지연(50); digitalWrite(led_array[i], LOW); }}void button_pressed(){ Serial.println("LED에서 버튼을 눌렀습니다:"+String(current_led)); game_ended =사실; if(current_led==4){ is_win =true; } else if(current_led !=4){ is_win =false; } 현재_led =0; 지연(500);}
제조공정
구성품 및 소모품 Arduino UNO × 1 2.8 터치 스크린 × 1 앱 및 온라인 서비스 Arduino IDE 이 프로젝트 정보 친애하는 친구, 또 다른 Arduino 튜토리얼에 오신 것을 환영합니다! 이 상세한 튜토리얼에서 우리는 Arduino Tic-Tac-Toe 게임을 만들 것입니다. 보시다시피 우리는 터치 스크린을 사용하고 있으며 컴퓨터와 게임을하고 있습니다. Tic-Tac-Toe와 같은 간단한 게임은 게임 프로그래밍 및
구성품 및 소모품 Arduino UNO × 1 Adafruit RGB 백라이트 LCD - 16x2 × 1 브레드보드(일반) × 1 저항 220옴 × 1 SparkFun 푸시버튼 스위치 12mm × 1 점퍼 와이어(일반) × 1 USB-A-B 케이블 × 1 앱 및 온라인 서비스 Arduino IDE 이 프로젝트 정보 필요한 부품은 위의 그림과