Si të krijoni programe për Windows në Arduino

Si të krijoni programe për Windows në Arduino

Njëherë më erdhi një ide e çmendur për të grumbulluar 500 tregues laser në një vend. Kam shpenzuar shumë kohë dhe e bëmë këtë. Doli të ishte spektakolare dhe e padobishme, por më pëlqeu. Gjashtë muaj më parë, më erdhi një ide tjetër e çmendur. Këtë herë nuk ishte aspak spektakolare, por shumë më e dobishme. Kam shpenzuar gjithashtu shumë kohë për të. Në këtë artikull, unë paraqes versionin beta të ideës time të dytë të çmendur.

Projekti e quajta Nanonyam dhe madje i krijova një logo (e kam vizatuar për plot 5 minuta).

Si të krijoni programe për Windows në Arduino

Për ata që mendojnë në terma Arduino, mund të thuhet se Nanonyam është një shild virtual Arduino për të kontrolluar Windows.

Me fjalë të tjera, Nanonyam është një makinë virtuale, në të cilën si kod bajt përdoret firmware për mikro kontrolluesin AVR (rekomandohet ATMEGA2560). Brenda kësaj makine virtuale ndodhet një simulator i bërthamës AVR, por në vend të pajisjeve periferike që ndodhen në adresat SRAM nga 0x0060 deri në 0x01FF, ndodhet një ndërfaqe speciale për funksionet virtuale (përfshirë funksionet e API Windows). Dhe këtu është shumë e rëndësishme të kuptoni menjëherë: kodi për Nanonyam nuk duhet të ketë asnjë referencë në atë gamë memorie, në mënyrë që të mos thërrasë rastësisht, për shembull, një funksion për fshirjen e skedarëve ose formatimin e disku. Gama tjetër e memories SRAM nga 0x0200 deri në 0xFFFF (kjo është më shumë se në mikrokontrolluesin real) është e disponueshme për përdoruesin për qëllime të ndryshme. Duhet të theksoj se ka një mbrojtje speciale nga aktivizimi aksidental i firmware-t së mikro kontrolluesit të vërtetë (ose firmware nga një arkitekturë tjetër): para se të aktivizoni funksionet "e rrezikshme", duhet të thërrisni një funksion virtual të veçantë. Ekzistojnë edhe disa elemente të tjera mbrojtëse.

Për të krijuar programe për Nanonyam, duhet të përdorni biblioteka speciale, në të cilat janë implementuar të gjitha funksionet virtuale që janë në dispozicion deri tani. Shkarkoni makinën virtuale Nanonyam dhe bibliotekat e saj mund të bëhet këtu. Ja se si faqja e përshkrimit të funksioneve virtuale. Dhe po, sajtin tim është shumë primitiv dhe nuk është i përshtatur për pajisjet mobile.

Programi Nanonyam është falas për përdorim shtëpiak dhe komercial. Programi Nanonyam ofrohet në kushte "si është". Kodi burimor nuk ofrohet.

Në këtë moment, programi është në fazën e testimit. Janë implementuar rreth 200 funksione virtuale, të cilat lejojnë krijimin e programeve të thjeshta për Windows.
Është e qartë se nuk është e mundur të krijosh diçka komplekse në një makinë virtuale të tillë, pasi ka vetëm 256 kB memorie për kod. Të dhënat mund të ruhen në skedarë të veçantë, ndihma për pjesën grafike është realizuar jashtë. Të gjitha funksionet janë thjeshtuar dhe përshtatur për arkitekturën 8-bit.

Çfarë mund të bëni në Nanonyam? Kam menduar disa detyra.

Praktikimi i blloqeve programore

Njëherë, më nevojitej të zhvilloja një menu të komplikuar për një ekran grafik 128×64 piksela. Nuk doja më shumë sesa të ngarkoja vazhdimisht firmware-n në mikro-kontrolluesin real, për të parë se si duken pikselat. Kështu lindi ideja e Nanonyam. Në figurën më poshtë, është një imazh nga një ekran OLED i njërit nga artikujt e atij menu. Tani mund ta punoj pa pajisjen reale.

Si të krijoni programe për Windows në Arduino

Nanonyam (në konceptin e tij përfundimtar) është një mjet i mirë për praktikimin e blloqeve programore për mikro-kontrolluesit, pasi ka funksione për të punuar me grafikën (mund të simulojë ekrane dhe tregues), me skedarë (mund të bëjë loge, të lexojë të dhëna testuese), me tastierën (mund të lexojë deri në 10 butona njëkohësisht), me portat COM (këtu është një pikë e veçantë).

Krijimi i programeve të shpejta

Për shembull, ju duhen disa minuta që të përpunoni 100500 skedarë teksti. Çdo skedar duhet të hapet, të modifikohet pak sipas një algoritmi të thjeshtë dhe të ruhet e të mbyllet. Nëse jeni një ekspert në Python, ju uroj gjithçka më të mirën, keni gjithçka. Por nëse jeni një Arduino i armatosur (dhe ka shumë të tillë), atëherë Nanonyam do t'ju ndihmojë në zgjidhjen e kësaj detyre. Kjo është gjithashtu një nga objektivat e mia në Nanonyam: të shtoj shumë funksione të dobishme si përpunimi i tekstit, krijimi i skrinshot-eve ose imitimi i shtypjes së çelësave në sistem (kjo, për të thënë të drejtën, tashmë ekziston), si dhe shumë funksione të tjera për zgjidhjen e detyrave të zakonshme.

Testimi i pajisjeve përmes portit COM

Nanonyam mund të veprojë si një terminal, që funksionon sipas algoritmit tuaj. Mund të krijoni një menu të vogël për të menaxhuar pajisjen dhe për të shfaqur të dhënat e marrura nga porta. Mund të ruani dhe lexoni të dhëna nga skedarët për analiza. Një mjet i përshtatshëm për debugging të lehtë dhe kalibrimin e pajisjeve, si dhe për krijimin e paneleve virtuale të thjeshta për menaxhimin e pajisjes. Për studentët dhe shkencëtarët e rinj, ky projekt mund të jetë shumë i dobishëm.

Mësimi i programimit

Megjithatë, siç ndodh me çdo projekt tjetër Arduino, dobinë kryesore të Nanonyam e përbën thjeshtësia e funksioneve, ndërfaqes dhe bootloader-it. Prandaj, ky projekt duhet të jetë i interesant për fillestarët në programim dhe ata që janë të kënaqur me nivelin e Arduino-s. Tani për tani, unë ende s'kam studiuar Arduino-n në detaje, pasi gjithmonë kam përdorur WinAVR ose AVR Studio, dhe kam filluar me assembler. Prandaj, shembulli i programit më poshtë do të jetë paksa i papërsosur, por plotësisht funksional.

Përshëndetje, Habr!

Ka ardhur koha për tu njohur me disa funksione të Nanonyam dhe për të shkruar një program të thjeshtë. Do të shkruajmë në Arduino, por jo siç është zakon, por ashtu siç unë tani di (më parë thashë se nuk e kam kuptuar ende mirë këtë mjedis). Së pari krijojmë një skicë të re dhe zgjedhim pllakën Mega2560.

Si të krijoni programe për Windows në Arduino

Ruajmë skicën në një skedar dhe kopjojmë përkrah bibliotekën Nanonyam. Do ishte e saktë të përfshiheshin titujt e bibliotekave, por nuk di si të shkruaj kompilimin e skedarëve të veçanta në Arduino, prandaj për momentin do t'i përfshijmë bibliotekat drejtpërdrejt (dhe të gjitha njëherësh):

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

Do ishte akoma më mirë të bëhej një modul i veçantë 'Nanonyam për Arduino', i cili mund të instalohej drejtpërdrejt nga Arduino. Sa më të qartë ta kuptoj këtë, do ta bëj, por për momentin po tregoj lëndën e punës me makinën virtuale. Të shkruajmë këtë kod:

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

Skica me këtë programin mund të shkarkohet këtu. Përshkrimi i detajuar i funksioneve mund të gjendet në faqen. Shpresoj se komentet në këtë kod janë mjaftueshëm të qarta për të kuptuar thelbin. Këtu funksioni sys_Nanonyam() luan rolin e 'fjalëkalimit' për makinën virtuale, e cila heq kufizimet mbi funksionet virtuale. Pa këtë funksion, programi do të mbyllet pas 3 sekondave të punës.

Shtypim butonin 'Kontrollo' dhe nuk duhet të ketë asnjë gabim.

Si të krijoni programe për Windows në Arduino

Tani duhet të marrim skedarin binar (Firmware). Zgjedhim menunë 'Skicë>> Eksporto skedarin binar (CTRL+ALT+S)«.

Si të krijoni programe për Windows në Arduino

Në këtë mënyrë, në dosjen me skicën do të kopjohen dy skedarë HEX. Ne marrim vetëm skedarin pa parafjalën 'with_bootloader.mega'.

Ka disa mënyra për të treguar skedarin HEX në makinën virtuale Nanonyam, të gjitha janë të përshkruara në këtë faqe. Unë propozoj të krijoj përkrah skedarit Nanonyam.exe skedari Nanonyam.path, ku të shkruajmë rrugën e plotë deri te skedari ynë HEX. Pas kësaj, mund të nisim Nanonyam.exe. Marrim një dritare me mbishkrimin tonë.

Si të krijoni programe për Windows në Arduino

Po ashtu mund të krijoni programe në mjedise të tjera, si në AVR Studio ose WinAVR.

Këtu do të ndalojmë njohjen me Nanonyam për tani. Ideja kryesore duhet të jetë e qartë. Ka edhe shembuj të tjerë në faqen. Nëse do të ketë mjaft kërkesa për këtë projekt, do të bëj më shumë shembuj dhe do të vazhdoj 'të mbush' bibliotekat e funksioneve virtuale. Pranojmë ide konkrete për zhvillimin e projektit dhe raportime për defekte, gabime dhe të metat. Preferohet që ato të dërgohen në kontaktet që janë të shënuara në faqen. Diskutimi është i mirëpritur në komente.

Falenderohet të gjithëve për vëmendjen dhe urime për programim të suksesshëm!

Burimi: habr.com

Bleni hostim të besueshëm për faqe me mbrojtje nga DDoS, serverë VPS VDS 🔥 Bleni hostim të besueshëm për faqe me mbrojtje nga DDoS, serverë VPS VDS | ProHoster