如何使用Arduino制作Buzz Wire游戏

描述

  Arduino 在构建爱好项目和游戏方面非常受欢迎,我们之前使用 Arduino 构建过贪吃蛇游戏、乒乓球游戏、太空竞赛游戏等。今天我们正在使用 Arduino- Buzz 线游戏或 Steady 手游戏构建更流行的游戏。

  对于这个项目,我们将使用 Arduino Uno、蜂鸣器和两根铝线。一个16x2 的 LCD也用于显示游戏状态。迷宫线的两端将连接到 Arduino 的数字引脚 2 和 3,手柄线连接到 Arduino 的接地引脚。数字引脚定义为 INPUT_PULLUP 引脚。所以当手柄线接触到迷宫线时,数字引脚状态变为低电平,蜂鸣器发出声音。

  二极管连接在迷宫线的末端,因此当您经过该二极管并用圆形手柄线触摸迷宫线时,只有一个引脚(引脚 3)会变低。在这种情况下,LCD 上将显示祝贺文字(做得好)。

  所需组件

  阿杜诺

  铝线

  16x2 液晶

  I 2 C 模块

  面包板

  蜂鸣器

  二极管

  电路原理图

游戏设计

  上面给出了 Arduino Buzz Wire Game 的电路图。I2C 模块的 SCL 和 SDA 引脚连接到 Arduino 的 A5 和 A4 引脚,而 I2C 模块的 V CC和 GND 引脚连接到 Arduino 的 5V 和 GND 引脚。蜂鸣器的正轨连接到 Arduino 的数字引脚 4,负轨连接到 GND。切割铝线并将其弯曲成锯齿形。在电线的一端焊接一个二极管。然后剪下另一根电线做一个把手,并将一端弯曲成一个环。

  16x2 LCD 也可以在不使用 I2C 模块的情况下与 Arduino连接。

  将 Arduino 的 D2 和 D3 引脚连接到 Zig-Zag 线的两端,并将手柄线连接到 Arduino 的 GND 引脚。

游戏设计

代码说明

此Arduino Buzz Wire 游戏的完整代码在文档末尾给出。

通过包含 LCD 模块的库文件开始您的代码。LiquidCrystal_I2C.h 库用于 Arduino 和 LCD 模块之间的 I2C 通信。

 

#include 

 

之后,定义蜂鸣器的 Arduino 引脚、电线的起点和电线的终点。

 

常量 int startPin = 2;
常量 int endPin = 3;
常量 int 蜂鸣器 = 4;

 

然后定义两个变量start & end_。这些变量将用于保存电线的读数。

 

整数开始,结束_;

 

现在将蜂鸣器引脚定义为输出,将接线引脚定义为INPUT_PULLUP。Arduino 有内部上拉电阻,其值约为 20k 欧姆。这些电阻可以使用INPUT_PULLUP在内部连接。定义 INPUT_PULLUP 在功能上与在引脚和 +5V 之间连接一个 ~20k 欧姆电阻器相同。

 

pinMode(蜂鸣器,输出);
pinMode(startPin, INPUT_PULLUP);
pinMode(startPin, INPUT_PULLUP);

 

在void 循环内,读取线引脚的状态。

 

开始 = digitalRead(startPin);
end_ = digitalRead(endPin);

 

现在比较线针的读数。如果两个引脚都为低电平,则表示您已经触摸了电线,因此蜂鸣器会发出声音,如果电线的起始引脚为高电平,而结束引脚为低电平,则表示您已到达终点。 

 

如果(开始 == 低 && 结束_== 低){
    数字写入(蜂鸣器,高);
    延迟(1000);
    数字写入(蜂鸣器,低);
    lcd.setCursor(0,0);
    lcd.print("再试一次");
    Serial.print("再试一次");       
  }
  else if (start == HIGH && end_== LOW){
    lcd.setCursor(0,0);
    lcd.print("做得好");
    Serial.print("做得好"); }

 

  测试 Buzz Wire 游戏

  连接硬件并上传给定代码后,您就可以开始玩游戏了。因此,将带有圆圈的电线握在手中,并尝试将带有圆圈的电线一直通过曲折线焊接到二极管上,而不要让圆线接触任何地方。如果您触摸电线,则蜂鸣器会发出声音,LCD 会显示“再试一次”。如果你在不接触电线的情况下完成游戏,那么它会显示“干得好”。

游戏设计

#include

LiquidCrystal_I2C lcd(0x27, 16, 2);

常量 int startPin = 2;

常量 int endPin = 3;

常量 int 蜂鸣器 = 4;

整数开始,结束_;

无效设置(无效)

{

Serial.begin(9600);

液晶显示器开始();

lcd.clear();

pinMode(蜂鸣器,输出);

pinMode(startPin, INPUT_PULLUP);

pinMode(startPin, INPUT_PULLUP);

}

无效循环(无效)

{

开始 = digitalRead(startPin);

end_ = digitalRead(endPin);

串行打印(开始);

序列号.print("\n");

Serial.print(end_);

if (start == LOW && end_== LOW ){

digitalWrite(buzzer, HIGH);

延迟(1000);

数字写入(蜂鸣器,低);

lcd.setCursor(0,0);

lcd.print("再试一次");

Serial.print("再试一次");

}

else if (start == HIGH && end_== LOW){

lcd.setCursor(0,0);

lcd.print("做得好");

Serial.print("做得好");

}

延迟(500);

}
 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分