資料介紹
描述
項目更新到 V1.0 Release Candidate 2(2022 年 12 月 31 日)
在這個 Meadow 項目中,我們將學(xué)習(xí)如何使用幾個旋轉(zhuǎn)編碼器和一個 TFT SPI 顯示器來構(gòu)建非常流行的復(fù)古繪畫玩具 Etch-A-Sketch。我們將看到使用強(qiáng)大的驅(qū)動程序平臺Meadow.Foundation及其 GraphicsLibrary編寫邏輯來完成所有繪圖是多么容易。
構(gòu)建此項目所需的一切都包含在Wilderness Labs Meadow F7 w/Hack Kit Pro 中。我們將看到使用 Meadow.Foundation 對這些外圍設(shè)備進(jìn)行編程是多么容易。
Meadow.Foundation是一個平臺,用于在 Meadow 上使用 .NET 快速輕松地構(gòu)建連接的事物。它由Wilderness Labs 創(chuàng)建,完全開源,由 Wilderness Labs 社區(qū)維護(hù)。
如果您是 Meadow 的新手,我建議您通過控制板載 RGB LED 項目轉(zhuǎn)到 Meadow 入門,以正確設(shè)置您的開發(fā)環(huán)境。
第 1 步 - 組裝電路
像下面的 Fritzing 圖一樣連接你的 EdgeASketch 電路:
?

關(guān)于 Meadow F7中斷的注意事項
如果仔細(xì)查看圖表,您會發(fā)現(xiàn)我們將頂部旋轉(zhuǎn)編碼器連接到模擬引腳 A1、A2 和 A3。這是可能的,因為您實際上可以將這些引腳配置為數(shù)字輸入端口來處理中斷。檢查這個 Meadow 引出線圖:

請注意標(biāo)有中斷組的引腳范圍從組 00 到組 15。在配置數(shù)字輸入端口時要記住這一點很重要,您必須確保每個中斷組只使用一個引腳,否則您將嘗試獲取事件時遇到問題。例如,在配置引腳D08和D09時不會收到中斷事件,因為它們都屬于中斷組06 。
第 2 步 - 創(chuàng)建 Meadow 應(yīng)用程序項目
在 Visual Studio 2019 for Windows或macOS中創(chuàng)建一個新的Meadow Application項目并將其命名為EdgeASketch 。
第 3 步 - 添加所需的 NuGet 包
對于這個項目,搜索并安裝以下 NuGet 包:
第 4 步 - 為 EdgeASketch 編寫代碼
復(fù)制下面的代碼:
// public class MeadowApp : App <- If you have a Meadow F7v1.*
public class MeadowApp : App
{
int x, y;
MicroGraphics graphics;
RotaryEncoderWithButton rotaryX;
RotaryEncoderWithButton rotaryY;
public override Task Initialize()
{
var onboardLed = new RgbPwmLed(
device: Device,
redPwmPin: Device.Pins.OnboardLedRed,
greenPwmPin: Device.Pins.OnboardLedGreen,
bluePwmPin: Device.Pins.OnboardLedBlue);
onboardLed.SetColor(Color.Red);
var config = new SpiClockConfiguration(
speed: new Frequency(48000, Frequency.UnitType.Kilohertz),
mode: SpiClockConfiguration.Mode.Mode3);
var spiBus = Device.CreateSpiBus(
clock: Device.Pins.SCK,
copi: Device.Pins.MOSI,
cipo: Device.Pins.MISO,
config: config);
var st7789 = new St7789(
device: Device,
spiBus: spiBus,
chipSelectPin: null,
dcPin: Device.Pins.D01,
resetPin: Device.Pins.D00,
width: 240, height: 240);
graphics = new MicroGraphics(st7789);
graphics.Clear(true);
graphics.DrawRectangle(0, 0, 240, 240, Color.White, true);
graphics.DrawPixel(x, y, Color.Red);
graphics.Show();
x = graphics.Width / 2;
y = graphics.Height / 2;
rotaryX = new RotaryEncoderWithButton(
device: Device,
aPhasePin: Device.Pins.A01,
bPhasePin: Device.Pins.A02,
buttonPin: Device.Pins.A03);
rotaryX.Rotated += RotaryXRotated;
rotaryY = new RotaryEncoderWithButton(
Device,
Device.Pins.D03,
Device.Pins.D04,
Device.Pins.D05);
rotaryY.Rotated += RotaryYRotated;
rotaryY.Clicked += RotaryYClicked;
onboardLed.SetColor(Color.Green);
return base.Initialize();
}
void RotaryXRotated(object sender, RotaryChangeResult e)
{
if (e.New == RotationDirection.Clockwise)
x++;
else
x--;
x = Math.Clamp(x, 1, graphics.Width - 1);
graphics.DrawPixel(x, y + 1, Color.Red);
graphics.DrawPixel(x, y, Color.Red);
graphics.DrawPixel(x, y - 1, Color.Red);
}
void RotaryYRotated(object sender, RotaryChangeResult e)
{
if (e.New == RotationDirection.Clockwise)
y++;
else
y--;
y = Math.Clamp(y, 1, graphics.Height - 1);
graphics.DrawPixel(x + 1, y, Color.Red);
graphics.DrawPixel(x, y, Color.Red);
graphics.DrawPixel(x - 1, y, Color.Red);
}
void RotaryYClicked(object sender, EventArgs e)
{
x = graphics.Width / 2;
y = graphics.Height / 2;
graphics.DrawRectangle(0, 0, 240, 240, Color.White, true);
graphics.DrawPixel(x, y, Color.Red);
}
public override async Task Run()
{
while (true)
{
graphics.Show();
await Task.Delay(500);
}
}
}
草地建設(shè)者
在 MeadowApp 中Constructor
,我們首先初始化ST7789
SPI 顯示和 MicroGraphics 庫,我們立即繪制一個覆蓋整個屏幕的白色填充矩形,并在顯示中間使用先前初始化的 x 和 y 整數(shù)繪制一個紅色像素。我們也初始化了兩個Rotary Encoders
,一個控制X軸的繪制,一個控制Y軸的繪制。兩個扶輪社都Rotated
注冊了該事件。
RotatyXRotated 和 RotatyYRotated 事件處理程序
e.Direction
在事件處理程序中,您可以通過訪問屬性并與枚舉進(jìn)行比較以查看其是順時針還是逆時針來檢查旋轉(zhuǎn)編碼器轉(zhuǎn)向的方向。RotationDirection
如果它是順時針方向,我們增加 X 或 Y 坐標(biāo)(取決于旋轉(zhuǎn)的是哪個 Rotaty),如果它以相反的方向旋轉(zhuǎn),我們將減少。
請注意,我們在兩個方向上一次繪制三個像素,我們這樣做是為了讓線條描邊更粗一些,因為顯示器的分辨率太高了,繪制的線條太長了,很難看清是什么你正在做的。
旋轉(zhuǎn)Y點擊
由于我們使用帶按鈕的旋轉(zhuǎn)編碼器,您可以像處理按鈕一樣處理 Click 事件處理程序。事件RotaryYClicked
處理程序?qū)⑶宄@示并將 x 和 y 坐標(biāo)重新初始化回顯示的中間。
第 5 步 - 運(yùn)行項目
單擊Visual Studio中的“運(yùn)行”按鈕。它應(yīng)該類似于以下 GIF:
查看 Meadow.Foundation!
就您可以使用 Meadow.Foundation 做的大量令人興奮的事情而言,這個項目只是冰山一角。
- 它帶有一個龐大的外設(shè)驅(qū)動程序庫,其中包含適用于最常見傳感器和外設(shè)的驅(qū)動程序。
- 外設(shè)驅(qū)動程序封裝了核心邏輯并公開了一個簡單、干凈、現(xiàn)代的 API。
- 該項目得到了不斷發(fā)展的社區(qū)的支持,該社區(qū)不斷致力于構(gòu)建酷炫的互聯(lián)事物,并且總是樂于幫助新來者和討論新項目。
參考
- Wilderness Labs Meadow LoRa Field網(wǎng)關(guān)客戶端
- Meadow的項目實驗室入門
- 使用Meadow Foundation將模擬操縱桿與Meadow一起使用
- Meadow Rover第1部分:帶定向LED的電機(jī)控制
- 使用Meadow通過按鈕滾動LED骰子
- 使用REST使用Meadow和MAUI遠(yuǎn)程控制伺服
- 使用Meadow構(gòu)建FM收音機(jī)播放器
- 基于Arduino硬件光控?zé)?b class="flag-6" style="color: red">制作資料 7次下載
- Genesis2000線路制作教程 genesis2000軟件自學(xué) 0次下載
- 如何使用Allegro中的Pad Designer制作焊盤詳細(xì)教程免費(fèi)下載 0次下載
- 流水燈設(shè)計與制作解析 39次下載
- 《實用電子電路設(shè)計制作例解》-電子書籍.pdf 0次下載
- 2017年江西省大學(xué)生電子設(shè)計制作現(xiàn)場(28屆)賽題 22次下載
- 2016年江西省大學(xué)生電子設(shè)計制作現(xiàn)場(27屆)賽題.pdf 20次下載
- 2014年江西省大學(xué)生電子設(shè)計制作現(xiàn)場(25屆)賽題.pdf 5次下載
- 瓷片電容(MLCC)的制作流程 1177次閱讀
- 芯片的制作流程及原理 3407次閱讀
- bnc接頭制作步驟 1.5w次閱讀
- 物聯(lián)網(wǎng)安全最重要的元素是什么_如何確保物聯(lián)網(wǎng)安全 3601次閱讀
- 電路板的制作案例分享 5491次閱讀
- GaN射頻器件是如何制作的呢? 1.1w次閱讀
- 創(chuàng)意小夜燈制作教程 6553次閱讀
- DNA螺旋臺燈制作詳解 3776次閱讀
- 遙控船玩具制作教程 5.4w次閱讀
- 創(chuàng)意小夜燈制作圖解 1.4w次閱讀
- 簡易聲控延時燈制作方法 1.5w次閱讀
- 怎樣制作12v電子燈箱_電子燈箱制作教程 2.7w次閱讀
- 怎么用分光光度計制作標(biāo)準(zhǔn)曲線_制作標(biāo)準(zhǔn)曲線有什么意義 8w次閱讀
- 無線調(diào)頻麥克風(fēng)的設(shè)計和制作 5266次閱讀
- 光敏燃?xì)鈭缶鞯?b class="flag-6" style="color: red">制作 2423次閱讀
下載排行
本周
- 1山景DSP芯片AP8248A2數(shù)據(jù)手冊
- 1.06 MB | 532次下載 | 免費(fèi)
- 2RK3399完整板原理圖(支持平板,盒子VR)
- 3.28 MB | 339次下載 | 免費(fèi)
- 3TC358743XBG評估板參考手冊
- 1.36 MB | 330次下載 | 免費(fèi)
- 4DFM軟件使用教程
- 0.84 MB | 295次下載 | 免費(fèi)
- 5元宇宙深度解析—未來的未來-風(fēng)口還是泡沫
- 6.40 MB | 227次下載 | 免費(fèi)
- 6迪文DGUS開發(fā)指南
- 31.67 MB | 194次下載 | 免費(fèi)
- 7元宇宙底層硬件系列報告
- 13.42 MB | 182次下載 | 免費(fèi)
- 8FP5207XR-G1中文應(yīng)用手冊
- 1.09 MB | 178次下載 | 免費(fèi)
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 2555集成電路應(yīng)用800例(新編版)
- 0.00 MB | 33566次下載 | 免費(fèi)
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費(fèi)
- 4開關(guān)電源設(shè)計實例指南
- 未知 | 21549次下載 | 免費(fèi)
- 5電氣工程師手冊免費(fèi)下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費(fèi)
- 6數(shù)字電路基礎(chǔ)pdf(下載)
- 未知 | 13750次下載 | 免費(fèi)
- 7電子制作實例集錦 下載
- 未知 | 8113次下載 | 免費(fèi)
- 8《LED驅(qū)動電路設(shè)計》 溫德爾著
- 0.00 MB | 6656次下載 | 免費(fèi)
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費(fèi)
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 78.1 MB | 537798次下載 | 免費(fèi)
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420027次下載 | 免費(fèi)
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費(fèi)
- 6電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191187次下載 | 免費(fèi)
- 7十天學(xué)會AVR單片機(jī)與C語言視頻教程 下載
- 158M | 183279次下載 | 免費(fèi)
- 8proe5.0野火版下載(中文版免費(fèi)下載)
- 未知 | 138040次下載 | 免費(fèi)
評論