Arduino'da Windows için programlar nasıl oluşturulur?

Arduino'da Windows için programlar nasıl oluşturulur?

Bir gün getirmek için çılgın bir fikrim vardı Tek bir yerde 500 lazer işaretçi. Çok zaman harcadım ve yaptım. Muhteşem ve işe yaramaz çıktı, ama hoşuma gitti. Altı ay önce başka bir çılgınca fikrim vardı. Bu sefer hiç de muhteşem değil ama çok daha kullanışlı. Ayrıca üzerinde çok zaman harcadım. Ve bu yazıda ikinci çılgın fikrimin beta versiyonunu sunuyorum.

Projeye Nanonyam (Nanonyam) adını verdim ve hatta bunun için bir logo bile buldum (5 dakika çizdim).

Arduino'da Windows için programlar nasıl oluşturulur?

Arduino açısından düşünenler için Nanonyam'ın Windows'u kontrol etmek için sanal bir Arduino kalkanı olduğunu söyleyebiliriz.

Diğer bir deyişle Nanonyam, bayt kodu olarak AVR mikrodenetleyicisi (ATMEGA2560 önerilir) için üretici yazılımı kullanan bir sanal makinedir. Bu sanal makinenin içinde bir AVR çekirdek simülatörü bulunur, ancak 0x0060 ila 0x01FF arasındaki SRAM adreslerinde bulunan çevre birimleri yerine, sanal işlevler (Windows API işlevleri dahil) için özel bir arabirim vardır. Ve burada hemen anlamak çok önemlidir: Nanonyam kodunun, örneğin dosyaları silme veya bir diski biçimlendirme işlevini yanlışlıkla çağırmamak için belirtilen bellek aralığına herhangi bir erişimi olmamalıdır. 0x0200 ile 0xFFFF arasındaki SRAM bellek aralığının geri kalanı (bu, gerçek bir mikrodenetleyiciden daha fazladır), herhangi bir amaç için kullanıcı tarafından kullanılabilir. Gerçek bir mikrodenetleyicinin (veya başka bir mimariden ürün yazılımının) yanlışlıkla başlatılmasına karşı özel bir koruma olduğunu hemen not ediyorum: "tehlikeli" işlevleri etkinleştirmeden önce, özel bir zor sanal işlevi çağırmanız gerekir. Diğer bazı güvenlik özellikleri de vardır.

Nanonyam için programlar oluşturmak için, mevcut tüm sanal işlevleri uygulayan özel kitaplıklar kullanmanız gerekir. Bunun için Nanonyam sanal makinesini ve kitaplıklarını indirin burada olabilir. Fakat sanal işlev açıklama sayfası. Ve evet, sitem çok ilkel ve mobil cihazlara uygun değil.

Nanonyam ev ve ticari kullanım için ücretsizdir. Nanonyam programı "olduğu gibi" sağlanır. Kaynak kodu sağlanmaz.

Program şu anda test aşamasındadır. Windows için basit programlar oluşturmanıza izin veren yaklaşık 200 sanal işlev uygulandı.
Açıkçası, böyle bir sanal makinede karmaşık bir şey oluşturmak işe yaramayacaktır çünkü kod belleği yalnızca 256 kB'dir. Veriler ayrı dosyalarda saklanabilir, grafik kısmı için arabellek harici olarak uygulanır. Tüm işlevler basitleştirildi ve 8 bit mimariye uyarlandı.

Nanonyam'da ne yapabilirsiniz? Birkaç problem buldum.

Program bloklarının geliştirilmesi

Bir keresinde 128x64 noktalı bir grafik ekran için karmaşık bir menü tasarlamam gerekiyordu. Piksellerin nasıl göründüğünü görmek için ürün yazılımını sürekli olarak gerçek bir mikro denetleyiciye yüklemek istemedim. Ve böylece Nanonyam fikri doğdu. Aşağıdaki şekil, aynı menüdeki öğelerden birinin gerçek OLED ekranından bir görüntüsünü göstermektedir. Artık gerçek bir cihaz olmadan üzerinde çalışabilirim.

Arduino'da Windows için programlar nasıl oluşturulur?

Nanonyam (nihai fikrinde), mikrodenetleyiciler için program blokları üzerinde çalışmak için iyi bir araçtır, çünkü grafiklerle (ekranları ve göstergeleri simüle edebilirsiniz), dosyalarla (günlükler oluşturabilir, test verilerini okuyabilirsiniz), COM bağlantı noktalarına sahip bir klavye (aynı anda 10 düğmeyi okuyabilirsiniz) (burada ayrı bir öğe).

Hızlı Programlar Oluşturma

Örneğin, 100500 metin dosyasını hızlı bir şekilde işlemeniz gerekiyor. Her birinin açılması, basit bir algoritmaya göre biraz değiştirilmesi, kaydedilmesi ve kapatılması gerekiyor. Python ustasıysanız sizi tebrik ederim, her şeye sahipsiniz. Ancak, sertleştirilmiş bir arduinoysanız (ve birçoğu varsa), Nanonyam bu sorunu çözmenize yardımcı olacaktır. Bu, Nanonyam'daki ikinci hedefim: metin işleme, ekran görüntüsü alma veya sistemde tuş vuruşlarını simüle etme (bu arada, hepsi zaten orada) gibi birçok yararlı işlevin yanı sıra rutin görevleri çözmek için diğer birçok işlevi eklemek. .

Donanımı COM bağlantı noktası üzerinden test etme

Nanonyam, algoritmanıza göre çalışan bir terminal görevi görebilir. Cihazı kontrol etmek ve porttan alınan verileri görüntülemek için küçük bir menü çizebilirsiniz. Analiz için dosyalardan veri kaydedebilir ve okuyabilirsiniz. Donanımda basit hata ayıklama ve kalibrasyonun yanı sıra basit sanal enstrüman kontrol panelleri oluşturmak için kullanışlı bir araç. Öğrenciler ve genç bilim insanları için bu proje çok faydalı olabilir.

programlama eğitimi

Bununla birlikte, tüm Arduino projesinde olduğu gibi, Nanonyam'ın ana faydası, işlevlerin, arayüzün ve önyükleyicinin basitleştirilmesinde yatmaktadır. Bu nedenle, bu proje acemi programcılar ve arduino seviyesinden memnun olanlar için ilgi çekici olmalıdır. Bu arada, arduino'yu hala ayrıntılı olarak çalışmadım çünkü her zaman WinAVR veya AVR Studio kullandım, ancak montajcı ile başladım. Bu nedenle, aşağıdaki örnek program biraz yanlış olacak, ancak oldukça çalışıyor.

Merhaba Habr!

Bazı Nanonyam özelliklerini tanımanın ve basit bir program yazmanın zamanı geldi. Arduino'da yazacağız ama her zamanki gibi değil ama şimdi yapabildiğim şekilde (bu ortamı henüz çok iyi çözemediğimi zaten söyledim). İlk olarak, yeni bir çizim oluşturun ve Mega2560 kartını seçin.

Arduino'da Windows için programlar nasıl oluşturulur?

Çizimi bir dosyaya kaydedin ve ardından kopyalayın Nanonyam kitaplığı. Kitaplıkların başlıklarını dahil etmek doğru olur, ancak Arduino'da tek tek dosyaların derlemesini nasıl yazacağımı bilmiyorum, bu yüzden şimdilik kitaplıkları doğrudan (ve hepsini birden) ekleyeceğiz:

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

Doğrudan Arduino'dan kurulabilen özel bir “Arduino için Nanonyam” modülü yapmak daha da doğru olacaktır. Çözer çözmez yapacağım ama şimdilik sadece sanal bir makine ile çalışmanın özünü gösteriyorum. Aşağıdaki kodu yazıyoruz:

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

Bu program ile eskiz buradan indirilebilir. İşlevlerin ayrıntılı açıklaması sitede ara. Umarım bu koddaki yorumlar, bunun özünü anlamak için yeterlidir. Burada fonksiyon sys_Nanonyam() sanal makine için sanal işlevler üzerindeki kısıtlamaları kaldıran bir "şifre" rolünü oynar. Bu işlev olmadan, program 3 saniye çalıştıktan sonra kapanacaktır.

"Kontrol Et" düğmesine basıyoruz ve herhangi bir hata olmamalıdır.

Arduino'da Windows için programlar nasıl oluşturulur?

Şimdi bir ikili dosya (ürün yazılımı) edinmeniz gerekiyor. menüyü seçin "Sketch>>İkili dosyayı dışa aktar (CTRL+ALT+S)".

Arduino'da Windows için programlar nasıl oluşturulur?

Bu, iki HEX dosyasını çizim klasörüne kopyalayacaktır. Yalnızca "with_bootloader.mega" öneki olmayan dosyayı alıyoruz.

Nanonyam sanal makinesine bir HEX dosyası belirtmenin birkaç yolu vardır, bunların tümü açıklanmıştır. Bu sayfada. Dosyanın yanında oluşturmanızı öneririm nanonyam.exe dosya yol, HEX dosyamızın tam yolunu kaydetmek için. Bundan sonra koşabilirsin nanonyam.exe. Yazıtımızın olduğu bir pencere alıyoruz.

Arduino'da Windows için programlar nasıl oluşturulur?

Benzer şekilde, AVR Studio veya WinAVR gibi diğer ortamlarda da programlar oluşturabilirsiniz.

Nanonyam ile tanışıklığımızı burada bitiriyoruz. Ana fikir açık olmalıdır. Web sitesinde daha fazla örnek var.. Bu projeyi kullanmak isteyen yeterince insan varsa, o zaman daha fazla örnek yapacağım ve sanal işlev kitaplıklarını "doldurmaya" devam edeceğim. Projenin geliştirilmesi için somut fikirler ve arıza, bug ve bug raporları kabul edilir. Onları kişilere yönlendirmeniz önerilir, web sitesinde belirtilen. Ve yorumlarda tartışma kabul edilir.

İlginiz ve iyi programlamanız için hepinize teşekkür ederim!

Kaynak: habr.com

Yorum ekle