Bagaimana untuk mencipta program untuk Windows dalam Arduino

Bagaimana untuk mencipta program untuk Windows dalam Arduino

Suatu hari saya mempunyai idea gila untuk dibawa 500 penunjuk laser di satu tempat. Saya menghabiskan banyak masa dan melakukannya. Ia ternyata hebat dan tidak berguna, tetapi saya menyukainya. Enam bulan lalu saya mempunyai satu lagi idea gila. Kali ini, sama sekali tidak hebat, tetapi lebih berguna. Saya juga menghabiskan banyak masa untuknya. Dan dalam artikel ini, saya membentangkan versi beta idea gila kedua saya.

Saya memanggil projek Nanonyam (Nanonyam) dan juga menghasilkan logo untuknya (saya melukis selama 5 minit).

Bagaimana untuk mencipta program untuk Windows dalam Arduino

Bagi mereka yang berfikir dari segi Arduino, kita boleh mengatakan bahawa Nanonyam adalah perisai Arduino maya untuk mengawal Windows.

Dalam erti kata lain, Nanonyam ialah mesin maya yang menggunakan perisian tegar untuk mikropengawal AVR (ATMEGA2560 disyorkan) sebagai kod bait. Di dalam mesin maya ini terdapat simulator teras AVR, tetapi bukannya persisian, yang terletak di alamat SRAM dari 0x0060 hingga 0x01FF, terdapat antara muka khas untuk fungsi maya (termasuk fungsi API Windows). Dan di sini adalah sangat penting untuk difahami dengan segera: kod untuk Nanonyam tidak sepatutnya mempunyai sebarang akses kepada julat memori yang ditentukan, supaya tidak memanggil secara tidak sengaja, sebagai contoh, fungsi memadam fail atau memformat cakera. Selebihnya julat memori SRAM dari 0x0200 hingga 0xFFFF (ini lebih banyak daripada dalam mikropengawal sebenar) tersedia kepada pengguna untuk sebarang tujuan. Saya segera perhatikan bahawa terdapat perlindungan khas terhadap pelancaran tidak sengaja perisian tegar mikropengawal sebenar (atau perisian tegar dari seni bina lain): sebelum mengaktifkan fungsi "berbahaya", anda perlu memanggil fungsi maya rumit khas. Terdapat beberapa ciri keselamatan lain juga.

Untuk mencipta program untuk Nanonyam, anda perlu menggunakan perpustakaan khas yang melaksanakan semua fungsi maya yang tersedia pada masa ini. Muat turun mesin maya Nanonyam dan perpustakaan untuknya boleh berada di sini. Tetapi halaman penerangan fungsi maya. Dan ya, tapak saya sangat primitif dan tidak disesuaikan untuk peranti mudah alih.

Nanonyam adalah percuma untuk kegunaan rumah dan komersial. Program Nanonyam disediakan atas dasar "seadanya". Kod sumber tidak disediakan.

Program ini kini dalam fasa ujian. Melaksanakan kira-kira 200 fungsi maya yang membolehkan anda mencipta program mudah untuk Windows.
Jelas sekali, mencipta sesuatu yang rumit dalam mesin maya sedemikian tidak akan berfungsi, kerana memori untuk kod itu hanya 256 kB. Data boleh disimpan dalam fail berasingan, penimbal untuk bahagian grafik dilaksanakan secara luaran. Semua fungsi dipermudahkan dan disesuaikan untuk seni bina 8-bit.

Apa yang boleh anda lakukan di Nanonyam? Saya datang dengan beberapa masalah.

Pembangunan blok program

Saya pernah perlu mereka bentuk menu yang kompleks untuk paparan grafik 128x64 titik. Saya benar-benar tidak mahu sentiasa memuatkan perisian tegar ke dalam mikropengawal sebenar untuk melihat bagaimana piksel kelihatan. Maka lahirlah idea Nanoyam. Rajah di bawah menunjukkan imej daripada paparan OLED sebenar bagi salah satu item pada menu yang sama. Sekarang saya boleh mengatasinya tanpa peranti sebenar.

Bagaimana untuk mencipta program untuk Windows dalam Arduino

Nanonyam (dalam idea terakhirnya) ialah alat yang baik untuk menyusun blok program untuk mikropengawal, kerana terdapat fungsi untuk bekerja dengan grafik (anda boleh mensimulasikan paparan dan penunjuk), dengan fail (anda boleh membuat log, membaca data ujian), dengan papan kekunci (anda boleh membaca sehingga 10 butang pada masa yang sama), dengan port COM (di sini adalah item yang berasingan).

Mencipta Program Pantas

Sebagai contoh, anda perlu memproses 100500 fail teks dengan cepat. Setiap satu perlu dibuka, diubah suai sedikit mengikut beberapa algoritma mudah, disimpan dan ditutup. Jika anda seorang pakar Python, maka saya mengucapkan tahniah kepada anda, anda mempunyai segala-galanya. Tetapi jika anda adalah arduino yang keras (dan terdapat banyak daripada mereka), maka Nanonyam akan membantu anda dalam menyelesaikan masalah ini. Ini adalah matlamat kedua saya di Nanonyam: untuk menambah banyak fungsi berguna seperti pemprosesan teks, mengambil tangkapan skrin atau mensimulasikan ketukan kekunci dalam sistem (semuanya, dengan cara itu, sudah ada), serta banyak fungsi lain untuk menyelesaikan tugas rutin .

Menguji perkakasan melalui port COM

Nanonyam boleh bertindak sebagai terminal yang berfungsi mengikut algoritma anda. Anda boleh melukis menu kecil untuk mengawal peranti dan memaparkan data yang diterima daripada port. Anda boleh menyimpan dan membaca data daripada fail untuk analisis. Alat yang berguna untuk penyahpepijatan mudah dan penentukuran perkakasan, serta untuk mencipta panel kawalan instrumen maya ringkas. Bagi pelajar dan saintis muda, projek ini boleh menjadi sangat berguna.

Latihan pengaturcaraan

Walau bagaimanapun, seperti keseluruhan projek Arduino, kegunaan utama Nanonyam terletak pada pemudahan fungsi, antara muka dan pemuat but. Oleh itu, projek ini harus menarik minat pengaturcara baru dan mereka yang berpuas hati dengan tahap arduino. By the way, saya sendiri masih belum mempelajari arduino secara terperinci, kerana saya selalu menggunakan WinAVR atau AVR Studio, tetapi bermula dengan assembler. Oleh itu, program contoh di bawah akan menjadi sedikit salah, tetapi agak berfungsi.

Hello Habr!

Sudah tiba masanya untuk membiasakan diri dengan beberapa ciri Nanonyam dan menulis program mudah. Kami akan menulis dalam Arduino, tetapi tidak dengan cara biasa, tetapi dengan cara yang saya boleh sekarang (saya sudah mengatakan bahawa saya belum mengetahui persekitaran ini dengan baik lagi). Mula-mula, buat lakaran baharu dan pilih papan Mega2560.

Bagaimana untuk mencipta program untuk Windows dalam Arduino

Simpan lakaran ke fail dan salin seterusnya Perpustakaan Nanonyam. Adalah betul untuk memasukkan pengepala perpustakaan, tetapi saya tidak tahu cara menulis kompilasi fail individu dalam Arduino, jadi buat masa ini kami hanya akan memasukkan perpustakaan secara langsung (dan sekaligus):

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

Adalah lebih tepat untuk membuat modul khas "Nanonyam untuk Arduino", yang boleh dipasang terus dari Arduino. Sebaik sahaja saya memikirkannya, saya akan melakukannya, tetapi buat masa ini saya hanya menunjukkan intipati bekerja dengan mesin maya. Kami menulis kod berikut:

//Π‘Ρ€Π°Π·Ρƒ послС запуска рисуСм тСкст Π² ΠΎΠΊΠ½Π΅
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);//Π—Π°Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΈ Ρ€Π°Π·Π³Ρ€ΡƒΠ·ΠΊΠ° процСссора
}

Lakarkan dengan program ini boleh dimuat turun di sini. Penerangan terperinci tentang fungsi carian di tapak. Saya harap komen dalam kod ini cukup untuk mendapatkan intipatinya. Di sini berfungsi sys_Nanonyam() memainkan peranan sebagai "kata laluan" untuk mesin maya, yang mengalih keluar sekatan pada fungsi maya. Tanpa fungsi ini, program akan ditutup selepas 3 saat beroperasi.

Kami menekan butang "Semak" dan tidak sepatutnya terdapat sebarang ralat.

Bagaimana untuk mencipta program untuk Windows dalam Arduino

Kini anda perlu mendapatkan fail binari (perisian tegar). Pilih menu "Lakaran>>Eksport fail binari (CTRL+ALT+S)".

Bagaimana untuk mencipta program untuk Windows dalam Arduino

Ini akan menyalin dua fail HEX ke folder lakaran. Kami hanya mengambil fail tanpa awalan "with_bootloader.mega".

Terdapat beberapa cara untuk menentukan fail HEX ke mesin maya Nanonyam, kesemuanya diterangkan pada halaman ini. Saya cadangkan untuk membuat di sebelah fail Nanonyam.exe fail laluan, untuk mendaftarkan laluan penuh ke fail HEX kami. Selepas itu anda boleh berlari Nanonyam.exe. Kami mendapat tingkap dengan tulisan kami.

Bagaimana untuk mencipta program untuk Windows dalam Arduino

Begitu juga, anda boleh mencipta program dalam persekitaran lain, seperti AVR Studio atau WinAVR.

Di sinilah kami menamatkan perkenalan kami dengan Nanonyam. Idea utama harus jelas. Lebih banyak contoh ada di laman web.. Sekiranya terdapat cukup orang yang bersedia menggunakan projek ini, maka saya akan membuat lebih banyak contoh dan terus "mengisi" perpustakaan fungsi maya. Idea konkrit untuk pembangunan projek dan laporan kerosakan, pepijat dan pepijat diterima. Adalah dinasihatkan untuk mengarahkan mereka kepada kenalan, ditunjukkan di laman web. Dan perbincangan dialu-alukan dalam komen.

Terima kasih semua atas perhatian anda dan pengaturcaraan yang baik!

Sumber: www.habr.com

Tambah komen