Πώς να δημιουργήσετε προγράμματα για Windows στο Arduino

Πώς να δημιουργήσετε προγράμματα για Windows στο Arduino

Μια μέρα μου ήρθε η τρελή ιδέα να φέρω 500 δείκτες λέιζερ σε ένα μέρος. Πέρασα πολύ χρόνο και το έκανα. Αποδείχθηκε θεαματικό και άχρηστο, αλλά μου άρεσε. Πριν από έξι μήνες είχα άλλη μια τρελή ιδέα. Αυτή τη φορά, καθόλου θεαματική, αλλά πολύ πιο χρήσιμη. Πέρασα επίσης πολύ χρόνο σε αυτό. Και σε αυτό το άρθρο, παρουσιάζω μια beta έκδοση της δεύτερης τρελής ιδέας μου.

Ονόμασα το έργο Nanonyam (Nanonyam) και μάλιστα βρήκα ένα λογότυπο για αυτό (ζωγράφισα για 5 λεπτά).

Πώς να δημιουργήσετε προγράμματα για Windows στο Arduino

Για όσους σκέφτονται με όρους Arduino, μπορούμε να πούμε ότι το Nanonyam είναι μια εικονική ασπίδα Arduino για τον έλεγχο των Windows.

Με άλλα λόγια, το Nanonyam είναι μια εικονική μηχανή που χρησιμοποιεί υλικολογισμικό για τον μικροελεγκτή AVR (συνιστάται το ATMEGA2560) ως bytecode. Μέσα σε αυτήν την εικονική μηχανή υπάρχει ένας προσομοιωτής πυρήνα AVR, αλλά αντί για περιφερειακά, τα οποία βρίσκονται σε διευθύνσεις SRAM από 0x0060 έως 0x01FF, υπάρχει μια ειδική διεπαφή για εικονικές λειτουργίες (συμπεριλαμβανομένων των λειτουργιών API των Windows). Και εδώ είναι πολύ σημαντικό να καταλάβετε αμέσως: ο κώδικας για το Nanonyam δεν πρέπει να έχει πρόσβαση στο καθορισμένο εύρος μνήμης, ώστε να μην καλέσετε κατά λάθος, για παράδειγμα, τη λειτουργία διαγραφής αρχείων ή μορφοποίησης ενός δίσκου. Το υπόλοιπο εύρος της μνήμης SRAM από 0x0200 έως 0xFFFF (αυτό είναι περισσότερο από ό,τι σε έναν πραγματικό μικροελεγκτή) είναι διαθέσιμο στο χρήστη για οποιονδήποτε σκοπό. Σημειώνω αμέσως ότι υπάρχει ειδική προστασία από τυχαία εκκίνηση του υλικολογισμικού ενός πραγματικού μικροελεγκτή (ή υλικολογισμικού από άλλη αρχιτεκτονική): πριν ενεργοποιήσετε "επικίνδυνες" λειτουργίες, πρέπει να καλέσετε μια ειδική δύσκολη εικονική λειτουργία. Υπάρχουν και κάποια άλλα χαρακτηριστικά ασφαλείας.

Για να δημιουργήσετε προγράμματα για το Nanonyam, πρέπει να χρησιμοποιήσετε ειδικές βιβλιοθήκες που υλοποιούν όλες τις τρέχουσες διαθέσιμες εικονικές λειτουργίες. Κατεβάστε την εικονική μηχανή Nanonyam και τις βιβλιοθήκες για αυτήν Στη συνέχεια, μπορείτε. Αλλά η σελίδα περιγραφής εικονικής λειτουργίας. Και ναι, ο ιστότοπός μου είναι πολύ πρωτόγονος και δεν είναι προσαρμοσμένος για κινητές συσκευές.

Το Nanonyam είναι δωρεάν για οικιακή και εμπορική χρήση. Το πρόγραμμα Nanonyam παρέχεται σε βάση "ως έχει". Ο πηγαίος κώδικας δεν παρέχεται.

Το πρόγραμμα βρίσκεται αυτή τη στιγμή σε δοκιμαστική φάση. Υλοποιήθηκαν περίπου 200 εικονικές λειτουργίες που σας επιτρέπουν να δημιουργείτε απλά προγράμματα για Windows.
Προφανώς, η δημιουργία κάτι πολύπλοκου σε μια τέτοια εικονική μηχανή δεν θα λειτουργήσει, καθώς η μνήμη για τον κώδικα είναι μόνο 256 kB. Τα δεδομένα μπορούν να αποθηκευτούν σε ξεχωριστά αρχεία, το buffer για το γραφικό μέρος υλοποιείται εξωτερικά. Όλες οι λειτουργίες είναι απλοποιημένες και προσαρμοσμένες για αρχιτεκτονική 8-bit.

Τι μπορείτε να κάνετε στο Nanonyam; Βρήκα μερικά προβλήματα.

Ανάπτυξη μπλοκ προγράμματος

Κάποτε χρειάστηκε να σχεδιάσω ένα σύνθετο μενού για μια οθόνη γραφικών 128x64 κουκκίδων. Πραγματικά δεν ήθελα να φορτώνω συνεχώς το υλικολογισμικό σε έναν πραγματικό μικροελεγκτή για να δω πώς φαίνονται τα pixel. Και έτσι γεννήθηκε η ιδέα του Nanonyam. Το παρακάτω σχήμα δείχνει μια εικόνα από μια πραγματική οθόνη OLED ενός από τα στοιχεία του ίδιου μενού. Τώρα μπορώ να το δουλέψω χωρίς πραγματική συσκευή.

Πώς να δημιουργήσετε προγράμματα για Windows στο Arduino

Το Nanonyam (στην τελική του ιδέα) είναι ένα καλό εργαλείο για την επεξεργασία μπλοκ προγραμμάτων για μικροελεγκτές, καθώς υπάρχουν λειτουργίες για εργασία με γραφικά (μπορείτε να προσομοιώσετε οθόνες και δείκτες), με αρχεία (μπορείτε να δημιουργήσετε αρχεία καταγραφής, να διαβάσετε δεδομένα δοκιμής), με ένα πληκτρολόγιο (μπορείτε να διαβάσετε έως και 10 κουμπιά ταυτόχρονα), με θύρες COM (εδώ υπάρχει ένα ξεχωριστό στοιχείο).

Δημιουργία Γρήγορων Προγραμμάτων

Για παράδειγμα, πρέπει να επεξεργαστείτε γρήγορα 100500 αρχεία κειμένου. Κάθε ένα πρέπει να ανοιχτεί, να τροποποιηθεί ελαφρώς σύμφωνα με κάποιον απλό αλγόριθμο, να αποθηκευτεί και να κλείσει. Αν είσαι κύριος της Python, τότε σε συγχαίρω, έχεις τα πάντα. Αλλά αν είστε ένα σκληρυμένο arduino (και υπάρχουν πολλά από αυτά), τότε το Nanonyam θα σας βοηθήσει να λύσετε αυτό το πρόβλημα. Αυτός είναι ο δεύτερος στόχος μου στο Nanonyam: να προσθέσω πολλές χρήσιμες λειτουργίες όπως επεξεργασία κειμένου, λήψη στιγμιότυπων οθόνης ή προσομοίωση πατημάτων πλήκτρων στο σύστημα (όλα αυτά, παρεμπιπτόντως, είναι ήδη εκεί), καθώς και πολλές άλλες λειτουργίες για την επίλυση εργασιών ρουτίνας .

Δοκιμή υλικού μέσω θύρας COM

Το Nanonyam μπορεί να λειτουργήσει ως τερματικό που λειτουργεί σύμφωνα με τον αλγόριθμό σας. Μπορείτε να σχεδιάσετε ένα μικρό μενού για να ελέγξετε τη συσκευή και να εμφανίσετε τα δεδομένα που λαμβάνονται από τη θύρα. Μπορείτε να αποθηκεύσετε και να διαβάσετε δεδομένα από αρχεία για ανάλυση. Ένα εύχρηστο εργαλείο για απλό εντοπισμό σφαλμάτων και βαθμονόμηση υλικού, καθώς και για τη δημιουργία απλών εικονικών πινάκων ελέγχου οργάνων. Για φοιτητές και νέους επιστήμονες, αυτό το έργο μπορεί να είναι πολύ χρήσιμο.

Εκπαίδευση προγραμματισμού

Ωστόσο, όπως και με ολόκληρο το έργο Arduino, η κύρια χρησιμότητα του Nanonyam έγκειται στην απλοποίηση των λειτουργιών, της διεπαφής και του bootloader. Επομένως, αυτό το έργο θα πρέπει να ενδιαφέρει τους αρχάριους προγραμματιστές και όσους είναι ικανοποιημένοι με το επίπεδο του arduino. Παρεμπιπτόντως, εγώ ο ίδιος ακόμα δεν έχω μελετήσει λεπτομερώς το arduino, γιατί πάντα χρησιμοποιούσα το WinAVR ή το AVR Studio, αλλά ξεκίνησα με το assembler. Επομένως, το παρακάτω παράδειγμα προγράμματος θα είναι λίγο λάθος, αλλά αρκετά λειτουργικό.

Γεια σου Χαμπρ!

Ήρθε η ώρα να εξοικειωθείτε με μερικές από τις δυνατότητες του Nanonyam και να γράψετε ένα απλό πρόγραμμα. Θα γράψουμε στο Arduino, αλλά όχι με τον συνηθισμένο τρόπο, αλλά με τον τρόπο που μπορώ τώρα (είπα ήδη ότι δεν έχω καταλάβει ακόμα πολύ καλά αυτό το περιβάλλον). Αρχικά, δημιουργήστε ένα νέο σκίτσο και επιλέξτε την πλακέτα Mega2560.

Πώς να δημιουργήσετε προγράμματα για Windows στο Arduino

Αποθηκεύστε το σκίτσο σε ένα αρχείο και αντιγράψτε στη συνέχεια Βιβλιοθήκη Nanonyam. Θα ήταν σωστό να συμπεριληφθούν οι κεφαλίδες των βιβλιοθηκών, αλλά δεν ξέρω πώς να γράψω μεταγλώττιση μεμονωμένων αρχείων στο Arduino, οπότε προς το παρόν θα συμπεριλάβουμε απλώς τις βιβλιοθήκες απευθείας (και όλες ταυτόχρονα):

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

Θα ήταν ακόμη πιο σωστό να φτιάξετε μια ειδική ενότητα "Nanonyam για Arduino", η οποία μπορεί να εγκατασταθεί απευθείας από το Arduino. Μόλις το καταλάβω, θα το κάνω, αλλά προς το παρόν δείχνω απλώς την ουσία της εργασίας με μια εικονική μηχανή. Γράφουμε τον παρακάτω κώδικα:

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

Σκίτσο με αυτό το πρόγραμμα μπορείτε να το κατεβάσετε εδώ. Αναλυτική περιγραφή των λειτουργιών αναζήτηση στον ιστότοπο. Ελπίζω τα σχόλια σε αυτόν τον κώδικα να είναι αρκετά για να καταλάβω την ουσία του. Εδώ λειτουργεί sys_Nanonyam() παίζει το ρόλο ενός «κωδικού πρόσβασης» για την εικονική μηχανή, που καταργεί τους περιορισμούς στις εικονικές λειτουργίες. Χωρίς αυτή τη λειτουργία, το πρόγραμμα θα κλείσει μετά από 3 δευτερόλεπτα λειτουργίας.

Πατάμε το κουμπί «Έλεγχος» και δεν πρέπει να υπάρχουν σφάλματα.

Πώς να δημιουργήσετε προγράμματα για Windows στο Arduino

Τώρα πρέπει να αποκτήσετε ένα δυαδικό αρχείο (υλικολογισμικό). Επιλέξτε το μενού "Σκίτσο>>Εξαγωγή δυαδικού αρχείου (CTRL+ALT+S)".

Πώς να δημιουργήσετε προγράμματα για Windows στο Arduino

Αυτό θα αντιγράψει δύο αρχεία HEX στο φάκελο σκίτσο. Παίρνουμε μόνο το αρχείο χωρίς το πρόθεμα "with_bootloader.mega".

Υπάρχουν διάφοροι τρόποι για να καθορίσετε ένα αρχείο HEX στην εικονική μηχανή Nanonyam, όλοι περιγράφονται σε αυτή τη σελίδα. Προτείνω να δημιουργήσετε δίπλα στο αρχείο Nanonyam.exe αρχείου μονοπάτι, στο οποίο θα καταχωρήσουμε την πλήρη διαδρομή προς το αρχείο HEX μας. Μετά από αυτό μπορείτε να τρέξετε Nanonyam.exe. Παίρνουμε ένα παράθυρο με την επιγραφή μας.

Πώς να δημιουργήσετε προγράμματα για Windows στο Arduino

Ομοίως, μπορείτε να δημιουργήσετε προγράμματα σε άλλα περιβάλλοντα, όπως το AVR Studio ή το WinAVR.

Εδώ τελειώνουμε τη γνωριμία μας με τον Nanonyam. Η κύρια ιδέα πρέπει να είναι ξεκάθαρη. Περισσότερα παραδείγματα υπάρχουν στον ιστότοπο.. Εάν υπάρχουν αρκετοί άνθρωποι πρόθυμοι να χρησιμοποιήσουν αυτό το έργο, τότε θα κάνω περισσότερα παραδείγματα και θα συνεχίσω να "γεμίζω" τις εικονικές βιβλιοθήκες λειτουργιών. Γίνονται δεκτές συγκεκριμένες ιδέες για την ανάπτυξη του έργου και αναφορές για δυσλειτουργίες, σφάλματα και σφάλματα. Συνιστάται να τους κατευθύνετε σε επαφές, που υποδεικνύεται στον ιστότοπο. Και η συζήτηση είναι ευπρόσδεκτη στα σχόλια.

Σας ευχαριστώ όλους για την προσοχή και τον καλό προγραμματισμό σας!

Πηγή: www.habr.com

Προσθέστε ένα σχόλιο