第1步 - 組裝電路
我們的足球比賽電路如下:
將Servo與Netduino連接以進(jìn)行測(cè)試
電源軌
我們將連接3.3V和5V電源軌。當(dāng)我們想要移動(dòng)伺服或足球運(yùn)動(dòng)員時(shí),我們使用帶有按鈕的3.3V電源導(dǎo)軌向Netduino發(fā)出信號(hào)。我們可以使用5V作為輸入,因?yàn)镹etduino輸入可以承受5V電壓,但最好用3.3V觸發(fā)輸入。
我們將使用5V電源為電源供電伺服系統(tǒng)。如上所述,對(duì)于生產(chǎn)應(yīng)用,最好使用外部電源。
下拉電阻
此項(xiàng)目中使用的按鈕有兩(2)對(duì)冗余引腳。請(qǐng)注意,Netduino的數(shù)字引腳通過(guò)電阻連接到GND。當(dāng)按鈕靜止(未按下)時(shí),輸入引腳設(shè)置為接地。按下按鈕時(shí),所有四(4)個(gè)引腳都連接在一起,將3.3V電源軌連接到Netduino上的輸入引腳。使用電阻器,因此當(dāng)按下按鈕時(shí),我們?cè)陔娫春偷刂g沒(méi)有直接的低電阻路徑。
步驟2 - 組裝足球場(chǎng)
對(duì)于足球場(chǎng),你需要一個(gè)信紙尺寸的紙板。足球線只是裝飾品,所以無(wú)論如何都可以自由地繪制它們。
足球場(chǎng)尺寸
對(duì)于電路板的墻壁,您需要兩(2)個(gè)更薄的紙板條,以下尺寸。
切割兩個(gè)紙板條足球場(chǎng)的墻壁
將下半部分粘貼到足球場(chǎng)的邊緣。
使用雙面膠帶將舵機(jī)連接到現(xiàn)場(chǎng)表面,并用棍子連接到伺服的旋轉(zhuǎn)臂上;我們使用冰棍棒或一半的筷子。
你的足球場(chǎng)應(yīng)該是這樣的:
足球場(chǎng)完全組裝
第3步 - 創(chuàng)建Netduino項(xiàng)目
在 Visual Studio 2015 for Windows 或 Visual Studio for Mac 中創(chuàng)建 Netduino 項(xiàng)目;將項(xiàng)目命名為 SoccerField 。
步驟4 - 添加Netduino Foundation庫(kù)
Windows
右鍵單擊 SoccerSample 項(xiàng)目,然后單擊管理NuGet包的。在瀏覽標(biāo)簽中,搜索 Netduino.Foundation ;它應(yīng)該是第一個(gè)搜索結(jié)果。單擊安裝按鈕。
添加Netduino.Foundation NuGet包
現(xiàn)在搜索 Netduino.Foundation.Servo 并將其添加到您的項(xiàng)目中。
macOS
按住Alt鍵并單擊解決方案資源管理器中的 SoccerField 項(xiàng)目,然后單擊添加=》添加NuGet包以打開(kāi)NuGet包窗口。搜索 Netduino.Foundation 包并單擊添加包將其添加到您的項(xiàng)目中。
添加Netduino.Foundation NuGet包
現(xiàn)在搜索 Netduino.Foundation.Servo 并將其添加到您的項(xiàng)目中。
步驟5 - 添加代碼以控制足球場(chǎng)
添加PlayerController
創(chuàng)建控制器是一個(gè)好習(xí)慣所涉及的每個(gè)外圍設(shè)備的類,以使項(xiàng)目結(jié)構(gòu)更具可擴(kuò)展性和可維護(hù)性??刂破黝悓⒎庋b控制硬件所需的外設(shè)特定邏輯。
使用以下代碼為您的伺服器添加 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();
}
}
}
該控制器管理單個(gè)伺服的行為,其唯一的公共方法 Kick 使伺服從0度旋轉(zhuǎn)到180度并返回。請(qǐng)注意, Kick 中的伺服旋轉(zhuǎn)邏輯包含在Thread _animationThread 中。這使伺服控制在伺服移動(dòng)時(shí)按下按鈕時(shí)異步。
添加App類
對(duì)于這個(gè)項(xiàng)目,我們實(shí)現(xiàn)了一個(gè)管理所有外圍設(shè)備的通用 App 軟件模式主要邏輯。
在項(xiàng)目中添加一個(gè)新的 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()
{
}
}
}
請(qǐng)注意,我們的 App 類聲明了四個(gè)類屬性:兩個(gè) InterruptPorts 和兩個(gè) PlayerController 類對(duì)象。
在構(gòu)造函數(shù)中,我們調(diào)用 InitializePeripherals 方法,在該方法中實(shí)例化所有四個(gè)類對(duì)象。 _playerTeamA 和 _playerTeamB 用于控制伺服器, InterruptPorts 用于按鈕。 _buttonTeamA 和 _buttonTeamB 注冊(cè) OnInterrupt 事件,并調(diào)用相應(yīng) PlayerController 團(tuán)隊(duì)的Kick方法。 》
在Program類中實(shí)現(xiàn)Main方法
最后,創(chuàng)建一個(gè)新的 App 類對(duì)象并調(diào)用運(yùn)行方法。您的代碼應(yīng)如下所示:
步驟6 - 運(yùn)行項(xiàng)目
單擊Visual Studio中的運(yùn)行按鈕以查看您的足球游戲!在球場(chǎng)中間拋球并按下按鈕使兩側(cè)的伺服踢球!
-
電路
+關(guān)注
關(guān)注
172文章
5828瀏覽量
171803 -
Netduino
+關(guān)注
關(guān)注
0文章
19瀏覽量
3432
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論