Как Π² Arduino ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ для Windows

Как Π² Arduino ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ для Windows

ΠžΠ΄Π½Π°ΠΆΠ΄Ρ‹ ΠΌΠ½Π΅ Π² Π³ΠΎΠ»ΠΎΠ²Ρƒ ΠΏΡ€ΠΈΡˆΠ»Π° брСдовая идСя свСсти 500 Π»Π°Π·Π΅Ρ€Π½Ρ‹Ρ… ΡƒΠΊΠ°Π·ΠΎΠΊ Π² ΠΎΠ΄Π½ΠΎ мСсто. Π― ΠΏΠΎΡ‚Ρ€Π°Ρ‚ΠΈΠ» ΠΌΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΈ сдСлал это. ΠŸΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΎΡΡŒ Π·Ρ€Π΅Π»ΠΈΡ‰Π½ΠΎ ΠΈ бСсполСзно, Π½ΠΎ ΠΌΠ½Π΅ ΠΏΠΎΠ½Ρ€Π°Π²ΠΈΠ»ΠΎΡΡŒ. Полгода Π½Π°Π·Π°Π΄ ΠΌΠ½Π΅ ΠΏΡ€ΠΈΡˆΠ»Π° другая брСдовая идСя. На этот Ρ€Π°Π· совсСм Π½Π΅ зрСлищная, Π½ΠΎ Π³ΠΎΡ€Π°Π·Π΄ΠΎ ΠΏΠΎΠ»Π΅Π·Π½Π΅Π΅. Π― Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΡ‚Ρ€Π°Ρ‚ΠΈΠ» Π½Π° Π½Π΅Ρ‘ ΠΌΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ. И Π² этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ я ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽ Π±Π΅Ρ‚Π° Π²Π΅Ρ€ΡΠΈΡŽ своСй Π²Ρ‚ΠΎΡ€ΠΎΠΉ Π±Ρ€Π΅Π΄ΠΎΠ²ΠΎΠΉ ΠΈΠ΄Π΅ΠΈ.

ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ я Π½Π°Π·Π²Π°Π» Nanonyam (Наноням) ΠΈ Π΄Π°ΠΆΠ΅ ΠΏΡ€ΠΈΠ΄ΡƒΠΌΠ°Π» Π΅ΠΌΡƒ Π»ΠΎΠ³ΠΎΡ‚ΠΈΠΏ (рисовал Ρ†Π΅Π»Ρ‹Ρ… 5 ΠΌΠΈΠ½ΡƒΡ‚).

Как Π² Arduino ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ для Windows

Для Ρ‚Π΅Ρ…, ΠΊΡ‚ΠΎ мыслит Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°ΠΌΠΈ Arduino, ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Nanonyam это Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΉ Π°Ρ€Π΄ΡƒΠΈΠ½ΠΎ-шилд для управлСния Windows.

Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, Nanonyam это Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ машина, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π² качСствС Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΡ€ΠΎΡˆΠΈΠ²ΠΊΠ° для ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° AVR (рСкомСндуСтся ATMEGA2560). Π’Π½ΡƒΡ‚Ρ€ΠΈ этой Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΌΠ°ΡˆΠΈΠ½Ρ‹ находится симулятор ядра AVR, Π½ΠΎ вмСсто ΠΏΠ΅Ρ€ΠΈΡ„Π΅Ρ€ΠΈΠΉΠ½Ρ‹Ρ… устройств, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π°ΡΠΏΠΎΠ»Π°Π³Π°ΡŽΡ‚ΡΡ ΠΏΠΎ адрСсам SRAM ΠΎΡ‚ 0x0060 Π΄ΠΎ 0x01FF, находится ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ интСрфСйс ΠΊ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΌ функциям (Π² Ρ‚ΠΎΠΌ числС функциям Windows API). И Ρ‚ΡƒΡ‚ ΠΎΡ‡Π΅Π½ΡŒ Π²Π°ΠΆΠ½ΠΎ сразу ΡƒΡΡΠ½ΠΈΡ‚ΡŒ: ΠΊΠΎΠ΄ для Nanonyam Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠΌΠ΅Ρ‚ΡŒ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠΉ ΠΊ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΌΡƒ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Ρƒ памяти, Ρ‡Ρ‚ΠΎΠ±Ρ‹ случайно Π½Π΅ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ удалСния Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈΠ»ΠΈ форматирования диска. ΠžΡΡ‚Π°Π»ΡŒΠ½ΠΎΠΉ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ памяти SRAM ΠΎΡ‚ 0x0200 Π΄ΠΎ 0xFFFF (это большС, Ρ‡Π΅ΠΌ Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌ ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π΅) доступСн ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ для Π»ΡŽΠ±Ρ‹Ρ… Ρ†Π΅Π»Π΅ΠΉ. Π‘Ρ€Π°Π·Ρƒ ΠΎΡ‚ΠΌΠ΅Ρ‡Ρƒ, Ρ‡Ρ‚ΠΎ имССтся ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Π°Ρ Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ случайного запуска ΠΏΡ€ΠΎΡˆΠΈΠ²ΠΊΠΈ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° (ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΡˆΠΈΠ²ΠΊΠΈ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹): ΠΏΡ€Π΅ΠΆΠ΄Π΅, Ρ‡Π΅ΠΌ Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ «опасныС» Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΡƒΡŽ Ρ…ΠΈΡ‚Ρ€ΡƒΡŽ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ. Π•ΡΡ‚ΡŒ ΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ элСмСнты Π·Π°Ρ‰ΠΈΡ‚Ρ‹.

Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ для Nanonyam Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ всС доступныС Π½Π° Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π‘ΠΊΠ°Ρ‡Π°Ρ‚ΡŒ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΌΠ°ΡˆΠΈΠ½Ρƒ Nanonyam ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΊ Π½Π΅ΠΉ ΠΌΠΎΠΆΠ½ΠΎ Ρ‚ΡƒΡ‚. А Π²ΠΎΡ‚ страница описания Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ. И Π΄Π°, ΠΌΠΎΠΉ сайт ΠΎΡ‡Π΅Π½ΡŒ ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π΅Π½ ΠΈ Π½Π΅ Π°Π΄Π°ΠΏΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ ΠΏΠΎΠ΄ ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Π΅ устройства.

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Nanonyam являСтся бСсплатной для домашнСго ΠΈ коммСрчСского использования. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Nanonyam прСдоставляСтся Π½Π° условиях Β«ΠΊΠ°ΠΊ Π΅ΡΡ‚ΡŒΒ». Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ Π½Π΅ прСдоставляСтся.

На Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° находится Π² стадии тСстирования. Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ ΠΎΠΊΠΎΠ»ΠΎ 200 Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ простыС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ для Windows.
ΠžΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π² Ρ‚Π°ΠΊΠΎΠΉ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ машинС Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ слоТноС Π½Π΅ получится, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ памяти для ΠΊΠΎΠ΄Π° всСго лишь 256 ΠΊΠ‘. Π”Π°Π½Π½Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… Ρ„Π°ΠΉΠ»Π°Ρ…, Π±ΡƒΡ„Π΅Ρ€ для графичСской части Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ внСшнС. ВсС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΡƒΠΏΡ€ΠΎΡ‰Π΅Π½Ρ‹ ΠΈ Π°Π΄Π°ΠΏΡ‚ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ для 8-Π±ΠΈΡ‚Π½ΠΎΠΉ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹.

Π§Ρ‚ΠΎ ΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π² Nanonyam? Π― ΠΏΡ€ΠΈΠ΄ΡƒΠΌΠ°Π» нСсколько Π·Π°Π΄Π°Ρ‡.

ΠžΡ‚Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Ρ… Π±Π»ΠΎΠΊΠΎΠ²

ΠžΠ΄Π½Π°ΠΆΠ΄Ρ‹ ΠΌΠ½Π΅ Π½ΡƒΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ слоТноС мСню для графичСского дисплСя 128×64 Ρ‚ΠΎΡ‡ΠΊΠΈ. ΠžΡ‡Π΅Π½ΡŒ Π½Π΅ Ρ…ΠΎΡ‚Π΅Π»ΠΎΡΡŒ постоянно Π·Π°Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΡˆΠΈΠ²ΠΊΡƒ Π² Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ, ΠΊΠ°ΠΊ выглядят пиксСли. Π’Π°ΠΊ ΠΈ Ρ€ΠΎΠ΄ΠΈΠ»Π°ΡΡŒ идСя Nanonyam. На рисункС Π½ΠΈΠΆΠ΅ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ с Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ OLED-дисплСя ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· ΠΏΡƒΠ½ΠΊΡ‚ΠΎΠ² Ρ‚ΠΎΠ³ΠΎ самого мСню. Π’Π΅ΠΏΠ΅Ρ€ΡŒ я ΠΌΠΎΠ³Ρƒ ΠΏΡ€ΠΎΡ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π±Π΅Π· Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ устройства.

Как Π² Arduino ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ для Windows

Nanonyam (Π² своСй ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΉ Π·Π°Π΄ΡƒΠΌΠΊΠ΅) это Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΉ инструмСнт для ΠΎΡ‚Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Ρ… Π±Π»ΠΎΠΊΠΎΠ² для ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠ², Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π΅ΡΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠΉ (ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠΌΠΈΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ дисплСи ΠΈ ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹), с Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ (ΠΌΠΎΠΆΠ½ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ Π»ΠΎΠ³ΠΈ, ΡΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ тСстовыС Π΄Π°Π½Π½Ρ‹Π΅), с ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€ΠΎΠΉ (ΠΌΠΎΠΆΠ½ΠΎ ΡΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ Π΄ΠΎ 10 ΠΊΠ½ΠΎΠΏΠΎΠΊ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ), с COM-ΠΏΠΎΡ€Ρ‚Π°ΠΌΠΈ (Ρ‚ΡƒΡ‚ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΡƒΠ½ΠΊΡ‚).

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ быстрых ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ

НапримСр, Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎ-Π±Ρ‹ΡΡ‚Ρ€Π΅Π½ΡŒΠΊΠΎΠΌΡƒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ 100500 тСкстовых Ρ„Π°ΠΉΠ»ΠΎΠ². ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ Π½ΡƒΠΆΠ½ΠΎ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ, Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΏΠΎ ΠΊΠ°ΠΊΠΎΠΌΡƒ-Ρ‚ΠΎ нСслоТному Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡƒ, ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΈ Π·Π°ΠΊΡ€Ρ‹Ρ‚ΡŒ. Если Π²Ρ‹ мастСр Python, Ρ‚ΠΎ я вас ΠΏΠΎΠ·Π΄Ρ€Π°Π²Π»ΡΡŽ, Ρƒ вас всё Π΅ΡΡ‚ΡŒ. Но Ссли Π²Ρ‹ Π·Π°ΠΊΠΎΡ€Π΅Π½Π΅Π»Ρ‹ΠΉ Π°Ρ€Π΄ΡƒΠΈΠ½Ρ‰ΠΈΠΊ (Π° Ρ‚Π°ΠΊΠΈΡ… Π½Π΅ΠΌΠ°Π»ΠΎ), Ρ‚ΠΎ Nanonyam Π²Π°ΠΌ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ Π² Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΈ этой Π·Π°Π΄Π°Ρ‡ΠΈ. ИмСнно это моя вторая Ρ†Π΅Π»ΡŒ Π² Nanonyam: Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ мноТСство ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Ρ‚ΠΈΠΏΠ° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ тСкста, создания ΡΠΊΡ€ΠΈΠ½ΡˆΠΎΡ‚ΠΎΠ² ΠΈΠ»ΠΈ ΠΈΠΌΠΈΡ‚Π°Ρ†ΠΈΠΈ наТатия клавиш Π² систСмС (это всё, кстати, ΡƒΠΆΠ΅ Π΅ΡΡ‚ΡŒ), Π° Ρ‚Π°ΠΊΠΆΠ΅ мноТСства Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Ρ€ΡƒΡ‚ΠΈΠ½Π½Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡.

ВСстированиС ΠΆΠ΅Π»Π΅Π·ΠΎΠΊ Ρ‡Π΅Ρ€Π΅Π· COM-ΠΏΠΎΡ€Ρ‚

Nanonyam ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΡΡ‚ΡƒΠΏΠ°Ρ‚ΡŒ Π² Ρ€ΠΎΠ»ΠΈ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π°, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰Π΅Π³ΠΎ ΠΏΠΎ Π²Π°ΡˆΠ΅ΠΌΡƒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡƒ. МоТно Π½Π°Ρ€ΠΈΡΠΎΠ²Π°Ρ‚ΡŒ нСбольшоС мСню для управлСния устройством ΠΈ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅, ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌΡ‹Π΅ ΠΈΠ· ΠΏΠΎΡ€Ρ‚Π°. МоТно ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ ΠΈ ΡΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· Ρ„Π°ΠΉΠ»ΠΎΠ² для Π°Π½Π°Π»ΠΈΠ·Π°. Π£Π΄ΠΎΠ±Π½Ρ‹ΠΉ инструмСнт для нСслоТной ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ ΠΈ ΠΊΠ°Π»ΠΈΠ±Ρ€ΠΎΠ²ΠΊΠΈ ΠΆΠ΅Π»Π΅Π·ΠΎΠΊ, Π° Ρ‚Π°ΠΊΠΆΠ΅ для создания простых Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠ°Π½Π΅Π»Π΅ΠΉ управлСния ΠΏΡ€ΠΈΠ±ΠΎΡ€ΠΎΠΌ. Для студСнтов ΠΈ ΠΌΠΎΠ»ΠΎΠ΄Ρ‹Ρ… ΡƒΡ‡Ρ‘Π½Ρ‹Ρ… этот ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΌ.

ΠžΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ

Π’ΠΏΡ€ΠΎΡ‡Π΅ΠΌ, ΠΊΠ°ΠΊ ΠΈ Π²ΠΎ всём ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ Arduino, основная ΠΏΠΎΠ»Π΅Π·Π½ΠΎΡΡ‚ΡŒ Nanonyam Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² упрощённости Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, интСрфСйса ΠΈ Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊΠ°. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ этот ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ интСрСсСн Π½ΠΎΠ²ΠΈΡ‡ΠΊΠ°ΠΌ-программистам ΠΈ Ρ‚Π΅ΠΌ, ΠΊΠΎΠ³ΠΎ устраиваСт ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ Π°Ρ€Π΄ΡƒΠΈΠ½ΠΎ. ΠšΡΡ‚Π°Ρ‚ΠΈ, сам я Π΄ΠΎ сих ΠΏΠΎΡ€ Π½Π΅ ΠΈΠ·ΡƒΡ‡ΠΈΠ» Π°Ρ€Π΄ΡƒΠΈΠ½ΠΎ Π΄Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ всСгда использовал WinAVR ΠΈΠ»ΠΈ AVR Studio, Π° Π½Π°Ρ‡ΠΈΠ½Π°Π» с ассСмблСра. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½ΠΈΠΆΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΌ, Π½ΠΎ Π²ΠΏΠΎΠ»Π½Π΅ Ρ€Π°Π±ΠΎΡ‡ΠΈΠΌ.

Hello, Habr!

ΠŸΡ€ΠΈΡˆΠ»ΠΎ врСмя ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒΡΡ с Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ функциями Nanonyam ΠΈ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΡΡ‚ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ. Π‘ΡƒΠ΄Π΅ΠΌ ΠΏΠΈΡΠ°Ρ‚ΡŒ Π² Arduino, Π½ΠΎ Π½Π΅ Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊ принято, Π° Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊ я сСйчас ΡƒΠΌΠ΅ΡŽ (я ΡƒΠΆΠ΅ Π³ΠΎΠ²ΠΎΡ€ΠΈΠ», Ρ‡Ρ‚ΠΎ ΠΏΠΎΠΊΠ° Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΎ разобрался с этой срСдой). Для Π½Π°Ρ‡Π°Π»Π° создаём Π½ΠΎΠ²Ρ‹ΠΉ скСтч ΠΈ Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ ΠΏΠ»Π°Ρ‚Ρƒ Mega2560.

Как Π² Arduino ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ для Windows

БохраняСм скСтч Π² Ρ„Π°ΠΉΠ» ΠΈ рядом ΠΊΠΎΠΏΠΈΡ€ΡƒΠ΅ΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ Nanonyam. ΠŸΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π±Ρ‹ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ, Π½ΠΎ я Π½Π΅ знаю ΠΊΠ°ΠΊ Π² 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 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);//Π—Π°Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΈ Ρ€Π°Π·Π³Ρ€ΡƒΠ·ΠΊΠ° процСссора
}

Π‘ΠΊΠ΅Ρ‚Ρ‡ с этой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Ρ‡Π°Ρ‚ΡŒ Ρ‚ΡƒΡ‚. Π”Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎΠ΅ описаниС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈΡ‰ΠΈΡ‚Π΅ Π½Π° сайтС. НадСюсь, ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π² Π² этом ΠΊΠΎΠ΄Π΅ достаточно, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ½ΡΡ‚ΡŒ ΡΡƒΡ‚ΡŒ. Π’ΡƒΡ‚ функция sys_Nanonyam() ΠΈΠ³Ρ€Π°Π΅Ρ‚ Ρ€ΠΎΠ»ΡŒ «пароля» для Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΌΠ°ΡˆΠΈΠ½Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ снимаСт ограничСния Π½Π° Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π‘Π΅Π· этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° закроСтся Ρ‡Π΅Ρ€Π΅Π· 3 сСкунды Ρ€Π°Π±ΠΎΡ‚Ρ‹.

НаТимаСм ΠΊΠ½ΠΎΠΏΠΊΡƒ Β«ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒΒ» ΠΈ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… ошибок Π±Ρ‹Ρ‚ΡŒ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ.

Как Π² Arduino ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ для Windows

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π±ΠΈΠ½Π°Ρ€Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» (ΠΏΡ€ΠΎΡˆΠΈΠ²ΠΊΡƒ). Π’Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ мСню «Π‘ΠΊΠ΅Ρ‚Ρ‡>>Экспорт Π±ΠΈΠ½Π°Ρ€Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° (CTRL+ALT+S)«.

Как Π² Arduino ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ для Windows

ΠŸΡ€ΠΈ этом Π² ΠΏΠ°ΠΏΠΊΡƒ со скСтчСм Π±ΡƒΠ΄Π΅Ρ‚ скопировано Π΄Π²Π° HEX-Ρ„Π°ΠΉΠ»Π°. ΠœΡ‹ Π±Π΅Ρ€Ρ‘ΠΌ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ„Π°ΠΉΠ» Π±Π΅Π· приставки Β«with_bootloader.megaΒ».

Π•ΡΡ‚ΡŒ нСсколько способов ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ HEX-Ρ„Π°ΠΉΠ» Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ машинС Nanonyam, всС ΠΎΠ½ΠΈ описаны Π½Π° этой страницС. Π― ΠΏΡ€Π΅Π΄Π»Π°Π³Π°ΡŽ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ рядом с Ρ„Π°ΠΉΠ»ΠΎΠΌ Nanonyam.exe Ρ„Π°ΠΉΠ» Nanonyam.path, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΏΡ€ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΠΎΠ»Π½Ρ‹ΠΉ ΠΏΡƒΡ‚ΡŒ Π΄ΠΎ нашСго HEX-Ρ„Π°ΠΉΠ»Π°. ПослС Ρ‡Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ Nanonyam.exe. ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ ΠΎΠΊΠ½ΠΎ с нашСй надписью.

Как Π² Arduino ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ для Windows

Аналогично ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… срСдах, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² AVR Studio ΠΈΠ»ΠΈ WinAVR.

На этом ΠΏΠΎΠΊΠ° Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΠΌ знакомство с Nanonyam. Основная идСя Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ понятна. Π•Ρ‰Ρ‘ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Π΅ΡΡ‚ΡŒ Π½Π° сайтС. Если Π±ΡƒΠ΄Π΅Ρ‚ достаточно ΠΆΠ΅Π»Π°ΡŽΡ‰ΠΈΡ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ этот ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, Ρ‚ΠΎ я сдСлаю большС ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² ΠΈ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΡƒ Β«Π½Π°ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΒ» Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ. ΠŸΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‚ΡΡ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Π΅ ΠΈΠ΄Π΅ΠΈ для развития ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΈ ΠΎΡ‚Ρ‡Ρ‘Ρ‚Ρ‹ ΠΎ нСисправностях, Π±Π°Π³Π°Ρ… ΠΈ ляпах. Π–Π΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π½Π°ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ ΠΈΡ… ΠΏΠΎ ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Π°ΠΌ, ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΌ Π½Π° сайтС. А обсуТдСниС привСтствуСтся Π² коммСнтариях.

ВсСм спасибо Π·Π° Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΈ ΡƒΠ΄Π°Ρ‡Π½ΠΎΠ³ΠΎ программирования!

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com