亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Manufacturing Technology >> 制造工艺

LED 轮盘游戏

组件和用品

LED(通用)
6 红色,2 黄色,1 绿色
× 9
SparkFun 按钮开关 12mm
× 1
Arduino Nano R3
× 1
女性标题 8 位置 1 行 (0.1")
× 1
DC Barrel Jack
× 1

必要的工具和机器

CNC 路由器

应用和在线服务

Arduino IDE

关于这个项目

视频:

概览

很长一段时间以来,我一直想创建一个简单而有趣的游戏,只需要一个人来玩。它非常简单,只需要一个 Arduino Nano 就可以运行它。它是 LED 轮盘赌。游戏的目标是停在绿色 LED 上,避开红色和黄色 LED。看起来很容易玩和制作,确实如此。

第一步

首先,我开始在 Fusion 360 中设计设备。我设计的前面板包含 9 个 LED、6 个红色、2 个黄色和 1 个绿色。我还在底部留出了一个轻触开关的空间。然后我使用我的 Millright CNC 路由器切割我设计的零件。

步骤 2

游戏机制是这样的:一盏灯会在两个边缘之间来回“移动”,只要按下按钮就会停止。为了让它立即做出反应,我使用了中断。每个 LED 对应于循环通过的数组中的一个索引。当前的 LED 索引也有自己的变量。每一步之间也有延迟,对应难度。在启动时,用户通过按下按钮来选择难度,以减少每次 LED 变化之间的延迟。正确的 LED 点亮后,用户可以双击锁定。

第 3 步

我用一些砂纸为胶合板增添了漂亮的光洁度和圆角。之后,我用热胶将这些碎片固定在一起。

结论

现在,每当我有心情玩一个简单的游戏时,无论是在路上还是只是为了远离屏幕,这款设备都能给我一个美妙的缓刑。我也可以通过让每个 LED 远离绿色一定数量的点数来实现多人游戏,让最后得到最少点数的人获胜。

代码

  • 代码
代码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)); //公式:延迟(以毫秒为单位)=500 /(难度+ 1)Serial.println("难度:" + String(delay_time));扫描();}无效点击(){ Serial.print(“点击|”);数字写入(led_array [难度],低);难度++;如果(难度> 8){ 难度=0;数字写入(led_array [难度],高); Serial.println("难度为:"+String(难度));延迟(100);}无效设置(){ Serial.begin(9600); b.attachDoubleClick(doubleClick); b.attachClick(点击); b.setActiveLow(); b.enablePullup(); for(int i=0;i<9;i++){ pinMode(led_array[i], OUTPUT); } 扫();脉冲();难度 =0;数字写入(led_array [难度],高); while(!is_finished_selecting){ b.update();更新(); pinMode(按钮,INPUT_PULLUP); attachInterrupt(digitalPinToInterrupt(button), button_pressed, FALLING); delay(1000);}void loop(){ if(game_ended==false){ move_led();延迟(延迟时间); } else if(game_ended){ Serial.println(game_ended); Serial.println("游戏结束"); if(is_win){ Serial.println("你赢了"); for(int i=0; i<5;i++){ 脉冲();延迟(100);扫();游戏结束 =假; is_win =假;延迟(2000); }}void move_led(){ digitalWrite(led_array[current_led], LOW);如果(current_led ==8){ dir_flag =false; current_led -=1; } else if(current_led ==0){ dir_flag =true; current_led +=1; } else if(dir_flag){ current_led +=1; } else if(!dir_flag){ current_led -=1; } digitalWrite(led_array[current_led], HIGH);}void pulse(){ 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);数字写入(led_array[i],低); } for(int i=8; i>=0;i--){ digitalWrite(led_array[i], HIGH);延迟(50);数字写入(led_array[i],低); }}void button_pressed(){ Serial.println("按钮按下LED:"+String(current_led));游戏结束 =真; if(current_led==4){ is_win =true; } else if(current_led !=4){ is_win =false; } current_led =0;延迟(500);}

示意图


制造工艺

  1. Arduino Gyroscope Game with MPU-6050
  2. Arduino 数字骰子
  3. DIY 37 LED 轮盘游戏
  4. Arduino 游戏控制器
  5. 自制 16x8 矩阵上的 Arduino Nano 俄罗斯方块游戏
  6. Arduino 带蓝牙控制 LED!
  7. Arduino Quadruped
  8. 像素追逐游戏
  9. 使用 Bolt 和 Arduino 控制 LED 亮度
  10. 单 LED 矩阵 Arduino 翻转时钟
  11. Arduino RGB 混色器
  12. NeoMatrix Arduino Pong