資料介紹
描述
在這個(gè)項(xiàng)目中,我們將學(xué)習(xí)如何使用Meadow.Foundation將模擬操縱桿與 Meadow 一起使用。當(dāng)您移動(dòng)操縱桿時(shí),我們將使用四個(gè) LED 來(lái)點(diǎn)亮它們。構(gòu)建此項(xiàng)目所需的大部分內(nèi)容都包含在Wilderness Labs Meadow F7 w/Hack Kit Pro 中。
Meadow.Foundation是一個(gè)平臺(tái),用于在 Meadow 上使用 .NET 快速輕松地構(gòu)建連接的事物。它由Wilderness Labs 創(chuàng)建,完全開(kāi)源,由 Wilderness Labs 社區(qū)維護(hù)。
如果您是 Meadow 的新手,我建議您通過(guò)控制板載 RGB LED 項(xiàng)目轉(zhuǎn)到 Meadow 入門(mén),以正確設(shè)置您的開(kāi)發(fā)環(huán)境。
第 1 步 - 組裝電路
像下面的 Fritzing 圖一樣將操縱桿和 LED 連接到 Meadow:

第 2 步 - 創(chuàng)建 Meadow 應(yīng)用程序項(xiàng)目
在 Visual Studio 2019 for Windows或macOS中創(chuàng)建一個(gè)新的Meadow Application項(xiàng)目并將其命名為JoystickLeds 。
第 3 步 - 編寫(xiě) JoystickLeds 的代碼
在 Meadow 中,有兩種方法可以監(jiān)控輸入發(fā)生的任何變化。第一個(gè)是經(jīng)典的 .NET Eventing 模式,其中 anevent
在更改時(shí)引發(fā),第二個(gè)是IObservable
模式,這是一種更強(qiáng)大和靈活的反應(yīng)式方法。對(duì)于這個(gè)項(xiàng)目,我們采用第一種方法,這意味著 Meadow 開(kāi)始監(jiān)控操縱桿的兩個(gè)模擬輸入(一個(gè)用于 X 軸,一個(gè)用于 Y 軸)的變化,并且在檢測(cè)到變化時(shí)觸發(fā)一個(gè)事件。
復(fù)制下面的代碼:
public class MeadowApp : App {,>
PwmLed Up, Down, Left, Right;
AnalogJoystick joystick;
public MeadowApp() {
Console.WriteLine("Initializing...");
Up = new PwmLed(Device.CreatePwmPort(Device.Pins.D07, 100, 0.0f),
TypicalForwardVoltage.Red);
Down = new PwmLed(Device.CreatePwmPort(Device.Pins.D04, 100, 0.0f),
TypicalForwardVoltage.Red);
Left = new PwmLed(Device.CreatePwmPort(Device.Pins.D02, 100, 0.0f),
TypicalForwardVoltage.Red);
Right = new PwmLed(Device.CreatePwmPort(Device.Pins.D03, 100, 0.0f),
TypicalForwardVoltage.Red);
joystick = new AnalogJoystick(
Device.CreateAnalogInputPort(Device.Pins.A01),
Device.CreateAnalogInputPort(Device.Pins.A00),
null, true);
joystick.SetCenterPosition();
joystick.Updated += JoystickUpdated;
joystick.StartUpdating();
}
void JoystickUpdated(object sender, JoystickPositionChangeResult e) {
if (e.New.HorizontalValue < 0.2f) {
Left.SetBrightness(0f);
Right.SetBrightness(0f);
}
if (e.New.VerticalValue < 0.2f) {
Up.SetBrightness(0f);
Down.SetBrightness(0f);
}
if (e.New.HorizontalValue > 0)
Left.SetBrightness(Math.Abs(e.New.HorizontalValue));
else
Right.SetBrightness(Math.Abs(e.New.HorizontalValue));
if (e.New.VerticalValue > 0)
Down.SetBrightness(Math.Abs(e.New.VerticalValue));
else
Up.SetBrightness(Math.Abs(e.New.VerticalValue));
Console.WriteLine($"({e.New.HorizontalValue}, {e.New.VerticalValue})");
}
}
在 MeadowApp 的構(gòu)造函數(shù)中,我們將所有四個(gè) LED 初始化為PwmLeds
( up
、和) down
,以及 2 軸( )。注意在創(chuàng)建操縱桿對(duì)象時(shí)的最后一個(gè)參數(shù)中,我們傳遞了值。這是為了表明操縱桿是倒置的,因此驅(qū)動(dòng)程序?qū)⑼ㄟ^(guò)反轉(zhuǎn)位置值來(lái)糾正方向。left
right
AnalogJoystick
joystick
IsInverted,
true
實(shí)例化后AnalogJoystick
,我們調(diào)用SetCenterPosition()
設(shè)置在模擬端口中讀取的當(dāng)前值并將它們?cè)O(shè)置為初始位置。然后,我們注冊(cè)joystick
到Updated
每當(dāng)我們移動(dòng)它時(shí)都會(huì)觸發(fā)的事件,最后我們調(diào)用StartSampling()
操縱桿激活。
最后,JoystickUpdated
事件處理程序?qū)z查 X 軸和 Y 軸的值,并根據(jù)其位置調(diào)整相應(yīng) LED 的亮度。請(qǐng)注意,還有一個(gè)初始閾值,我們檢查它是否位于其任一軸的中心,因此我們關(guān)閉了這些 LED。
第 4 步 - 運(yùn)行項(xiàng)目
單擊Visual Studio中的“運(yùn)行”按鈕。它應(yīng)該類(lèi)似于以下 GIF:
查看 Meadow.Foundation!
就您可以使用 Meadow.Foundation 做的大量令人興奮的事情而言,這個(gè)項(xiàng)目只是冰山一角。
- 它帶有一個(gè)龐大的外設(shè)驅(qū)動(dòng)程序庫(kù),其中包含適用于最常見(jiàn)傳感器和外設(shè)的驅(qū)動(dòng)程序。
- 外設(shè)驅(qū)動(dòng)程序封裝了核心邏輯并公開(kāi)了一個(gè)簡(jiǎn)單、干凈、現(xiàn)代的 API。
- 該項(xiàng)目得到了不斷發(fā)展的社區(qū)的支持,該社區(qū)不斷致力于構(gòu)建酷炫的互聯(lián)事物,并且總是樂(lè)于幫助新來(lái)者和討論新項(xiàng)目。
參考
- 如何使用模擬操縱桿來(lái)控制LED
- Arduino基于網(wǎng)絡(luò)的操縱桿
- PHPoC基于網(wǎng)絡(luò)的操縱桿
- 使用Meadow制作EdgeASketch
- 使用Meadow通過(guò)按鈕滾動(dòng)LED骰子
- DIY按鈕操縱桿模塊 0次下載
- 基于Arduino Pro Mini的操縱桿手柄和DIY相機(jī)滑塊 0次下載
- 使用操縱桿來(lái)控制RGB LED
- 由操縱桿控制的SCARA手臂
- 帶操縱桿的量子位模擬器
- 如何用操縱桿控制伺服
- Press to Talk:一鍵式USB操縱桿
- 使用PWM和操縱桿來(lái)控制RGB
- 使用操縱桿模塊和LCD制作游戲
- 復(fù)古操縱桿的自動(dòng)開(kāi)火
- 有鉛錫膏跟無(wú)鉛錫膏可以一起用嗎 367次閱讀
- 零線(xiàn)和地線(xiàn)連在一起為什么漏電保護(hù)器跳閘 5040次閱讀
- 撥動(dòng)開(kāi)關(guān)是如何工作的,五種撥動(dòng)開(kāi)關(guān)接線(xiàn)圖分享 2.3w次閱讀
- 玩嗨OpenHarmony:基于OpenHarmony的小游戲:一起學(xué)做FlappyBird 1658次閱讀
- 跟大家一起推導(dǎo)一遍差分運(yùn)放的計(jì)算過(guò)程 1554次閱讀
- 使用操縱桿和Arduino控制多個(gè)LED燈亮滅的過(guò)程 7476次閱讀
- digilentPmodJSTK二軸操作桿介紹 1278次閱讀
- digilentPmodJSTK2二軸操縱桿簡(jiǎn)介 1535次閱讀
- 游戲手柄的工作原理及故障方法與檢修方法 1.9w次閱讀
- 物聯(lián)網(wǎng)安全最重要的元素是什么_如何確保物聯(lián)網(wǎng)安全 3602次閱讀
- 如何將數(shù)字世界與模擬世界聯(lián)系在一起? 5293次閱讀
- 使用我們的身體來(lái)操作無(wú)人機(jī),要比普通的操縱桿或者手柄使用起來(lái)更直觀、更精確 7547次閱讀
- 3個(gè)齒輪在一起到底能不能轉(zhuǎn)起來(lái)呢?和一些奇特的齒輪組合 1.4w次閱讀
- 將深度學(xué)習(xí)和常微分方程結(jié)合在一起,提供四大優(yōu)勢(shì) 1.1w次閱讀
- 銅線(xiàn)和鋁線(xiàn)不能接一起的原因以及接一起的方法 4.6w次閱讀
下載排行
本周
- 1DD3118電路圖紙資料
- 0.08 MB | 1次下載 | 免費(fèi)
- 2AD庫(kù)封裝庫(kù)安裝教程
- 0.49 MB | 1次下載 | 免費(fèi)
- 3PC6206 300mA低功耗低壓差線(xiàn)性穩(wěn)壓器中文資料
- 1.12 MB | 1次下載 | 免費(fèi)
- 4網(wǎng)絡(luò)安全從業(yè)者入門(mén)指南
- 2.91 MB | 1次下載 | 免費(fèi)
- 5DS-CS3A P00-CN-V3
- 618.05 KB | 1次下載 | 免費(fèi)
- 6海川SM5701規(guī)格書(shū)
- 1.48 MB | 次下載 | 免費(fèi)
- 7H20PR5電磁爐IGBT功率管規(guī)格書(shū)
- 1.68 MB | 次下載 | 1 積分
- 8IP防護(hù)等級(jí)說(shuō)明
- 0.08 MB | 次下載 | 免費(fèi)
本月
- 1貼片三極管上的印字與真實(shí)名稱(chēng)的對(duì)照表詳細(xì)說(shuō)明
- 0.50 MB | 103次下載 | 1 積分
- 2涂鴉各WiFi模塊原理圖加PCB封裝
- 11.75 MB | 89次下載 | 1 積分
- 3錦銳科技CA51F2 SDK開(kāi)發(fā)包
- 24.06 MB | 43次下載 | 1 積分
- 4錦銳CA51F005 SDK開(kāi)發(fā)包
- 19.47 MB | 19次下載 | 1 積分
- 5PCB的EMC設(shè)計(jì)指南
- 2.47 MB | 16次下載 | 1 積分
- 6HC05藍(lán)牙原理圖加PCB
- 15.76 MB | 13次下載 | 1 積分
- 7802.11_Wireless_Networks
- 4.17 MB | 12次下載 | 免費(fèi)
- 8蘋(píng)果iphone 11電路原理圖
- 4.98 MB | 6次下載 | 2 積分
總榜
- 1matlab軟件下載入口
- 未知 | 935127次下載 | 10 積分
- 2開(kāi)源硬件-PMP21529.1-4 開(kāi)關(guān)降壓/升壓雙向直流/直流轉(zhuǎn)換器 PCB layout 設(shè)計(jì)
- 1.48MB | 420064次下載 | 10 積分
- 3Altium DXP2002下載入口
- 未知 | 233089次下載 | 10 積分
- 4電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191390次下載 | 10 積分
- 5十天學(xué)會(huì)AVR單片機(jī)與C語(yǔ)言視頻教程 下載
- 158M | 183342次下載 | 10 積分
- 6labview8.5下載
- 未知 | 81588次下載 | 10 積分
- 7Keil工具M(jìn)DK-Arm免費(fèi)下載
- 0.02 MB | 73815次下載 | 10 積分
- 8LabVIEW 8.6下載
- 未知 | 65989次下載 | 10 積分
評(píng)論