Hvordan lage programmer for Windows i Arduino

Hvordan lage programmer for Windows i Arduino

En dag fikk jeg den sprø ideen å komme med 500 laserpekere på ett sted. Jeg brukte mye tid og gjorde det. Det ble spektakulært og ubrukelig, men jeg likte det. For seks måneder siden fikk jeg en annen gal idé. Denne gangen ikke i det hele tatt spektakulær, men mye mer nyttig. Jeg brukte også mye tid på det. Og i denne artikkelen presenterer jeg en betaversjon av min andre sprø idé.

Jeg kalte prosjektet Nanonyam (Nanonyam) og kom til og med opp med en logo for det (jeg tegnet i 5 minutter).

Hvordan lage programmer for Windows i Arduino

For de som tenker i termer av Arduino, kan vi si at Nanonyam er et virtuelt Arduino-skjold for å kontrollere Windows.

Nanonyam er med andre ord en virtuell maskin som bruker fastvaren for AVR-mikrokontrolleren (ATMEGA2560 anbefales) som bytekode. Inne i denne virtuelle maskinen er en AVR-kjernesimulator, men i stedet for perifere enheter, som er plassert på SRAM-adresser fra 0x0060 til 0x01FF, er det et spesielt grensesnitt til virtuelle funksjoner (inkludert Windows API-funksjoner). Og her er det veldig viktig å forstå med en gang: koden for Nanonyam skal ikke ha tilgang til det spesifiserte minneområdet, for ikke å ved et uhell kalle opp, for eksempel funksjonen til å slette filer eller formatere en disk. Resten av SRAM-minneområdet fra 0x0200 til 0xFFFF (dette er mer enn i en ekte mikrokontroller) er tilgjengelig for brukeren til ethvert formål. Jeg merker med en gang at det er en spesiell beskyttelse mot utilsiktet lansering av fastvaren til en ekte mikrokontroller (eller fastvare fra en annen arkitektur): før du aktiverer "farlige" funksjoner, må du ringe en spesiell vanskelig virtuell funksjon. Det er noen andre sikkerhetsfunksjoner også.

For å lage programmer for Nanonyam, må du bruke spesielle biblioteker som implementerer alle tilgjengelige virtuelle funksjoner. Last ned den virtuelle Nanonyam-maskinen og bibliotekene for den Du kan deretter. Men en virtuell funksjonsbeskrivelsesside. Og ja, siden min er veldig primitiv og ikke tilpasset mobile enheter.

Nanonyam er gratis for hjemmebruk og kommersiell bruk. Nanonyam-programmet tilbys på en "som den er"-basis. Kildekode er ikke oppgitt.

Programmet er for tiden i testfasen. Implementert ca 200 virtuelle funksjoner som lar deg lage enkle programmer for Windows.
Å lage noe komplisert i en slik virtuell maskin vil åpenbart ikke fungere, siden minnet for koden bare er 256 kB. Data kan lagres i separate filer, bufferen for den grafiske delen implementeres eksternt. Alle funksjoner er forenklet og tilpasset 8-bits arkitektur.

Hva kan du gjøre i Nanonyam? Jeg kom opp med noen problemer.

Utvikling av programblokker

Jeg trengte en gang å designe en kompleks meny for en grafisk skjerm på 128 x 64 punkter. Jeg ville virkelig ikke hele tiden laste fastvaren inn i en ekte mikrokontroller for å se hvordan pikslene ser ut. Og slik ble ideen om Nanonyam født. Figuren nedenfor viser et bilde fra en ekte OLED-skjerm av ett av elementene på samme meny. Nå kan jeg jobbe gjennom det uten en ekte enhet.

Hvordan lage programmer for Windows i Arduino

Nanonyam (i sin endelige idé) er et godt verktøy for å utarbeide programblokker for mikrokontrollere, da det finnes funksjoner for å jobbe med grafikk (du kan simulere skjermer og indikatorer), med filer (du kan lage logger, lese testdata), med et tastatur (du kan lese opptil 10 knapper samtidig), med COM-porter (her er et eget element).

Opprette hurtigprogrammer

For eksempel må du raskt behandle 100500 tekstfiler. Hver av dem må åpnes, endres litt i henhold til en enkel algoritme, lagres og lukkes. Hvis du er en Python-mester, så gratulerer jeg deg, du har alt. Men hvis du er en herdet arduino (og det er mange av dem), vil Nanonyam hjelpe deg med å løse dette problemet. Dette er mitt andre mål i Nanonyam: å legge til mange nyttige funksjoner som tekstbehandling, ta skjermbilder eller simulere tastetrykk i systemet (som alle forresten allerede er der), samt mange andre funksjoner for å løse rutineoppgaver .

Testing av maskinvare via COM-port

Nanonyam kan fungere som en terminal som fungerer i henhold til din algoritme. Du kan tegne en liten meny for å kontrollere enheten og vise dataene mottatt fra porten. Du kan lagre og lese data fra filer for analyse. Et hendig verktøy for enkel feilsøking og kalibrering av maskinvare, samt for å lage enkle virtuelle instrumentkontrollpaneler. For studenter og unge forskere kan dette prosjektet være svært nyttig.

Programmeringstrening

Imidlertid, som med hele Arduino-prosjektet, ligger hovednytten av Nanonyam i forenklingen av funksjoner, grensesnitt og oppstartslaster. Derfor bør dette prosjektet være av interesse for nybegynnere programmerere og de som er fornøyd med nivået på arduino. Selv har jeg forresten fortsatt ikke studert arduino i detalj, fordi jeg alltid brukte WinAVR eller AVR Studio, men begynte med assembler. Derfor vil eksempelprogrammet nedenfor være litt feil, men ganske fungerende.

Hei Habr!

Det er på tide å bli kjent med noen av Nanonyam-funksjonene og skrive et enkelt program. Vi skal skrive i Arduino, men ikke på vanlig måte, men på den måten jeg kan nå (jeg har allerede sagt at jeg ikke har funnet ut av dette miljøet så godt ennå). Lag først en ny skisse og velg Mega2560-brettet.

Hvordan lage programmer for Windows i Arduino

Lagre skissen til en fil og kopier neste Nanonyam bibliotek. Det ville være riktig å inkludere overskriftene til bibliotekene, men jeg vet ikke hvordan jeg skal skrive kompilering av individuelle filer i Arduino, så foreløpig inkluderer vi bare bibliotekene direkte (og alt på en gang):

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

Det ville være enda mer riktig å lage en spesiell modul "Nanonyam for Arduino", som kan installeres direkte fra Arduino. Så snart jeg finner ut av det, skal jeg gjøre det, men foreløpig viser jeg bare essensen av å jobbe med en virtuell maskin. Vi skriver følgende 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);//Задержка и разгрузка процессора
}

Skisse med dette programmet kan lastes ned her. Detaljert beskrivelse av funksjoner søk på siden. Jeg håper kommentarene i denne koden er nok til å forstå kjernen av det. Her funksjon sys_Nanonyam() spiller rollen som et "passord" for den virtuelle maskinen, som fjerner restriksjoner på virtuelle funksjoner. Uten denne funksjonen vil programmet lukkes etter 3 sekunders drift.

Vi trykker på "Sjekk"-knappen og det skal ikke være noen feil.

Hvordan lage programmer for Windows i Arduino

Nå må du få en binær fil (fastvare). Velg menyen "Skisse >> Eksporter binær fil (CTRL+ALT+S)".

Hvordan lage programmer for Windows i Arduino

Dette vil kopiere to HEX-filer til skissemappen. Vi tar bare filen uten prefikset "with_bootloader.mega".

Det er flere måter å spesifisere en HEX-fil til den virtuelle Nanonyam-maskinen, alle er beskrevet på denne siden. Jeg foreslår at du oppretter ved siden av filen Nanonyam.exe файл sti, for å registrere den fullstendige banen til HEX-filen vår. Deretter kan du løpe Nanonyam.exe. Vi får et vindu med inskripsjonen vår.

Hvordan lage programmer for Windows i Arduino

På samme måte kan du lage programmer i andre miljøer, for eksempel AVR Studio eller WinAVR.

Det er her vi avslutter vårt bekjentskap med Nanonyam. Hovedideen bør være klar. Flere eksempler finnes på nettsiden.. Hvis det er nok folk som er villige til å bruke dette prosjektet, så vil jeg lage flere eksempler og fortsette å "fylle" de virtuelle funksjonsbibliotekene. Konkrete ideer for utviklingen av prosjektet og rapporter om funksjonsfeil, feil og feil aksepteres. Det anbefales å henvise dem til kontakter, angitt på nettsiden. Og diskusjon er velkommen i kommentarfeltet.

Takk alle sammen for oppmerksomheten og god programmering!

Kilde: www.habr.com

Legg til en kommentar