Hoe om programme vir Windows in Arduino te skep

Hoe om programme vir Windows in Arduino te skep

Eendag het ek die mal idee gehad om te bring 500 laserwysers op een plek. Ek het baie tyd spandeer en dit gedoen. Dit het skouspelagtig en nutteloos geword, maar ek het daarvan gehou. Ses maande gelede het ek nog 'n mal idee gehad. Hierdie keer glad nie skouspelagtig nie, maar baie nuttiger. Ek het ook baie tyd daaraan bestee. En in hierdie artikel bied ek 'n beta-weergawe van my tweede mal idee aan.

Ek het die projek Nanonyam (Nanonyam) genoem en selfs met 'n logo daarvoor vorendag gekom (ek het 5 minute lank geteken).

Hoe om programme vir Windows in Arduino te skep

Vir diegene wat in terme van Arduino dink, kan ons sê dat Nanonyam 'n virtuele Arduino-skild is om Windows te beheer.

Met ander woorde, Nanonyam is 'n virtuele masjien wat firmware vir die AVR-mikrobeheerder (ATMEGA2560 word aanbeveel) as die greepkode gebruik. Binne hierdie virtuele masjien is 'n AVR-kernsimulator, maar in plaas van randapparatuur, wat by SRAM-adresse van 0x0060 tot 0x01FF geleë is, is daar 'n spesiale koppelvlak na virtuele funksies (insluitend Windows API-funksies). En hier is dit baie belangrik om dadelik te verstaan: die kode vir Nanonyam moet geen toegang tot die gespesifiseerde geheuereeks hê nie, om nie per ongeluk die funksie van die verwydering van lêers of die formatering van 'n skyf per ongeluk te noem nie. Die res van die SRAM-geheue-reeks van 0x0200 tot 0xFFFF (dit is meer as in 'n regte mikrobeheerder) is vir enige doel vir die gebruiker beskikbaar. Ek merk dadelik op dat daar 'n spesiale beskerming is teen toevallige bekendstelling van die firmware van 'n regte mikrobeheerder (of firmware van 'n ander argitektuur): voordat u "gevaarlike" funksies aktiveer, moet u 'n spesiale moeilike virtuele funksie oproep. Daar is ook 'n paar ander sekuriteitskenmerke.

Om programme vir Nanonyam te skep, moet jy spesiale biblioteke gebruik wat alle tans beskikbare virtuele funksies implementeer. Laai die Nanonyam virtuele masjien en biblioteke daarvoor af kan hier wees. Maar die virtuele funksie beskrywing bladsy. En ja, my webwerf is baie primitief en nie aangepas vir mobiele toestelle nie.

Nanonyam is gratis vir tuis- en kommersiële gebruik. Die Nanonyam-program word op 'n "soos dit is"-basis verskaf. Bronkode word nie verskaf nie.

Die program is tans in die toetsfase. Ongeveer 200 virtuele funksies geïmplementeer wat jou toelaat om eenvoudige programme vir Windows te skep.
Dit is duidelik dat die skep van iets ingewikkelds in so 'n virtuele masjien nie werk nie, aangesien die geheue vir die kode slegs 256 kB is. Data kan in aparte lêers gestoor word, die buffer vir die grafiese deel word ekstern geïmplementeer. Alle funksies is vereenvoudig en aangepas vir 8-bis argitektuur.

Wat kan jy in Nanonyam doen? Ek het met 'n paar probleme vorendag gekom.

Ontwikkeling van programblokke

Ek moes eenkeer 'n komplekse spyskaart ontwerp vir 'n 128x64-punt grafiese vertoning. Ek wou regtig nie die firmware voortdurend in 'n regte mikrobeheerder laai om te sien hoe die pixels lyk nie. En so is die idee van Nanonyam gebore. Die figuur hieronder toon 'n beeld van 'n regte OLED-skerm van een van die items op dieselfde spyskaart. Nou kan ek daardeur werk sonder 'n regte toestel.

Hoe om programme vir Windows in Arduino te skep

Nanonyam (in sy finale idee) is 'n goeie hulpmiddel om programblokke vir mikrobeheerders uit te werk, aangesien daar funksies is om met grafika te werk (jy kan skerms en aanwysers simuleer), met lêers (jy kan logs maak, toetsdata lees), met 'n sleutelbord (jy kan tot 10 knoppies op dieselfde tyd lees), met COM-poorte (hier is 'n aparte item).

Skep vinnige programme

Byvoorbeeld, jy moet 100500 tekslêers vinnig verwerk. Elkeen moet oopgemaak word, effens aangepas word volgens een of ander eenvoudige algoritme, gestoor en toegemaak word. As jy 'n Python-meester is, dan wens ek jou geluk, jy het alles. Maar as jy 'n geharde arduino is (en daar is baie van hulle), dan sal Nanonyam jou help om hierdie probleem op te los. Dit is my tweede doelwit in Nanonyam: om baie nuttige funksies soos teksverwerking, die neem van skermkiekies of die simulering van toetsaanslagen in die stelsel by te voeg (wat alles terloops reeds daar is), asook baie ander funksies om roetinetake op te los .

Toets hardeware via COM-poort

Nanonyam kan optree as 'n terminaal wat volgens jou algoritme werk. Jy kan 'n klein spyskaart teken om die toestel te beheer en die data wat vanaf die poort ontvang is, te vertoon. Jy kan data van lêers stoor en lees vir ontleding. 'n Handige hulpmiddel vir eenvoudige ontfouting en kalibrering van hardeware, sowel as vir die skep van eenvoudige virtuele instrumentbeheerpanele. Vir studente en jong wetenskaplikes kan hierdie projek baie nuttig wees.

Programmering opleiding

Soos met die hele Arduino-projek, lê die belangrikste nut van Nanonyam egter in die vereenvoudiging van funksies, koppelvlak en selflaaiprogram. Daarom moet hierdie projek van belang wees vir beginnerprogrammeerders en diegene wat tevrede is met die vlak van arduino. Terloops, ek het self nog nie arduino in detail bestudeer nie, want ek het altyd WinAVR of AVR Studio gebruik, maar met assembler begin. Daarom sal die voorbeeldprogram hieronder 'n bietjie verkeerd wees, maar nogal werk.

Hallo Habr!

Dit is tyd om vertroud te raak met 'n paar Nanonyam-kenmerke en 'n eenvoudige program te skryf. Ons sal in Arduino skryf, maar nie op die gewone manier nie, maar op die manier wat ek nou kan (ek het reeds gesê dat ek nog nie hierdie omgewing baie goed uitgepluis het nie). Skep eers 'n nuwe skets en kies die Mega2560-bord.

Hoe om programme vir Windows in Arduino te skep

Stoor die skets in 'n lêer en kopieer volgende Nanonyam-biblioteek. Dit sal korrek wees om die opskrifte van die biblioteke in te sluit, maar ek weet nie hoe om samestelling van individuele lêers in Arduino te skryf nie, so vir nou sal ons net die biblioteke direk insluit (en alles op een slag):

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

Dit sal selfs meer korrek wees om 'n spesiale module "Nanonyam vir Arduino" te maak, wat direk vanaf Arduino geïnstalleer kan word. Sodra ek dit uitvind, sal ek dit doen, maar vir nou wys ek net die essensie van werk met 'n virtuele masjien. Ons skryf die volgende kode:

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

Skets met hierdie program kan hier afgelaai word. Gedetailleerde beskrywing van funksies soek op die webwerf. Ek hoop die opmerkings in hierdie kode is genoeg om die kern daarvan te verstaan. Hier funksie sys_Nanonyam() speel die rol van 'n "wagwoord" vir die virtuele masjien, wat beperkings op virtuele funksies verwyder. Sonder hierdie funksie sal die program na 3 sekondes se werking sluit.

Ons druk die "Check"-knoppie en daar behoort geen foute te wees nie.

Hoe om programme vir Windows in Arduino te skep

Nou moet jy 'n binêre lêer (firmware) kry. Kies die spyskaart "Skets >> Voer binêre lêer uit (CTRL+ALT+S)«.

Hoe om programme vir Windows in Arduino te skep

Dit sal twee HEX-lêers na die sketsgids kopieer. Ons neem slegs die lêer sonder die voorvoegsel "with_bootloader.mega".

Daar is verskeie maniere om 'n HEX-lêer aan die Nanonyam virtuele masjien te spesifiseer, almal word beskryf op hierdie bladsy. Ek stel voor om langs die lêer te skep Nanonyam.exe lêer pad, waarin die volledige pad na ons HEX-lêer te registreer. Waarna jy kan hardloop Nanonyam.exe. Ons kry 'n venster met ons inskripsie.

Hoe om programme vir Windows in Arduino te skep

Net so kan jy programme in ander omgewings skep, soos AVR Studio of WinAVR.

Dit is waar ons ons kennismaking met Nanonyam voltooi. Die hoofgedagte moet duidelik wees. Meer voorbeelde is op die webwerf.. As daar genoeg mense is wat bereid is om hierdie projek te gebruik, dan sal ek meer voorbeelde maak en voortgaan om die virtuele funksie biblioteke te "vul". Konkrete idees vir die ontwikkeling van die projek en verslae van wanfunksies, foute en foute word aanvaar. Dit is raadsaam om hulle na kontakte te verwys, op die webwerf aangedui. En bespreking is welkom in die kommentaar.

Dankie almal vir julle aandag en goeie programmering!

Bron: will.com

Voeg 'n opmerking