Arduinoдо Windows үчүн программаларды кантип түзүүгө болот

Arduinoдо Windows үчүн программаларды кантип түзүүгө болот

Бир күнү менде жинди ой келди Бир жерде 500 лазер көрсөткүчү. Мен көп убакыт өткөрдүм жана аны жасадым. Бул укмуштуудай жана пайдасыз болуп чыкты, бирок мага жакты. Алты ай мурун менде дагы бир жинди идея бар болчу. Бул жолу эч кандай укмуштуу эмес, бирок андан да пайдалуу. Мен да ага көп убакыт короттум. Бул макалада мен экинчи жинди идеямдын бета версиясын сунуштайм.

Долбоордун атын Nanonyam (Nanonyam) деп койдум, ал тургай анын логотибин да ойлоп таптым (5 мүнөткө тарттым).

Arduinoдо Windows үчүн программаларды кантип түзүүгө болот

Arduino жагынан ойлогондор үчүн, биз Nanonyam Windows башкаруу үчүн виртуалдык Arduino калкан деп айта алабыз.

Башка сөз менен айтканда, Nanonyam бул байт код катары AVR микроконтроллери үчүн микропрограмманы колдонгон виртуалдык машина (ATMEGA2560 сунушталат). Бул виртуалдык машинанын ичинде AVR негизги симулятору бар, бирок 0x0060дан 0x01FFге чейинки SRAM даректеринде жайгашкан перифериялык түзүлүштөрдүн ордуна виртуалдык функцияларга (анын ичинде Windows API функцияларына) атайын интерфейс бар. Жана бул жерде дароо түшүнүү абдан маанилүү: Нанонямдын коду, мисалы, файлдарды жок кылуу же дискти форматтоо функциясын кокустан чакырбоо үчүн, көрсөтүлгөн эс тутум диапазонуна эч кандай кирүү мүмкүнчүлүгүнө ээ болбошу керек. SRAM эс тутумунун калган бөлүгү 0x0200дөн 0xFFFFге чейин (бул чыныгы микроконтроллерге караганда көбүрөөк) колдонуучуга каалаган максатта жеткиликтүү. Чыныгы микроконтроллердин (же башка архитектуранын микропрограммасынын) кокусунан ишке киришинен өзгөчө коргоо бар экенин дароо белгилейм: "коркунучтуу" функцияларды активдештирүүдөн мурун, сиз атайын татаал виртуалдык функцияны чакырышыңыз керек. Кээ бир башка коопсуздук өзгөчөлүктөрү да бар.

Nanonyam үчүн программаларды түзүү үчүн, сиз бардык учурда жеткиликтүү виртуалдык функцияларды ишке ашырган атайын китепканаларды колдонушуңуз керек. Nanonyam виртуалдык машинасын жана ал үчүн китепканаларды жүктөп алыңыз бул көрсөтөт. Мынакей виртуалдык функциянын сүрөттөмө барагы. Ооба, менин сайтым абдан примитивдүү жана мобилдик түзмөктөргө ылайыкталган эмес.

Nanonyam үйдө жана коммерциялык колдонуу үчүн акысыз. Nanonyam программасы "кандай болсо, ошондой" негизинде берилет. Булак коду берилген эмес.

Учурда программа тестирлөө баскычында. Windows үчүн жөнөкөй программаларды түзүүгө мүмкүндүк берген 200гө жакын виртуалдык функциялар ишке ашырылган.
Албетте, мындай виртуалдык машинада татаал нерсени түзүү иштебейт, анткени коддун эс тутуму болгону 256 кБ. Маалыматтар өзүнчө файлдарда сакталышы мүмкүн, графикалык бөлүгү үчүн буфер сырттан ишке ашырылат. Бардык функциялар жөнөкөйлөштүрүлгөн жана 8 биттик архитектурага ылайыкташтырылган.

Нанонямда эмне кыла аласыз? Мен бир нече көйгөйлөр менен келдим.

Программалык блокторду иштеп чыгуу

Мен бир жолу 128x64 чекиттик графикалык дисплей үчүн татаал менюну иштеп чыгышым керек болчу. Пикселдердин кандайча көрүнөрүн көрүү үчүн микропрограмманы чыныгы микроконтроллерге такай жүктөөнү каалабадым. Ошентип, Нанонямдын идеясы пайда болду. Төмөнкү сүрөттө ошол эле менюдагы элементтердин биринин чыныгы OLED дисплейинен алынган сүрөт көрсөтүлгөн. Эми мен аны реалдуу аппаратсыз эле иштей алам.

Arduinoдо Windows үчүн программаларды кантип түзүүгө болот

Nanonyam (акыркы идеясы боюнча) микроконтроллерлердин программалык блокторун иштеп чыгуунун жакшы куралы, анткени графика менен (дисплейлерди жана индикаторлорду имитациялай аласыз), файлдар менен (логдорду түзө аласыз, тесттик маалыматтарды окуй аласыз) менен иштөө функциялары бар. клавиатура (бир эле учурда 10 баскычка чейин окуй аласыз), COM порттору менен (бул жерде өзүнчө пункт).

Ыкчам программаларды түзүү

Мисалы, 100500 текст файлдарын тез иштетүү керек. Ар бири ачылып, кандайдыр бир жөнөкөй алгоритм боюнча бир аз өзгөртүлүп, сакталып, жабылышы керек. Эгер сиз Python чебери болсоңуз, анда мен сизди куттуктайм, сизде баары бар. Бирок, эгер сиз катууланган ардуино болсоңуз (жана алардын көбү бар), анда Nanonyam сизге бул маселени чечүүгө жардам берет. Бул менин Нанонямдагы экинчи максатым: текстти иштеп чыгуу, скриншотторду алуу же системадагы баскыч басууларды симуляциялоо сыяктуу көптөгөн пайдалуу функцияларды (алардын баары, демек, мурунтан эле бар), ошондой эле күнүмдүк тапшырмаларды чечүү үчүн көптөгөн башка функцияларды кошуу. .

COM порту аркылуу аппараттык тестирлөө

Nanonyam сиздин алгоритмиңизге ылайык иштеген терминал катары иштей алат. Аппаратты башкаруу жана порттон алынган маалыматтарды көрсөтүү үчүн сиз кичинекей менюну тарта аласыз. Сиз талдоо үчүн файлдардан маалыматтарды сактап жана окуй аласыз. Жөнөкөй мүчүлүштүктөрдү оңдоо жана аппараттык каражаттарды калибрлөө үчүн, ошондой эле жөнөкөй виртуалдык аспапты башкаруу панелдерин түзүү үчүн ыңгайлуу курал. Студенттер жана жаш окумуштуулар үчүн бул долбоор абдан пайдалуу болушу мүмкүн.

Программалоо боюнча тренинг

Бирок, бүт Arduino долбоорундагыдай эле, Нанонямдын негизги пайдалуулугу функцияларды, интерфейсти жана жүктөгүчтү жөнөкөйлөтүүдө. Ошондуктан, бул долбоор башталгыч программисттерге жана arduino деңгээлине ыраазы болгондорго кызык болушу керек. Баса, мен өзүм дагы эле ардуинону майда-чүйдөсүнө чейин изилдей элекмин, анткени мен ар дайым WinAVR же AVR Studio колдонуп, бирок ассемблер менен баштагам. Ошондуктан, төмөндөгү мисал программасы бир аз туура эмес, бирок абдан иштеп калат.

Салам Хабр!

Кээ бир Nanonyam өзгөчөлүктөрү менен таанышып, жөнөкөй программа жазууга убакыт келди. Биз Ардуинодо жазабыз, бирок кадимкидей эмес, азыр мүмкүн болгон жол менен (мен бул чөйрөнү азырынча жакшы түшүнө элекмин деп айтканмын). Биринчиден, жаңы эскизди түзүп, Mega2560 тактасын тандаңыз.

Arduinoдо Windows үчүн программаларды кантип түзүүгө болот

Эскизди файлга сактап, кийинкиге көчүрүңүз Наноням китепканасы. Китепканалардын баштарын кошуу туура болмок, бирок мен 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"

Ардуинодон түздөн-түз орнотула турган “Ардуино үчүн Наноням” атайын модулун жасоо андан да туура болмок. Мен муну түшүнгөндөн кийин жасайм, бирок азыр мен виртуалдык машина менен иштөөнүн маңызын гана көрсөтүп жатам. Биз төмөнкү кодду жазабыз:

//Сразу после запуска рисуем текст в окне
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 секунддан кийин жабылат.

Биз "Текшерүү" баскычын басабыз жана эч кандай ката болбошу керек.

Arduinoдо Windows үчүн программаларды кантип түзүүгө болот

Эми сиз бинардык файлды (прошивка) алышыңыз керек. Менюну тандоо "Эскиз>>Бинарлык файлды экспорттоо (CTRL+ALT+S)".

Arduinoдо Windows үчүн программаларды кантип түзүүгө болот

Бул эки HEX файлын эскиз папкасына көчүрөт. Биз "with_bootloader.mega" префикси жок гана файлды алабыз.

Nanonyam виртуалдык машинасына HEX файлын көрсөтүүнүн бир нече жолу бар, алардын бардыгы сүрөттөлөт Бул беттеги. Мен файлдын жанында түзүүнү сунуштайм Nanonyam.exe билэ жол, анда биздин HEX файлына толук жол катталат. Андан кийин сиз чуркай аласыз Nanonyam.exe. Биздин жазуу менен терезени алабыз.

Arduinoдо Windows үчүн программаларды кантип түзүүгө болот

Ошо сыяктуу эле, сиз AVR Studio же WinAVR сыяктуу башка чөйрөлөрдө программаларды түзө аласыз.

Наноням менен таанышуу-бузду мына ушул жерден аяктайбыз. Негизги ой ачык болушу керек. Көбүрөөк мисалдар веб-сайтта.. Эгерде бул долбоорду колдонууну каалагандар жетиштүү болсо, анда мен дагы мисалдарды келтирип, виртуалдык функциялардын китепканаларын "толтурууну" улантам. Долбоорду иштеп чыгуу боюнча конкреттүү идеялар жана бузулуулар, мүчүлүштүктөр жана каталар жөнүндө отчеттор кабыл алынат. Аларды байланыштарга багыттоо сунушталат, сайтында көрсөтүлгөн. Жана талкуулоо комментарийлерде кабыл алынат.

Көңүл бурганыңыз жана жакшы программалооңуз үчүн рахмат!

Source: www.habr.com

Комментарий кошуу