如何在 Arduino 中為 Windows 創建程序

如何在 Arduino 中為 Windows 創建程序

有一天我有了一個瘋狂的想法 一個地方有 500 個激光指示器。 我花了很多時間並且做到了。 結果很壯觀而且沒什麼用,但我喜歡它。 六個月前,我有了另一個瘋狂的想法。 這一次,一點也不壯觀,但更有用。 我也花了很多時間在這上面。 在這篇文章中,我展示了我的第二個瘋狂想法的測試版。

我將這個項目命名為 Nanonyam(Nanonyam),甚至還為它設計了一個徽標(我畫了 5 分鐘)。

如何在 Arduino 中為 Windows 創建程序

對於那些使用 Arduino 進行思考的人,我們可以說 Nanonyam 是一個用於控制 Windows 的虛擬 Arduino 擴展板。

換句話說,Nanonam是一個使用AVR微控制器(推薦ATMEGA2560)的固件作為字節碼的虛擬機。 該虛擬機內部是一個 AVR 核心模擬器,但不是位於 SRAM 地址 0x0060 到 0x01FF 的外圍設備,而是有一個特殊的虛擬函數接口(包括 Windows API 函數)。 在這裡,立即理解這一點非常重要:Nanonam 的代碼不應該對指定的內存範圍進行任何訪問,以免意外調用例如刪除文件或格式化磁盤的功能。 SRAM 存儲器的其餘部分從 0x0200 到 0xFFFF(這比實際微控制器中的要大)可供用戶用於任何目的。 我立即註意到,有一個特殊的保護措施,可以防止意外啟動真實微控制器的固件(或來自其他架構的固件):在激活“危險”函數之前,您需要調用一個特殊的棘手虛擬函數。 還有一些其他安全功能。

要為 Nanonyam 創建程序,您需要使用實現所有當前可用虛擬函數的特殊庫。 下載 Nanonyam 虛擬機及其庫 然後,您可以。 但 虛函數描述頁面。 是的,我的網站非常原始,不適合移動設備。

Nanonyam 可免費用於家庭和商業用途。 Nanonyam 程序按“原樣”提供。 不提供源代碼。

該程序目前正處於測試階段。 實現了大約 200 個虛擬函數,允許您為 Windows 創建簡單的程序。
顯然,在這樣的虛擬機中創建複雜的東西是行不通的,因為代碼的內存只有 256 kB。 數據可以存儲在單獨的文件中,圖形部分的緩衝區在外部實現。 所有功能均經過簡化並適合 8 位架構。

在納農揚可以做什麼? 我提出了一些問題。

程序塊的開發

我曾經需要為 128x64 點圖形顯示設計一個複雜的菜單。 我真的不想不斷地將固件加載到真正的微控制器中來查看像素的外觀。 於是 Nanonyam 的想法誕生了。 下圖顯示了同一菜單上某個項目的真實 OLED 顯示屏的圖像。 現在我可以在沒有真實設備的情況下完成它。

如何在 Arduino 中為 Windows 創建程序

Nanonyam(最終的想法)是一個用於為微控制器製定程序塊的好工具,因為它具有處理圖形(您可以模擬顯示器和指示器)、文件(您可以生成日誌、讀取測試數據)、以及一個鍵盤(您最多可以同時讀取 10 個按鈕),帶有 COM 端口(這裡是一個單獨的項目)。

創建快速程序

例如,您需要快速處理 100500 個文本文件。 每一個都需要打開,根據一些簡單的算法稍微修改,保存並關閉。 如果你是Python高手,那麼我恭喜你,你擁有了一切。 但如果你是一個頑固的arduino(而且有很多這樣的人),那麼Nanonam將幫助你解決這個問題。 這是我在 Nanonyam 中的第二個目標:添加許多有用的功能,例如係統中的文本處理、截圖或模擬擊鍵(順便說一下,所有這些都已經存在),以及許多其他用於解決日常任務的功能。

通過COM端口測試硬件

Nanonyam 可以充當根據您的算法工作的終端。 您可以繪製一個小菜單來控制設備並顯示從端口接收到的數據。 您可以保存和讀取文件中的數據以進行分析。 一個方便的工具,用於簡單的硬件調試和校準,以及創建簡單的虛擬儀器控制面板。 對於學生和年輕科學家來說,這個項目非常有用。

編程培訓

然而,與整個 Arduino 項目一樣,Nanonyam 的主要用處在於功能、接口和引導加載程序的簡化。 因此,這個項目應該會引起新手程序員和對arduino水平滿意的人的興趣。 順便說一句,我自己還沒有詳細研究過arduino,因為我一直用的是WinAVR或者AVR Studio,而是從彙編開始的。 因此,下面的示例程序會有點錯誤,但相當有效。

你好哈布爾!

是時候熟悉一些 Nanonyam 功能並編寫一個簡單的程序了。 我們將在Arduino中編寫,但不是以通常的方式,而是以我現在可以的方式(我已經說過我還沒有很好地弄清楚這個環境)。 首先,創建一個新草圖並選擇 Mega2560 板。

如何在 Arduino 中為 Windows 創建程序

將草圖保存到文件並複制下一步 納農圖書館。 包含庫的標頭是正確的,但我不知道如何在 Arduino 中編寫各個文件的編譯,因此現在我們將直接包含庫(並且一次全部包含):

#include <stdio.h>
#include "NanonyamnN_System_lib.c"
#include "NanonyamnN_Keyboard_lib.c"
#include "NanonyamnN_File_lib.c"
#include "NanonyamnN_Math_lib.c"
#include "NanonyamnN_Text_lib.c"
#include "NanonyamnN_Graphics_lib.c"
#include "NanonyamnN_RS232_lib.c"

製作一個特殊的模塊“Nanonyam for Arduino”會更正確,它可以直接從Arduino安裝。 一旦我弄清楚了,我就會這樣做,但現在我只是展示使用虛擬機的本質。 我們編寫以下代碼:

//Сразу после запуска рисуем текст в окне
void setup() {
  sys_Nanonyam();//Подтверждаем код виртуальной машины
  g_SetScreenSize(400,200);//Задаём размер дисплея 400х200 точек
  sys_WindowSetText("Example");//Заголовок окна
  g_ConfigExternalFont(0,60,1,0,0,0,"Arial");//Задаём шрифт Windows в ячейке шрифтов 0
  g_SetExternalFont(0);//Выбираем ячейку шрифтов 0 для рисования текста
  g_SetBackRGB(0,0,255);//Цвет фона синий
  g_SetTextRGB(255,255,0);//Цвет текста жёлтый
  g_ClearAll();//Очищаем экран (заливка цветом фона)
  g_DrawTextCenterX(0,400,70,"Hello, Habr!");//Рисуем надпись
  g_Update();//Выводим графический буфер на экран
}

//Просто ждём закрытия программы
void loop() {
  sys_Delay(100);//Задержка и разгрузка процессора
}

用這個程序畫草圖 可以在這裡下載。 功能詳細說明 在網站上搜索。 我希望這段代碼中的註釋足以理解它的要點。 這裡的功能 sys_Nanonyam() 起到了虛擬機“密碼”的作用,解除了對虛擬功能的限制。 如果沒有此功能,程序將在運行3秒後關閉。

我們按下“檢查”按鈕,應該不會有任何錯誤。

如何在 Arduino 中為 Windows 創建程序

現在您需要獲取一個二進製文件(固件)。 選擇菜單“草圖>>導出二進製文件(CTRL+ALT+S)“。

如何在 Arduino 中為 Windows 創建程序

這會將兩個 HEX 文件複製到 sketch 文件夾中。 我們只採用不帶前綴“with_bootloader.mega”的文件。

向Nanonam虛擬機指定HEX文件的方法有多種,均已描述 此頁面上。 我建議在文件旁邊創建 納諾亞姆程序 文件 小路,在其中註冊 HEX 文件的完整路徑。 之後你可以運行 納諾亞姆程序。 我們得到一個帶有我們的銘文的窗口。

如何在 Arduino 中為 Windows 創建程序

同樣,您可以在其他環境中創建程序,例如 AVR Studio 或 WinAVR。

到這裡我們就結束了對 Nanonyam 的認識。 主要思想應該很清楚。 網站上有更多示例。。 如果有足夠多的人願意使用這個項目,那麼我會做更多的例子並繼續“填充”虛擬函數庫。 接受項目開發的具體想法以及故障、錯誤和錯誤的報告。 建議將他們引導至聯繫人, 網站上註明。 並歡迎在評論中討論。

感謝大家的關注和精彩的節目!

來源: www.habr.com

添加評論