自动乐高射击游戏
组件和用品
| × | 1 | ||||
| × | 4 | ||||
| × | 1 | ||||
| × | 4 | ||||
| × | 1 |
必要的工具和机器
|
应用和在线服务
|
关于这个项目
这个项目是关于让乐高大炮自动射击。我喜欢玩乐高积木,也喜欢使用 Arduinos,所以我决定在空闲时间做这个项目。带有喇叭的伺服电机旋转,击中杠杆并发射大炮。适合初学者的第一个、第二个或第三个项目!
这是有关如何制作的分步指南。
第 1 步:硬件
步骤 1 部分 1: 硬件 基础知识
从 5V 到带正电的行和 GRND 到带负电的行开始。它看起来像这样 -
第 1 步第 2 部分:连接伺服 #1
伺服有三根线 - 橙色/黄色(信号)一根将占用 DIGITAL(PWM~)中的一个插槽,红色(电源)将连接到 VIN(正排中的任何引脚),以及黑/棕线 (GRND) 将连接到连接到 Uno 上 GRND 引脚的带负电的行。我用于第一个舵机的数字引脚是 7。这是连接第一个舵机时的原理图 -
第 1 步第 3 部分:连接其余舵机
一旦你掌握了伺服系统的窍门,剩下的就轻而易举了。但是,需要注意一件事 - 您必须与代码中随伺服器连接的数字引脚保持一致。
例如,代码(可以在页面底部找到),状态-
secondCannon.attach(8);
因此,第二个伺服必须连接到数字引脚 8。
同理,第三个Servo必须连接到数字引脚6,第四个应该连接到第九个数字引脚。
但是,这些可以更改,以便它们按您希望的任何顺序排列。请确保您正在更改硬件和软件以保持一致性,否则代码将无法运行。
要使用底部提供的代码运行,原理图应该是这样的-
恭喜!您已正式完成此项目的硬件部分。
第 2 步:软件
现在,将页面底部的代码复制并粘贴到 Arduino 草图上,然后上传。上传代码之前确保你有Servo库,否则无法运行!以下是解释代码及其在运行程序时的含义的分步指南。
#include //包括ServosServo firstCannon的库; //定义First Cannon为ServoServo secondCannon; //定义第二炮为伺服伺服第三炮; //定义第三炮为伺服伺服第四炮; //定义第四炮为舵机
此代码设置 Servo.h
库,它将在代码中发挥基础作用。这可以通过以下几行来表示,使用库将四个大炮定义为舵机,或者可以旋转 180 度的电机。
void setup() { //设置代码,或者只运行一次的代码 Serial.begin(9600); //开始串行通信 Serial.println("Defend the Clones! Set up the Defenses!") //在串行监视器中打印一些东西 firstCannon.attach(7); //将数字引脚 7 附加到 First Cannon secondCannon.attach(8); //将数字引脚 8 附加到第二个 Cannon thirdCannon.attach(6); //将数字引脚 6 附加到第三大炮第四炮.attach(9); //将数字引脚 9 附加到第四大炮}
void setup()
代码几乎用于任何 Arduino 项目,并且它是只运行一次的代码。在这种情况下,我们以 9600 波特开始换行串行通信。然后,我们在串行监视器中打印内容。为了对伺服器进行编程,我们必须将它们的名称连接到它们各自的数字引脚。这就是 .attach()
的目的 一段代码。
void loop() { //循环代码,或无限次运行的代码 Serial.println("Beginning fire sequence") //在串行监视器中打印一些内容 firstCannon.write(180); //将第一个舵机转向180度,设置第一炮延迟(100); //等待第二个的 1/10 firstCannon.write(0); //将舵机转回原位,准备重新加载延迟(1000); //等待1秒秒Cannon.write(180); //将第二个舵机转向180度,设置第二个大炮延迟(100); //等待 1/10 秒 secondCannon.write(0); //将舵机转回原位,准备重新加载延迟(1000); //等待1秒thirdCannon.write(180); //将第三个舵机转向180度,设置第三个炮延迟(100); //等待1/10的第二个thirdCannon.write(0); //将舵机转回原位,准备重新加载延迟(1000); //等待1秒fourthCannon.write(180); //将第一个第四个转弯180度,触发第四个炮延迟(100); //等待第二个的 1/10 第四Cannon.write(0); //将舵机转回原位,准备重新加载延迟(1000); //等待 1 秒 Serial.println("All cannons fires"); Serial.println("准备重新加载");延迟(10000); Serial.println("重新加载完成。准备再次开火")}
这是最后一段代码,使用 void
loop()
允许以下代码无限次运行的函数。然后,我们在串行监视器中打印大炮即将开火。每门大炮的舵机应该旋转 180 度,然后旋转回原始位置,一次一个。之后,应该有 10 秒(重新加载时间),直到该过程再次重复。
如果您在上传代码时有任何其他问题,可以在评论部分评论,我会尽快回复。如果有效,则继续下一步。
第三步:安装
最后一步需要乐高大炮和一些老式的普通胶带。乐高大炮长这个样子 -
运行代码。看看伺服转向哪个方向。将伺服器贴在乐高大炮上,使其轨迹与上图中大炮顶部的杠杆发生碰撞。
做得好!你已经正式完成了这个项目。就像我说的,如果您有任何问题,请在下面的部分发表评论。
如果您喜欢这个项目,请查看这些链接 -
https://create.arduino.cc/projecthub/342600/basketball-hoop-with-buzzer-using-an-arduino-693bad?ref=user&ref_id=1536504&offset=1
https://create.arduino.cc/projecthub/ShreyanR/soundbox-826a56
代码
- 乐高枪射击游戏代码
Lego Gun Shooter 代码C/C++
将其粘贴到 Arduino IDE#include//包括 ServosServo firstCannon 的库; //定义First Cannon为ServoServo secondCannon; //定义第二炮为伺服伺服第三炮; //定义第三炮为伺服伺服第四炮; //将第四炮定义为Servovoid setup() { //设置代码,或只运行一次的代码 Serial.begin(9600); //开始串行通信 Serial.println("Defend the Clones! Set up the Defenses!") //在串行监视器中打印一些东西 firstCannon.attach(7); //将数字引脚 7 附加到 First Cannon secondCannon.attach(8); //将数字引脚 8 附加到第二个 Cannon thirdCannon.attach(6); //将数字引脚 6 附加到第三大炮第四炮.attach(9); //将数字引脚 9 附加到第四炮}void loop() { //循环代码,或无限次运行的代码 Serial.println("Beginning fire sequence") // 在串行监视器中打印一些内容 firstCannon。写(180); //将第一个舵机转向180度,设置第一炮延迟(100); //等待第二个的 1/10 firstCannon.write(0); //将舵机转回原位,准备重新加载延迟(1000); //等待1秒秒Cannon.write(180); //将第二个舵机转向180度,设置第二个大炮延迟(100); //等待 1/10 秒 secondCannon.write(0); //将舵机转回原位,准备重新加载延迟(1000); //等待1秒thirdCannon.write(180); //将第三个舵机转向180度,设置第三个炮延迟(100); //等待1/10的第二个thirdCannon.write(0); //将舵机转回原位,准备重新加载延迟(1000); //等待1秒fourthCannon.write(180); //将第一个第四个转弯180度,触发第四个炮延迟(100); //等待第二个的 1/10 第四Cannon.write(0); //将舵机转回原位,准备重新加载延迟(1000); //等待 1 秒 Serial.println("All cannons fires"); Serial.println("准备重新加载");延迟(10000); Serial.println("重新加载完成。准备再次开火")}
示意图
制造工艺