Come creare programmi in Arduino Windows

Come creare programmi in Arduino Windows

Un giorno ho avuto la folle idea di portare 500 puntatori laser in un unico posto. Ho passato molto tempo e l'ho fatto. Si è rivelato spettacolare e inutile, ma mi è piaciuto. Sei mesi fa ho avuto un'altra folle idea. Questa volta, per niente spettacolare, ma molto più utile. Ci ho anche dedicato molto tempo. E in questo articolo, presento una versione beta della mia seconda folle idea.

Ho chiamato il progetto Nanonyam (Nanonyam) e ne ho persino ideato un logo (ho disegnato per 5 minuti).

Come creare programmi in Arduino Windows

Per chi pensa in termini di Arduino, possiamo dire che Nanonyam è uno shield Arduino virtuale per il controllo Windows.

In altre parole, Nanonyam è una macchina virtuale che utilizza il firmware per un microcontrollore AVR (si consiglia ATMEGA2560) come bytecode. Questa macchina virtuale contiene un simulatore del kernel AVR, ma invece di periferiche situate agli indirizzi SRAM da 0x0060 a 0x01FF, contiene un'interfaccia speciale per le funzioni virtuali (incluse le funzioni Windows API). È fondamentale comprendere subito che il codice Nanonyam non deve accedere in alcun modo all'intervallo di memoria specificato, per evitare di attivare accidentalmente, ad esempio, una funzione di cancellazione di file o di formattazione del disco. L'intervallo di memoria SRAM rimanente, da 0x0200 a 0xFFFF (che è più ampio di quello di un microcontrollore reale), è a disposizione dell'utente per qualsiasi scopo. È opportuno precisare immediatamente che esiste una protezione speciale contro l'esecuzione accidentale del firmware di un microcontrollore reale (o del firmware di un'architettura diversa): prima di attivare funzioni "pericolose", è necessario richiamare una speciale e sofisticata funzione virtuale. Sono presenti anche altre funzionalità di sicurezza.

Per creare programmi per Nanonyam, è necessario utilizzare librerie speciali che implementano tutte le funzioni virtuali attualmente disponibili. Scarica la macchina virtuale Nanonyam e le relative librerie È quindi possibile. Ma l' pagina di descrizione della funzione virtuale. E sì, il mio sito è molto primitivo e non adatto ai dispositivi mobili.

Nanonyam è gratuito per uso domestico e commerciale. Il programma Nanonyam viene fornito "così com'è". Il codice sorgente non è fornito.

Il programma è attualmente in fase di test. Sono state implementate circa 200 funzioni virtuali, che consentono la creazione di semplici programmi per Windows.
Ovviamente, creare qualcosa di complicato in una macchina virtuale del genere non funzionerà, poiché la memoria per il codice è di soli 256 kB. I dati possono essere memorizzati in file separati, il buffer per la parte grafica è implementato esternamente. Tutte le funzioni sono semplificate e adattate per l'architettura a 8 bit.

Cosa puoi fare a Nanonyam? Ho riscontrato alcuni problemi.

Sviluppo di blocchi di programma

Una volta avevo bisogno di progettare un menu complesso per un display grafico da 128x64 punti. Non volevo davvero caricare costantemente il firmware in un vero microcontrollore per vedere come appaiono i pixel. E così è nata l'idea di Nanonyam. La figura seguente mostra un'immagine da un display OLED reale di una delle voci dello stesso menu. Ora posso lavorarci senza un vero dispositivo.

Come creare programmi in Arduino Windows

Nanonyam (nella sua idea finale) è un buon strumento per elaborare blocchi di programma per microcontrollori, poiché ci sono funzioni per lavorare con la grafica (puoi simulare display e indicatori), con file (puoi creare registri, leggere dati di test), con una tastiera (puoi leggere fino a 10 pulsanti contemporaneamente), con porte COM (qui c'è un elemento separato).

Creazione di programmi rapidi

Ad esempio, è necessario elaborare rapidamente 100500 file di testo. Ognuno deve essere aperto, leggermente modificato secondo un semplice algoritmo, salvato e chiuso. Se sei un maestro di Python, allora mi congratulo con te, hai tutto. Ma se sei un arduino incallito (e ce ne sono molti), Nanonyam ti aiuterà a risolvere questo problema. Questo è il mio secondo obiettivo in Nanonyam: aggiungere molte funzioni utili come l'elaborazione del testo, l'acquisizione di schermate o la simulazione di sequenze di tasti nel sistema (che, tra l'altro, sono già presenti), così come molte altre funzioni per risolvere compiti di routine .

Test hardware tramite porta COM

Nanonyam può fungere da terminale che funziona secondo il tuo algoritmo. È possibile disegnare un piccolo menu per controllare il dispositivo e visualizzare i dati ricevuti dalla porta. È possibile salvare e leggere i dati dai file per l'analisi. Uno strumento utile per il semplice debugging e la calibrazione dell'hardware, nonché per la creazione di semplici pannelli di controllo di strumenti virtuali. Per studenti e giovani scienziati, questo progetto può essere molto utile.

Formazione alla programmazione

Tuttavia, come per l'intero progetto Arduino, l'utilità principale di Nanonyam risiede nella semplificazione delle funzioni, dell'interfaccia e del bootloader. Pertanto, questo progetto dovrebbe interessare i programmatori alle prime armi e coloro che sono soddisfatti del livello di arduino. A proposito, io stesso non ho ancora studiato arduino in dettaglio, perché ho sempre usato WinAVR o AVR Studio, ma ho iniziato con l'assembler. Pertanto, il programma di esempio qui sotto sarà un po' sbagliato, ma abbastanza funzionante.

Ciao Habr!

È ora di familiarizzare con alcune funzionalità di Nanonyam e scrivere un semplice programma. Scriveremo in Arduino, ma non nel solito modo, ma nel modo in cui posso ora (ho già detto che non ho ancora capito molto bene questo ambiente). Innanzitutto, crea un nuovo schizzo e seleziona la scheda Mega2560.

Come creare programmi in Arduino Windows

Salva lo schizzo in un file e copialo successivamente Libreria Nanonyam. Sarebbe corretto includere le intestazioni delle librerie, ma non so come scrivere la compilazione dei singoli file in Arduino, quindi per ora includeremo solo le librerie direttamente (e tutte in una volta):

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

Sarebbe ancora più corretto realizzare un modulo speciale "Nanonyam for Arduino", installabile direttamente da Arduino. Non appena lo capirò, lo farò, ma per ora sto solo mostrando l'essenza del lavoro con una macchina virtuale. Scriviamo il seguente codice:

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

Disegna con questo programma può essere scaricato qui. Descrizione dettagliata delle funzioni cerca nel sito. Spero che i commenti in questo codice siano sufficienti per capirne l'essenza. Qui funzione sys_Nanonyam() svolge il ruolo di una "password" per la macchina virtuale, che rimuove le restrizioni sulle funzioni virtuali. Senza questa funzione, il programma si chiuderà dopo 3 secondi di funzionamento.

Premiamo il pulsante "Verifica" e non dovrebbero esserci errori.

Come creare programmi in Arduino Windows

Ora devi ottenere un file binario (firmware). Seleziona il menù "Schizzo>>Esporta file binario (CTRL+ALT+S)«.

Come creare programmi in Arduino Windows

Questo copierà due file HEX nella cartella dello schizzo. Prendiamo solo il file senza il prefisso "with_bootloader.mega".

Esistono diversi modi per specificare un file HEX nella macchina virtuale Nanonyam, tutti descritti in questa pagina. Suggerisco di creare accanto al file Nanonyam.exe файл sentiero, in cui registrare il percorso completo del nostro file HEX. Dopo di che puoi correre Nanonyam.exe. Otteniamo una finestra con la nostra iscrizione.

Come creare programmi in Arduino Windows

Allo stesso modo, puoi creare programmi in altri ambienti, come AVR Studio o WinAVR.

È qui che finiamo la nostra conoscenza con Nanonyam. L'idea principale dovrebbe essere chiara. Altri esempi sono sul sito web.. Se ci sono abbastanza persone disposte a utilizzare questo progetto, allora farò altri esempi e continuerò a "riempire" le librerie di funzioni virtuali. Si accettano idee concrete per lo sviluppo del progetto e segnalazioni di malfunzionamenti, bug e bug. Si consiglia di indirizzarli ai contatti, indicato sul sito web. E la discussione è benvenuta nei commenti.

Grazie a tutti per l'attenzione e buona programmazione!

Fonte: habr.com

Acquista hosting affidabile per siti con protezione DDoS, server VPS VDS 🔥 Acquista un hosting web affidabile con protezione DDoS, server VPS e VDS | ProHoster