አንድ ቀን የማመጣው እብድ ሀሳብ ነበረኝ።
ፕሮጀክቱን ናኖኒያም (ናኖኒያም) ብዬ ጠራሁት እና ለእሱ አርማ እንኳ አወጣሁ (ለ 5 ደቂቃዎች ስልሁ)።
ስለ አርዱዪኖ ለሚያስቡ ሰዎች ናኖኒያም ዊንዶውስን ለመቆጣጠር ምናባዊ አርዱዪኖ ጋሻ ነው ማለት እንችላለን።
በሌላ አነጋገር ናኖኒያም ለ AVR ማይክሮ መቆጣጠሪያ (ATMEGA2560 ይመከራል) እንደ ባይትኮድ የሚጠቀም ምናባዊ ማሽን ነው። በዚህ ቨርቹዋል ማሽን ውስጥ የኤቪአር ኮር ሲሙሌተር አለ፣ ነገር ግን ከ0x0060 እስከ 0x01FF ባለው የSRAM አድራሻዎች ከሚገኙት ተጓዳኝ አካላት ይልቅ፣ ለምናባዊ ተግባራት (የዊንዶውስ ኤፒአይ ተግባራትን ጨምሮ) ልዩ በይነገጽ አለ። እና እዚህ ወዲያውኑ መረዳት በጣም አስፈላጊ ነው የናኖኒያም ኮድ ወደተገለጸው የማህደረ ትውስታ ክልል ምንም አይነት መዳረሻ ሊኖረው አይገባም, በድንገት ላለመደወል, ለምሳሌ ፋይሎችን የመሰረዝ ወይም ዲስክን የመቅረጽ ተግባር. የተቀረው የ SRAM ማህደረ ትውስታ ከ 0x0200 እስከ 0xFFFF (ይህ ከእውነተኛ ማይክሮ መቆጣጠሪያ ውስጥ የበለጠ ነው) ለማንኛውም ዓላማ ለተጠቃሚው ይገኛል. የእውነተኛ ማይክሮ መቆጣጠሪያ (ወይም firmware ከሌላ አርክቴክቸር) በአጋጣሚ እንዳይጀመር ልዩ ጥበቃ እንዳለ ወዲያውኑ አስተውያለሁ፡ “አደገኛ” ተግባራትን ከማግበርዎ በፊት ልዩ ተንኮለኛ ምናባዊ ተግባር መደወል ያስፈልግዎታል። አንዳንድ ሌሎች የደህንነት ባህሪያትም አሉ.
ለናኖኒያም ፕሮግራሞችን ለመፍጠር አሁን ያሉትን ሁሉንም ምናባዊ ተግባራት የሚተገብሩ ልዩ ቤተ-መጽሐፍቶችን መጠቀም ያስፈልግዎታል። ለእሱ የናኖኒያም ቨርቹዋል ማሽን እና ቤተመጻሕፍት ያውርዱ
ናኖኒያም ለቤት እና ለንግድ አገልግሎት ነፃ ነው። የናኖኒያም ፕሮግራም የቀረበው "እንደሆነ" መሠረት ነው። የምንጭ ኮድ አልቀረበም።
ፕሮግራሙ በአሁኑ ጊዜ በሙከራ ደረጃ ላይ ነው። ለዊንዶውስ ቀላል ፕሮግራሞችን እንዲፈጥሩ የሚያስችልዎ ወደ 200 የሚጠጉ ምናባዊ ተግባራት ተተግብሯል.
የኮዱ ማህደረ ትውስታ 256 ኪ.ባ ብቻ ስለሆነ በእንደዚህ ዓይነት ምናባዊ ማሽን ውስጥ የተወሳሰበ ነገር መፍጠር እንደማይቻል ግልጽ ነው. ውሂብ በተለየ ፋይሎች ውስጥ ሊከማች ይችላል, ለግራፊክ ክፍሉ ቋት በውጭ ይተገበራል. ሁሉም ተግባራት ቀለል ያሉ እና ለ 8-ቢት አርክቴክቸር የተስተካከሉ ናቸው።
በናኖኒያም ውስጥ ምን ማድረግ ይችላሉ? እኔ ጥቂት ችግሮች ጋር መጣሁ.
የፕሮግራም ብሎኮች ልማት
አንድ ጊዜ ለ 128x64 ነጥብ ግራፊክ ማሳያ ውስብስብ ሜኑ መንደፍ አስፈለገኝ። ፒክስሎቹ እንዴት እንደሚመስሉ ለማየት firmwareን በተከታታይ ወደ እውነተኛ ማይክሮ መቆጣጠሪያ መጫን አልፈልግም። እናም የናኖኒያም ሀሳብ ተወለደ። ከታች ያለው ምስል በተመሳሳይ ምናሌ ውስጥ ካሉት ዕቃዎች ውስጥ ከእውነተኛው የኦኤልዲ ማሳያ ምስል ያሳያል። አሁን ያለ እውነተኛ መሣሪያ ልሰራው እችላለሁ።
ናኖኒያም (በመጨረሻው ሀሳቡ) ከግራፊክስ ጋር ለመስራት ተግባራት ስላሉት (ማሳያዎችን እና አመላካቾችን ማስመሰል ይችላሉ) ፣ በፋይሎች (ምዝግብ ማስታወሻዎችን መሥራት ፣ የሙከራ ውሂብን ማንበብ ይችላሉ) ፣ ለማይክሮ ተቆጣጣሪዎች የፕሮግራም ብሎኮችን ለመስራት ጥሩ መሣሪያ ነው። የቁልፍ ሰሌዳ (በተመሳሳይ ጊዜ እስከ 10 አዝራሮች ማንበብ ይችላሉ), ከ COM ወደቦች ጋር (እዚህ የተለየ ንጥል አለ).
ፈጣን ፕሮግራሞችን መፍጠር
ለምሳሌ 100500 የጽሑፍ ፋይሎችን በፍጥነት ማካሄድ ያስፈልግዎታል። እያንዳንዳቸው መከፈት አለባቸው, በአንዳንድ ቀላል ስልተ-ቀመር መሰረት በትንሹ ተስተካክለው, መቀመጥ እና መዘጋት አለባቸው. የፓይዘን ማስተር ከሆንክ እንኳን ደስ አለህ፣ ሁሉም ነገር አለህ። ግን ጠንካራ አርዱዪኖ ከሆንክ (እና ብዙዎቹም አሉ) ናኖኒያም ይህንን ችግር ለመፍታት ይረዳሃል። በናኖኒያም ውስጥ ይህ ሁለተኛው ግቤ ነው፡- እንደ የጽሑፍ ሂደት፣ ቅጽበታዊ ገጽ እይታዎችን ማንሳት ወይም በስርዓቱ ውስጥ የቁልፍ ጭነቶችን ማስመሰል (በነገራችን ላይ ሁሉም ነገር ቀደም ብሎ) እና እንዲሁም መደበኛ ስራዎችን ለመፍታት ብዙ ጠቃሚ ተግባራትን ለመጨመር ነው። .
ሃርድዌርን በCOM ወደብ በመሞከር ላይ
ናኖኒያም በእርስዎ ስልተ ቀመር መሰረት የሚሰራ ተርሚናል ሆኖ መስራት ይችላል። መሳሪያውን ለመቆጣጠር እና ከወደቡ የተቀበለውን መረጃ ለማሳየት ትንሽ ምናሌን መሳል ይችላሉ. ለመተንተን ውሂብን ከፋይሎች ማስቀመጥ እና ማንበብ ይችላሉ. ለቀላል ማረም እና የሃርድዌር ማስተካከያ እንዲሁም ቀላል የቨርቹዋል መሳሪያ መቆጣጠሪያ ፓነሎችን ለመፍጠር የሚያስችል ምቹ መሳሪያ። ለተማሪዎች እና ለወጣት ሳይንቲስቶች ይህ ፕሮጀክት በጣም ጠቃሚ ሊሆን ይችላል.
የፕሮግራም ስልጠና
ሆኖም እንደ መላው የአርዱዪኖ ፕሮጀክት የናኖኒያም ዋና ጠቀሜታ ተግባራትን ፣ በይነገጽን እና ቡት ጫኝን በማቃለል ላይ ነው። ስለዚህ ይህ ፕሮጀክት ለጀማሪ ፕሮግራመሮች እና በ arduino ደረጃ እርካታ ላላቸው ሰዎች ትኩረት ሊሰጠው ይገባል. በነገራችን ላይ እኔ ራሴ አሁንም አርዱዪኖን በዝርዝር አላጠናሁም ምክንያቱም ሁልጊዜ WinAVR ወይም AVR ስቱዲዮን እጠቀማለሁ ነገር ግን በመሰብሰብ ጀምሯል ። ስለዚህ, ከዚህ በታች ያለው ምሳሌ ፕሮግራም ትንሽ ስህተት ይሆናል, ነገር ግን በጣም ይሰራል.
ሰላም ሀብር!
ከአንዳንድ የናኖኒያም ባህሪያት ጋር ለመተዋወቅ እና ቀላል ፕሮግራም ለመጻፍ ጊዜው አሁን ነው። በአርዱዪኖ እንጽፋለን, ነገር ግን በተለመደው መንገድ አይደለም, ነገር ግን አሁን በምችለው መንገድ (ይህን አካባቢ እስካሁን በደንብ እንዳላወቅኩት አስቀድሜ ተናግሬ ነበር). መጀመሪያ አዲስ ንድፍ ይፍጠሩ እና የ Mega2560 ሰሌዳን ይምረጡ።
ስዕሉን ወደ ፋይል ያስቀምጡ እና ቀጣዩን ይቅዱ
#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 በቀጥታ ሊጫን የሚችል ልዩ ሞጁል "Nanonyam for 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);//Задержка и разгрузка процессора
}
በዚህ ፕሮግራም ይሳሉ
"Check" የሚለውን ቁልፍ እንጭነዋለን እና ምንም ስህተቶች ሊኖሩ አይገባም.
አሁን ሁለትዮሽ ፋይል (firmware) ማግኘት አለብዎት. ምናሌውን ይምረጡ"Sketch>>ሁለትዮሽ ፋይል ወደ ውጪ ላክ (CTRL+ALT+S)".
ይህ ሁለት HEX ፋይሎችን ወደ sketch አቃፊ ይገለበጣል. ያለ ቅድመ ቅጥያ "with_bootloader.mega" ፋይሉን ብቻ እንወስዳለን.
የ HEX ፋይልን ወደ ናኖኒያም ቨርቹዋል ማሽን የሚገልጹበት ብዙ መንገዶች አሉ ሁሉም ተገልጸዋል።
በተመሳሳይ፣ እንደ AVR Studio ወይም WinAVR ባሉ በሌሎች አካባቢዎች ፕሮግራሞችን መፍጠር ይችላሉ።
ከናኖኒያም ጋር ያለንን ትውውቅ የምንጨርስበት ይህ ነው። ዋናው ሀሳብ ግልጽ መሆን አለበት.
ስለ እርስዎ ትኩረት እና ጥሩ ፕሮግራም ሁላችሁንም አመሰግናለሁ!
ምንጭ: hab.com