LED 灯打地鼠
组件和用品
| × | 1 | ||||
| × | 7 | ||||
| × | 7 | ||||
| × | 1 | ||||
| × | 8 | ||||
| × | 4 |
关于这个项目
这是我的第一个 Arduino 项目,我根据我从早期 LED 和基本控制教程中学到的知识构建了它。
这个“打地鼠”游戏使用 7 个 LED 和一个操纵杆。有 4 个“痣”,分别由我板子左侧的第 2、3、4 和 5 盏灯表示。四个灯中的一个将随机点亮,并在一定时间内击中操纵杆上的相应方向。我已经安排好我的灯,从左到右,操纵杆上的选项是:左、上、下、右。这只是我选择的惯例,很有创意,试试其他的!
左边的两个灯是红色和绿色,分别表示选择不正确或正确。最右边的黄灯闪烁当前高分的计数,并在每次运行结束时显示分数(每当做出错误选择时)。自然而然,新的高分会取代旧的高分。
也许这个项目最复杂的部分是模拟操纵杆。对于操纵杆的两个方向,最大值为 0 和 1024(对于我的,我必须使用 1023,因此如果您的选择不正确,您可以尝试)。我相信这些值也可以使用串行窗口来测量。我使用 x 和 y 输入的 switch 语句简化了这些输入值。我不确定这是否是最好的方法,但因为我只需要每个方向的最大值(即,只有 4 个选项,4 个 LED 痣)我为每种可能性分配了整数值:1、2、3、 4 对应左、右、上、下。
我作为常量写入代码的难度级别是人们必须做出选择的时间(以毫秒为单位)。您可以随意调整这些时间,以根据自己的喜好更改难度。我想过在转弯开始时使用按钮或操纵杆来集成一个选择,但这并不是真正值得的工作,因为我觉得它会非常复杂而且不是真正的用户友好。
无论如何,让我知道可以进行哪些修改和改进! :)
代码
- WhackALED
WhackALEDArduino
// 敲一个 LED// 操纵杆变量int sX =A0; //操纵杆x轴,模拟输入int sY =A1; //操纵杆y轴,模拟输入int sSX; //x 的状态,从 sXint sSY 读取; // y 的状态,从 sYint sS 读取; //转换状态(可能不是最有效的)//游戏变量int rNum; //random int 选择要打开的随机灯int wins=0; //计数连续winsint highScore=0; //保存连胜最高分//难度常数,反应时间const int easy=1000;const int medium=500;const int hard=325;const int愚蠢=250;int ledPins[]={5,2, 4,3,6,7,8}; //初始化led'sint pinCount=7; //led pin 的数量void setup() {Serial.begin(9600);pinMode(sX, INPUT);pinMode(sY, INPUT);for (int thisPin =0; thisPinhighScore) { //如果连续获胜次数超过之前的高分,则设置新的高分。高分=胜利;胜利=0; } for (int i=0; i<=3; i++) { //红灯闪烁表示选择不正确 digitalWrite(ledPins[5], HIGH);延迟(50);数字写入(ledPins[5],低);延迟(50); } for (int w=0; w
示意图
除了操纵杆外,所有东西都应该与项目的真实图片相匹配。我的操纵杆有 5 个引脚,其中 4 个或我使用过的引脚:从上到下命名为“GND”、“+5V”、“VRx”和“VRy”。 “GND”和“+5V”接在arduino上的GND和5V,“VRx”和“VRy”接A0和A1。 除摇杆外,一切都应与项目的真实图片相符。我的操纵杆有 5 个引脚,其中 4 个或我使用过的引脚:从上到下命名为“GND”、“+5V”、“VRx”和“VRy”。 “GND”和“+5V”接arduino上的GND和5V,“VRx”和“VRy”接A0和A1。我> whack_a_mole_schematic_CBciL9GiCP.fzz制造工艺