Si sih Arduino të krijosh programe për Windows

Si sih Arduino të krijosh programe për Windows

Njëherë më erdhi në mendje një ide absurd për të grumbulluar 500 lazer pointera në një vend. Kam shpenzuar shumë kohë dhe e bëra. Doli mbresëlënëse dhe e panevojshme, por më pëlqeu. Gjashtë muaj më parë më erdhi një ide tjetër absurd. Këtë herë jo fare mbresëlënëse, por shumë më e dobishme. Kam shpenzuar gjithashtu shumë kohë për të. Në këtë artikull paraqes versionin beta të ideve të mia të dyta të çmendura.

Projekti e quajta Nanonyam (Наноням) dhe madje i shpika një logo (e kam vizatuar për 5 minuta).

Si sih Arduino të krijosh programe për Windows

Për ata që mendojnë në terma Arduino, mund të thuhet se Nanonyam është një Arduino-shield virtual për menaxhimin e Windows.

Me fjalë tjera, Nanonyam është një makinë virtuale, në të cilën si kod bajt është përdorur firmware për mikrokontrollerin AVR (të rekomanduara ATMEGA2560). Brenda kësaj makine virtuale ndodhet një simulator i bërthamës AVR, por në vend të pajisjeve periferike, të cilat ndodhen në adresat e SRAM nga 0x0060 deri në 0x01FF, ndodhet një ndërfaqe speciale për funksionet virtuale (përfshirë funksionet e Windows API). Dhe është shumë e rëndësishme që të kuptohet menjëherë: kodi për Nanonyam nuk duhet të ketë asnjë referencë në atë gamë memorjeje, për të shmangur rastësisht thirrjen, për shembull, të funksionit të fshirjes së skedarëve apo formatimit të diskut. Gama tjetër e memorjes SRAM nga 0x0200 deri në 0xFFFF (kjo është më shumë se në mikrokontrollerin real) është e disponueshme për përdoruesin për qëllime të ndryshme. Menjëherë do të theksoj se ekziston një mbrojtje speciale ndaj aktivizimit aksidental të firmware-së së mikrokontrollerit të vërtetë (ose firmware-së nga arkitektura tjetër): para se të aktivizoni funksionet 'të rrezikshme', është e nevojshme të thirreni një funksion virtual të veçantë. Ekzistojnë edhe disa elemente të tjera mbrojtjeje.

Për të krijuar programe për Nanonyam nevojiten biblioteka speciale, në të cilat janë implementuar të gjitha funksionet virtuale të disponueshme deri tani. Shkarko makinën virtuale Nanonyam dhe bibliotekat e saj mund të bëhet këtu. Ja faqja e përshkrimit të funksioneve virtuale. Po, ndizet që faqja ime është shumë primitive dhe nuk është e adaptuar për pajisje mobile.

Programi Nanonyam është falas për përdorim në shtëpi dhe komercialisht. Programi Nanonyam ofrohet në kushte 'ashtu siç është'. Kodi burimor nuk ofrohet.

Currently, the program is in the testing phase. About 200 virtual functions have been implemented, allowing for the creation of simple programs for Windows.
It's obvious that creating something complex in such a virtual machine won't work, as there’s only 256 kB of memory for the code. Data can be stored in separate files, and the buffer for the graphical part is implemented externally. All functions are simplified and adapted for 8-bit architecture.

What can you do in Nanonyam? I've come up with several tasks.

Working on software blocks

Once, I needed to develop a complex menu for a 128×64 pixel graphical display. I really didn't want to constantly load the firmware onto a real microcontroller just to see how the pixels looked. Thus, the idea of Nanonyam was born. Below is an image from a real OLED display showing one of the menu items. Now I can refine it without the actual device.

Si sih Arduino të krijosh programe për Windows

Nanonyam (in its ultimate design) is a great tool for working on software blocks for microcontrollers, as it has functions for graphics (you can simulate displays and indicators), for files (you can create logs, read test data), for keyboards (you can read up to 10 buttons simultaneously), and for COM ports (which is a separate point).

Creating quick programs

For example, you need to quickly process 100500 text files. Each file needs to be opened, slightly modified according to a simple algorithm, saved, and closed. If you're a Python master, congratulations, you have everything you need. But if you're a dedicated Arduino enthusiast (and there are quite a few), then Nanonyam will help you solve this task. This is my second goal with Nanonyam: to add many useful functions like text processing, taking screenshots, or simulating key presses in the system (which are all already available), as well as many other functions for tackling routine tasks.

Testing hardware via COM port

Nanonyam mund të funksionojë si një terminal që punon sipas algoritmit tuaj. Mund të krijoni një menu të vogël për të menaxhuar pajisjen dhe për të shfaqur të dhënat që merren nga porta. Mund të ruani dhe lexoni të dhëna nga skedarët për analizë. Një mjet i dobishëm për riparimin dhe kalibrimin e thjeshtë të pajisjeve, si dhe për krijimin e paneleve virtuale të thjeshta të menaxhimit të pajisjeve. Ky projekt mund të jetë shumë i dobishëm për studentët dhe shkencëtarët e rinj.

Mësimi i programimit

Megjithatë, si në të gjithë projektin Arduino, dobia kryesore e Nanonyam qëndron në thjeshtësinë e funksioneve, ndërfaqes dhe bootloaderit. Prandaj, ky projekt duhet të jetë i interesant për programuesit e rinj dhe ata që janë të kënaqur me nivelin e Arduino. Nga ana tjetër, unë ende nuk e kam studiuar thellësisht Arduino, pasi gjithmonë kam përdorur WinAVR ose AVR Studio, dhe kam filluar me assembler. Prandaj, shembulli i mëposhtëm do të jetë paksa i gabuar, por mjaft funksional.

Përshëndetje, Habr!

Ka ardhur koha të njohim disa funksione të Nanonyam dhe të shkruajmë një program të thjeshtë. Do të shkruajmë në Arduino, por jo ashtu siç është zakon, por ashtu siç e di tani (kam thënë se ende nuk e kam kuptuar mirë këtë mjedis). Së pari, krijojmë një skicë të re dhe zgjedhim pllakën Mega2560.

Si sih Arduino të krijosh programe për Windows

Ruajmë skicën në një skedar dhe kopjojmë pranë bibliotekën Nanonyam. Do të ishte më e saktë të përfshiheshin titujt e bibliotekave, por nuk di si të përcaktoj kompilimin e skedarëve të veçantë 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"

Më saktë do të ishte të krijonim një modul të posaçëm "Nanonyam për Arduino", që mund të instalohet direkt nga Arduino. Sa herë që ta kuptoj këtë, do ta bëj, por për momentin po tregoj thelbin e punës me makinën virtuale. Le të shkruajmë një kod të tillë:

//Сразу после запуска рисуем текст в окне
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ë program mund të shkarkohet këtu. Përshkrimi i detajuar i funksioneve kërkoni në webfaqe. Shpresoj se komentet në këtë kod janë të mjaftueshme për të kuptuar thelbin. Këtu funksioni sys_Nanonyam() ka rolin e "fjalëkalimit" për makinën virtuale, i cili heq kufizimet mbi funksionet virtuale. Pa këtë funksion, programi do të mbyllet pas 3 sekondash funksionimi.

Klikoni butonin "Kontrollo" dhe nuk duhet të ketë asnjë gabim.

Si sih Arduino të krijosh programe për Windows

Tani duhet të marrim skedarin binar (firmware). Zgjidhni menunë "Skica>>Eksporto skedarin binar (CTRL+ALT+S)«.

Si sih Arduino të krijosh programe për Windows

Në këtë rast do të kopjohen dy skedarë HEX në një dosje me skicën. Ne marrim vetëm skedarin pa prefiksin «with_bootloader.mega».

Ka disa mënyra për të specifikuar skedarin HEX në makinerinë virtuale Nanonyam, të gjitha janë përshkruar në këtë faqe. Unë propozoj të krijoni një skedar pranë skedarit Nanonyam.exe skeda Nanonyam.path, ku shënohet rruga e plotë deri tek skedari ynë HEX. Pas kësaj, mund të nisni Nanonyam.exe. Marrim një dritare me shkrimin tonë.

Si sih Arduino të krijosh programe për Windows

Për shembuj, gjithashtu mund të krijoni programe në mjedise të tjera, siç janë AVR Studio ose WinAVR.

Këtu përfundon të njohurit me Nanonyam për tani. Ideja kryesore duhet të jetë e qartë. Ka edhe shembuj në faqen. Nëse do të ketë mjaft dëshira për të përdorur këtë projekt, do të bëj më shumë shembuj dhe do të vazhdoj të «mbush» bibliotekat e funksioneve virtuale. Miratohen ide konkrete për zhvillimin e projektit dhe raporte mbi defektet, bug-et dhe gabimet. Preferohet t'i dërgoni ato në kontaktet të shenuara në faqen. Diskutimi është i mirëpritur në komente.

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

Burimi: habr.com

Blini hosting të besueshëm për faqe interneti me mbrojtje nga DDoS, serverë VPS VDS 🔥 Blini hosting të besueshëm për faqe interneti me mbrojtje nga DDoS, serverë VPS VDS | ProHoster