Како направити програме за Виндовс у Ардуину

Како направити програме за Виндовс у Ардуину

Једног дана сам имао луду идеју да донесем 500 ласерских показивача на једном месту. Провео сам много времена и урадио то. Испало је спектакуларно и бескорисно, али ми се допало. Пре шест месеци имао сам још једну луду идеју. Овог пута, нимало спектакуларно, али много корисније. Такође сам доста времена потрошио на то. И у овом чланку представљам бета верзију моје друге луде идеје.

Пројекат сам назвао Нанониам (Нанониам) и чак сам смислио лого за њега (цртао сам 5 минута).

Како направити програме за Виндовс у Ардуину

За оне који размишљају у смислу Ардуина, можемо рећи да је Нанониам виртуелни Ардуино штит за контролу Виндовс-а.

Другим речима, Нанониам је виртуелна машина која користи фирмвер за АВР микроконтролер (препоручује се АТМЕГА2560) као бајт код. Унутар ове виртуелне машине налази се АВР симулатор језгра, али уместо периферних уређаја, који се налазе на СРАМ адресама од 0к0060 до 0к01ФФ, постоји посебан интерфејс за виртуелне функције (укључујући Виндовс АПИ функције). И овде је веома важно одмах схватити: код за Нанониам не би требало да има приступ наведеном опсегу меморије, како не би случајно позвао, на пример, функцију брисања датотека или форматирања диска. Остатак опсега СРАМ меморије од 0к0200 до 0кФФФФ (ово је више него у правом микроконтролеру) доступан је кориснику за било коју сврху. Одмах напомињем да постоји посебна заштита од случајног покретања фирмвера правог микроконтролера (или фирмвера из друге архитектуре): пре него што активирате „опасне“ функције, потребно је да позовете посебну лукаву виртуелну функцију. Постоје и неке друге безбедносне функције.

Да бисте креирали програме за Нанониам, потребно је да користите посебне библиотеке које имплементирају све тренутно доступне виртуелне функције. Преузмите виртуелну машину Нанониам и библиотеке за њу може бити овде. Али страница са описом виртуелне функције. И да, мој сајт је веома примитиван и није прилагођен за мобилне уређаје.

Нанониам је бесплатан за кућну и комерцијалну употребу. Програм Нанониам се пружа на принципу „као што јесте“. Изворни код није наведен.

Програм је тренутно у фази тестирања. Имплементирано је око 200 виртуелних функција које вам омогућавају да креирате једноставне програме за Виндовс.
Очигледно, стварање нечег компликованог у таквој виртуелној машини неће успети, пошто је меморија за код само 256 кБ. Подаци се могу чувати у одвојеним датотекама, бафер за графички део је имплементиран екстерно. Све функције су поједностављене и прилагођене за 8-битну архитектуру.

Шта можете да радите у Наноњаму? Наишао сам на неколико проблема.

Развој програмских блокова

Једном сам морао да дизајнирам сложен мени за графички екран од 128к64 тачака. Заиста нисам желео да стално учитавам фирмвер у прави микроконтролер да видим како пиксели изгледају. И тако је рођена идеја о Наноњаму. Слика испод приказује слику са правог ОЛЕД екрана једне од ставки у истом менију. Сада могу да радим кроз то без правог уређаја.

Како направити програме за Виндовс у Ардуину

Нанониам (у својој коначној идеји) је добар алат за израду програмских блокова за микроконтролере, јер постоје функције за рад са графиком (можете симулирати дисплеје и индикаторе), са фајловима (можете правити дневнике, читати тестне податке), са тастатуру (можете читати до 10 дугмади у исто време), са ЦОМ портовима (овде је посебна ставка).

Креирање брзих програма

На пример, потребно је да брзо обрадите 100500 текстуалних датотека. Сваки треба отворити, мало модификовати по неком једноставном алгоритму, сачувати и затворити. Ако сте мајстор Пајтона, онда вам честитам, имате све. Али ако сте прекаљени ардуино (а има их много), онда ће вам Нанониам помоћи у решавању овог проблема. Ово је мој други циљ у Нанониам-у: да додам многе корисне функције као што су обрада текста, снимање екрана или симулација притиска на тастере у систему (све то, иначе, већ постоје), као и многе друге функције за решавање рутинских задатака .

Тестирање хардвера преко ЦОМ порта

Нанониам може деловати као терминал који ради у складу са вашим алгоритмом. Можете нацртати мали мени за контролу уређаја и приказ података примљених са порта. Можете сачувати и читати податке из датотека за анализу. Практичан алат за једноставно отклањање грешака и калибрацију хардвера, као и за креирање једноставних виртуелних контролних панела за инструменте. За студенте и младе научнике овај пројекат може бити веома користан.

Обука програмирања

Међутим, као и код целог Ардуино пројекта, главна корисност Нанониама лежи у поједностављењу функција, интерфејса и покретача. Стога би овај пројекат требао бити од интереса за почетнике програмера и оне који су задовољни нивоом ардуина. Иначе, ја још увек нисам детаљно проучавао ардуино, јер сам увек користио ВинАВР или АВР Студио, али сам почео са асемблером. Због тога ће доњи пример програма бити мало погрешан, али сасвим функционалан.

Здраво Хабр!

Време је да се упознате са неким функцијама Нанониам-а и напишете једноставан програм. Писаћемо у Ардуину, али не на уобичајен начин, већ на начин на који сада могу (већ сам рекао да ово окружење још нисам добро схватио). Прво направите нову скицу и изаберите Мега2560 плочу.

Како направити програме за Виндовс у Ардуину

Сачувајте скицу у датотеку и копирајте следећу Нанониам библиотека. Било би исправно укључити заглавља библиотека, али не знам како да напишем компилацију појединачних датотека у Ардуину, тако да ћемо за сада само укључити библиотеке директно (и све одједном):

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

Још исправније би било направити посебан модул „Нанониам фор Ардуино“, који се може инсталирати директно са Ардуина. Чим схватим, урадићу то, али за сада само показујем суштину рада са виртуелном машином. Пишемо следећи код:

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

Скицирајте овим програмом можете преузети овде. Детаљан опис функција претражите на сајту. Надам се да су коментари у овом коду довољни да схватите суштину. Овде функција сис_Нанониам() игра улогу „лозинке“ за виртуелну машину, чиме се уклањају ограничења виртуелних функција. Без ове функције, програм ће се затворити након 3 секунде рада.

Притиснемо дугме "Провери" и не би требало да буде грешака.

Како направити програме за Виндовс у Ардуину

Сада морате да набавите бинарну датотеку (фирмвер). Изаберите мени "Скица>>Извези бинарну датотеку (ЦТРЛ+АЛТ+С)".

Како направити програме за Виндовс у Ардуину

Ово ће копирати две ХЕКС датотеке у фасциклу са скицама. Узимамо само датотеку без префикса "витх_боотлоадер.мега".

Постоји неколико начина да наведете ХЕКС датотеку на Нанониам виртуелној машини, сви су описани на овој страници. Предлажем да креирате поред датотеке Нанониам.еке фајл пут, у којој треба регистровати пуну путању до наше ХЕКС датотеке. Након чега можете трчати Нанониам.еке. Добијамо прозор са нашим натписом.

Како направити програме за Виндовс у Ардуину

Слично томе, можете креирати програме у другим окружењима, као што су АВР Студио или ВинАВР.

Ту завршавамо наше упознавање са Наноњамом. Главна идеја треба да буде јасна. Више примера је на веб страници.. Ако има довољно људи који су вољни да користе овај пројекат, онда ћу направити још примера и наставити да „пуним“ виртуелне библиотеке функција. Прихватају се конкретне идеје за развој пројекта и пријаве кварова, грешака и грешака. Препоручљиво је да их упутите на контакте, назначено на сајту. И дискусија је добродошла у коментарима.

Хвала свима на пажњи и добром програмирању!

Извор: ввв.хабр.цом

Додај коментар