Cumu creà prugrammi per Windows in Arduino

Cumu creà prugrammi per Windows in Arduino

Un ghjornu aghju avutu l'idea loca di purtà 500 puntatori laser in un locu. Aghju passatu assai tempu è l'aghju fattu. Hè risultatu spettaculare è inutile, ma mi piaceva. Sei mesi fà aghju avutu un'altra idea pazza. Sta volta, ùn hè micca spettaculare, ma assai più utile. Aghju ancu passatu assai tempu nantu à questu. È in questu articulu, aghju prisentatu una versione beta di a mo seconda idea loca.

Aghju chjamatu u prughjettu Nanonyam (Nanonyam) è ancu ghjuntu cun un logu per ellu (aghju disegnatu per 5 minuti).

Cumu creà prugrammi per Windows in Arduino

Per quelli chì pensanu in termini di Arduino, pudemu dì chì Nanonyam hè un scudo Arduino virtuale per cuntrullà Windows.

In altri palori, Nanonyam hè una macchina virtuale chì usa u firmware per u microcontroller AVR (ATMEGA2560 hè cunsigliatu) cum'è u bytecode. Dentru sta macchina virtuale hè un simulatore di core AVR, ma invece di i dispositi periferici, chì si trovanu in l'indirizzi SRAM da 0x0060 à 0x01FF, ci hè una interfaccia speciale per e funzioni virtuale (cumprese funzioni API di Windows). È quì hè assai impurtante per capiscenu subitu: u codice per Nanonyam ùn deve micca accessu à u spaziu di memoria specificatu, per ùn chjamà accidentalmente, per esempiu, a funzione di sguassà i schedari o di furmà un discu. U restu di a memoria SRAM varieghja da 0x0200 à 0xFFFF (questu hè più cà in un veru microcontroller) hè dispunibule per l'utilizatore per ogni scopu. Aghju nutatu subitu chì ci hè una prutezzione speciale contra u lanciu accidintali di u firmware di un veru microcontroller (o firmware da un'altra architettura): prima di attivà e funzioni "periculose", avete bisognu di chjamà una funzione virtuale spiciale complicata. Ci sò ancu altre caratteristiche di sicurità.

Per creà prugrammi per Nanonyam, avete bisognu di utilizà biblioteche speciali chì implementanu tutte e funzioni virtuali attualmente dispunibili. Scaricate a macchina virtuale Nanonyam è e librerie per questu pò esse quì. Eccu quì pagina di descrizzione di a funzione virtuale. E sì, u mo situ hè assai primitivu è micca adattatu per i dispositi mobile.

Nanonyam hè liberu per l'usu domesticu è cummerciale. U prugramma Nanonyam hè furnitu nantu à una basa "cum'è". U codice fonte ùn hè micca furnitu.

U prugramma hè attualmente in fase di prova. Implementatu circa 200 funzioni virtuale chì permettenu di creà prugrammi simplici per Windows.
Ovviamente, a creazione di qualcosa complicata in una tale macchina virtuale ùn funziona micca, postu chì a memoria per u codice hè solu 256 kB. I dati ponu esse guardati in schedarii separati, u buffer per a parte gràfica hè implementatu esternamente. Tutte e funzioni sò simplificate è adattate per l'architettura 8-bit.

Chì pudete fà in Nanonyam? Aghju avutu uni pochi di prublemi.

Sviluppu di blocchi di prugramma

Una volta avia bisognu di disignà un menu cumplessu per una visualizazione grafica di 128x64 punti. Veramente ùn vulia micca carricà constantemente u firmware in un veru microcontroller per vede cumu si vedenu i pixel. È cusì hè natu l'idea di Nanonyam. A figura sottu mostra una maghjina da un veru display OLED di unu di l'articuli nantu à u listessu menu. Avà possu travaglià senza un veru dispositivu.

Cumu creà prugrammi per Windows in Arduino

Nanonyam (in a so idea finale) hè un bonu strumentu per travaglià i blocchi di prugramma per i microcontrollers, postu chì ci sò funzioni per travaglià cù gràfiche (pudete simulà display è indicatori), cù schedari (pudete fà logs, leghje dati di teste), cù un teclatu (pudete leghje finu à 10 buttoni à u stessu tempu), cù porti COM (qui hè un articulu separatu).

Creazione di prugrammi rapidi

Per esempiu, avete bisognu di processà rapidamente 100500 schedarii di testu. Ognunu deve esse apertu, ligeramente mudificatu secondu un algoritmu simplice, salvatu è chjusu. Sè vo site un maestru di Python, allora vi felicitaraghju, avete tuttu. Ma s'è vo site un arduino indurita (è ci sò assai di elli), allora Nanonyam vi aiuterà à risolve stu prublema. Questu hè u mo secondu scopu in Nanonyam: aghjunghje parechje funzioni utili cum'è l'elaborazione di testu, piglià screenshots o simulate i tasti di tasti in u sistema (tutti chì, per via, ci sò digià), è ancu parechje altre funzioni per risolve i travaglii di rutina. .

Testing hardware via u portu COM

Nanonyam pò agisce cum'è un terminal chì travaglia secondu u vostru algoritmu. Pudete disegnà un menu menu per cuntrullà u dispusitivu è vede i dati ricevuti da u portu. Pudete salvà è leghje dati da i schedari per l'analisi. Un strumentu praticu per debugging simplice è calibrazione di hardware, è ancu per creà pannelli di cuntrollu di strumenti virtuali simplici. Per i studienti è i ghjovani scientisti, stu prughjettu pò esse assai utile.

A furmazione di prugrammazione

Tuttavia, cum'è cù tuttu u prughjettu Arduino, l'utilità principale di Nanonyam si trova in a simplificazione di e funzioni, l'interfaccia è u bootloader. Per quessa, stu prughjettu deve esse di interessu à i programatori principianti è quelli chì sò soddisfatti di u livellu di arduino. Per via, eiu ancu ùn aghju micca studiatu arduino in dettagliu, perchè aghju sempre utilizatu WinAVR o AVR Studio, ma hà cuminciatu cù assembler. Dunque, u prugramma di esempiu quì sottu serà un pocu sbagliatu, ma abbastanza travagliu.

Ciao Habr!

Hè u tempu di familiarizà cù qualchi funziunalità Nanonyam è scrive un prugramma simplice. Scriveremu in Arduino, ma micca in u modu di solitu, ma in u modu ch'e possu avà (aghju digià dettu chì ùn aghju micca capitu stu ambiente assai bè ancu). Prima, crea un novu sketch è selezziunate a tavola Mega2560.

Cumu creà prugrammi per Windows in Arduino

Salvà u sketch in un schedariu è copia dopu Biblioteca Nanonyam. Saria currettu per include l'intestazione di e librerie, ma ùn sò micca sapè cumu scrive a compilazione di i schedarii individuali in Arduino, cusì per avà avemu da includere e librerie direttamente (è tutte in una volta):

#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"

Saria ancu più currettu di fà un modulu speciale "Nanonyam per Arduino", chì pò esse stallatu direttamente da Arduino. Appena l'aghju capitu, l'aghju da fà, ma per avà sò solu dimustrà l'essenza di travaglià cù una macchina virtuale. Scrivemu u codice seguente:

//Сразу после запуска рисуем текст в окне
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);//Задержка и разгрузка процессора
}

Sketch cù stu prugrammu pò esse scaricatu quì. Descrizzione dettagliata di e funzioni cerca in u situ. Spergu chì i cumenti in stu codice sò abbastanza per piglià l'essenza di questu. Quì funzione sys_Nanonyam() ghjoca u rolu di una "password" per a macchina virtuale, chì elimina e restrizioni à e funzioni virtuale. Senza sta funzione, u prugramma chjuderà dopu à 3 seconde di funziunamentu.

Avemu appughjà u buttone "Verificà" è ùn ci deve esse ogni errore.

Cumu creà prugrammi per Windows in Arduino

Avà vi tocca à ottene un schedariu binariu (firmware). Sceglie u menu "Sketch>> Esporta u schedariu binariu (CTRL+ALT+S)".

Cumu creà prugrammi per Windows in Arduino

Questu copià dui fugliali HEX in u cartulare di sketch. Pigliemu solu u schedariu senza u prefissu "with_bootloader.mega".

Ci hè parechje manere di specificà un schedariu HEX à a macchina virtuale Nanonyam, tutti sò descritti nantu à sta pagina. Suggeriu di creà accantu à u schedariu Nanonyam.exe schedariu caminu, in quale registrà a strada completa à u nostru schedariu HEX. Dopu à quale pudete curriri Nanonyam.exe. Avemu una finestra cù a nostra inscription.

Cumu creà prugrammi per Windows in Arduino

In listessu modu, pudete creà prugrammi in altri ambienti, cum'è AVR Studio o WinAVR.

Questu hè induve finiscemu a nostra cunniscenza cù Nanonyam. L'idea principale deve esse chjara. Più esempi sò nantu à u situ web.. S'ellu ci hè abbastanza persone disposti à aduprà stu prughjettu, allora aghju da fà più esempi è cuntinuà à "piene" e librerie di funzioni virtuale. Idee concrete per u sviluppu di u prugettu è i rapporti di malfunctions, bugs è bugs sò accettati. Hè cunsigliatu di dirighjelli à i cuntatti, indicatu nant'à u situ. È a discussione hè benvenuta in i cumenti.

Grazie à tutti per a vostra attenzione è bona prugrammazione!

Source: www.habr.com

Add a comment