ایک دن میرے پاس لانے کا پاگل خیال آیا
میں نے پراجیکٹ کو نانونیم (نانونم) کہا اور یہاں تک کہ اس کے لیے لوگو بھی لے کر آیا (میں نے 5 منٹ تک ڈرا کیا)۔
ان لوگوں کے لیے جو Arduino کے حوالے سے سوچتے ہیں، ہم کہہ سکتے ہیں کہ Nanonyam ونڈوز کو کنٹرول کرنے کے لیے ایک ورچوئل Arduino شیلڈ ہے۔
دوسرے لفظوں میں، Nanonyam ایک ورچوئل مشین ہے جو AVR مائکرو کنٹرولر (ATMEGA2560 تجویز کی جاتی ہے) کے فرم ویئر کو بائی کوڈ کے طور پر استعمال کرتی ہے۔ اس ورچوئل مشین کے اندر ایک AVR کور سمیلیٹر ہے، لیکن پیریفرل ڈیوائسز کے بجائے، جو SRAM ایڈریس پر 0x0060 سے 0x01FF تک موجود ہیں، ورچوئل فنکشنز (بشمول ونڈوز API فنکشنز) کے لیے ایک خاص انٹرفیس ہے۔ اور یہاں یہ فوراً سمجھنا بہت ضروری ہے: نانونم کے کوڈ کو میموری کی مخصوص حد تک رسائی نہیں ہونی چاہیے، تاکہ غلطی سے کال نہ ہو، مثال کے طور پر، فائلوں کو ڈیلیٹ کرنا یا ڈسک کو فارمیٹ کرنا۔ بقیہ SRAM میموری کی حد 0x0200 سے 0xFFFF تک (یہ ایک حقیقی مائکروکنٹرولر سے زیادہ ہے) کسی بھی مقصد کے لیے صارف کے لیے دستیاب ہے۔ میں فوراً نوٹ کرتا ہوں کہ حقیقی مائیکرو کنٹرولر (یا کسی اور فن تعمیر سے فرم ویئر) کے حادثاتی طور پر لانچ ہونے کے خلاف ایک خاص تحفظ موجود ہے: "خطرناک" فنکشنز کو چالو کرنے سے پہلے، آپ کو ایک خاص مشکل ورچوئل فنکشن کو کال کرنے کی ضرورت ہے۔ کچھ دیگر حفاظتی خصوصیات بھی ہیں۔
Nanonyam کے لیے پروگرام بنانے کے لیے، آپ کو خصوصی لائبریریوں کو استعمال کرنے کی ضرورت ہے جو فی الحال دستیاب تمام ورچوئل فنکشنز کو نافذ کرتی ہیں۔ اس کے لیے Nanonyam ورچوئل مشین اور لائبریریاں ڈاؤن لوڈ کریں۔
Nanonyam گھریلو اور تجارتی استعمال کے لیے مفت ہے۔ Nanonyam پروگرام "جیسے ہے" کی بنیاد پر فراہم کیا جاتا ہے۔ سورس کوڈ فراہم نہیں کیا گیا ہے۔
پروگرام فی الحال آزمائشی مرحلے میں ہے۔ تقریباً 200 ورچوئل فنکشنز لاگو کیے گئے جو آپ کو ونڈوز کے لیے آسان پروگرام بنانے کی اجازت دیتے ہیں۔
ظاہر ہے، ایسی ورچوئل مشین میں کچھ پیچیدہ بنانا کام نہیں کرے گا، کیونکہ کوڈ کی میموری صرف 256 kB ہے۔ ڈیٹا کو علیحدہ فائلوں میں محفوظ کیا جا سکتا ہے، گرافک حصے کے لیے بفر بیرونی طور پر لاگو کیا جاتا ہے۔ تمام فنکشنز کو 8 بٹ فن تعمیر کے لیے آسان اور موافق بنایا گیا ہے۔
آپ نانونیم میں کیا کر سکتے ہیں؟ میں کچھ مسائل لے کر آیا ہوں۔
پروگرام بلاکس کی ترقی
مجھے ایک بار 128x64 ڈاٹ گرافک ڈسپلے کے لیے ایک پیچیدہ مینو ڈیزائن کرنے کی ضرورت تھی۔ میں واقعی میں یہ نہیں چاہتا تھا کہ فرم ویئر کو حقیقی مائیکرو کنٹرولر میں لوڈ کرنا یہ دیکھنے کے لیے کہ پکسلز کیسے نظر آتے ہیں۔ اور اسی طرح نانونم کا خیال پیدا ہوا۔ نیچے دی گئی تصویر ایک ہی مینو پر موجود آئٹمز میں سے ایک کے اصلی OLED ڈسپلے سے ایک تصویر دکھاتی ہے۔ اب میں کسی حقیقی ڈیوائس کے بغیر اس کے ذریعے کام کر سکتا ہوں۔
نانونیام (اپنے حتمی خیال میں) مائیکرو کنٹرولرز کے لیے پروگرام بلاکس پر کام کرنے کے لیے ایک اچھا ٹول ہے، کیونکہ گرافکس کے ساتھ کام کرنے کے فنکشنز موجود ہیں (آپ ڈسپلے اور انڈیکیٹرز کی تقلید کر سکتے ہیں)، فائلوں کے ساتھ (آپ لاگ بنا سکتے ہیں، ٹیسٹ ڈیٹا پڑھ سکتے ہیں)۔ ایک کی بورڈ (آپ بیک وقت 10 بٹن تک پڑھ سکتے ہیں)، COM پورٹس کے ساتھ (یہاں ایک الگ آئٹم ہے)۔
فوری پروگرام بنانا
مثال کے طور پر، آپ کو 100500 ٹیکسٹ فائلوں پر تیزی سے کارروائی کرنے کی ضرورت ہے۔ ہر ایک کو کھولنے کی ضرورت ہے، کچھ آسان الگورتھم کے مطابق تھوڑا سا تبدیل کیا جائے، محفوظ کیا جائے اور بند کیا جائے۔ اگر آپ ازگر کے ماسٹر ہیں، تو میں آپ کو مبارکباد پیش کرتا ہوں، آپ کے پاس سب کچھ ہے۔ لیکن اگر آپ ایک سخت arduino ہیں (اور ان میں سے بہت سے ہیں)، تو Nanonyam اس مسئلے کو حل کرنے میں آپ کی مدد کرے گا۔ نانونم میں یہ میرا دوسرا مقصد ہے: بہت سے مفید فنکشنز جیسے ٹیکسٹ پروسیسنگ، اسکرین شاٹس لینا یا سسٹم میں کی اسٹروکس کی نقل کرنا (یہ سب، ویسے، پہلے سے موجود ہیں)، نیز معمول کے کاموں کو حل کرنے کے لیے بہت سے دوسرے فنکشنز شامل کرنا۔ .
COM پورٹ کے ذریعے ہارڈ ویئر کی جانچ
Nanonyam ایک ٹرمینل کے طور پر کام کر سکتا ہے جو آپ کے الگورتھم کے مطابق کام کرتا ہے۔ آپ ڈیوائس کو کنٹرول کرنے اور پورٹ سے موصول ہونے والے ڈیٹا کو ڈسپلے کرنے کے لیے ایک چھوٹا مینو بنا سکتے ہیں۔ آپ تجزیہ کے لیے فائلوں سے ڈیٹا محفوظ اور پڑھ سکتے ہیں۔ سادہ ڈیبگنگ اور ہارڈ ویئر کی انشانکن کے ساتھ ساتھ سادہ ورچوئل انسٹرومنٹ کنٹرول پینلز بنانے کے لیے ایک آسان ٹول۔ طلباء اور نوجوان سائنسدانوں کے لیے یہ منصوبہ بہت مفید ثابت ہو سکتا ہے۔
پروگرامنگ کی تربیت
تاہم، پورے Arduino پروجیکٹ کی طرح، Nanonyam کی بنیادی افادیت فنکشنز، انٹرفیس اور بوٹ لوڈر کو آسان بنانے میں مضمر ہے۔ لہذا، یہ منصوبہ نوسکھئیے پروگرامرز اور arduino کی سطح سے مطمئن افراد کے لیے دلچسپی کا حامل ہونا چاہیے۔ ویسے، میں نے خود ابھی تک arduino کا تفصیل سے مطالعہ نہیں کیا ہے، کیونکہ میں نے ہمیشہ WinAVR یا AVR سٹوڈیو کا استعمال کیا، لیکن اسمبلر سے شروعات کی۔ لہذا، ذیل میں مثال کے طور پر پروگرام تھوڑا غلط ہو گا، لیکن کافی کام کر رہا ہے.
ہیلو حبر!
یہ کچھ Nanonyam خصوصیات سے واقف ہونے اور ایک سادہ پروگرام لکھنے کا وقت ہے. ہم Arduino میں لکھیں گے، لیکن عام طریقے سے نہیں، لیکن جس طرح سے میں اب کر سکتا ہوں (میں پہلے ہی کہہ چکا ہوں کہ میں نے ابھی تک اس ماحول کو اچھی طرح سے نہیں سمجھا ہے)۔ سب سے پہلے، ایک نیا خاکہ بنائیں اور 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"
ایک خصوصی ماڈیول "Nanonyam for Arduino" بنانا اور بھی زیادہ درست ہوگا، جسے 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);//Задержка и разгрузка процессора
}
اس پروگرام کے ساتھ خاکہ بنائیں
ہم "چیک" بٹن دبائیں اور کوئی غلطی نہیں ہونی چاہیے۔
اب آپ کو بائنری فائل (فرم ویئر) حاصل کرنے کی ضرورت ہے۔ مینو کو منتخب کریں "خاکہ>>بائنری فائل برآمد کریں (CTRL+ALT+S)".
یہ خاکہ فولڈر میں دو HEX فائلوں کو کاپی کرے گا۔ ہم "with_bootloader.mega" کے سابقہ کے بغیر صرف فائل لیتے ہیں۔
Nanonyam ورچوئل مشین میں HEX فائل کی وضاحت کرنے کے کئی طریقے ہیں، ان سب کو بیان کیا گیا ہے۔
اسی طرح، آپ دوسرے ماحول میں پروگرام بنا سکتے ہیں، جیسے کہ AVR Studio یا WinAVR۔
یہ وہ جگہ ہے جہاں ہم نانوونیم سے اپنی واقفیت ختم کرتے ہیں۔ مرکزی خیال واضح ہونا چاہئے۔
آپ کی توجہ اور اچھی پروگرامنگ کے لیے آپ سب کا شکریہ!
ماخذ: www.habr.com