Hogyan készítsünk programokat Windows számára Arduino-ban

Hogyan készítsünk programokat Windows számára Arduino-ban

Egy nap az az őrült ötletem támadt, hogy elhozzam 500 lézermutató egy helyen. Sok időt töltöttem és megcsináltam. Látványos és haszontalan lett, de tetszett. Hat hónappal ezelőtt volt egy másik őrült ötletem. Ezúttal egyáltalán nem látványos, de sokkal hasznosabb. Én is sok időt töltöttem vele. Ebben a cikkben pedig a második őrült ötletem béta verzióját mutatom be.

A projektet Nanonyamnak (Nanonyam) neveztem el, sőt logót is kitaláltam hozzá (5 percig rajzoltam).

Hogyan készítsünk programokat Windows számára Arduino-ban

Azok számára, akik Arduinoban gondolkodnak, elmondhatjuk, hogy a Nanonyam egy virtuális Arduino pajzs a Windows vezérléséhez.

Más szóval, a Nanonyam egy virtuális gép, amely firmware-t használ az AVR mikrokontrollerhez (az ATMEGA2560 ajánlott) bájtkódként. Ebben a virtuális gépben egy AVR magszimulátor található, de a 0x0060-tól 0x01FF-ig terjedő SRAM-címeken található perifériák helyett speciális interfész található a virtuális funkciókhoz (beleértve a Windows API-funkciókat is). És itt nagyon fontos azonnal megérteni: a Nanonyam kódjának nem szabad hozzáférnie a megadott memóriatartományhoz, hogy véletlenül ne hívja meg például a fájlok törlését vagy a lemez formázását. Az SRAM memória tartomány többi része 0x0200-tól 0xFFFF-ig (ez több, mint egy valódi mikrokontrollerben) bármilyen célból a felhasználó rendelkezésére áll. Azonnal megjegyzem, hogy van egy speciális védelem a valódi mikrokontroller firmware-jének (vagy egy másik architektúrából származó firmware-nek) véletlen elindítása ellen: a „veszélyes” funkciók aktiválása előtt meg kell hívnia egy speciális trükkös virtuális funkciót. Vannak más biztonsági funkciók is.

A Nanonyam programjainak létrehozásához speciális könyvtárakat kell használnia, amelyek megvalósítják az összes jelenleg elérhető virtuális funkciót. Töltse le a Nanonyam virtuális gépet és a hozzá tartozó könyvtárakat Akkor majd. De a virtuális funkcióleíró oldal. És igen, a webhelyem nagyon primitív, és nincs mobileszközökhöz igazítva.

A Nanonyam ingyenes otthoni és kereskedelmi használatra. A Nanonyam programot „ahogy van” alapon biztosítjuk. A forráskód nincs megadva.

A program jelenleg tesztelési fázisban van. Körülbelül 200 virtuális funkciót valósított meg, amelyek lehetővé teszik egyszerű programok létrehozását a Windows számára.
Nyilvánvaló, hogy egy ilyen virtuális gépben bonyolult dolgokat létrehozni nem fog működni, mivel a kód memóriája mindössze 256 kB. Az adatok külön fájlokban tárolhatók, a grafikus rész puffere kívülről valósul meg. Minden funkció leegyszerűsített és 8 bites architektúrához igazodik.

Mit lehet csinálni Nanonyamban? Eszembe jutott néhány probléma.

Programblokkok fejlesztése

Egyszer kellett egy összetett menüt terveznem egy 128x64 képpontos grafikus kijelzőhöz. Nagyon nem akartam állandóan betölteni a firmware-t egy valódi mikrokontrollerbe, hogy lássam, hogyan néznek ki a pixelek. Így született meg a Nanonyam ötlete. Az alábbi ábra egy valódi OLED-kijelzőről készült képet mutat be ugyanazon menü egyik eleméről. Most már valódi eszköz nélkül is végig tudom dolgozni.

Hogyan készítsünk programokat Windows számára Arduino-ban

A Nanonyam (végső ötletében) jó eszköz a mikrokontrollerek programblokkjainak kidolgozására, mivel vannak funkciók a grafikával való munkavégzéshez (kijelzések és indikátorok szimulálására), fájlokkal (naplózhat, tesztadatokat olvashat), egy billentyűzet (akár 10 gomb is olvasható egyszerre), COM portokkal (itt egy külön tétel).

Gyors programok készítése

Például gyorsan fel kell dolgoznia 100500 szövegfájlt. Mindegyiket meg kell nyitni, valami egyszerű algoritmus szerint kissé módosítani, elmenteni és be kell zárni. Ha Python mester vagy, akkor gratulálok, mindened megvan. De ha edzett arduino vagy (és sok van belőlük), akkor a Nanonyam segít a probléma megoldásában. Ez a második célom a Nanonyamban: számos hasznos funkció hozzáadása a rendszerhez, például szövegfeldolgozás, képernyőképek készítése vagy billentyűleütések szimulálása (melyek egyébként már megvannak), valamint sok más funkció a rutinfeladatok megoldásához. .

Hardver tesztelése COM porton keresztül

A Nanonyam terminálként működhet, amely az Ön algoritmusa szerint működik. A készülék vezérléséhez és a portról kapott adatok megjelenítéséhez egy kis menüt rajzolhat. Elmentheti és kiolvashatja a fájlokból származó adatokat elemzés céljából. Praktikus eszköz a hardver egyszerű hibakereséséhez és kalibrálásához, valamint egyszerű virtuális műszervezérlő panelek létrehozásához. Diákok és fiatal tudósok számára ez a projekt nagyon hasznos lehet.

Programozási képzés

Azonban az egész Arduino projekthez hasonlóan a Nanonyam fő hasznossága a funkciók, a felület és a rendszerbetöltő egyszerűsítésében rejlik. Ezért ennek a projektnek érdekelnie kell a kezdő programozókat és azokat, akik elégedettek az arduino szintjével. Egyébként én magam még mindig nem tanultam részletesen az arduinót, mert mindig WinAVR-t vagy AVR Studio-t használtam, de az assemblerrel kezdtem. Ezért az alábbi példaprogram kissé hibás lesz, de nagyon működik.

Szia Habr!

Itt az ideje, hogy megismerkedjen néhány Nanonyam funkcióval, és írjon egy egyszerű programot. Arduinóban fogunk írni, de nem a megszokott módon, hanem úgy, ahogy most tudom (mondtam már, hogy ezt a környezetet még nem nagyon találtam ki). Először hozzon létre egy új vázlatot, és válassza ki a Mega2560 táblát.

Hogyan készítsünk programokat Windows számára Arduino-ban

Mentse el a vázlatot egy fájlba, majd másolja tovább Nanonyam könyvtár. Helyes lenne a könyvtárak fejléceit feltüntetni, de nem tudom, hogyan kell az egyes fájlok összeállítását írni Arduino-ban, ezért most csak közvetlenül (és egyszerre) fogjuk felvenni a könyvtárakat:

#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ég helyesebb lenne egy speciális „Nanonyam for Arduino” modult készíteni, amely közvetlenül az Arduino-ból telepíthető. Amint kitalálom, megcsinálom, de egyelőre csak a virtuális géppel való munka lényegét mutatom be. A következő kódot írjuk:

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

Vázlat ezzel a programmal innen tölthető le. A funkciók részletes leírása keressen az oldalon. Remélem, a kódban szereplő megjegyzések elegendőek ahhoz, hogy megértsük a lényeget. Itt a funkció sys_Nanonyam() a virtuális gép "jelszó" szerepét tölti be, amely megszünteti a virtuális funkciók korlátozásait. E funkció nélkül a program 3 másodperces működés után bezárul.

Megnyomjuk az "Ellenőrzés" gombot, és nem lehetnek hibák.

Hogyan készítsünk programokat Windows számára Arduino-ban

Most be kell szereznie egy bináris fájlt (firmware). Válassza ki a menüt"Vázlat>> Bináris fájl exportálása (CTRL+ALT+S)”.

Hogyan készítsünk programokat Windows számára Arduino-ban

Ezzel két HEX fájlt másol a vázlat mappába. Csak a "with_bootloader.mega" előtag nélküli fájlt vesszük.

A Nanonyam virtuális géphez többféle módon is megadhat HEX-fájlt, mindegyik leírásra kerül ezen az oldalon. Javaslom a fájl melletti létrehozást Nanonyam.exe fájl pálya, amelyben regisztrálhatja a HEX fájl teljes elérési útját. Utána lehet futni Nanonyam.exe. Kapunk egy ablakot a feliratunkkal.

Hogyan készítsünk programokat Windows számára Arduino-ban

Hasonlóképpen, más környezetekben is létrehozhat programokat, mint például az AVR Studio vagy a WinAVR.

Itt fejezzük be Nanonyammal való ismerkedésünket. A fő gondolatnak világosnak kell lennie. További példák a weboldalon.. Ha lesz elég ember, aki szeretné használni ezt a projektet, akkor készítek további példákat, és folytatom a virtuális függvénykönyvtárak "töltését". Konkrét ötleteket a projekt fejlesztéséhez és a meghibásodásokról, hibákról és hibákról szóló jelentéseket elfogadjuk. Célszerű az elérhetőségekre irányítani őket, feltüntetve a honlapon. A vitát pedig szívesen látjuk a kommentekben.

Köszönöm mindenkinek a figyelmet és a jó programozást!

Forrás: will.com

Hozzászólás