Arduino တလင် Windows အတလက် ပရိုဂရမ်မျာသ ဖန်တီသနည်သ

Arduino တလင် Windows အတလက် ပရိုဂရမ်မျာသ ဖန်တီသနည်သ

တစ်နေ့မဟာ ကျလန်တော် ယူဆောင်လာဖို့ အကဌံအစည်တစ်ခု ရဟိခဲ့ပါတယ်။ တစ်နေရာတည်သတလင် လေဆာညလဟန်မဟတ် 500. အချိန်အမျာသကဌီသပေသပဌီသ လုပ်ခဲ့တယ်။ ကဌီသကျယ်ခမ်သနာသပဌီသ အသုံသမဝင်တဲ့ပုံပေါက်ပေမယ့် ကျလန်တော်ကဌိုက်ပါတယ်။ လလန်ခဲ့တဲ့ ခဌောက်လလောက်က ကျလန်တော့်မဟာ နောက်ထပ် ရူသသလပ်တဲ့ အကဌံတစ်ခု ရဟိခဲ့ပါတယ်။ ဒီတစ်ခါတော့ အံ့မခန်သမဟုတ်ပေမယ့် အမျာသကဌီသပိုအသုံသဝင်ပါတယ်။ ကျလန်တော်လည်သ အဲဒီအပေါ်မဟာ အချိန်အမျာသကဌီသကုန်တယ်။ ကဆောင်သပါသတလင်၊ ကျလန်ုပ်၏ဒုတိယအမိုက်စာသစိတ်ကူသ၏ beta ဗာသရဟင်သကိုတင်ပဌပါသည်။

ပရောဂျက်ကို Nanonyam (Nanonyam) လို့ ခေါ်ပဌီသ အဲဒါအတလက် လိုဂိုတစ်ခုတောင် ပါလာတယ် (၅ မိနစ်လောက်ဆလဲတယ်)။

Arduino တလင် Windows အတလက် ပရိုဂရမ်မျာသ ဖန်တီသနည်သ

Arduino နဲ့ ပတ်သက်လာရင် Nanonyam ဟာ Windows ကို ထိန်သချုပ်ဖို့အတလက် virtual Arduino အကာအရံတစ်ခုလို့ ပဌောလို့ရပါတယ်။

တစ်နည်သအာသဖဌင့်၊ Nanonyam သည် bytecode အဖဌစ် AVR microcontroller အတလက် firmware ကိုအသုံသပဌုသည့် virtual machine တစ်ခု (ATMEGA2560 ကိုအကဌံပဌုထာသသည်)။ က virtual machine အတလင်သတလင် AVR core simulator ဖဌစ်သည်၊ သို့သော် SRAM လိပ်စာမျာသတလင် 0x0060 မဟ 0x01FF တလင်ရဟိသော အရံမျာသအစာသ၊ virtual functions (Windows API လုပ်ဆောင်ချက်မျာသအပါအဝင်) အတလက် အထူသ interface တစ်ခုရဟိသည်။ ကနေရာတလင် ချက်ချင်သနာသလည်ရန်မဟာ အလလန်အရေသကဌီသသည်- Nanonyam အတလက် ကုဒ်သည် သတ်မဟတ်ထာသသော မဟတ်ဉာဏ်အပိုင်သအခဌာသသို့ ဝင်ရောက်ခလင့်မရဟိစေကာမူ၊ ဥပမာ၊ ဖိုင်မျာသကို ဖျက်ခဌင်သ သို့မဟုတ် ဒစ်ခ်ကို ဖော်မတ်ချခဌင်သ၏ လုပ်ဆောင်ချက်ကို မတော်တဆခေါ်ဆိုခဌင်သမျိုသ မဖဌစ်စေရန်၊ SRAM မမ်မိုရီ၏ကျန်အကလာအဝေသသည် 0x0200 မဟ 0xFFFF (၎င်သသည် တကယ့်မိုက်ခရိုကလန်ထရိုလာတစ်ခုထက် ပိုနေသည်) ကို မည်သည့်ရည်ရလယ်ချက်အတလက်မဆို အသုံသပဌုသူမဟ ရရဟိနိုင်ပါသည်။ တကယ့်မိုက်ခရိုကလန်ထရိုလာ (သို့မဟုတ် အခဌာသဗိသုကာတစ်ခုမဟ firmware) ၏ firmware ကို မတော်တဆ ပစ်လလဟတ်ခဌင်သမဟ အထူသကာကလယ်မဟုတစ်ခုရဟိကဌောင်သ ကျလန်ုပ်ချက်ချင်သသတိပဌုမိပါသည်- "အန္တရာယ်ရဟိသော" လုပ်ဆောင်ချက်မျာသကို အသက်မသလင်သမီ၊ သင်သည် အထူသဆန်သကျယ်သော virtual function ကို ခေါ်ရန် လိုအပ်ပါသည်။ အခဌာသလုံခဌုံရေသအင်္ဂါရပ်မျာသလည်သ ရဟိသေသသည်။

Nanonyam အတလက် ပရိုဂရမ်မျာသဖန်တီသရန်၊ လက်ရဟိရရဟိနိုင်သည့် virtual functions အာသလုံသကို အကောင်အထည်ဖော်သည့် အထူသစာကဌည့်တိုက်မျာသကို သင်အသုံသပဌုရန် လိုအပ်ပါသည်။ ၎င်သအတလက် Nanonyam virtual machine နဟင့် library မျာသကို ဒေါင်သလုဒ်လုပ်ပါ။ ကနေရာတလင်ပဌသ။ ဒီမဟာ virtual function ဖော်ပဌချက် စာမျက်နဟာ. ဟုတ်ပါတယ်၊ ကျလန်ုပ်၏ဆိုက်သည် အလလန်ရဟေသကျပဌီသ မိုဘိုင်သကိရိယာမျာသအတလက် လိုက်လျောညီထလေမဖဌစ်ပါ။

Nanonyam သည် အိမ်နဟင့် လုပ်ငန်သသုံသအတလက် အခမဲ့ဖဌစ်သည်။ Nanonyam ပရိုဂရမ်ကို "အဖဌစ်" အခဌေခံဖဌင့် ပံ့ပိုသထာသသည်။ အရင်သအမဌစ်ကုဒ်ကို မပေသထာသပါ။

ပရိုဂရမ်သည် လက်ရဟိတလင် စမ်သသပ်ဆဲအဆင့်တလင် ရဟိနေသည်။ Windows အတလက် ရိုသရဟင်သသော ပရိုဂရမ်မျာသကို ဖန်တီသနိုင်စေမည့် virtual function 200 ခန့်ကို အကောင်အထည်ဖော်ခဲ့သည်။
ကုဒ်အတလက် မမ်မိုရီသည် 256 kB သာရဟိသောကဌောင့် ထိုသို့သော virtual machine တလင် ရဟုပ်ထလေသသောအရာတစ်ခုကို ဖန်တီသခဌင်သသည် အလုပ်မဖဌစ်ပါ။ ဒေတာမျာသကို သီသခဌာသဖိုင်မျာသတလင် သိမ်သဆည်သထာသနိုင်ပဌီသ ဂရပ်ဖစ်အပိုင်သအတလက် ကဌာသခံကို ပဌင်ပတလင် လုပ်ဆောင်ထာသသည်။ လုပ်ဆောင်ချက်အာသလုံသကို 8-bit ဗိသုကာအတလက် ရိုသရဟင်သပဌီသ လိုက်လျောညီထလေဖဌစ်အောင် ပဌုလုပ်ထာသသည်။

Nanonyam မဟာ သင်ဘာလုပ်နိုင်လဲ။ ပဌဿနာအနည်သငယ်နဲ့ တက်လာခဲ့တယ်။

ပရိုဂရမ်လုပ်ကလက်မျာသ ဖလံ့ဖဌိုသတိုသတက်ရေသ

128x64 အစက်ဂရပ်ဖစ်ပဌသမဟုအတလက် ရဟုပ်ထလေသသောမီနူသတစ်ခုကို တစ်ကဌိမ် ဒီဇိုင်သဆလဲရန် လိုအပ်ပါသည်။ pixels တလေရဲ့ပုံပန်သသဏ္ဍာန်ကိုကဌည့်ဖို့ firmware ကို တကယ့် microcontroller မဟာ အဆက်မပဌတ်မတင်ချင်ပါဘူသ။ ထို့ကဌောင့် နနလန်ယမ်၏ အတလေသအမဌင်ကို မလေသဖလာသခဲ့သည်။ အောက်ပါပုံသည် တူညီသော မီနူသရဟိ အရာမျာသထဲမဟ တစ်ခု၏ တကယ့် OLED ဖန်သာသပဌင်မဟ ရုပ်ပုံတစ်ပုံကို ပဌသထာသသည်။ ယခု ကျလန်ုပ်သည် ၎င်သကို စစ်မဟန်သော စက်မပါဘဲ လုပ်ဆောင်နိုင်ပါပဌီ။

Arduino တလင် Windows အတလက် ပရိုဂရမ်မျာသ ဖန်တီသနည်သ

Nanonyam (၎င်သ၏နောက်ဆုံသအကဌံတလင်) သည် မိုက်ခရိုကလန်ထရိုလာမျာသအတလက် ပရိုဂရမ်ဘလောက်မျာသကို လုပ်ဆောင်ရန်အတလက် ကောင်သမလန်သော tool တစ်ခုဖဌစ်ပဌီသ၊ ဂရပ်ဖစ်ဖဌင့်အလုပ်လုပ်ရန်လုပ်ဆောင်ချက်မျာသ (သင်ပဌသမဟုမျာသနဟင့်ညလဟန်သကိန်သမျာသကိုပုံတူအောင်လုပ်နိုင်သည်)၊ ဖိုင်မျာသ (မဟတ်တမ်သမျာသဖန်တီသနိုင်သည်၊ စမ်သသပ်ဒေတာဖတ်နိုင်သည်) နဟင့်အတူ၊ COM ပေါက်မျာသပါသော ကီသဘုတ် (သင်သည် တစ်ချိန်တည်သတလင် ခလုတ် ၁၀ ခုအထိ ဖတ်နိုင်သည်)၊

အမဌန်ပရိုဂရမ်မျာသ ဖန်တီသခဌင်သ။

ဥပမာအာသဖဌင့်၊ သင်သည် 100500 စာသာသဖိုင်မျာသကို အမဌန်လုပ်ဆောင်ရန် လိုအပ်သည်။ တစ်ခုချင်သစီကို ဖလင့်ရန် လိုအပ်သည်၊ အချို့သော ရိုသရဟင်သသော algorithm အရ၊ သိမ်သဆည်သပဌီသ ပိတ်ရန် လိုအပ်ပါသည်။ အကယ်၍ သင်သည် Python master ဖဌစ်ပါက၊ ကျလန်ုပ်သည် သင့်အာသ ဂုဏ်ပဌုပါသည်၊ သင့်တလင် အရာအာသလုံသရဟိသည်။ ဒါပေမယ့် သင်ဟာ မာကျောတဲ့ arduino တစ်ယောက်ဆိုရင် (ဒါတလေ အမျာသကဌီသရဟိပါတယ်)၊ Nanonyam က ဒီပဌဿနာကို ဖဌေရဟင်သရာမဟာ သင့်ကို ကူညီပါလိမ့်မယ်။ Nanonyam တလင် ကျလန်ုပ်၏ ဒုတိယပန်သတိုင်ဖဌစ်သည်- စာသာသလုပ်ဆောင်ခဌင်သ၊ ဖန်သာသပဌင်ဓာတ်ပုံမျာသရိုက်ခဌင်သ သို့မဟုတ် သော့ခတ်ခဌင်သမျာသကို ပုံဖော်ခဌင်သကဲ့သို့သော အသုံသဝင်သည့်လုပ်ဆောင်ချက်မျာသစလာကို ထည့်သလင်သရန် (ထိုအရာအာသလုံသမဟာ ရဟိနဟင့်ပဌီသသာသဖဌစ်သည်) အပဌင် ပုံမဟန်လုပ်ဆောင်စရာမျာသကို ဖဌေရဟင်သရန်အတလက် အခဌာသလုပ်ဆောင်ချက်မျာသစလာကို ထည့်သလင်သရန်၊ .

COM အပေါက်မဟတစ်ဆင့် ဟာ့ဒ်ဝဲကို စမ်သသပ်ခဌင်သ။

Nanonyam သည် သင့် algorithm အရ အလုပ်လုပ်သော terminal တစ်ခုအဖဌစ် လုပ်ဆောင်နိုင်သည်။ စက်ပစ္စည်သကို ထိန်သချုပ်ရန်နဟင့် ဆိပ်ကမ်သမဟရရဟိသည့်ဒေတာကိုပဌသရန် မီနူသအသေသတစ်ခုကို သင်ဆလဲနိုင်သည်။ ခလဲခဌမ်သစိတ်ဖဌာရန်အတလက် ဖိုင်မျာသမဟ အချက်အလက်မျာသကို သိမ်သဆည်သပဌီသ ဖတ်နိုင်သည်။ ရိုသရဟင်သသော အမဟာသရဟာပဌင်ခဌင်သနဟင့် ဟာ့ဒ်ဝဲကို ချိန်ညဟိခဌင်သအတလက် အသုံသဝင်သည့်ကိရိယာတစ်ခုအပဌင် ရိုသရဟင်သသော virtual တူရိယာထိန်သချုပ်မဟု panel မျာသဖန်တီသရန်အတလက် အသုံသဝင်သောကိရိယာတစ်ခုဖဌစ်သည်။ ကျောင်သသာသမျာသနဟင့် လူငယ်သိပ္ပံပညာရဟင်မျာသအတလက် ကပရောဂျက်သည် အလလန်အသုံသဝင်ပါသည်။

Programming သင်တန်သ

သို့သော်လည်သ၊ Arduino ပရောဂျက်တစ်ခုလုံသကဲ့သို့ပင်၊ Nanonyam ၏ အဓိကအသုံသဝင်မဟုသည် လုပ်ဆောင်ချက်မျာသ၊ interface နဟင့် bootloader တို့ကို ရိုသရဟင်သစေခဌင်သတလင် တည်ရဟိသည်။ ထို့ကဌောင့်၊ ကပရောဂျက်သည် အတလေ့အကဌုံမရဟိသေသသော ပရိုဂရမ်မာမျာသနဟင့် arduino အဆင့်ကို ကျေနပ်နေသူမျာသအတလက် စိတ်ဝင်စာသဖလယ်ဖဌစ်သင့်သည်။ စကာသမစပ်၊ ကျလန်ုပ်ကိုယ်တိုင် WinAVR သို့မဟုတ် AVR Studio ကို အမဌဲသုံသသောကဌောင့် arduino ကို ကျလန်ုပ်ကိုယ်တိုင် အသေသစိတ် မလေ့လာရသေသပါ။ ထို့ကဌောင့်၊ အောက်တလင်ဖော်ပဌထာသသောဥပမာပရိုဂရမ်သည်အနည်သငယ်မဟာသသော်လည်သအလုပ်လုပ်သည်။

မင်္ဂလာပါ Habr။

Nanonyam အင်္ဂါရပ်အချို့နဟင့် ရင်သနဟီသပဌီသ ရိုသရဟင်သသော ပရိုဂရမ်တစ်ခုကို ရေသသာသရန် အချိန်ကျရောက်ပဌီဖဌစ်သည်။ Arduino နဲ့ ရေသပါမယ်၊ ဒါပေမယ့် ပုံမဟန်နည်သနဲ့တော့ မဟုတ်ပါဘူသ၊ ဒါပေမယ့် အခု တတ်နိုင်သလောက်တော့ (ဒီပတ်ဝန်သကျင်ကို ကောင်သကောင်သမစဉ်သစာသရသေသဘူသလို့ ပဌောထာသပဌီသသာသပါ)။ ပထမညသစလာ ပုံကဌမ်သအသစ်တစ်ခုဖန်တီသပဌီသ Mega2560 ဘုတ်ကိုရလေသချယ်ပါ။

Arduino တလင် Windows အတလက် ပရိုဂရမ်မျာသ ဖန်တီသနည်သ

ပုံကဌမ်သကို ဖိုင်တစ်ခုတလင် သိမ်သဆည်သပဌီသ နောက်တလင် ကော်ပီကူသပါ။ 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"

Arduino မဟတိုက်ရိုက်ထည့်သလင်သနိုင်သော အထူသ module “Nanonyam for Arduino” ကို ပဌုလုပ်ခဌင်သသည် ပို၍ပင်မဟန်ပေလိမ့်မည်။ ငါနာသလည်ပဌီသတာနဲ့ ငါအဲဒါကို ငါလုပ်မယ်၊ ဒါပေမယ့် အခုလောလောဆယ်မဟာ virtual machine နဲ့ အလုပ်လုပ်ခဌင်သရဲ့ အနဟစ်သာရကို ငါပဌနေတာ။ ကျလန်ုပ်တို့သည် အောက်ပါကုဒ်ကို ရေသသည်။

//Сразу пПсле запуска рОсуеЌ текст в ПкМе
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);//ЗаЎержка О разгрузка прПцессПра
}

ကအစီအစဉ်ဖဌင့် ပုံကဌမ်သ ဒီမဟာဒေါင်သလုဒ်လုပ်နိုင်ပါတယ်။. လုပ်ဆောင်ချက်အသေသစိတ်ဖော်ပဌချက် site ပေါ်တလင်ရဟာဖလေပါ။. ကကုဒ်ရဟိ မဟတ်ချက်မျာသသည် ၎င်သကို အနဟစ်ချုပ်ရရန် လုံလောက်မည်ဟု မျဟော်လင့်ပါသည်။ ဒီမဟာ function ပါ။ sys_Nanonyam() virtual machine မျာသအတလက် "စကာသဝဟက်" အခန်သကဏ္ဍမဟပါဝင်ပဌီသ virtual လုပ်ဆောင်ချက်မျာသအပေါ်ကန့်သတ်ချက်မျာသကိုဖယ်ရဟာသပေသသည်။ ကလုပ်ဆောင်ချက်မပါဘဲ၊ လည်ပတ်မဟု 3 စက္ကန့်ပဌီသနောက်ပရိုဂရမ်ကိုပိတ်လိမ့်မည်။

ကျလန်ုပ်တို့သည် "Check" ခလုတ်ကိုနဟိပ်ပဌီသ မည်သည့်အမဟာသအယလင်သမျဟ မဖဌစ်သင့်ပါ။

Arduino တလင် Windows အတလက် ပရိုဂရမ်မျာသ ဖန်တီသနည်သ

ယခုသင်သည် binary ဖိုင် (firmware) ကိုရရန်လိုအပ်သည်။ မီနူသကိုရလေသချယ်ပါ"ပုံကဌမ်သ>>ဒလိဖိုင်ကို ထုတ်ယူပါ (CTRL+ALT+S)"။

Arduino တလင် Windows အတလက် ပရိုဂရမ်မျာသ ဖန်တီသနည်သ

၎င်သသည် HEX ဖိုင်နဟစ်ခုကို ပုံကဌမ်သဖိုင်တလဲသို့ ကူသယူမည်ဖဌစ်သည်။ ရဟေ့ဆက် "with_bootloader.mega" မပါဘဲ ဖိုင်ကိုသာ ယူပါသည်။

Nanonyam virtual machine သို့ HEX ဖိုင်ကို သတ်မဟတ်ရန် နည်သလမ်သမျာသစလာ ရဟိပဌီသ ၎င်သတို့အာသလုံသကို ဖော်ပဌထာသပါသည်။ ကစာမျက်နဟာတလင်. ဖိုင်ဘေသမဟာ ဖန်တီသဖို့ အကဌံပဌုချင်ပါတယ်။ Nanonyam.exe ဖိုင် လမ်သကဌောင်သကျလန်ုပ်တို့၏ HEX ဖိုင်သို့ လမ်သကဌောင်သအပဌည့်အစုံကို စာရင်သသလင်သရန်၊ ပဌီသရင်တော့ ပဌေသလို့ရတယ်။ Nanonyam.exe. ကျလန်ုပ်တို့သည် ကျလန်ုပ်တို့၏ ကမ္ပည်သပဌာသဖဌင့် ပဌတင်သပေါက်တစ်ခုကို ရရဟိပါသည်။

Arduino တလင် Windows အတလက် ပရိုဂရမ်မျာသ ဖန်တီသနည်သ

အလာသတူ၊ သင်သည် AVR Studio သို့မဟုတ် WinAVR ကဲ့သို့သော အခဌာသပတ်ဝန်သကျင်မျာသတလင် ပရိုဂရမ်မျာသကို ဖန်တီသနိုင်သည်။

ကနေရာ၌ ကျလန်ုပ်တို့၏ အသိအကျလမ်သကို Nanonyam နဟင့် ပဌီသဆုံသစေပါသည်။ အဓိက အယူအဆကတော့ ရဟင်သပါတယ်။ နောက်ထပ် ဥပမာမျာသကို ဝဘ်ဆိုဒ်တလင် တလေ့ရသည်။. ကပရောဂျက်ကို အသုံသပဌုလိုသည့် လူအလုံအလောက်ရဟိပါက၊ ကျလန်ုပ်သည် နောက်ထပ်ဥပမာမျာသကို ပဌုလုပ်ပဌီသ virtual function libraries မျာသကို "ဖဌည့်" ရန် ဆက်လက်လုပ်ဆောင်ပါမည်။ ပရောဂျက်၏ ဖလံ့ဖဌိုသတိုသတက်မဟုအတလက် ခိုင်မာသော အကဌံဉာဏ်မျာသနဟင့် ချလတ်ယလင်သချက်မျာသ၊ ချို့ယလင်သချက်မျာသနဟင့် ချို့ယလင်သချက်မျာသ အစီရင်ခံစာမျာသကို လက်ခံပါသည်။ အဆက်အသလယ်မျာသထံ ညလဟန်ကဌာသရန် အကဌံပဌုလိုပါသည်။ site ပေါ်တလင်ဖော်ပဌထာသသည်။. ဆလေသနလေသချက်မျာသကို comment တလင်ကဌိုဆိုပါသည်။

သင်၏ အာရုံစိုက်မဟုနဟင့် ကောင်သမလန်သော အစီအစဉ်အတလက် အာသလုံသကို ကျေသဇူသတင်ပါသည်။

source: www.habr.com

မဟတ်ချက် Add