守门员先生


老小孩
转载
发布时间: 2025-08-15 10:34:23 | 阅读数 0收藏数 0评论数 0
封面
本教程是为了满足南佛罗里达大学 Makecourse 的项目要求而创建的。(www.makecourse.com)
1

下载零件

前往: https://grabcad.com/library/embaixadinhas-wooden-t...

(如果您还没有,则需要创建一个 GRABCAD 帐户来访问文件。)

点击下载所有文件按钮

将文件从 zip 文件夹提取到新文件夹


2

提取 .rar 文件

前往:https://extract.me/

在解压的文件夹中找到“STEP_Embaixadinhas.rar”文件。

上传并提取


3

在Solidworks中打开装配体

打开 SOLIDWORKS

查找并打开上一步提取的 STEP 文件


4

保存零件

双击组件的各个零件。

右键单击左侧装配树中突出显示的零件。

选择反向选择。

右键单击任何突出显示的选择。

选择抑制。

将零件另存为 .sldprt 文件

重复以上步骤,直到组装所需的所有零件都保存完毕。

还可以编辑各个部分。


5

组装

在 SOLIDWORKS 中组装零件并创建配合以形成曲棍球守门员位置的人物。

保存为“.stl”文件并进行 3D 打印。


6

重复上一步骤

以射门曲棍球向前的形式重复上一步骤 。

7

设置

使用 Arduino Uno、面包板、6 个按钮和 2 个伺服电机完成图示的设置。

8

注释代码

#include //包含伺服库
Servo myservo; //创建伺服对象来控制伺服1
Servo servo2; //创建伺服对象来控制伺服2
int pos; //存储伺服器 1 位置的变量
int pos2; //存储伺服器 2 位置的变量
void setup(){//设置引脚
pinMode(2,INPUT); //按钮 1:慢速模式
pinMode(3,INPUT); //按钮 2:中等模式
pinMode(4,INPUT); //按钮 3:快速模式
pinMode(5,INPUT); //按钮 4:射击
pinMode(6,INPUT); //按钮 5:重置
pinMode(7,INPUT); //按钮 6:停止
digitalWrite(2,HIGH); //当按钮未按下时,引脚状态为高电平
数字写入(3,高);
数字写入(4,高);
数字写入(5,高);
数字写入(6,高);
数字写入(7,高);
myservo.attach(9); //将伺服器 1 连接到伺服器对象上的引脚 9
servo2.attach(8); //将伺服器 2 的引脚 8 连接到伺服器对象
pos = 90; //伺服1的初始位置
pos2 = 180; //伺服2的初始位置
} //结束设置
void loop(){//主循环
myservo.write(pos); //将伺服器 1 移动到初始位置
servo2.write(pos2); //将伺服2移动到初始位置
if (digitalRead(2)==LOW){//如果按下按钮 1
做{
for(pos = 5; pos <= 175; pos += 1){//伺服器以 1 度为步长从 0 度变为 180 度
myservo.write(pos); //告诉伺服器到达变量“pos”中的位置
延迟(15);//迭代之间的时间(毫秒)
pos = pos; //更新位置
if (digitalRead(5)==LOW){//如果按下按钮 4
servo2.write(0); //将伺服2旋转90度
}
if (digitalRead(6)==LOW){//如果按下按钮 5
servo2.write(180); //将伺服2移动到初始位置
}
}
for (pos = 175; pos >= 5; pos -= 1) { //伺服器以 1 度为步长从 180 度变为 0 度
myservo.write(pos); //告诉伺服器到达变量“pos”中的位置
延迟(15);//迭代之间的时间(毫秒)
pos = pos; //更新位置
if (digitalRead(5)==LOW){//如果按下按钮 4
servo2.write(0); //将伺服2旋转90度
}
if (digitalRead(6)==LOW){//如果按下按钮 5
servo2.write(180); //将伺服2移动到初始位置
}
}
}while(digitalRead(7)==HIGH); //如果按下按钮 6,则退出 do_while 循环
}
if (digitalRead(3)==LOW){//如果按下按钮 2
做{
for(pos = 5; pos <= 175; pos += 1){//伺服器以 1 度为步长从 0 度变为 180 度
myservo.write(pos); //告诉伺服器到达变量“pos”中的位置
延迟(10);//迭代之间的时间(毫秒)
pos = pos; //更新位置
if (digitalRead(5)==LOW){//如果按下按钮 4
servo2.write(0); //将伺服2旋转90度
}
if (digitalRead(6)==LOW){//如果按下按钮 5
servo2.write(180); //将伺服2移动到初始位置
}
}
for (pos = 175; pos >= 5; pos -= 1) { //伺服器以 1 度为步长从 180 度变为 0 度
myservo.write(pos); //告诉伺服器到达变量“pos”中的位置
延迟(10);//迭代之间的时间(毫秒)
pos = pos; //更新位置
if (digitalRead(5)==LOW){//如果按下按钮 4
servo2.write(0); //将伺服2旋转90度
}
if (digitalRead(6)==LOW){//如果按下按钮 5
servo2.write(180); //将伺服2移动到初始位置
}
}
}while(digitalRead(7)==HIGH); //如果按下按钮 6,则退出 do_while 循环
}
if (digitalRead(4)==LOW){//如果按下按钮 3
做{
for(pos = 5; pos <= 175; pos += 1){//伺服器以 1 度为步长从 0 度变为 180 度
myservo.write(pos); //告诉伺服器到达变量“pos”中的位置
延迟(5);//迭代之间的时间(毫秒)
pos = pos; //更新位置
if (digitalRead(5)==LOW){//如果按下按钮 4
servo2.write(0); //将伺服2旋转90度
}
if (digitalRead(6)==LOW){//如果按下按钮 5
servo2.write(180); //将伺服2移动到初始位置
}
}
for (pos = 175; pos >= 5; pos -= 1) { //伺服器以 1 度为步长从 180 度变为 0 度
myservo.write(pos); //告诉伺服器到达变量“pos”中的位置
延迟(5);//迭代之间的时间(毫秒)
pos = pos; //更新位置
if (digitalRead(5)==LOW){//如果按下按钮 4
servo2.write(0); //将伺服2旋转90度
}
if (digitalRead(6)==LOW){//如果按下按钮 5
servo2.write(180); //将伺服2移动到初始位置
}
}
}while(digitalRead(7)==HIGH); //如果按下按钮 6,则退出 do_while 循环
}
}//结束主循环


9

外壳

选择一个外壳来构建您的项目。

(图中所示为该设置所使用的内容)


10

线性齿轮

将守门员连接到线性齿轮

将直线齿轮与连接到伺服电机的正齿轮配合


11

组装

在围栏顶部钻孔,用于安装按钮、守门员跑道和前锋。

将 Arduino 连接到面包板,如步骤 8 所示

将所有线路和非必要部件隐藏在外壳中

(可能需要焊接按钮的有线连接)

项目完成


阅读记录0
点赞0
收藏0
禁止 本文未经作者允许授权,禁止转载
猜你喜欢
评论/提问(已发布 0 条)
评论 评论
收藏 收藏
分享 分享
pdf下载 下载
pdf下载 举报