Sut i greu rhaglenni ar gyfer Windows yn Arduino

Sut i greu rhaglenni ar gyfer Windows yn Arduino

Un diwrnod roedd gen i'r syniad gwallgof i ddod 500 o awgrymiadau laser mewn un lle. Treuliais lawer o amser a gwneud hynny. Trodd allan yn ysblennydd ac yn ddiwerth, ond roeddwn i'n ei hoffi. Chwe mis yn ôl roedd gen i syniad gwallgof arall. Y tro hwn, nid yn ysblennydd o gwbl, ond yn llawer mwy defnyddiol. Treuliais lawer o amser arno hefyd. Ac yn yr erthygl hon, rwy'n cyflwyno fersiwn beta o'm hail syniad gwallgof.

Galwais y prosiect yn Nanonyam (Nanonyam) a hyd yn oed lluniais logo ar ei gyfer (tynnodd am 5 munud).

Sut i greu rhaglenni ar gyfer Windows yn Arduino

I'r rhai sy'n meddwl o ran Arduino, gallwn ddweud bod Nanonyam yn darian rithwir Arduino ar gyfer rheoli Windows.

Mewn geiriau eraill, mae Nanonyam yn beiriant rhithwir sy'n defnyddio'r firmware ar gyfer y microreolydd AVR (argymhellir ATMEGA2560) fel y cod byte. Y tu mewn i'r peiriant rhithwir hwn mae efelychydd craidd AVR, ond yn lle dyfeisiau ymylol, sydd wedi'u lleoli mewn cyfeiriadau SRAM o 0x0060 i 0x01FF, mae rhyngwyneb arbennig i swyddogaethau rhithwir (gan gynnwys swyddogaethau API Windows). Ac yma mae'n bwysig iawn deall ar unwaith: ni ddylai'r cod ar gyfer Nanonyam gael mynediad i'r ystod cof penodedig, er mwyn peidio â galw'n ddamweiniol, er enghraifft, swyddogaeth dileu ffeiliau neu fformatio disg. Mae gweddill yr ystod cof SRAM o 0x0200 i 0xFFFF (mae hyn yn fwy nag mewn microreolydd go iawn) ar gael i'r defnyddiwr at unrhyw ddiben. Sylwaf ar unwaith fod amddiffyniad arbennig yn erbyn lansiad damweiniol cadarnwedd microreolydd go iawn (neu firmware o bensaernïaeth arall): cyn actifadu swyddogaethau "peryglus", mae angen i chi alw swyddogaeth rithwir anodd arbennig. Mae yna rai nodweddion diogelwch eraill hefyd.

I greu rhaglenni ar gyfer Nanonyam, mae angen i chi ddefnyddio llyfrgelloedd arbennig sy'n gweithredu'r holl swyddogaethau rhithwir sydd ar gael ar hyn o bryd. Dadlwythwch beiriant rhithwir Nanonyam a llyfrgelloedd ar ei gyfer yn gallu bod yma. Ond mae'r tudalen disgrifiad swyddogaeth rhithwir. Ac ydy, mae fy ngwefan yn gyntefig iawn ac nid yw wedi'i addasu ar gyfer dyfeisiau symudol.

Mae Nanonyam yn rhad ac am ddim at ddefnydd cartref a masnachol. Darperir rhaglen Nanonyam ar sail "fel y mae". Ni ddarperir cod ffynhonnell.

Mae'r rhaglen yn y cyfnod profi ar hyn o bryd. Wedi gweithredu tua 200 o swyddogaethau rhithwir sy'n eich galluogi i greu rhaglenni syml ar gyfer Windows.
Yn amlwg, ni fydd creu rhywbeth cymhleth mewn peiriant rhithwir o'r fath yn gweithio, gan mai dim ond 256 kB yw'r cof ar gyfer y cod. Gellir storio data mewn ffeiliau ar wahân, gweithredir y byffer ar gyfer y rhan graffeg yn allanol. Mae'r holl swyddogaethau'n cael eu symleiddio a'u haddasu ar gyfer pensaernïaeth 8-did.

Beth allwch chi ei wneud yn Nanonyam? Deuthum i fyny ag ychydig o broblemau.

Datblygu blociau rhaglen

Unwaith roedd angen i mi ddylunio bwydlen gymhleth ar gyfer arddangosfa graffig dot 128x64. Doeddwn i ddim eisiau llwytho'r firmware yn gyson i ficroreolydd go iawn i weld sut mae'r picsel yn edrych. Ac felly y ganwyd y syniad o Nanonyam. Mae'r ffigur isod yn dangos delwedd o arddangosfa OLED go iawn o un o'r eitemau ar yr un ddewislen. Nawr gallaf weithio drwyddo heb ddyfais go iawn.

Sut i greu rhaglenni ar gyfer Windows yn Arduino

Mae Nanonyam (yn ei syniad terfynol) yn arf da ar gyfer gweithio allan blociau rhaglen ar gyfer microreolyddion, gan fod yna swyddogaethau ar gyfer gweithio gyda graffeg (gallwch efelychu arddangosfeydd a dangosyddion), gyda ffeiliau (gallwch wneud logiau, darllen data prawf), gyda bysellfwrdd (gallwch ddarllen hyd at 10 botymau ar yr un pryd), gyda phorthladdoedd COM (dyma eitem ar wahân).

Creu Rhaglenni Cyflym

Er enghraifft, mae angen i chi brosesu 100500 o ffeiliau testun yn gyflym. Mae angen agor pob un, ei addasu ychydig yn ôl rhywfaint o algorithm syml, ei gadw a'i gau. Os ydych chi'n feistr Python, yna rwy'n eich llongyfarch, mae gennych chi bopeth. Ond os ydych chi'n arduino caled (ac mae yna lawer ohonyn nhw), yna bydd Nanonyam yn eich helpu chi i ddatrys y broblem hon. Dyma fy ail nod yn Nanonyam: ychwanegu llawer o swyddogaethau defnyddiol megis prosesu testun, cymryd sgrinluniau neu efelychu trawiadau bysell yn y system (mae pob un ohonynt, gyda llaw, eisoes yno), yn ogystal â llawer o swyddogaethau eraill ar gyfer datrys tasgau arferol .

Profi caledwedd trwy borthladd COM

Gall Nanonyam weithredu fel terfynell sy'n gweithio yn unol â'ch algorithm. Gallwch chi dynnu bwydlen fach i reoli'r ddyfais ac arddangos y data a dderbyniwyd o'r porthladd. Gallwch arbed a darllen data o ffeiliau i'w dadansoddi. Offeryn defnyddiol ar gyfer dadfygio a graddnodi caledwedd syml, yn ogystal ag ar gyfer creu paneli rheoli offeryn rhithwir syml. I fyfyrwyr a gwyddonwyr ifanc, gall y prosiect hwn fod yn ddefnyddiol iawn.

Hyfforddiant rhaglennu

Fodd bynnag, fel gyda'r prosiect Arduino cyfan, mae prif ddefnyddioldeb Nanonyam yn gorwedd wrth symleiddio swyddogaethau, rhyngwyneb a llwythwr cychwyn. Felly, dylai'r prosiect hwn fod o ddiddordeb i raglenwyr newydd a'r rhai sy'n fodlon â lefel yr arduino. Gyda llaw, nid wyf fy hun wedi astudio arduino yn fanwl o hyd, oherwydd roeddwn bob amser yn defnyddio WinAVR neu AVR Studio, ond dechreuais gyda chydosodwr. Felly, bydd y rhaglen enghreifftiol isod ychydig yn anghywir, ond yn eithaf gweithio.

Helo Habr!

Mae'n bryd ymgyfarwyddo â rhai o nodweddion Nanonyam ac ysgrifennu rhaglen syml. Byddwn yn ysgrifennu yn Arduino, ond nid yn y ffordd arferol, ond yn y ffordd y gallaf yn awr (dywedais eisoes nad wyf wedi cyfrifo'r amgylchedd hwn yn dda iawn eto). Yn gyntaf, crëwch fraslun newydd a dewiswch y bwrdd Mega2560.

Sut i greu rhaglenni ar gyfer Windows yn Arduino

Cadwch y braslun i ffeil a chopïwch nesaf llyfrgell Nanonyam. Byddai’n gywir cynnwys penawdau’r llyfrgelloedd, ond nid wyf yn gwybod sut i ysgrifennu casgliad o ffeiliau unigol yn Arduino, felly am y tro byddwn yn cynnwys y llyfrgelloedd yn uniongyrchol (a phob un ar unwaith):

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

Byddai hyd yn oed yn fwy cywir gwneud modiwl arbennig “Nanonyam for Arduino”, y gellir ei osod yn uniongyrchol o Arduino. Cyn gynted ag y byddaf yn ei ddarganfod, byddaf yn ei wneud, ond am y tro rwy'n dangos hanfod gweithio gyda pheiriant rhithwir. Rydyn ni'n ysgrifennu'r cod canlynol:

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

Braslun gyda'r rhaglen hon gellir ei lawrlwytho yma. Disgrifiad manwl o swyddogaethau chwilio ar y safle. Rwy'n gobeithio bod y sylwadau yn y cod hwn yn ddigon i gael y gwir amdani. Yma swyddogaeth sys_Nanonyam() yn chwarae rôl "cyfrinair" ar gyfer y peiriant rhithwir, sy'n dileu cyfyngiadau ar swyddogaethau rhithwir. Heb y swyddogaeth hon, bydd y rhaglen yn cau ar ôl 3 eiliad o weithredu.

Rydym yn pwyso'r botwm "Gwirio" ac ni ddylai fod unrhyw wallau.

Sut i greu rhaglenni ar gyfer Windows yn Arduino

Nawr mae angen i chi gael ffeil ddeuaidd (cadarnwedd). Dewiswch y ddewislen "Braslun >> Allforio ffeil ddeuaidd (CTRL+ALT+S)".

Sut i greu rhaglenni ar gyfer Windows yn Arduino

Bydd hyn yn copïo dwy ffeil HEX i'r ffolder braslunio. Rydym yn cymryd y ffeil yn unig heb y rhagddodiad "with_bootloader.mega".

Mae yna sawl ffordd i nodi ffeil HEX i beiriant rhithwir Nanonyam, disgrifir pob un ohonynt ar y dudalen hon. Rwy'n awgrymu creu wrth ymyl y ffeil Nanonyam.exe файл llwybr, i gofrestru'r llwybr llawn i'n ffeil HEX. Ar ôl hynny gallwch chi redeg Nanonyam.exe. Cawn ffenestr gyda'n harysgrif.

Sut i greu rhaglenni ar gyfer Windows yn Arduino

Yn yr un modd, gallwch greu rhaglenni mewn amgylcheddau eraill, fel AVR Studio neu WinAVR.

Dyma lle rydyn ni'n gorffen ein hadnabod â Nanonyam. Dylai'r prif syniad fod yn glir. Mae rhagor o enghreifftiau ar y wefan.. Os oes digon o bobl yn barod i ddefnyddio'r prosiect hwn, yna byddaf yn gwneud mwy o enghreifftiau ac yn parhau i "lenwi" y llyfrgelloedd swyddogaeth rhithwir. Derbynnir syniadau diriaethol ar gyfer datblygiad y prosiect ac adroddiadau am ddiffygion, bygiau a bygiau. Mae'n ddoeth eu cyfeirio at gysylltiadau, a nodir ar y safle. Ac mae croeso i drafodaeth yn y sylwadau.

Diolch i chi gyd am eich sylw a rhaglennu da!

Ffynhonnell: hab.com

Ychwanegu sylw