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

LED 룰렛 게임

구성품 및 소모품

LED(일반)
빨간색 6개, 노란색 2개, 녹색 1개
× 9
SparkFun 푸시버튼 스위치 12mm
× 1
Arduino Nano R3
× 1
암컷 헤더 8 위치 1 행(0.1")
× 1
DC 배럴 잭
× 1

필요한 도구 및 기계

CNC 라우터

앱 및 온라인 서비스

Arduino IDE

이 프로젝트 정보

동영상:

개요

꽤 오랫동안 저는 한 사람만 플레이하면 되는 간단하면서도 재미있는 게임을 만들고 싶었습니다. 그것은 매우 간단합니다. 그것을 실행하는 데 하나의 Arduino Nano만 있으면 됩니다. LED 룰렛입니다. 게임의 목적은 빨간색과 노란색 LED를 피하면서 녹색 LED에서 멈추는 것입니다. 연주하고 만들기 쉬운 것 같고, 그렇습니다.

1단계

먼저 Fusion 360에서 장치를 설계하는 것으로 시작했습니다. 전면 플레이트에 9개의 LED, 6개의 빨간색, 2개의 노란색, 1개의 녹색을 포함하도록 설계했습니다. 하단에 택트 스위치가 들어갈 공간도 만들었습니다. 그런 다음 Millright CNC 라우터를 사용하여 내가 디자인한 조각을 잘라냈습니다.

2단계

게임 메커니즘은 다음과 같이 진행됩니다. 라이트는 두 가장자리 사이에서 앞뒤로 "이동"하고 버튼을 누를 때마다 중지됩니다. 즉시 반응하기 위해 인터럽트를 사용했습니다. 각 LED는 순환되는 어레이의 인덱스에 해당합니다. 현재 LED 인덱스도 자체 변수를 얻습니다. 또한 난이도에 따라 각 단계 사이에 지연이 있습니다. 시작 시 사용자는 버튼을 눌러 각 LED 변경 사이의 지연을 줄여 난이도를 선택합니다. 올바른 LED가 켜진 후 사용자는 두 번 클릭하여 잠글 수 있습니다.

3단계

나는 합판 조각에 멋진 마무리와 반올림을 추가하기 위해 사포를 사용했습니다. 그 후, 나는 조각들을 함께 고정하기 위해 뜨거운 접착제를 사용했습니다.

결론

이제 내가 간단한 게임을 하고 싶은 기분이 들 때, 길을 갈 때나 그저 화면에서 벗어나려고 할 때마다 이 장치는 나에게 멋진 휴식을 제공합니다. 나는 또한 각 LED를 녹색에서 멀어지게 하여 일정량의 점수를 주어 멀티플레이어를 만들 수 있으며, 마지막에 가장 적은 점수를 받은 사람이 승리하게 됩니다.

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

코드

<울>
  • 코드
  • 코드C/C++
    /*핀 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);}

    회로도


    제조공정

    1. MPU-6050을 사용한 Arduino 자이로스코프 게임
    2. Arduino 디지털 주사위
    3. DIY 37 LED 룰렛 게임
    4. Arduino 게임 컨트롤러
    5. 수제 16x8 매트릭스의 Arduino Nano 테트리스 게임
    6. Bluetooth가 탑재된 Arduino로 LED 제어!
    7. Arduino Quadruped
    8. 픽셀 체이서 게임
    9. 볼트와 Arduino를 사용하여 LED 밝기 제어
    10. 단일 LED 매트릭스 Arduino 플립 시계