守门员先生

本教程是为了满足南佛罗里达大学 Makecourse 的项目要求而创建的。(www.makecourse.com)
1
下载零件

前往: https://grabcad.com/library/embaixadinhas-wooden-t...
(如果您还没有,则需要创建一个 GRABCAD 帐户来访问文件。)
点击下载所有文件按钮
将文件从 zip 文件夹提取到新文件夹
3
在Solidworks中打开装配体




12
打开 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
组装




12
在围栏顶部钻孔,用于安装按钮、守门员跑道和前锋。
将 Arduino 连接到面包板,如步骤 8 所示
将所有线路和非必要部件隐藏在外壳中
(可能需要焊接按钮的有线连接)
项目完成
0
0
0
qq空间
微博
复制链接
分享 更多相关项目
猜你喜欢
评论/提问(已发布 0 条)
0