วิธีสร้างโปรแกรมสำหรับ Windows ใน Arduino

วิธีสร้างโปรแกรมสำหรับ Windows ใน Arduino

วันหนึ่งฉันมีความคิดบ้าๆที่จะนำ ตัวชี้เลเซอร์ 500 ตัวในที่เดียว. ฉันใช้เวลามากและทำมัน มันกลายเป็นเรื่องที่น่าตื่นเต้นและไร้ประโยชน์ แต่ฉันชอบมัน หกเดือนก่อน ฉันมีความคิดบ้าๆ คราวนี้ไม่น่าตื่นเต้นเลย แต่มีประโยชน์มากกว่า ฉันยังใช้เวลากับมันมาก และในบทความนี้ ผมขอนำเสนอไอเดียบ้าๆ ที่สองของผมรุ่นเบต้า

ฉันตั้งชื่อโปรเจ็กต์นี้ว่า Nanonyam (นานนยัม) และยังคิดโลโก้ให้อีกด้วย (ฉันวาดอยู่ 5 นาที)

วิธีสร้างโปรแกรมสำหรับ Windows ใน Arduino

สำหรับผู้ที่คิดในแง่ของ Arduino เราสามารถพูดได้ว่า Nanonyam เป็นโล่ Arduino เสมือนสำหรับควบคุม Windows

กล่าวอีกนัยหนึ่ง Nanonyam เป็นเครื่องเสมือนที่ใช้เฟิร์มแวร์สำหรับไมโครคอนโทรลเลอร์ AVR (แนะนำให้ใช้ ATMEGA2560) เป็นรหัสไบต์ ภายในเครื่องเสมือนนี้เป็นเครื่องจำลองหลัก AVR แต่แทนที่จะเป็นอุปกรณ์ต่อพ่วงซึ่งอยู่ที่ที่อยู่ SRAM ตั้งแต่ 0x0060 ถึง 0x01FF มีอินเทอร์เฟซพิเศษสำหรับฟังก์ชันเสมือน (รวมถึงฟังก์ชัน Windows API) และนี่เป็นสิ่งสำคัญมากที่จะต้องเข้าใจทันที: รหัสสำหรับ Nanonyam ไม่ควรเข้าถึงช่วงหน่วยความจำที่ระบุเพื่อไม่ให้เรียกใช้ฟังก์ชันลบไฟล์หรือฟอร์แมตดิสก์โดยไม่ตั้งใจ ช่วงหน่วยความจำ SRAM ที่เหลือตั้งแต่ 0x0200 ถึง 0xFFFF (ซึ่งมากกว่าในไมโครคอนโทรลเลอร์จริง) มีให้สำหรับผู้ใช้ในทุกวัตถุประสงค์ ฉันทราบทันทีว่ามีการป้องกันพิเศษจากการเปิดตัวเฟิร์มแวร์ของไมโครคอนโทรลเลอร์จริงโดยไม่ได้ตั้งใจ (หรือเฟิร์มแวร์จากสถาปัตยกรรมอื่น): ก่อนเปิดใช้งานฟังก์ชัน "อันตราย" คุณต้องเรียกฟังก์ชันเสมือนพิเศษที่ยุ่งยาก มีคุณสมบัติความปลอดภัยอื่น ๆ เช่นกัน

ในการสร้างโปรแกรมสำหรับ Nanonyam คุณต้องใช้ไลบรารีพิเศษที่ใช้ฟังก์ชันเสมือนที่มีอยู่ทั้งหมดในปัจจุบัน ดาวน์โหลดเครื่องเสมือนและไลบรารีของ Nanonyam ได้ที่นี่. และที่นี่ หน้าคำอธิบายฟังก์ชันเสมือน. และใช่ ไซต์ของฉันเป็นแบบดั้งเดิมมากและไม่ได้รับการดัดแปลงให้เหมาะกับอุปกรณ์เคลื่อนที่

Nanonyam ฟรีสำหรับใช้ในบ้านและในเชิงพาณิชย์ โปรแกรม Nanonyam ให้บริการตามสภาพที่เป็นอยู่ ไม่มีซอร์สโค้ด

ขณะนี้โปรแกรมอยู่ในขั้นตอนการทดสอบ ใช้ฟังก์ชันเสมือนประมาณ 200 ฟังก์ชันที่ช่วยให้คุณสร้างโปรแกรมอย่างง่ายสำหรับ Windows
เห็นได้ชัดว่าการสร้างบางสิ่งที่ซับซ้อนในเครื่องเสมือนจะไม่ทำงานเนื่องจากหน่วยความจำสำหรับรหัสมีเพียง 256 kB ข้อมูลสามารถจัดเก็บในไฟล์แยกกัน บัฟเฟอร์สำหรับส่วนกราฟิกจะถูกนำไปใช้ภายนอก ฟังก์ชันทั้งหมดได้รับการปรับให้เรียบง่ายและเหมาะสำหรับสถาปัตยกรรม 8 บิต

คุณสามารถทำอะไรใน Nanonyam? ฉันพบปัญหาเล็กน้อย

การพัฒนาบล็อกโปรแกรม

ครั้งหนึ่งฉันต้องออกแบบเมนูที่ซับซ้อนสำหรับการแสดงผลกราฟิกขนาด 128x64 จุด ฉันไม่ต้องการโหลดเฟิร์มแวร์ลงในไมโครคอนโทรลเลอร์จริง ๆ ตลอดเวลาเพื่อดูว่าพิกเซลมีลักษณะอย่างไร ดังนั้นความคิดของ Nanonyam จึงเกิดขึ้น ภาพด้านล่างแสดงภาพจากหน้าจอ OLED จริงของรายการใดรายการหนึ่งบนเมนูเดียวกัน ตอนนี้ฉันสามารถทำงานได้โดยไม่ต้องใช้อุปกรณ์จริง

วิธีสร้างโปรแกรมสำหรับ Windows ใน Arduino

Nanonyam (ในแนวคิดสุดท้าย) เป็นเครื่องมือที่ดีสำหรับการทำงานบล็อกโปรแกรมสำหรับไมโครคอนโทรลเลอร์ เนื่องจากมีฟังก์ชันสำหรับการทำงานกับกราฟิก (คุณสามารถจำลองการแสดงผลและตัวบ่งชี้) พร้อมไฟล์ (คุณสามารถสร้างบันทึก อ่านข้อมูลการทดสอบ) ด้วย แป้นพิมพ์ (คุณสามารถอ่านปุ่มได้สูงสุด 10 ปุ่มพร้อมกัน) พร้อมพอร์ต COM (นี่คือรายการแยกต่างหาก)

การสร้างโปรแกรมด่วน

ตัวอย่างเช่น คุณต้องประมวลผลไฟล์ข้อความ 100500 ไฟล์อย่างรวดเร็ว แต่ละรายการจำเป็นต้องเปิด แก้ไขเล็กน้อยตามอัลกอริทึมง่ายๆ บันทึกและปิด หากคุณเป็นผู้เชี่ยวชาญ Python ฉันขอแสดงความยินดีกับคุณ คุณมีทุกอย่างแล้ว แต่ถ้าคุณเป็น arduino ที่แข็งกระด้าง (และมีจำนวนมาก) Nanonyam จะช่วยคุณในการแก้ปัญหานี้ นี่คือเป้าหมายที่สองของฉันใน Nanonyam: เพื่อเพิ่มฟังก์ชันที่มีประโยชน์มากมาย เช่น การประมวลผลข้อความ การจับภาพหน้าจอ หรือการจำลองการกดแป้นพิมพ์ในระบบ (ซึ่งทั้งหมดนี้มีอยู่แล้ว) รวมถึงฟังก์ชันอื่นๆ อีกมากมายสำหรับการแก้ปัญหางานประจำ .

การทดสอบฮาร์ดแวร์ผ่านพอร์ต COM

Nanonyam สามารถทำหน้าที่เป็นเทอร์มินัลที่ทำงานตามอัลกอริทึมของคุณ คุณสามารถวาดเมนูขนาดเล็กเพื่อควบคุมอุปกรณ์และแสดงข้อมูลที่ได้รับจากพอร์ต คุณสามารถบันทึกและอ่านข้อมูลจากไฟล์เพื่อการวิเคราะห์ เครื่องมือที่มีประโยชน์สำหรับการดีบั๊กและการสอบเทียบฮาร์ดแวร์อย่างง่าย รวมถึงการสร้างแผงควบคุมเครื่องมือเสมือนอย่างง่าย สำหรับนักเรียนและนักวิทยาศาสตร์รุ่นใหม่ โครงการนี้มีประโยชน์มาก

อบรมการเขียนโปรแกรม

อย่างไรก็ตาม เช่นเดียวกับโครงการ Arduino ทั้งหมด ประโยชน์หลักของ Nanonyam อยู่ที่การทำให้ฟังก์ชัน อินเทอร์เฟซ และ bootloader ง่ายขึ้น ดังนั้นโครงการนี้ควรเป็นที่สนใจของโปรแกรมเมอร์มือใหม่และผู้ที่พอใจกับระดับของ arduino อย่างไรก็ตาม ตัวฉันเองก็ยังไม่ได้ศึกษา arduino โดยละเอียด เพราะฉันใช้ WinAVR หรือ AVR Studio มาตลอด แต่เริ่มต้นด้วยแอสเซมเบลอร์ ดังนั้นโปรแกรมตัวอย่างด้านล่างจะผิดพลาดเล็กน้อย แต่ค่อนข้างใช้งานได้

สวัสดีฮับ!

ได้เวลาทำความคุ้นเคยกับคุณลักษณะบางอย่างของ Nanonyam แล้วเขียนโปรแกรมอย่างง่าย เราจะเขียนใน Arduino แต่ไม่ใช่ในแบบปกติ แต่ตอนนี้ในแบบที่ฉันทำได้ (ฉันบอกแล้วว่าฉันยังเข้าใจสภาพแวดล้อมนี้ไม่ดีนัก) ขั้นแรก สร้างร่างใหม่และเลือกบอร์ด Mega2560

วิธีสร้างโปรแกรมสำหรับ Windows ใน Arduino

บันทึกภาพร่างลงในไฟล์และคัดลอกต่อไป ห้องสมุดนาโนยัม. การใส่ส่วนหัวของไลบรารีจะเป็นการถูกต้อง แต่ฉันไม่รู้วิธีเขียนการรวบรวมไฟล์แต่ละไฟล์ใน 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"

การสร้างโมดูลพิเศษ "Nanonyam สำหรับ 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);//Задержка и разгрузка процессора
}

ร่างด้วยโปรแกรมนี้ สามารถดาวน์โหลดได้ที่นี่. คำอธิบายโดยละเอียดของฟังก์ชัน ค้นหาบนเว็บไซต์. ฉันหวังว่าความคิดเห็นในรหัสนี้จะเพียงพอที่จะเข้าใจสาระสำคัญของมัน ที่นี่ฟังก์ชั่น sys_Nanonyam() มีบทบาทเป็น "รหัสผ่าน" สำหรับเครื่องเสมือน ซึ่งจะลบข้อจำกัดเกี่ยวกับฟังก์ชันเสมือน หากไม่มีฟังก์ชันนี้ โปรแกรมจะปิดหลังจากทำงานไป 3 วินาที

เรากดปุ่ม "ตรวจสอบ" และไม่ควรมีข้อผิดพลาดใด ๆ

วิธีสร้างโปรแกรมสำหรับ Windows ใน Arduino

ตอนนี้คุณต้องได้รับไฟล์ไบนารี (เฟิร์มแวร์) เลือกเมนู "Sketch>>ส่งออกไฟล์ไบนารี (CTRL+ALT+S)"

วิธีสร้างโปรแกรมสำหรับ Windows ใน Arduino

การดำเนินการนี้จะคัดลอกไฟล์ HEX สองไฟล์ไปยังโฟลเดอร์ร่าง เรารับเฉพาะไฟล์ที่ไม่มีคำนำหน้า "with_bootloader.mega"

มีหลายวิธีในการระบุไฟล์ HEX ไปยังเครื่องเสมือน Nanonyam ซึ่งอธิบายไว้ทั้งหมด ในหน้านี้. ฉันแนะนำให้สร้างถัดจากไฟล์ Nanonyam.exe ไฟล์ เส้นทางเพื่อลงทะเบียนพาธเต็มไปยังไฟล์ HEX ของเรา หลังจากนั้นคุณสามารถเรียกใช้ Nanonyam.exe. เราได้หน้าต่างพร้อมคำจารึกของเรา

วิธีสร้างโปรแกรมสำหรับ Windows ใน Arduino

ในทำนองเดียวกัน คุณสามารถสร้างโปรแกรมในสภาพแวดล้อมอื่นๆ เช่น AVR Studio หรือ WinAVR

นี่คือจุดที่เราทำความรู้จักกับ Nanonyam แนวคิดหลักควรชัดเจน ตัวอย่างเพิ่มเติมอยู่ในเว็บไซต์. หากมีคนจำนวนมากพอที่ต้องการใช้โปรเจ็กต์นี้ ฉันจะสร้างตัวอย่างเพิ่มเติมและ "เติม" ไลบรารีฟังก์ชันเสมือนต่อไป ยอมรับแนวคิดที่เป็นรูปธรรมสำหรับการพัฒนาโครงการและรายงานการทำงานผิดพลาด ข้อบกพร่อง และจุดบกพร่อง ขอแนะนำให้นำพวกเขาไปยังผู้ติดต่อ ระบุไว้บนเว็บไซต์. และยินดีต้อนรับการสนทนาในความคิดเห็น

ขอขอบคุณทุกท่านที่ให้ความสนใจและเขียนโปรแกรมที่ดี!

ที่มา: will.com

เพิ่มความคิดเห็น