足球比赛电路的制作

电子说

1.3w人已加入

描述

第1步 - 组装电路

我们的足球比赛电路如下:

将Servo与Netduino连接以进行测试

电源轨

我们将连接3.3V和5V电源轨。当我们想要移动伺服或足球运动员时,我们使用带有按钮的3.3V电源导轨向Netduino发出信号。我们可以使用5V作为输入,因为Netduino输入可以承受5V电压,但最好用3.3V触发输入。

我们将使用5V电源为电源供电伺服系统。如上所述,对于生产应用,最好使用外部电源。

下拉电阻

此项目中使用的按钮有两(2)对冗余引脚。请注意,Netduino的数字引脚通过电阻连接到GND。当按钮静止(未按下)时,输入引脚设置为接地。按下按钮时,所有四(4)个引脚都连接在一起,将3.3V电源轨连接到Netduino上的输入引脚。使用电阻器,因此当按下按钮时,我们在电源和地之间没有直接的低电阻路径。

步骤2 - 组装足球场

对于足球场,你需要一个信纸尺寸的纸板。足球线只是装饰品,所以无论如何都可以自由地绘制它们。

足球场尺寸

对于电路板的墙壁,您需要两(2)个更薄的纸板条,以下尺寸。

切割两个纸板条足球场的墙壁

将下半部分粘贴到足球场的边缘。

使用双面胶带将舵机连接到现场表面,并用棍子连接到伺服的旋转臂上;我们使用冰棍棒或一半的筷子。

你的足球场应该是这样的:

足球场完全组装

第3步 - 创建Netduino项目

在 Visual Studio 2015 for Windows 或 Visual Studio for Mac 中创建 Netduino 项目;将项目命名为 SoccerField 。

步骤4 - 添加Netduino Foundation库

Windows

右键单击 SoccerSample 项目,然后单击管理NuGet包的。在浏览标签中,搜索 Netduino.Foundation ;它应该是第一个搜索结果。单击安装按钮。

添加Netduino.Foundation NuGet包

现在搜索 Netduino.Foundation.Servo 并将其添加到您的项目中。

macOS

按住Alt键并单击解决方案资源管理器中的 SoccerField 项目,然后单击添加=》添加NuGet包以打开NuGet包窗口。搜索 Netduino.Foundation 包并单击添加包将其添加到您的项目中。

添加Netduino.Foundation NuGet包

现在搜索 Netduino.Foundation.Servo 并将其添加到您的项目中。

步骤5 - 添加代码以控制足球场

添加PlayerController

创建控制器是一个好习惯所涉及的每个外围设备的类,以使项目结构更具可扩展性和可维护性。控制器类将封装控制硬件所需的外设特定逻辑。

使用以下代码为您的伺服器添加 PlayerController 类:

using System.Threading;

using Netduino.Foundation.Servos;

namespace Soccer

{

public class PlayerController

{

protected bool _kickRight;

protected Servo _servo;

public PlayerController(Servo servo)

{

_servo = servo;

_servo.RotateTo(0);

}

public void Kick()

{

Thread _animationThread = new Thread(() =》

{

_kickRight = !_kickRight;

if (_kickRight)

{

_servo.RotateTo(180);

}

else

{

_servo.RotateTo(0);

}

});

_animationThread.Start();

}

}

}

该控制器管理单个伺服的行为,其唯一的公共方法 Kick 使伺服从0度旋转到180度并返回。请注意, Kick 中的伺服旋转逻辑包含在Thread _animationThread 中。这使伺服控制在伺服移动时按下按钮时异步。

添加App类

对于这个项目,我们实现了一个管理所有外围设备的通用 App 软件模式主要逻辑。

在项目中添加一个新的 App 类,并粘贴以下代码:

using System;

using Netduino.Foundation.Servos;

using N = SecretLabs.NETMF.Hardware.Netduino;

using Microsoft.SPOT.Hardware;

namespace Soccer

{

public class App

{

protected InterruptPort _buttonTeamA;

protected PlayerController _playerTeamA;

protected InterruptPort _buttonTeamB;

protected PlayerController _playerTeamB;

public App()

{

InitializePeripherals();

}

protected void InitializePeripherals()

{

_buttonTeamA = new InterruptPort(N.Pins.GPIO_PIN_D4,

true, Port.ResistorMode.PullDown,

Port.InterruptMode.InterruptEdgeHigh);

_buttonTeamA.OnInterrupt += OnButtonTeamA;

var servoA = new Servo(N.PWMChannels.PWM_PIN_D3,

NamedServoConfigs.Ideal180Servo);

_playerTeamA = new PlayerController(servoA);

_buttonTeamB = new InterruptPort(N.Pins.GPIO_PIN_D10,

true, Port.ResistorMode.PullDown,

Port.InterruptMode.InterruptEdgeHigh);

_buttonTeamB.OnInterrupt += OnButtonTeamB;

var servoB = new Servo(N.PWMChannels.PWM_PIN_D11,

NamedServoConfigs.Ideal180Servo);

_playerTeamB = new PlayerController(servoB);

}

private void OnButtonTeamA(uint data1, uint data2, DateTime time)

{

_playerTeamA.Kick();

}

private void OnButtonTeamB(uint data1, uint data2, DateTime time)

{

_playerTeamB.Kick();

}

public void Run()

{

}

}

}

请注意,我们的 App 类声明了四个类属性:两个 InterruptPorts 和两个 PlayerController 类对象。

在构造函数中,我们调用 InitializePeripherals 方法,在该方法中实例化所有四个类对象。 _playerTeamA 和 _playerTeamB 用于控制伺服器, InterruptPorts 用于按钮。 _buttonTeamA 和 _buttonTeamB 注册 OnInterrupt 事件,并调用相应 PlayerController 团队的Kick方法。 》

在Program类中实现Main方法

最后,创建一个新的 App 类对象并调用运行方法。您的代码应如下所示:

步骤6 - 运行项目

单击Visual Studio中的运行按钮以查看您的足球游戏!在球场中间抛球并按下按钮使两侧的伺服踢球!

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

全部0条评论

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

×
20
完善资料,
赚取积分