资料介绍
描述
在这个项目中,您将学习如何使用由标准按钮激活的伺服系统制作有趣的迷你足球游戏。为了控制伺服系统,我们将使用ServoCore,这是一个简化伺服编程的框架,它是Netduino.Foundation的一部分。
伺服系统是集成套件,通常包括直流电动机、增加扭矩的齿轮装置和控制电机的电子设备。它们作为遥控汽车、飞机等的部件而广受欢迎,但现在也非常普遍地用于机器人技术。
伺服系统会消耗大量电流,尤其是在负载下。此外,最常见的爱好伺服器需要6V
. 因此,在实际应用中应使用外接电源。
按钮(或瞬时触觉按钮)是用于在按下时完成电路并在释放时断开电路的物理按钮。按钮的尺寸和配置范围很广,我们将使用带有四 (4) 条引线的通用类型,这些引线旨在适合标准原型板。按下按钮时,所有四根导线都已连接。您可以在此处阅读有关按钮的更多信息。
Netduino.Foundation是一个使用 Netduino 上的.NET MicroFramework快速构建连接事物的平台。由Wilderness Labs创建,它是开源的,由 Netduino 社区维护。
如果您是 Netduino 开发新手,我建议您前往Netduino 入门项目来设置您的开发环境。
第 1 步 - 组装电路
我们的足球比赛的电路如下所示:
电源轨
我们将连接 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 基础库
视窗
右键单击SoccerSample项目,然后单击Manage NuGet Packages 。在浏览选项卡中,搜索Netduino.Foundation;它应该是第一个搜索结果。单击安装按钮。
现在搜索Netduino.Foundation.Servo并将其添加到您的项目中。
苹果系统
在解决方案资源管理器中按住 Alt 键单击SoccerField项目,然后单击添加 => 添加 NuGet 包以打开 NuGet 包窗口。搜索Netduino.Foundation包并单击Add Package将其添加到您的项目中。
现在搜索Netduino.Foundation.Servo并将其添加到您的项目中。
第 5 步 - 添加代码以控制足球场
添加播放器控制器
为所涉及的每个外围设备创建一个Controller类是一种很好的做法,以使项目结构更具可扩展性和可维护性。控制器类将封装控制硬件所需的特定于外设的逻辑。
使用以下代码为您的伺服系统添加一个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类添加到您的项目中,然后粘贴以下代码:
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类对象并调用Run方法。您的代码应如下所示:
using System.Threading;
namespace Soccer
{
public class Program
{
public static void Main()
{
App app = new App();
app.Run();
Thread.Sleep(Timeout.Infinite);
}
}
}
第 6 步 - 运行项目
单击 Visual Studio 中的运行按钮以查看您的足球比赛!在场地中间扔一个球,然后按下按钮,让舵机向两边踢!
查看 Netduino.Foundation
就您可以使用Netduino.Foundation做的大量令人兴奋的事情而言,这个项目只是冰山一角。
- 它带有一个庞大的外围驱动程序库,其中包含最常见的传感器和外围设备的驱动程序。
- 外围驱动程序封装了核心逻辑并公开了一个简单、干净、现代的 API。
- 这个项目得到了一个不断发展的社区的支持,该社区不断致力于构建很酷的互联事物,并且总是很高兴能帮助新人并讨论新项目。
参考
- 基于工程化参数优化的遥测伺服系统 6次下载
- 交流永磁伺服系统的控制策略 9次下载
- 交流永磁伺服系统的控制策略 21次下载
- 交流永磁伺服系统的控制策略 10次下载
- 交流永磁伺服系统的控制策略 18次下载
- 交流永磁伺服系统的控制策略 10次下载
- 伺服系统的组成 19次下载
- 交流永磁伺服系统技术讲座 7次下载
- 教学雷达伺服系统设计与制作 18次下载
- 伺服系统的PID控制技术下载 8次下载
- 伺服系统的扭矩控制(Toque Control)和速度控制(
- 伺服系统的PID控制
- 进给伺服系统 0次下载
- 数控机床的伺服系统
- 数控机床的伺服系统
- 液压伺服系统的组成_液压伺服系统的优缺点 1.1w次阅读
- 一文详解cnc电液伺服系统组成及控制原理 1.5w次阅读
- 一文读懂数控伺服系统的作用 1w次阅读
- 基于自抗扰控制的双环伺服系统详解 7957次阅读
- 伺服系统复合控制技术和非线性补偿技术 4295次阅读
- 主轴伺服系统的故障诊断方法有哪些 6299次阅读
- PLC控制伺服系统步骤_西门子PLC控制的伺服控制系统详解 5.2w次阅读
- 一文详解伺服系统需求重点在哪里 5984次阅读
- 一文知道伺服系统设计步骤及方法 6387次阅读
- 伺服系统应用于哪儿_伺服系统应用实例 1.6w次阅读
- 现代交流伺服系统原理及控制方法 6518次阅读
- 一文看懂直流伺服系统的优缺点及控制原理 3.2w次阅读
- 伺服系统什么意思_伺服系统的作用是什么 3.3w次阅读
- 伺服系统是什么_伺服系统的基本要求_伺服系统的基本组成 1.8w次阅读
- 伺服系统浅析,伺服系统的分类、结构组成与技术要求 8176次阅读
下载排行
本周
- 1山景DSP芯片AP8248A2数据手册
- 1.06 MB | 532次下载 | 免费
- 2RK3399完整板原理图(支持平板,盒子VR)
- 3.28 MB | 339次下载 | 免费
- 3TC358743XBG评估板参考手册
- 1.36 MB | 330次下载 | 免费
- 4DFM软件使用教程
- 0.84 MB | 295次下载 | 免费
- 5元宇宙深度解析—未来的未来-风口还是泡沫
- 6.40 MB | 227次下载 | 免费
- 6迪文DGUS开发指南
- 31.67 MB | 194次下载 | 免费
- 7元宇宙底层硬件系列报告
- 13.42 MB | 182次下载 | 免费
- 8FP5207XR-G1中文应用手册
- 1.09 MB | 178次下载 | 免费
本月
- 1OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234315次下载 | 免费
- 2555集成电路应用800例(新编版)
- 0.00 MB | 33566次下载 | 免费
- 3接口电路图大全
- 未知 | 30323次下载 | 免费
- 4开关电源设计实例指南
- 未知 | 21549次下载 | 免费
- 5电气工程师手册免费下载(新编第二版pdf电子书)
- 0.00 MB | 15349次下载 | 免费
- 6数字电路基础pdf(下载)
- 未知 | 13750次下载 | 免费
- 7电子制作实例集锦 下载
- 未知 | 8113次下载 | 免费
- 8《LED驱动电路设计》 温德尔著
- 0.00 MB | 6656次下载 | 免费
总榜
- 1matlab软件下载入口
- 未知 | 935054次下载 | 免费
- 2protel99se软件下载(可英文版转中文版)
- 78.1 MB | 537798次下载 | 免费
- 3MATLAB 7.1 下载 (含软件介绍)
- 未知 | 420027次下载 | 免费
- 4OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234315次下载 | 免费
- 5Altium DXP2002下载入口
- 未知 | 233046次下载 | 免费
- 6电路仿真软件multisim 10.0免费下载
- 340992 | 191187次下载 | 免费
- 7十天学会AVR单片机与C语言视频教程 下载
- 158M | 183279次下载 | 免费
- 8proe5.0野火版下载(中文版免费下载)
- 未知 | 138040次下载 | 免费
评论
查看更多