Hoe kinne jo programma's meitsje foar Windows yn Arduino

Hoe kinne jo programma's meitsje foar Windows yn Arduino

Op in dei krige ik it gekke idee om te mingjen 500 laser pointers op ien plak. Ik bestege in protte tiid en die it. It draaide spektakulêr en nutteloos út, mar ik fûn it leuk. Seis moanne lyn kaam ik mei in oar gek idee. Dizze kear is it hielendal net spektakulêr, mar folle brûkberer. Ik haw der ek in protte tiid oan bestege. En yn dit artikel presintearje ik de beta-ferzje fan myn twadde gekke idee.

Ik neamde it projekt Nanonyam (Nanonyam) en kaam der sels in logo foar (it naam my in hiele 5 minuten om te tekenjen).

Hoe kinne jo programma's meitsje foar Windows yn Arduino

Foar dyjingen dy't tinke yn termen fan Arduino, kinne wy ​​​​sizze dat Nanonyam in firtuele Arduino-skild is foar it kontrolearjen fan Windows.

Mei oare wurden, Nanonyam is in firtuele masine dy't de firmware brûkt foar de AVR-mikrocontroller (ATMEGA2560 oanrikkemandearre) as bytekoade. Binnen dizze firtuele masine is in AVR kernel simulator, mar ynstee fan de perifeare apparaten, dy't lizze op SRAM adressen 0x0060 oan 0x01FF, der is in spesjale ynterface foar firtuele funksjes (ynklusyf Windows API funksjes). En hjir is it heul wichtich om fuortendaliks te begripen: de koade foar Nanonyam moat gjin tagong hawwe ta it spesifisearre ûnthâldberik, om net per ongelok te neamen, bygelyks de funksje fan it wiskjen fan bestannen of it opmeitsjen fan in skiif. It oerbleaune SRAM-ûnthâldberik fan 0x0200 oant 0xFFFF (dit is grutter dan yn in echte mikrocontroller) is beskikber foar de brûker foar elk doel. Ik moat fuortendaliks opmerke dat d'r spesjale beskerming is tsjin tafallige lansearring fan 'e firmware fan in echte mikrocontroller (of firmware fan in oare arsjitektuer): foardat jo "gefaarlike" funksjes aktivearje, moatte jo in spesjale lestige firtuele funksje neame. D'r binne ek wat oare feiligenseleminten.

Om programma's foar Nanonyam te meitsjen, moatte jo spesjale bibleteken brûke dy't alle op it stuit beskikbere firtuele funksjes ymplementearje. Download de Nanonyam firtuele masine en syn bibleteken kin hjir wêze. En hjir firtuele funksje beskriuwing side. En ja, myn side is heul primityf en net oanpast foar mobile apparaten.

Nanonyam is fergees foar thús en kommersjeel gebrûk. It Nanonyam-programma wurdt levere op in "as is" basis. Gjin boarnekoade levere.

Op it stuit is it programma yn 'e testfase. Sawat 200 firtuele funksjes binne ymplementearre wêrtroch jo ienfâldige programma's foar Windows kinne meitsje.
Fansels sil it net mooglik wêze om neat kompleks te meitsjen yn sa'n firtuele masine, om't d'r mar 256 kB ûnthâld is foar de koade. Gegevens kinne wurde opslein yn aparte bestannen, de buffer foar it grafyske diel wurdt ekstern ymplementearre. Alle funksjes wurde ferienfâldige en oanpast foar 8-bit arsjitektuer.

Wat kinne jo dwaan yn Nanonyam? Ik kaam mei ferskate problemen.

Testing programma blokken

Ik moast ienris in kompleks menu ûntwikkelje foar in grafyske werjefte fan 128x64 piksels. Ik woe de firmware net konstant laden yn in echte mikrocontroller om te sjen hoe't de piksels der útseagen. Dit is hoe't it idee fan Nanonyam waard berne. De figuer hjirûnder is in ôfbylding fan in echte OLED-werjefte fan ien fan 'e items yn datselde menu. No kin ik der troch wurkje sûnder in eigentlik apparaat.

Hoe kinne jo programma's meitsje foar Windows yn Arduino

Nanonyam (yn syn definitive ûntwerp) is in goed ark foar it útwurkjen fan programmablokken foar mikrocontrollers, om't it funksjes hat foar wurkjen mei grafiken (jo kinne byldskermen en yndikatoaren simulearje), mei bestannen (jo kinne logs meitsje, testgegevens lêze), mei in toetseboerd (do kinst lêze oant 10 knoppen tagelyk), mei COM havens (der is in apart item hjir).

It meitsjen fan Quick Programs

Jo moatte bygelyks 100500 tekstbestannen fluch ferwurkje. Elk moat iepene wurde, in bytsje feroare neffens wat ienfâldich algoritme, bewarre en sluten. As jo ​​​​in Python-master binne, dan lokwinsken, jo hawwe alles. Mar as jo in inveterate Arduino guy binne (en d'r binne in protte fan har), dan sil Nanonyam jo helpe om dit probleem op te lossen. Dit is krekt myn twadde doel yn Nanonyam: in protte nuttige funksjes tafoegje, lykas tekstferwurking, it meitsjen fan skermôfbyldings of simulearjen fan toetsoanslagen yn it systeem (dêr't allegear trouwens al binne), lykas ek in protte oare funksjes foar it oplossen fan routine taken.

Testen fan hardware fia COM-poarte

Nanonyam kin fungearje as in terminal dy't wurket neffens jo algoritme. Jo kinne in lyts menu tekenje om it apparaat te kontrolearjen en de gegevens te werjaan dy't ûntfongen binne fan 'e haven. Jo kinne gegevens fan bestannen opslaan en lêze foar analyse. In handich ark foar ienfâldige debuggen en kalibraasje fan hardware, lykas ek foar it meitsjen fan ienfâldige firtuele ynstrumintkontrôlepanielen. Dit projekt kin heul nuttich wêze foar studinten en jonge wittenskippers.

Programming training

Lykwols, lykas by it hiele Arduino-projekt, leit de wichtichste nut fan Nanonyam yn 'e ienfâld fan har funksjes, ynterface en bootloader. Dêrom soe dit projekt fan belang wêze moatte foar nije programmeurs en dyjingen dy't tefreden binne mei it Arduino-nivo. Trouwens, ik sels haw Arduino noch net yn detail studearre, om't ik altyd WinAVR of AVR Studio brûkte, en begon mei assembler. Dêrom sil it foarbyldprogramma hjirûnder in bytsje ferkeard wêze, mar goed wurkje.

Hallo, Habr!

It is tiid om yn 'e kunde te kommen mei guon fan 'e funksjes fan Nanonyam en in ienfâldich programma te skriuwen. Wy sille yn Arduino skriuwe, mar net op 'e tradisjonele manier, mar op 'e manier dy't ik no kin (ik haw al sein dat ik dizze omjouwing noch net sa goed begrepen haw). Meitsje earst in nije skets en selektearje it Mega2560-boerd.

Hoe kinne jo programma's meitsje foar Windows yn Arduino

Bewarje de skets yn in bestân en kopiearje it njonken it Nanonyam bibleteek. It soe korrekt wêze om bibleteekkoppen op te nimmen, mar ik wit net hoe't ik yndividuele bestannen yn Arduino kompilearje kinne, dus foar no sille wy de bibleteken direkt opnimme (allegear yn ien kear):

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

It soe noch better wêze om in spesjale module "Nanonyam foar Arduino" te meitsjen, dy't direkt fan Arduino ynstallearre wurde kin. Sadree't ik dit útfine, sil ik it dwaan, mar foar no lit ik gewoan de essinsje sjen fan wurkjen mei in firtuele masine. Wy skriuwe de folgjende koade:

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

Skizze mei dit programma kin hjir downloade wurde. Detaillearre beskriuwing fan funksjes sykje op de webside. Ik hoopje dat de opmerkingen yn dizze koade genôch binne om it punt oer te bringen. Hjir is de funksje sys_Nanonyam() spilet de rol fan in "wachtwurd" foar de firtuele masine, dy't ferwideret beheiningen op firtuele funksjes. Sûnder dizze funksje sil it programma nei 3 sekonden fan operaasje slute.

Klikje op de knop "Kontrolearje" en d'r moatte gjin flaters wêze.

Hoe kinne jo programma's meitsje foar Windows yn Arduino

No moatte jo de binêre triem (firmware) krije. Selektearje it menu "Skets >> Eksportearje binêre triem (CTRL+ALT+S)".

Hoe kinne jo programma's meitsje foar Windows yn Arduino

Yn dit gefal wurde twa HEX-bestannen kopiearre nei de map mei de skets. Wy nimme allinich it bestân sûnder it foarheaksel "with_bootloader.mega".

D'r binne ferskate manieren om in HEX-bestân te wizen op 'e Nanonyam firtuele masine, allegear wurde beskreaun op dizze side. Ik stel foar oanmeitsjen neist it bestân Nanonyam.exe file Nanonyam.path, wêryn it folsleine paad nei ús HEX-bestân skriuwt. Dêrnei kinne jo rinne Nanonyam.exe. Wy krije in rút mei ús ynskripsje.

Hoe kinne jo programma's meitsje foar Windows yn Arduino

Op deselde manier kinne jo programma's meitsje yn oare omjouwings, bygelyks yn AVR Studio of WinAVR.

Dit is wêr't wy ús yntroduksje nei Nanonyam sille ôfmeitsje. It haad idee moat dúdlik wêze. Der steane mear foarbylden op de webside. As d'r genôch minsken binne dy't ree binne om dit projekt te brûken, sil ik mear foarbylden meitsje en trochgean mei "befolke" de firtuele funksjebiblioteken. Spesifike ideeën foar de ûntwikkeling fan it projekt en rapporten oer storingen, bugs en flaters wurde akseptearre. It is oan te rieden om se te rjochtsjen nei kontakten, oanjûn op de webside. En diskusje is wolkom yn 'e kommentaren.

Tankewol allegear foar jo oandacht en lokkige programmearring!

Boarne: www.habr.com

Add a comment