資料介紹
描述
項目更新到 V1.0 Release Candidate 2(2022 年 12 月 31 日)
在這個 Meadow 項目中,我們將學習如何使用幾個旋轉編碼器和一個 TFT SPI 顯示器來構建非常流行的復古繪畫玩具 Etch-A-Sketch。我們將看到使用強大的驅動程序平臺Meadow.Foundation及其 GraphicsLibrary編寫邏輯來完成所有繪圖是多么容易。
構建此項目所需的一切都包含在Wilderness Labs Meadow F7 w/Hack Kit Pro 中。我們將看到使用 Meadow.Foundation 對這些外圍設備進行編程是多么容易。
Meadow.Foundation是一個平臺,用于在 Meadow 上使用 .NET 快速輕松地構建連接的事物。它由Wilderness Labs 創建,完全開源,由 Wilderness Labs 社區維護。
如果您是 Meadow 的新手,我建議您通過控制板載 RGB LED 項目轉到 Meadow 入門,以正確設置您的開發環境。
第 1 步 - 組裝電路
像下面的 Fritzing 圖一樣連接你的 EdgeASketch 電路:
?
關于 Meadow F7中斷的注意事項
如果仔細查看圖表,您會發現我們將頂部旋轉編碼器連接到模擬引腳 A1、A2 和 A3。這是可能的,因為您實際上可以將這些引腳配置為數字輸入端口來處理中斷。檢查這個 Meadow 引出線圖:
請注意標有中斷組的引腳范圍從組 00 到組 15。在配置數字輸入端口時要記住這一點很重要,您必須確保每個中斷組只使用一個引腳,否則您將嘗試獲取事件時遇到問題。例如,在配置引腳D08和D09時不會收到中斷事件,因為它們都屬于中斷組06 。
第 2 步 - 創建 Meadow 應用程序項目
在 Visual Studio 2019 for Windows或macOS中創建一個新的Meadow Application項目并將其命名為EdgeASketch 。
第 3 步 - 添加所需的 NuGet 包
對于這個項目,搜索并安裝以下 NuGet 包:
第 4 步 - 為 EdgeASketch 編寫代碼
復制下面的代碼:
// 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);
}
}
}
草地建設者
在 MeadowApp 中Constructor
,我們首先初始化ST7789
SPI 顯示和 MicroGraphics 庫,我們立即繪制一個覆蓋整個屏幕的白色填充矩形,并在顯示中間使用先前初始化的 x 和 y 整數繪制一個紅色像素。我們也初始化了兩個Rotary Encoders
,一個控制X軸的繪制,一個控制Y軸的繪制。兩個扶輪社都Rotated
注冊了該事件。
RotatyXRotated 和 RotatyYRotated 事件處理程序
e.Direction
在事件處理程序中,您可以通過訪問屬性并與枚舉進行比較以查看其是順時針還是逆時針來檢查旋轉編碼器轉向的方向。RotationDirection
如果它是順時針方向,我們增加 X 或 Y 坐標(取決于旋轉的是哪個 Rotaty),如果它以相反的方向旋轉,我們將減少。
請注意,我們在兩個方向上一次繪制三個像素,我們這樣做是為了讓線條描邊更粗一些,因為顯示器的分辨率太高了,繪制的線條太長了,很難看清是什么你正在做的。
旋轉Y點擊
由于我們使用帶按鈕的旋轉編碼器,您可以像處理按鈕一樣處理 Click 事件處理程序。事件RotaryYClicked
處理程序將清除顯示并將 x 和 y 坐標重新初始化回顯示的中間。
第 5 步 - 運行項目
單擊Visual Studio中的“運行”按鈕。它應該類似于以下 GIF:
查看 Meadow.Foundation!
就您可以使用 Meadow.Foundation 做的大量令人興奮的事情而言,這個項目只是冰山一角。
- 它帶有一個龐大的外設驅動程序庫,其中包含適用于最常見傳感器和外設的驅動程序。
- 外設驅動程序封裝了核心邏輯并公開了一個簡單、干凈、現代的 API。
- 該項目得到了不斷發展的社區的支持,該社區不斷致力于構建酷炫的互聯事物,并且總是樂于幫助新來者和討論新項目。
參考
- Wilderness Labs Meadow LoRa Field網關客戶端
- Meadow的項目實驗室入門
- 使用Meadow Foundation將模擬操縱桿與Meadow一起使用
- Meadow Rover第1部分:帶定向LED的電機控制
- 使用Meadow通過按鈕滾動LED骰子
- 使用REST使用Meadow和MAUI遠程控制伺服
- 使用Meadow構建FM收音機播放器
- 基于Arduino硬件光控燈制作資料 6次下載
- Genesis2000線路制作教程 genesis2000軟件自學 0次下載
- 如何使用Allegro中的Pad Designer制作焊盤詳細教程免費下載 0次下載
- 流水燈設計與制作解析 39次下載
- 《實用電子電路設計制作例解》-電子書籍.pdf 0次下載
- 2017年江西省大學生電子設計制作現場(28屆)賽題 22次下載
- 2016年江西省大學生電子設計制作現場(27屆)賽題.pdf 20次下載
- 2014年江西省大學生電子設計制作現場(25屆)賽題.pdf 5次下載
- 瓷片電容(MLCC)的制作流程 792次閱讀
- 芯片的制作流程及原理 2905次閱讀
- bnc接頭制作步驟 1.5w次閱讀
- 物聯網安全最重要的元素是什么_如何確保物聯網安全 3489次閱讀
- 電路板的制作案例分享 5160次閱讀
- GaN射頻器件是如何制作的呢? 1w次閱讀
- 創意小夜燈制作教程 6360次閱讀
- DNA螺旋臺燈制作詳解 3655次閱讀
- 遙控船玩具制作教程 5.4w次閱讀
- 創意小夜燈制作圖解 1.4w次閱讀
- 簡易聲控延時燈制作方法 1.4w次閱讀
- 怎樣制作12v電子燈箱_電子燈箱制作教程 2.7w次閱讀
- 怎么用分光光度計制作標準曲線_制作標準曲線有什么意義 7.8w次閱讀
- 無線調頻麥克風的設計和制作 5012次閱讀
- 光敏燃氣報警器的制作 2298次閱讀
下載排行
本周
- 1普中科技HC6800-EM3使用操作手冊
- 21.69 MB | 3次下載 | 2 積分
- 2PL4807單節鋰離子電池充電器中文手冊
- 1.36 MB | 2次下載 | 免費
- 3智能小車proteus仿真+C源程序
- 0.02 MB | 1次下載 | 免費
- 4TMR技術在電流傳感器中的應用
- 616.47 KB | 1次下載 | 免費
- 5開關電源設計原理手冊
- 1.83 MB | 1次下載 | 免費
- 6BQ769142技術參考手冊
- 2.99MB | 1次下載 | 免費
- 7CBM8605_8606_8608-運算放大器【中文排版】-202406271735
- 2.70 MB | 1次下載 | 免費
- 801-07-06-CBM8655_CBM8656精密運算放大器
- 4.49 MB | 1次下載 | 免費
本月
- 1XL4015+LM358恒壓恒流電路圖
- 0.38 MB | 154次下載 | 1 積分
- 2PCB布線和布局電路設計規則
- 0.40 MB | 35次下載 | 免費
- 3智能門鎖原理圖
- 0.39 MB | 13次下載 | 免費
- 4GB/T4706.1-2024 家用和類似用途電器的安全第1部分:通用要求
- 7.43 MB | 11次下載 | 1 積分
- 5JESD79-5C_v1.30-2024 內存技術規范
- 2.71 MB | 10次下載 | 免費
- 6elmo直線電機驅動調試細則
- 4.76 MB | 9次下載 | 6 積分
- 7WIFI智能音箱原理圖完整版
- 0.09 MB | 7次下載 | 10 積分
- 8PC1013三合一快充數據線充電芯片介紹
- 1.03 MB | 7次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935115次下載 | 10 積分
- 2開源硬件-PMP21529.1-4 開關降壓/升壓雙向直流/直流轉換器 PCB layout 設計
- 1.48MB | 420061次下載 | 10 積分
- 3Altium DXP2002下載入口
- 未知 | 233084次下載 | 10 積分
- 4電路仿真軟件multisim 10.0免費下載
- 340992 | 191367次下載 | 10 積分
- 5十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183333次下載 | 10 積分
- 6labview8.5下載
- 未知 | 81581次下載 | 10 積分
- 7Keil工具MDK-Arm免費下載
- 0.02 MB | 73806次下載 | 10 積分
- 8LabVIEW 8.6下載
- 未知 | 65985次下載 | 10 積分
評論
查看更多