Kako v Arduinu ustvarjati programe za Windows

Kako v Arduinu ustvarjati programe za Windows

Nekajkrat mi je v glavo prišla nora ideja združiti 500 laser pointerjev na enem mestu. Porabil sem veliko časa in to naredil. Izkazalo se je spektakularno in brez uporabe, a mi je bilo všeč. Pred šestimi meseci me je obšla nova nora ideja. Tokrat ni bila spektakularna, a je bila veliko uporabnejša. Tudi tokrat sem porabil veliko časa. V tem članku predstavljam beta različico svoje druge nore ideje.

Projekt sem poimenoval Nanonyam in mu celo ustvaril logotip (risal sem kar 5 minut).

Kako v Arduinu ustvarjati programe za Windows

Za tiste, ki razmišljajo v terminih Arduino, lahko rečem, da je Nanonyam virtualni Arduino shield za upravljanje Windowsa.

Drugimi besedami, Nanonyam je virtualni stroj, v katerem se kot bajtna koda uporablja programska oprema za mikrokontroler AVR (priporočena ATMEGA2560). Znotraj tega virtualnega stroja je simulator AVR jedra, vendar namesto perifernih naprav, ki so razporejene po naslovih SRAM od 0x0060 do 0x01FF, obstaja poseben vmesnik za virtualne funkcije (vključno s funkcijami Windows API). In tukaj je zelo pomembno, da takoj razumemo: koda za Nanonyam ne sme imeti nobenih dostopov do navedenega pomnilniškega območja, da ne bi naletela, na primer, na funkcijo za izbris datotek ali formatiranje diska. Ostalo območje pomnilnika SRAM od 0x0200 do 0xFFFF (to je več, kot v pravem mikrokontrolerju) je na voljo uporabniku za poljubne namene. Takoj je treba omeniti, da obstaja posebna zaščita pred naključnim zagonu programske opreme pravega mikrokontrolerja (ali programske opreme z druge arhitekture): preden aktivirate 'nevarne' funkcije, je treba poklicati posebno zvito virtualno funkcijo. Obstajajo tudi drugi zaščitni elementi.

Za ustvarjanje programov za Nanonyam morate uporabiti specializirane knjižnice, v katerih so implementirane vse trenutno razpoložljive virtualne funkcije. Prenesite virtualni stroj Nanonyam in knjižnice zanj lahko tukaj. A ovo stran s opisom virtualnih funkcij. In ja, moja stran je zelo osnovna in ni prilagojena za mobilne naprave.

Program Nanonyam je brezplačen za domačo in komercialno uporabo. Program Nanonyam se nudi po načelu 'tak kot je'. Izvorna koda ni na voljo.

Trenutno se program nalazi u fazi testiranja. Implementirano je oko 200 virtuelnih funkcija koje omogućavaju kreiranje jednostavnih programa za Windows.
Očigledno je da ne možete napraviti ništa komplikovano u ovakvoj virtuelnoj mašini, jer je memorija za kod samo 256 kB. Podaci se mogu čuvati u posebnim fajlovima, a bafer za grafički deo je realizovan spolja. Sve funkcije su pojednostavljene i prilagođene za 8-bitnu arhitekturu.

Šta se može uraditi u Nanonyamu? Smislio sam nekoliko zadataka.

Obrada programskih blokova

Jednom sam trebao da razvijem složen meni za grafički displej 128×64 tačke. Nije mi se mnogo dopadalo da stalno učitam firmware u pravi mikrocontroller kako bih video izgled piksela. Tako je nastala ideja za Nanonyam. Na slici ispod je prikaz sa pravog OLED displeja jednog od stavki tog menija. Sada mogu da radim na njemu bez pravog uređaja.

Kako v Arduinu ustvarjati programe za Windows

Nanonyam (u svom konačnom obliku) je dobar alat za obradu programskih blokova za mikrocontrollere, jer ima funkcije za rad sa grafikom (može da imitira displeje i indikatore), sa fajlovima (može da pravi logove, čita testne podatke), sa tastaturom (može da čita do 10 dugmadi istovremeno), kao i sa COM portovima (to je posebna stavka).

Kreiranje brzih programa

Na primer, trebate brzo obraditi 100500 tekstualnih fajlova. Svaki treba otvoriti, malo izmeniti prema nekog jednostavnom algoritmu, sačuvati i zatvoriti. Ako ste majstor Python-a, čestitam, imate sve što vam treba. Ali ako ste tvrdi Arduinovac (a takvih ima mnogo), Nanonyam će vam pomoći da rešite ovaj zadatak. Ovo je moj drugi cilj u Nanonyamu: dodati mnoštvo korisnih funkcija poput obrade teksta, pravljenja screenshotova ili imitacije pritisaka tastera u sistemu (sve to, usput, već postoji), kao i mnoštvo drugih funkcija za rešavanje rutinskih zadataka.

Testiranje hardvera preko COM porta

Nanonyam lahko deluje kot terminal, ki deluje po vašem algoritmu. Ustvarite lahko drobno menijsko strukturo za upravljanje naprave in prikazovanje podatkov, pridobljenih iz serijskega vhoda. Podatke lahko shranjujete in pregledujete iz datotek za analizo. Je priročno orodje za preprosto odpravljanje napak in kalibracijo strojne opreme ter za ustvarjanje preprostih virtualnih nadzornih plošč. Ta projekt bi lahko bil zelo koristen za študente in mlade znanstvenike.

Učenje programiranja

Kot pri celotnem projektu Arduino, je glavna vrednost Nanonyam v preprostosti funkcij, uporabniškega vmesnika in naložbe. Zato bi moral biti ta projekt zanimiv za začetnike programerje in tiste, ki so zadovoljni z raven Arduina. Mimogrede, sam še nisem podrobno raziskal Arduina, saj sem vedno uporabljal WinAVR ali AVR Studio in začel z assemblerjem. Zato bo spodnji primer programa nekoliko napačen, a še vedno deluje.

Pozdrav, Habr!

Prišel je čas, da se spoznamo z nekaterimi funkcijami Nanonyam in napišemo preprost program. Pisali bomo v Arduinu, a ne na običajen način, temveč tako, kot znam zdaj (že sem omenil, da še ne obvladam te okolice dobro). Najprej ustvarimo nov sketch in izberemo ploščo Mega2560.

Kako v Arduinu ustvarjati programe za Windows

Shranimo sketch v datoteko in poleg kopiramo knjigovodstvo Nanonyam. Pravilno bi bilo vključiti naslove knjižnic, vendar ne vem, kako v Arduinu nastaviti kompilacijo posameznih datotek, zato za zdaj preprosto vključimo knjižnice neposredno (in vse hkrati):

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

Še bolj pravilno bi bilo ustvariti poseben modul “Nanonyam for Arduino”, ki ga je mogoče namestiti kar iz Arduina. Ko se s tem razjasnim, bom to storil, za zdaj pa preprosto prikazujem način dela z virtualnim strojem. Pišemo takšno kodo:

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

Sketch s tem programom lahko prenesete tukaj. Podrobne informacije o funkcijah poiščite na spletni strani. Upam, da je v tem kodu dovolj komentarjev, da lahko razumete bistvo. Tukaj funkcija sys_Nanonyam() igra vlogo 'gesla' za virtualni stroj, ki odstrani omejitve na virtualne funkcije. Brez te funkcije se bo program zaprl po 3 sekundah delovanja.

Kliknite gumb 'Preveri' in ne sme biti nobenih napak.

Kako v Arduinu ustvarjati programe za Windows

Zdaj je treba pridobiti binarno datoteko (program). Izberite meni 'Sketch>>Izvozi binarno datoteko (CTRL+ALT+S)«.

Kako v Arduinu ustvarjati programe za Windows

Ob tem bosta v mapo z sketchom kopirani dve HEX-datoteki. Samo datoteko bez prefiksa «with_bootloader.mega» preuzimamo.

Postoji nekoliko načina da se HEX datoteka postavi na virtuelnu mašinu Nanonyam, svi su opisani na tej strani. Predlažem da se pored datoteke Nanonyam.exe datoteko Nanonyam.path, u kojem se navodi puna putanja do naše HEX datoteke. Nakon toga je moguće pokrenuti Nanonyam.exe. Dobijamo prozor s našim natpisom.

Kako v Arduinu ustvarjati programe za Windows

Na sličan način moguće je kreirati programe u drugim okruženjima, kao što su AVR Studio ili WinAVR.

Za sada završavamo upoznavanje s programom Nanonyam. Osnovna ideja bi trebala biti jasna. Još primera ima na sajtu. Ako bude dovoljno zainteresovanih za korišćenje ovog projekta, napraviću više primera i nastaviću da „popunjavam“ biblioteke virtuelnih funkcija. Prijem su konkretne ideje za razvoj projekta i izveštaji o greškama, bagovima i propustima. Preporučuje se slanje na kontakte navedene na sajtu. A diskusija je dobrodošla u komentarima.

Svima hvala na pažnji i srećno programiranje!

Izvor: habr.com

Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki 🔥 Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki | ProHoster