{"id":39389,"date":"2019-10-31T22:31:46","date_gmt":"2019-10-31T19:31:46","guid":{"rendered":"https:\/\/prohoster.info\/blog\/kak-v-arduino-sozdavat-programmy-dlya-windows\/"},"modified":"2019-10-31T22:31:46","modified_gmt":"2019-10-31T19:31:46","slug":"kak-v-arduino-sozdavat-programmy-dlya-windows","status":"publish","type":"post","link":"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/kak-v-arduino-sozdavat-programmy-dlya-windows","title":{"rendered":"Jak w Arduino tworzy\u0107 programy dla Windows","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Jak w Arduino tworzy\u0107 programy dla Windows\" src=\"\/wp-content\/uploads\/2019\/10\/3cc15ea6c8304f594ed7d78dace45b8f.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPewnego razu wpad\u0142em na szalony pomys\u0142, aby po\u0142\u0105czy\u0107 <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/428513\/\">500 wska\u017anik\u00f3w laserowych w jedno miejsce<\/a><\/noindex>. Po\u015bwi\u0119ci\u0142em na to du\u017co czasu i to zrobi\u0142em. Wysz\u0142o spektakularnie i bezu\u017cytecznie, ale mi si\u0119 spodoba\u0142o. P\u00f3\u0142 roku temu wpad\u0142em na kolejny szalony pomys\u0142. Tym razem nie tak efektowny, ale o wiele bardziej u\u017cyteczny. R\u00f3wnie\u017c po\u015bwi\u0119ci\u0142em na niego du\u017co czasu. W tym artykule przedstawiam wersj\u0119 beta mojego drugiego szalonego pomys\u0142u.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nProjekt nazwa\u0142em Nanonyam i nawet stworzy\u0142em dla niego logo (rysowa\u0142em przez ca\u0142e 5 minut).<\/p>\n<p><img decoding=\"async\" alt=\"Jak w Arduino tworzy\u0107 programy dla Windows\" src=\"\/wp-content\/uploads\/2019\/10\/2c91fb239bbf26a83bda83f572f2ac98.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDla tych, kt\u00f3rzy my\u015bl\u0105 w kategoriach Arduino, mo\u017cna powiedzie\u0107, \u017ce Nanonyam to wirtualny shield Arduino do zarz\u0105dzania Windows.<\/p>\n<p>Innymi s\u0142owy, Nanonyam to wirtualna maszyna, w kt\u00f3rej jako kod bajtowy u\u017cywana jest firmware dla mikrokontrolera AVR (zaleca si\u0119 ATMEGA2560). Wewn\u0105trz tej wirtualnej maszyny znajduje si\u0119 symulator rdzenia AVR, ale zamiast urz\u0105dze\u0144 peryferyjnych, kt\u00f3re mieszcz\u0105 si\u0119 w adresach SRAM od 0x0060 do 0x01FF, znajduje si\u0119 specjalny interfejs do wirtualnych funkcji (w tym funkcji Windows API). I tutaj wa\u017cne jest, aby zrozumie\u0107: kod dla Nanonyam nie powinien mie\u0107 \u017cadnych odniesie\u0144 do podanego zakresu pami\u0119ci, aby przypadkiem nie wywo\u0142a\u0107, na przyk\u0142ad, funkcji usuwania plik\u00f3w lub formatowania dysku. Pozosta\u0142y zakres pami\u0119ci SRAM od 0x0200 do 0xFFFF (to wi\u0119cej ni\u017c w rzeczywistym mikrokontrolerze) jest dost\u0119pny dla u\u017cytkownika do dowolnych cel\u00f3w. Od razu podkre\u015blam, \u017ce istnieje specjalna ochrona przed przypadkowym uruchomieniem firmware rzeczywistego mikrokontrolera (lub firmware z innej architektury): zanim aktywujesz \u201eniebezpieczne\u201d funkcje, musisz wywo\u0142a\u0107 specjaln\u0105 sprytn\u0105 funkcj\u0119 wirtualn\u0105. Istnieje tak\u017ce kilka innych element\u00f3w ochrony.<\/p>\n<p>Aby tworzy\u0107 programy dla Nanonyam, nale\u017cy u\u017cywa\u0107 specjalnych bibliotek, w kt\u00f3rych zrealizowane s\u0105 wszystkie dost\u0119pne do tej pory wirtualne funkcje. Mo\u017cesz pobra\u0107 wirtualn\u0105 maszyn\u0119 Nanonyam i biblioteki do niej <noindex><a rel=\"nofollow\" href=\"http:\/\/nanoslavic.ru\/nanonyam\/downloads.html\">you can do it here<\/a><\/noindex>. A teraz <noindex><a rel=\"nofollow\" href=\"http:\/\/nanoslavic.ru\/nanonyam\/libraries.html\">strona opisu wirtualnych funkcji<\/a><\/noindex>. Tak, moja strona jest bardzo prymitywna i nie jest dostosowana do urz\u0105dze\u0144 mobilnych.<\/p>\n<p><b>Program Nanonyam jest bezp\u0142atny do u\u017cytku domowego i komercyjnego. Program Nanonyam jest udost\u0119pniany na zasadzie \u201ejak jest\u201d. Kod \u017ar\u00f3d\u0142owy nie jest udost\u0119pniany.<\/b><\/p>\n<p>Obecnie program jest w fazie testowania. Zrealizowano oko\u0142o 200 wirtualnych funkcji, kt\u00f3re umo\u017cliwiaj\u0105 tworzenie prostych program\u00f3w dla Windows.<br \/>\nOczywiste jest, \u017ce w takiej maszynie wirtualnej nie uda si\u0119 stworzy\u0107 nic skomplikowanego, poniewa\u017c pami\u0119\u0107 na kod wynosi zaledwie 256 kB. Dane mo\u017cna przechowywa\u0107 w oddzielnych plikach, bufor dla cz\u0119\u015bci graficznej jest realizowany zewn\u0119trznie. Wszystkie funkcje zosta\u0142y uproszczone i dostosowane do architektury 8-bitowej.<\/p>\n<p>Co mo\u017cna zrobi\u0107 w Nanonyam? Wymy\u015bli\u0142em kilka zada\u0144.<\/p>\n<h4>Praca nad blokami programowymi<\/h4>\n<p>\n\u041e\u0434\u043d\u0430\u0436\u0434\u044b \u043c\u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0441\u043b\u043e\u0436\u043d\u043e\u0435 \u043c\u0435\u043d\u044e \u0434\u043b\u044f \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0434\u0438\u0441\u043f\u043b\u0435\u044f 128&#215;64 \u0442\u043e\u0447\u043a\u0438. \u041e\u0447\u0435\u043d\u044c \u043d\u0435 \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0443 \u0432 \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0439 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c, \u043a\u0430\u043a \u0432\u044b\u0433\u043b\u044f\u0434\u044f\u0442 \u043f\u0438\u043a\u0441\u0435\u043b\u0438. \u0422\u0430\u043a \u0438 \u0440\u043e\u0434\u0438\u043b\u0430\u0441\u044c \u0438\u0434\u0435\u044f Nanonyam. \u041d\u0430 \u0440\u0438\u0441\u0443\u043d\u043a\u0435 \u043d\u0438\u0436\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0441 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0433\u043e OLED-\u0434\u0438\u0441\u043f\u043b\u0435\u044f \u043e\u0434\u043d\u043e\u0433\u043e \u0438\u0437 \u043f\u0443\u043d\u043a\u0442\u043e\u0432 \u0442\u043e\u0433\u043e \u0441\u0430\u043c\u043e\u0433\u043e \u043c\u0435\u043d\u044e. \u0422\u0435\u043f\u0435\u0440\u044c \u044f \u043c\u043e\u0433\u0443 \u043f\u0440\u043e\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0435\u0433\u043e \u0431\u0435\u0437 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430.<\/p>\n<p><img decoding=\"async\" alt=\"Jak w Arduino tworzy\u0107 programy dla Windows\" src=\"\/wp-content\/uploads\/2019\/10\/1564f1cd12a966743a3f70ebfb592491.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nNanonyam (w swojej ostatecznej formie) jest dobrym narz\u0119dziem do pracy nad blokami programowymi dla mikrokomputer\u00f3w, poniewa\u017c s\u0105 funkcje do pracy z grafik\u0105 (mo\u017cna symulowa\u0107 wy\u015bwietlacze i wska\u017aniki), z plikami (mo\u017cna prowadzi\u0107 logi, odczytywa\u0107 dane testowe), z klawiatur\u0105 (mo\u017cna odczytywa\u0107 do 10 przycisk\u00f3w jednocze\u015bnie), z portami COM (tutaj osobny punkt).<\/p>\n<h4>Tworzenie szybkich program\u00f3w<\/h4>\n<p>\nNa przyk\u0142ad potrzebujesz szybko przetworzy\u0107 100500 plik\u00f3w tekstowych. Ka\u017cdy trzeba otworzy\u0107, troch\u0119 zmieni\u0107 wed\u0142ug jakiego\u015b prostego algorytmu, zapisa\u0107 i zamkn\u0105\u0107. Je\u015bli jeste\u015b mistrzem Pythona, to gratulacje, masz wszystko. Ale je\u015bli jeste\u015b zapalonym programist\u0105 Arduina (a takich jest sporo), to Nanonyam pomo\u017ce ci w rozwi\u0105zaniu tego zadania. To jest moje drugie celem w Nanonyam: doda\u0107 wiele przydatnych funkcji, takich jak przetwarzanie tekstu, tworzenie zrzut\u00f3w ekranu czy symulacja naci\u015bni\u0119\u0107 klawiszy w systemie (to wszystko, swoj\u0105 drog\u0105, ju\u017c istnieje), a tak\u017ce wiele innych funkcji do rozwi\u0105zywania rutynowych zada\u0144.<\/p>\n<h4>Testowanie sprz\u0119tu przez port COM<\/h4>\n<p>\nNanonyam mo\u017ce dzia\u0142a\u0107 jako terminal, kt\u00f3ry realizuje tw\u00f3j algorytm. Mo\u017cna stworzy\u0107 ma\u0142e menu do zarz\u0105dzania urz\u0105dzeniem oraz wy\u015bwietlania danych otrzymywanych z portu. Mo\u017cna r\u00f3wnie\u017c zapisywa\u0107 i odczytywa\u0107 dane z plik\u00f3w w celach analizy. To wygodne narz\u0119dzie do prostego debugowania i kalibracji sprz\u0119tu, a tak\u017ce do tworzenia prostych wirtualnych paneli kontrolnych urz\u0105dzenia. Dla student\u00f3w i m\u0142odych naukowc\u00f3w ten projekt mo\u017ce okaza\u0107 si\u0119 bardzo pomocny.<\/p>\n<h4>Nauka programowania<\/h4>\n<p>\nJednak, jak w ca\u0142ym projekcie Arduino, g\u0142\u00f3wn\u0105 warto\u015bci\u0105 Nanonyam jest prostota funkcji, interfejsu i programatora. Dlatego ten projekt powinien by\u0107 interesuj\u0105cy dla pocz\u0105tkuj\u0105cych programist\u00f3w oraz dla tych, kt\u00f3rzy s\u0105 zadowoleni z poziomu Arduino. Swoj\u0105 drog\u0105, sam do tej pory nie zg\u0142\u0119bi\u0142em Arduino szczeg\u00f3\u0142owo, poniewa\u017c zawsze korzysta\u0142em z WinAVR lub AVR Studio, a zaczyna\u0142em od asemblera. Dlatego poni\u017cszy przyk\u0142ad programu b\u0119dzie nieco niepoprawny, ale w pe\u0142ni funkcjonalny.<\/p>\n<h4>Cze\u015b\u0107, Habr!<\/h4>\n<p>\nNadszed\u0142 czas, aby zapozna\u0107 si\u0119 z niekt\u00f3rymi funkcjami Nanonyam i napisa\u0107 prosty program. B\u0119dziemy pisa\u0107 w Arduino, ale nie tak, jak to zazwyczaj robi si\u0119, lecz tak, jak potrafi\u0119 teraz (ju\u017c m\u00f3wi\u0142em, \u017ce nie do ko\u0144ca opanowa\u0142em to \u015brodowisko). Na pocz\u0105tek tworzymy nowy szkic i wybieramy p\u0142ytk\u0119 Mega2560.<\/p>\n<p><img decoding=\"async\" alt=\"Jak w Arduino tworzy\u0107 programy dla Windows\" src=\"\/wp-content\/uploads\/2019\/10\/edfb326204fea718e5238b0a6a32ed89.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nZapisujemy szkic w pliku i obok kopiujemy <noindex><a rel=\"nofollow\" href=\"http:\/\/nanoslavic.ru\/nanonyam\/downloads.html\">bibliotek\u0119 Nanonyam<\/a><\/noindex>. Poprawnie by\u0142oby do\u0142\u0105czy\u0107 nag\u0142\u00f3wki bibliotek, ale nie wiem, jak w Arduino ustawia\u0107 kompilacj\u0119 poszczeg\u00f3lnych plik\u00f3w, wi\u0119c na razie po prostu do\u0142\u0105cz\u0119 biblioteki bezpo\u015brednio (i to wszystkie naraz):<\/p>\n<pre><code class=\"plaintext\">#include &lt;stdio.h&gt;\n#include \"NanonyamnN_System_lib.c\"\n#include \"NanonyamnN_Keyboard_lib.c\"\n#include \"NanonyamnN_File_lib.c\"\n#include \"NanonyamnN_Math_lib.c\"\n#include \"NanonyamnN_Text_lib.c\"\n#include \"NanonyamnN_Graphics_lib.c\"\n#include \"NanonyamnN_RS232_lib.c\"<\/code><\/pre>\n<p>\nJeszcze lepiej by\u0142oby stworzy\u0107 specjalny modu\u0142 \u201eNanonyam dla Arduino\u201d, kt\u00f3ry mo\u017cna instalowa\u0107 bezpo\u015brednio z Arduino. Gdy tylko si\u0119 z tym uporam, to zrobi\u0119, a na razie pokazuj\u0119, jak pracowa\u0107 z wirtualn\u0105 maszyn\u0105. Pisz\u0119 taki kod:<\/p>\n<pre><code class=\"plaintext\">\/\/\u0421\u0440\u0430\u0437\u0443 \u043f\u043e\u0441\u043b\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0440\u0438\u0441\u0443\u0435\u043c \u0442\u0435\u043a\u0441\u0442 \u0432 \u043e\u043a\u043d\u0435\nvoid setup() {\n  sys_Nanonyam();\/\/\u041f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0430\u0435\u043c \u043a\u043e\u0434 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u044b\n  g_SetScreenSize(400,200);\/\/\u0417\u0430\u0434\u0430\u0451\u043c \u0440\u0430\u0437\u043c\u0435\u0440 \u0434\u0438\u0441\u043f\u043b\u0435\u044f 400\u0445200 \u0442\u043e\u0447\u0435\u043a\n  sys_WindowSetText(\"Example\");\/\/\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a \u043e\u043a\u043d\u0430\n  g_ConfigExternalFont(0,60,1,0,0,0,\"Arial\");\/\/\u0417\u0430\u0434\u0430\u0451\u043c \u0448\u0440\u0438\u0444\u0442 Windows \u0432 \u044f\u0447\u0435\u0439\u043a\u0435 \u0448\u0440\u0438\u0444\u0442\u043e\u0432 0\n  g_SetExternalFont(0);\/\/\u0412\u044b\u0431\u0438\u0440\u0430\u0435\u043c \u044f\u0447\u0435\u0439\u043a\u0443 \u0448\u0440\u0438\u0444\u0442\u043e\u0432 0 \u0434\u043b\u044f \u0440\u0438\u0441\u043e\u0432\u0430\u043d\u0438\u044f \u0442\u0435\u043a\u0441\u0442\u0430\n  g_SetBackRGB(0,0,255);\/\/\u0426\u0432\u0435\u0442 \u0444\u043e\u043d\u0430 \u0441\u0438\u043d\u0438\u0439\n  g_SetTextRGB(255,255,0);\/\/\u0426\u0432\u0435\u0442 \u0442\u0435\u043a\u0441\u0442\u0430 \u0436\u0451\u043b\u0442\u044b\u0439\n  g_ClearAll();\/\/\u041e\u0447\u0438\u0449\u0430\u0435\u043c \u044d\u043a\u0440\u0430\u043d (\u0437\u0430\u043b\u0438\u0432\u043a\u0430 \u0446\u0432\u0435\u0442\u043e\u043c \u0444\u043e\u043d\u0430)\n  g_DrawTextCenterX(0,400,70,\"Hello, Habr!\");\/\/\u0420\u0438\u0441\u0443\u0435\u043c \u043d\u0430\u0434\u043f\u0438\u0441\u044c\n  g_Update();\/\/\u0412\u044b\u0432\u043e\u0434\u0438\u043c \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0431\u0443\u0444\u0435\u0440 \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\n}\n\n\/\/\u041f\u0440\u043e\u0441\u0442\u043e \u0436\u0434\u0451\u043c \u0437\u0430\u043a\u0440\u044b\u0442\u0438\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b\nvoid loop() {\n  sys_Delay(100);\/\/\u0417\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u0438 \u0440\u0430\u0437\u0433\u0440\u0443\u0437\u043a\u0430 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430\n}<\/code><\/pre>\n<p>\nSzkic z tym programem <noindex><a rel=\"nofollow\" href=\"http:\/\/www.nanoslavic.com\/downloads\/example002.ino\">mo\u017cna pobra\u0107 tutaj<\/a><\/noindex>. Szczeg\u00f3\u0142owy opis funkcji <noindex><a rel=\"nofollow\" href=\"http:\/\/nanoslavic.ru\/nanonyam\/libraries.html\">znajdziesz na stronie<\/a><\/noindex>. Mam nadziej\u0119, \u017ce komentarzy w tym kodzie jest wystarczaj\u0105co du\u017co, aby zrozumie\u0107 jego istot\u0119. Tutaj funkcja <b>sys_Nanonyam()<\/b> pe\u0142ni rol\u0119 'has\u0142a' dla wirtualnej maszyny, kt\u00f3re znosi ograniczenia na wirtualne funkcje. Bez tej funkcji program zamknie si\u0119 po 3 sekundach dzia\u0142ania.<\/p>\n<p>Klikamy przycisk \u201eSprawd\u017a\u201d i nie powinno by\u0107 \u017cadnych b\u0142\u0119d\u00f3w.<\/p>\n<p><img decoding=\"async\" alt=\"Jak w Arduino tworzy\u0107 programy dla Windows\" src=\"\/wp-content\/uploads\/2019\/10\/ab8e13e6bf320848a30d4a997ba6bd8e.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n\u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0431\u0438\u043d\u0430\u0440\u043d\u044b\u0439 \u0444\u0430\u0439\u043b (\u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0443). \u0412\u044b\u0431\u0438\u0440\u0430\u0435\u043c \u043c\u0435\u043d\u044e &#171;<i>Szkic&gt;&gt;Eksportuj plik binarny (CTRL+ALT+S)<\/i>&#171;.<\/p>\n<p><img decoding=\"async\" alt=\"Jak w Arduino tworzy\u0107 programy dla Windows\" src=\"\/wp-content\/uploads\/2019\/10\/3cae211bf76616e8d4cd7beb8f91c7a7.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nW tym czasie do folderu ze szkicem skopiowane zostan\u0105 dwa pliki HEX. <b>Przyjmujemy tylko plik bez prefixu \u201ewith_bootloader.mega\u201d.<\/b><\/p>\n<p>Istnieje kilka sposob\u00f3w wskazania pliku HEX maszynie wirtualnej Nanonyam, wszystkie zosta\u0142y opisane <noindex><a rel=\"nofollow\" href=\"http:\/\/nanoslavic.ru\/nanonyam\/libraries.html\">na tej stronie.<\/a><\/noindex>. Proponuj\u0119 stworzy\u0107 obok pliku <i>Nanonyam.exe<\/i> pliku <i>Nanonyam.path<\/i>, w kt\u00f3rym nale\u017cy wpisa\u0107 pe\u0142n\u0105 \u015bcie\u017ck\u0119 do naszego pliku HEX. Po czym mo\u017cna uruchomi\u0107 <i>Nanonyam.exe<\/i>. Pojawi si\u0119 okno z naszym napisem.<\/p>\n<p><img decoding=\"async\" alt=\"Jak w Arduino tworzy\u0107 programy dla Windows\" src=\"\/wp-content\/uploads\/2019\/10\/0bb6e712cedbd9d10d3a7202a5d1b488.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPodobnie mo\u017cna tworzy\u0107 programy w innych \u015brodowiskach, na przyk\u0142ad w AVR Studio lub WinAVR.<\/p>\n<p>Na tym ko\u0144czymy nasze zapoznanie z Nanonyam. G\u0142\u00f3wna idea powinna by\u0107 jasna. <noindex><a rel=\"nofollow\" href=\"http:\/\/nanoslavic.ru\/nanonyam\/examples.html\">Kolejne przyk\u0142ady s\u0105 na stronie<\/a><\/noindex>. Je\u015bli b\u0119dzie wystarczaj\u0105co ch\u0119tnych do korzystania z tego projektu, stworz\u0119 wi\u0119cej przyk\u0142ad\u00f3w i b\u0119d\u0119 kontynuowa\u0107 \u201euzupe\u0142nianie\u201d bibliotek funkcji wirtualnych. Przyjmuj\u0119 konkretne pomys\u0142y na rozw\u00f3j projektu oraz raporty o usterkach, b\u0142\u0119dach i niedoci\u0105gni\u0119ciach. Preferowane jest przesy\u0142anie ich za po\u015brednictwem kontakt\u00f3w, <noindex><a rel=\"nofollow\" href=\"http:\/\/nanoslavic.ru\/contacts.html\">podanych na stronie<\/a><\/noindex>. Dyskusje s\u0105 mile widziane w komentarzach.<\/p>\n<p>Dzi\u0119kuj\u0119 wszystkim za uwag\u0119 i udanego programowania!<br \/>\n<br \/>\u0179r\u00f3d\u0142o: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/472958\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041e\u0434\u043d\u0430\u0436\u0434\u044b \u043c\u043d\u0435 \u0432 \u0433\u043e\u043b\u043e\u0432\u0443 \u043f\u0440\u0438\u0448\u043b\u0430 \u0431\u0440\u0435\u0434\u043e\u0432\u0430\u044f \u0438\u0434\u0435\u044f \u0441\u0432\u0435\u0441\u0442\u0438 500 \u043b\u0430\u0437\u0435\u0440\u043d\u044b\u0445 \u0443\u043a\u0430\u0437\u043e\u043a \u0432 \u043e\u0434\u043d\u043e \u043c\u0435\u0441\u0442\u043e. \u042f \u043f\u043e\u0442\u0440\u0430\u0442\u0438\u043b \u043c\u043d\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0438 \u0441\u0434\u0435\u043b\u0430\u043b \u044d\u0442\u043e. \u041f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c \u0437\u0440\u0435\u043b\u0438\u0449\u043d\u043e \u0438 \u0431\u0435\u0441\u043f\u043e\u043b\u0435\u0437\u043d\u043e, \u043d\u043e \u043c\u043d\u0435 \u043f\u043e\u043d\u0440\u0430\u0432\u0438\u043b\u043e\u0441\u044c. \u041f\u043e\u043b\u0433\u043e\u0434\u0430 \u043d\u0430\u0437\u0430\u0434 \u043c\u043d\u0435 \u043f\u0440\u0438\u0448\u043b\u0430 \u0434\u0440\u0443\u0433\u0430\u044f \u0431\u0440\u0435\u0434\u043e\u0432\u0430\u044f \u0438\u0434\u0435\u044f. \u041d\u0430 \u044d\u0442\u043e\u0442 \u0440\u0430\u0437 \u0441\u043e\u0432\u0441\u0435\u043c \u043d\u0435 \u0437\u0440\u0435\u043b\u0438\u0449\u043d\u0430\u044f, \u043d\u043e \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u0435\u0435. \u042f \u0442\u0430\u043a\u0436\u0435 \u043f\u043e\u0442\u0440\u0430\u0442\u0438\u043b \u043d\u0430 \u043d\u0435\u0451 \u043c\u043d\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438. \u0418 \u0432 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":39390,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-39389","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.1.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041e\u0434\u043d\u0430\u0436\u0434\u044b \u043c\u043d\u0435 \u0432 \u0433\u043e\u043b\u043e\u0432\u0443 \u043f\u0440\u0438\u0448\u043b\u0430 \u0431\u0440\u0435\u0434\u043e\u0432\u0430\u044f \u0438\u0434\u0435\u044f.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/kak-v-arduino-sozdavat-programmy-dlya-windows\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"pl_PL\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u041a\u0430\u043a \u0432 Arduino \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0434\u043b\u044f Windows | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041e\u0434\u043d\u0430\u0436\u0434\u044b \u043c\u043d\u0435 \u0432 \u0433\u043e\u043b\u043e\u0432\u0443 \u043f\u0440\u0438\u0448\u043b\u0430 \u0431\u0440\u0435\u0434\u043e\u0432\u0430\u044f \u0438\u0434\u0435\u044f.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/kak-v-arduino-sozdavat-programmy-dlya-windows\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T19:31:46+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T19:31:46+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Jak w Arduino tworzy\u0107 programy dla systemu Windows | ProHoster","description":"Pewnego dnia wpad\u0142 mi do g\u0142owy szalony pomys\u0142.","canonical_url":"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/kak-v-arduino-sozdavat-programmy-dlya-windows","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"pl_PL","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u041a\u0430\u043a \u0432 Arduino \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0434\u043b\u044f Windows | ProHoster","og:description":"\u041e\u0434\u043d\u0430\u0436\u0434\u044b \u043c\u043d\u0435 \u0432 \u0433\u043e\u043b\u043e\u0432\u0443 \u043f\u0440\u0438\u0448\u043b\u0430 \u0431\u0440\u0435\u0434\u043e\u0432\u0430\u044f \u0438\u0434\u0435\u044f.","og:url":"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/kak-v-arduino-sozdavat-programmy-dlya-windows","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T19:31:46+00:00","article:modified_time":"2019-10-31T19:31:46+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"39389","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-24 01:51:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 00:51:26","updated":"2026-01-24 01:51:19","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts\/39389","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/comments?post=39389"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts\/39389\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/media\/39390"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/media?parent=39389"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/categories?post=39389"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/tags?post=39389"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}