Cum să creezi programe pentru Windows pe Arduino

Cum să creezi programe pentru Windows pe Arduino

Odată, mi-a venit în cap o idee absurdă de a aduna 500 de lasere într-un singur loc. Am investit mult timp și am realizat-o. A ieșit spectaculos și inutil, dar mi-a plăcut. Acum șase luni, mi-a venit o altă idee absurdă. De data aceasta, nu a fost deloc vizuală, dar mult mai utilă. Am investit, de asemenea, mult timp în ea. În acest articol, vă prezint versiunea beta a celei de-a doua idei absurde.

Proiectul l-am numit Nanonyam și chiar i-am creat un logo (am desenat timp de cinci minute).

Cum să creezi programe pentru Windows pe Arduino

Pentru cei care gândesc în termeni de Arduino, se poate spune că Nanonyam este un scut virtual Arduino pentru controlul Windows.

Cu alte cuvinte, Nanonyam este o mașină virtuală, în care codul de byte folosit este un firmware pentru microcontrolerul AVR (se recomandă ATMEGA2560). În interiorul acestei mașini virtuale se află un simulator de nucleu AVR, dar în loc de perifericele care se află la adresele SRAM de la 0x0060 la 0x01FF, există o interfață specială pentru funcțiile virtuale (inclusiv funcțiile Windows API). Și aici este foarte important să înțelegem de la început: codul pentru Nanonyam nu trebuie să aibă nicio referință la intervalul de memorie specificat, pentru a nu activa accidental, de exemplu, funcția de ștergere a fișierelor sau de formatare a discului. Restul intervalului de memorie SRAM de la 0x0200 la 0xFFFF (care este mai mult decât într-un microcontroler real) este disponibil utilizatorului pentru orice scop. Pentru a preveni activarea accidentală a firmware-ului unui microcontroler real (sau al unui firmware de la o altă arhitectură), există o protecție specială: înainte de a activa funcțiile „periculoase”, trebuie să apelăm o funcție virtuală specială. Există și unele alte elemente de protecție.

Pentru a crea programe pentru Nanonyam, trebuie să folosiți biblioteci speciale, în care sunt implementate toate funcțiile virtuale disponibile la momentul actual. Puteți descărca mașina virtuală Nanonyam și bibliotecile acesteia aici. Iar acum pagina de descriere a funcțiilor virtuale. Și da, site-ul meu este foarte primitiv și nu este adaptat pentru dispozitive mobile.

Programul Nanonyam este gratuit pentru utilizare acasă și comercial. Programul Nanonyam este oferit în condițiile „așa cum este”. Codul sursă nu este disponibil.

În prezent, programul se află în stadiul de testare. Au fost implementate aproximativ 200 de funcții virtuale, care permit crearea de programe simple pentru Windows.
Este evident că nu se pot crea lucruri complexe în o astfel de mașină virtuală, deoarece memoria pentru cod este de doar 256 kB. Datele pot fi stocate în fișiere separate, iar bufferul pentru partea grafică este implementat extern. Toate funcțiile sunt simplificate și adaptate pentru arhitectura de 8 biți.

Ce se poate face în Nanonyam? Am venit cu câteva sarcini.

Exersarea blocurilor de programare

Odată, am avut nevoie să dezvolt un meniu complex pentru un afișaj grafic de 128×64 puncte. Nu vroiam să încarc constant firmware-ul în microcontrolerul real pentru a vedea cum arată pixelii. Așa a apărut ideea Nanonyam. În imaginea de mai jos este un screenshot de pe un afișaj OLED real al uneia dintre opțiunile acelui meniu. Acum pot să lucrez asupra lui fără un dispozitiv real.

Cum să creezi programe pentru Windows pe Arduino

Nanonyam (în concepția sa finală) este un instrument bun pentru exersarea blocurilor de programare pentru microcontrolere, deoarece există funcții pentru lucrul cu grafică (se pot simula afișaje și indicatoare), cu fișiere (se pot face loguri, citi date de test), cu tastatura (se pot citi până la 10 butoane simultan), cu porturile COM (aici urmează un punct separat).

Crearea de programe rapide

De exemplu, trebuie să procesezi rapid 100500 de fișiere text. Fiecare trebuie deschis, ușor modificat conform unui algoritm simplu, salvat și închis. Dacă ești expert în Python, te felicit, ai tot ce îți trebuie. Dar dacă ești un pasionat înrăit de Arduino (și sunt destui), atunci Nanonyam te va ajuta să rezolvi această problemă. Aceasta este a doua mea țintă în Nanonyam: să adaug multe funcții utile, cum ar fi procesarea textului, crearea de capturi de ecran sau simularea apăsărilor de taste în sistem (toate acestea sunt deja disponibile), precum și multe alte funcții pentru rezolvarea sarcinilor de rutină.

Testarea dispozitivelor prin portul COM

Nanonyam poate acționa ca un terminal care funcționează conform algoritmului tău. Poți crea un mic meniu pentru a gestiona dispozitivul și a afișa datele primite din port. Este posibil să salvezi și să citești date din fișiere pentru analiză. Un instrument convenabil pentru depanarea și calibrările simple ale echipamentului, precum și pentru a crea panouri virtuale de control. Acest proiect poate fi foarte util pentru studenți și tineri cercetători.

Învățarea programării

Totuși, ca și în întregul proiect Arduino, utilitatea principală a Nanonyam constă în simplitatea funcțiilor, interfeței și bootloaderului. Prin urmare, acest proiect ar trebui să fie interesant pentru programatorii începători și pentru cei care sunt mulțumiți de nivelul Arduino. Apropo, eu nu am studiat detaliat Arduino, deoarece am folosit mereu WinAVR sau AVR Studio, începând cu asamblare. Așadar, exemplul de program de mai jos va fi puțin incorect, dar funcțional.

Bună, Habr!

A venit timpul să ne familiarizăm cu unele funcții ale Nanonyam și să scriem un program simplu. Vom scrie în Arduino, dar nu așa cum se obișnuiește, ci așa cum știu eu acum (am menționat că nu m-am deprins încă bine cu acest mediu). Mai întâi, creăm un nou sketch și alegem placa Mega2560.

Cum să creezi programe pentru Windows pe Arduino

Salvăm sketch-ul în fișier și copiem lângă biblioteca Nanonyam. Ar fi corect să includem fișierele header ale bibliotecii, dar nu știu cum să specific compilarea fișierelor separate în Arduino, așa că deocamdată vom include bibliotecile direct (toate deodată):

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

Ar fi chiar mai corect să realizăm un modul special "Nanonyam pentru Arduino" care poate fi instalat direct din Arduino. De îndată ce mă voi descurca cu asta, voi face, dar deocamdată am să arăt esența lucrului cu mașina virtuală. Vom scrie acest cod:

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

Sketchul cu acest program poate fi descărcat de aici. Detaliile funcțiilor le găsiți pe site. Sper că comentariile din acest cod sunt suficiente pentru a înțelege esența. Aici, funcția sys_Nanonyam() joacă rolul de „parolă” pentru mașina virtuală, care ridică restricțiile asupra funcțiilor virtuale. Fără această funcție, programul se va închide după 3 secunde de funcționare.

Apăsăm butonul „Verifică”, iar erori nu ar trebui să fie.

Cum să creezi programe pentru Windows pe Arduino

Acum trebuie să obținem fișierul binar (firmware). Alegem din meniul „Sketch>>Exportare fișier binar (CTRL+ALT+S)«.

Cum să creezi programe pentru Windows pe Arduino

În acest fel, în folderul cu sketch-ul vor fi copiate două fișiere HEX. Luăm doar fișierul fără prefixul „with_bootloader.mega”.

Există mai multe modalități de a specifica fișierul HEX pentru mașina virtuală Nanonyam, toate sunt descrise pe această pagină. Vă propun să creați lângă fișierul Nanonyam.exe fișier Nanonyam.path, în care să specificați calea completă către fișierul nostru HEX. După aceasta, putem rula Nanonyam.exe. Se deschide o fereastră cu mesajul nostru.

Cum să creezi programe pentru Windows pe Arduino

În mod similar, putem crea programe în alte medii, cum ar fi AVR Studio sau WinAVR.

Aici încheiem deocamdată familiarizarea cu Nanonyam. Ideea de bază ar trebui să fie clară. Mai sunt exemple pe site-ul. Dacă va fi suficient de multă lume interesată să folosească acest proiect, voi face mai multe exemple și voi continua să „umplu” bibliotecile funcțiilor virtuale. Ideile concrete pentru dezvoltarea proiectului și rapoartele despre probleme, erori și neajunsuri sunt binevenite. Ar fi de preferat să le trimiteți prin contactele indicate pe site. Discuțiile sunt binevenite în comentarii.

Vă mulțumesc tuturor pentru atenție și un programare de succes!

Sursa: habr.com

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster