ΠœΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Ρ‹ Arduino: возмоТности ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Ρ‹ Arduino. КакиС ΠΌΠΎΠ΄Π΅Π»ΠΈ Arduino ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚. Для Ρ‡Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΏΠ»Π°Ρ‚Ρ‹ Arduino. Как ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Arduino. КакиС ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° Arduino.

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Ρ‹ Arduino

Arduino — это сСмСйство ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π½Ρ‹Ρ… ΠΏΠ»Π°Ρ‚, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½Ρ‹Ρ… для быстрого прототипирования элСктронных устройств. ΠœΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Ρ‹ Arduino ΠΈΠΌΠ΅ΡŽΡ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ особСнности:

  • ΠžΡΠ½ΠΎΠ²Π°Π½Ρ‹ Π½Π° 8-Π±ΠΈΡ‚Π½Ρ‹Ρ… ΠΈ 32-Π±ΠΈΡ‚Π½Ρ‹Ρ… ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π°Ρ… Atmel AVR ΠΈ ARM
  • Π˜ΠΌΠ΅ΡŽΡ‚ встроСнныС срСдства Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π°
  • ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ стандартныС интСрфСйсы (USB, I2C, SPI ΠΈ Π΄Ρ€.)
  • ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΡƒΡŽΡ‚ΡΡ Ρ‡Π΅Ρ€Π΅Π· USB с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ языка Arduino (Π½Π° Π±Π°Π·Π΅ C++)
  • Π˜ΠΌΠ΅ΡŽΡ‚ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡƒΡŽ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄
  • НСдороги ΠΈ доступны для Π»ΡŽΠ±ΠΈΡ‚Π΅Π»Π΅ΠΉ элСктроники

Arduino позволяСт Π»Π΅Π³ΠΊΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Π΅ элСктронныС устройства — ΠΎΡ‚ ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠΈΡ… Π΄ΠΎ слоТных ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² домашнСй Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ. Π­Ρ‚ΠΈ ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Ρ‹ ΡˆΠΈΡ€ΠΎΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для обучСния, Π² Ρ…ΠΎΠ±Π±ΠΈ-элСктроникС ΠΈ ΠΏΡ€ΠΎΠΌΡ‹ΡˆΠ»Π΅Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΠ°Ρ….


ΠŸΠΎΠΏΡƒΠ»ΡΡ€Π½Ρ‹Π΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΏΠ»Π°Ρ‚ Arduino

БущСствуСт мноТСство ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ Arduino для Ρ€Π°Π·Π½Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡. НаиболСС популярныС ΠΈΠ· Π½ΠΈΡ…:

  • Arduino Uno — базовая модСль Π½Π° ATmega328P, 14 Ρ†ΠΈΡ„Ρ€ΠΎΠ²Ρ‹Ρ… Π²Ρ…ΠΎΠ΄ΠΎΠ²/Π²Ρ‹Ρ…ΠΎΠ΄ΠΎΠ²
  • Arduino Nano — компактная вСрсия Uno
  • Arduino Mega — Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½Π°Ρ вСрсия с 54 Ρ†ΠΈΡ„Ρ€ΠΎΠ²Ρ‹ΠΌΠΈ Π²Ρ…ΠΎΠ΄Π°ΠΌΠΈ/Π²Ρ‹Ρ…ΠΎΠ΄Π°ΠΌΠΈ
  • Arduino Leonardo — Π½Π° ATmega32U4 с встроСнным USB
  • Arduino Due — Π½Π° 32-Π±ΠΈΡ‚Π½ΠΎΠΌ ARM-процСссорС
  • Arduino YΓΊn — со встроСнным Wi-Fi ΠΈ Linux

Π’Ρ‹Π±ΠΎΡ€ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ зависит ΠΎΡ‚ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° — количСства ΠΏΠΈΠ½ΠΎΠ², объСма памяти, ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… возмоТностСй.

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Arduino

Для программирования Arduino ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Π°Ρ срСда Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Arduino IDE. Она позволяСт ΠΏΠΈΡΠ°Ρ‚ΡŒ скСтчи Π½Π° языкС Arduino, ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ… ΠΈ Π·Π°Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒ Π² ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€. ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ этапы программирования Arduino:

  1. Установка Arduino IDE Π½Π° ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€
  2. ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΏΠ»Π°Ρ‚Ρ‹ Arduino Ρ‡Π΅Ρ€Π΅Π· USB
  3. НаписаниС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ (скСтча) Π² Arduino IDE
  4. ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡ ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° скСтча Π² ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€
  5. Запуск ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° Arduino

Arduino IDE содСрТит мноТСство Π³ΠΎΡ‚ΠΎΠ²Ρ‹Ρ… ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ, Ρ‡Ρ‚ΠΎ ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ. Π‘Π°Π·ΠΎΠ²Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ языка Arduino ΠΏΠΎΡ…ΠΎΠΆΠΈ Π½Π° C++, Π½ΠΎ с Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ возмоТностями для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΠΎΠΉ Ρ‡Π°ΡΡ‚ΡŒΡŽ.


ВозмоТности ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠ² Arduino

Arduino прСдоставляСт ΡˆΠΈΡ€ΠΎΠΊΠΈΠ΅ возмоТности для создания элСктронных устройств:

  • Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ свСтодиодами, Ρ€Π΅Π»Π΅, двигатСлями
  • ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… с Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠΎΠ²
  • Π Π°Π±ΠΎΡ‚Π° с дисплСями ΠΈ ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π°ΠΌΠΈ
  • ΠŸΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠΎ ΠΏΡ€ΠΎΠ²ΠΎΠ΄Π½Ρ‹ΠΌ ΠΈ бСспроводным интСрфСйсам
  • ВоспроизвСдСниС Π·Π²ΡƒΠΊΠ°
  • Π‘Ρ‡ΠΈΡ‚Ρ‹Π²Π°Π½ΠΈΠ΅ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΉ ΠΊΠ½ΠΎΠΏΠΎΠΊ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΎΡ€Π³Π°Π½ΠΎΠ² управлСния
  • Π Π°Π±ΠΎΡ‚Π° с ΠΊΠ°Ρ€Ρ‚Π°ΠΌΠΈ памяти ΠΈ Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ…
  • ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ (шилдов)

ВозмоТности Arduino ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Ρ‹ Π² основном Ρ„Π°Π½Ρ‚Π°Π·ΠΈΠ΅ΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°. На Π±Π°Π·Π΅ этих ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠ² ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ самыС Ρ€Π°Π·Π½ΠΎΠΎΠ±Ρ€Π°Π·Π½Ρ‹Π΅ устройства — ΠΎΡ‚ простых Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠΎΠ² Π΄ΠΎ слоТных Ρ€ΠΎΠ±ΠΎΡ‚ΠΎΠ².

ΠŸΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Arduino Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ…

Arduino ΡˆΠΈΡ€ΠΎΠΊΠΎ примСняСтся Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… областях элСктроники ΠΈ Ρ€ΠΎΠ±ΠΎΡ‚ΠΎΡ‚Π΅Ρ…Π½ΠΈΠΊΠΈ. Π’ΠΎΡ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ популярныС направлСния использования Arduino:

  • Π£ΠΌΠ½Ρ‹ΠΉ Π΄ΠΎΠΌ ΠΈ автоматизация
  • Π ΠΎΠ±ΠΎΡ‚ΠΎΡ‚Π΅Ρ…Π½ΠΈΠΊΠ° ΠΈ автоматичСскиС систСмы
  • ΠœΠ΅Ρ‚Π΅ΠΎΡΡ‚Π°Π½Ρ†ΠΈΠΈ ΠΈ экологичСский ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³
  • Π˜Π½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Π΅ Π°Ρ€Ρ‚-инсталляции
  • ΠŸΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΡ‹ носимой элСктроники
  • ΠžΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Π½Π°Π±ΠΎΡ€Ρ‹ ΠΈ конструкторы
  • Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ свСтом ΠΈ подсвСткой
  • БистСмы бСзопасности ΠΈ сигнализации

Arduino позволяСт быстро Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ идСю Π² Π²ΠΈΠ΄Π΅ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰Π΅Π³ΠΎ ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΠ°. Π­Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡƒ популярной ΠΊΠ°ΠΊ срСди Π»ΡŽΠ±ΠΈΡ‚Π΅Π»Π΅ΠΉ, Ρ‚Π°ΠΊ ΠΈ Π² ΠΏΡ€ΠΎΠΌΡ‹ΡˆΠ»Π΅Π½Π½ΠΎΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅.


ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π° Arduino для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ²

Arduino ΠΈΠΌΠ΅Π΅Ρ‚ ряд Π²Π°ΠΆΠ½Ρ‹Ρ… прСимущСств, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ обСспСчили ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅ ΠΎΠ³Ρ€ΠΎΠΌΠ½ΡƒΡŽ ΠΏΠΎΠΏΡƒΠ»ΡΡ€Π½ΠΎΡΡ‚ΡŒ:

  • ΠŸΡ€ΠΎΡΡ‚ΠΎΡ‚Π° освоСния для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…
  • Низкая ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒ оборудования
  • ΠšΡ€ΠΎΡΡΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅Π½Π½ΠΎΡΡ‚ΡŒ (Windows, Mac OS, Linux)
  • ΠžΠ±ΡˆΠΈΡ€Π½ΠΎΠ΅ сообщСство ΠΈ Π±Π°Π·Π° Π·Π½Π°Π½ΠΈΠΉ
  • Π‘ΠΎΠ»ΡŒΡˆΠΎΠΉ Π²Ρ‹Π±ΠΎΡ€ совмСстимых ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ ΠΈ Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠΎΠ²
  • Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ создания Π°Π²Ρ‚ΠΎΠ½ΠΎΠΌΠ½Ρ‹Ρ… устройств
  • ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚Π°Ρ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° ΠΈ исходный ΠΊΠΎΠ΄

Π­Ρ‚ΠΈ особСнности Π΄Π΅Π»Π°ΡŽΡ‚ Arduino ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹ΠΌ Π²Ρ‹Π±ΠΎΡ€ΠΎΠΌ для обучСния элСктроникС, быстрого прототипирования ΠΈ создания Π½Π΅Π΄ΠΎΡ€ΠΎΠ³ΠΈΡ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ².

ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΡ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ Arduino

ΠŸΡ€ΠΈ всСх достоинствах, Ρƒ Arduino Π΅ΡΡ‚ΡŒ ΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ограничСния:

  • НСвысокая ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ для слоТных вычислСний
  • ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½Ρ‹ΠΉ объСм памяти
  • ΠžΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΠΈΠ΅ встроСнной ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы
  • НС ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для устройств с высокими трСбованиями ΠΊ ΡΠ½Π΅Ρ€Π³ΠΎΠΏΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΡŽ
  • ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½Ρ‹Π΅ возмоТности для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π²ΠΈΠ΄Π΅ΠΎ ΠΈ Π°ΡƒΠ΄ΠΈΠΎ

Для Π±ΠΎΠ»Π΅Π΅ слоТных Π·Π°Π΄Π°Ρ‡ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Arduino Π² связкС с ΠΎΠ΄Π½ΠΎΠΏΠ»Π°Ρ‚Π½Ρ‹ΠΌΠΈ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°ΠΌΠΈ Π²Ρ€ΠΎΠ΄Π΅ Raspberry Pi. Π­Ρ‚ΠΎ позволяСт ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ систСмы, ΡΠΎΡ‡Π΅Ρ‚Π°ΡŽΡ‰ΠΈΠ΅ простоту Arduino ΠΈ ΠΌΠΎΡ‰Π½ΠΎΡΡ‚ΡŒ Linux-ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ΠΎΠ².


ΠŸΠ΅Ρ€ΡΠΏΠ΅ΠΊΡ‚ΠΈΠ²Ρ‹ развития Arduino

ΠŸΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° Arduino ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅Ρ‚ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ Ρ€Π°Π·Π²ΠΈΠ²Π°Ρ‚ΡŒΡΡ. ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ направлСния развития:

  • Выпуск Π½ΠΎΠ²Ρ‹Ρ…, Π±ΠΎΠ»Π΅Π΅ ΠΌΠΎΡ‰Π½Ρ‹Ρ… ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ ΠΏΠ»Π°Ρ‚
  • Π˜Π½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡ бСспроводных интСрфСйсов (Wi-Fi, Bluetooth)
  • Π Π°Π·Π²ΠΈΡ‚ΠΈΠ΅ ΠΎΠ±Π»Π°Ρ‡Π½Ρ‹Ρ… сСрвисов для IoT-ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ²
  • Π£Π»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΠ΅ срСды Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Arduino IDE
  • Π Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ экосистСмы совмСстимых ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ
  • Π Π°Π·Π²ΠΈΡ‚ΠΈΠ΅ ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π½Π° Π±Π°Π·Π΅ Arduino

Arduino остаСтся ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· самых популярных ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌ для элСктронного творчСства ΠΈ прототипирования. Π•Π΅ простота ΠΈ Π΄ΠΎΡΡ‚ΡƒΠΏΠ½ΠΎΡΡ‚ΡŒ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ самыС смСлыС ΠΈΠ΄Π΅ΠΈ Π² области элСктроники ΠΈ Ρ€ΠΎΠ±ΠΎΡ‚ΠΎΡ‚Π΅Ρ…Π½ΠΈΠΊΠΈ.


Go для самых ΠΌΠ°Π»Π΅Π½ΡŒΠΊΠΈΡ…. Π Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌ для Arduino ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠ² / Π₯Π°Π±Ρ€

Π―Π·Ρ‹ΠΊ Go благодаря своСй простотС, возмоТности компиляции Π² выполняСмый ΠΎΠ±Ρ€Π°Π· ΠΈ встроСнной ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ΅ многозадачности стал, Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ смыслС, «ΡΠ΅Ρ€Π΅Π±Ρ€ΡΠ½ΠΎΠΉ ΠΏΡƒΠ»Π΅ΠΉ» для создания Π²Ρ‹ΡΠΎΠΊΠΎΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… инструмСнтов ΠΈ, совмСстно с Rust, сформировал соврСмСнный тСхнологичСский Π»Π°Π½Π΄ΡˆΠ°Ρ„Ρ‚ для DevOps. Но Π² Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, благодаря ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ΅ Π½Π°Π±ΠΎΡ€Π° инструмСнтов LLVM, стало Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Go ΠΈ для встраиваСмых систСм, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΡ€ΠΈ создании ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ для Android/iOS (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹ android-go ΠΈΠ»ΠΈ gomobile) ΠΈΠ»ΠΈ ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠ². Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΎ возмоТностях ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° TinyGo, Π΅Π³ΠΎ прСимущСствах ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с C++ для Arduino ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠ², рассмотрим нСсколько ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² ΠΏΠΎ Ρ€Π°Π±ΠΎΡ‚Π΅ с ΠΎΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ (Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π° ΡˆΠΈΠ½Ρ‹ SPI для свСтодиодной Π»Π΅Π½Ρ‚Ρ‹ WS2812).

НСсмотря Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π² LLVM + clang «ΠΈΠ· ΠΊΠΎΡ€ΠΎΠ±ΠΊΠΈ» ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Ρ†Π΅Π»Π΅Π²Ρ‹Π΅ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ (Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ AVR, которая ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π°Ρ… Arduino) Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния компиляции Ρƒ Golang Compiler вСсьма Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π΅Π½ ΠΏΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρƒ, Ρ‡Ρ‚ΠΎ Π² условиях ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½ΠΎΠΉ памяти Ρƒ ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠ² становится Π±Π»ΠΎΠΊΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΌ Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΎΠΌ. Для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ этой ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Π±Ρ‹Π» создан ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ TinyGo — Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ компилятор, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΠΉ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΠ· стандартной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, Π½ΠΎ ΠΏΡ€ΠΈ этом ΡΠΎΠ·Π΄Π°ΡŽΡ‰ΠΈΠΉ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΏΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρƒ ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½ Π΄Π°ΠΆΠ΅ Π½Π° ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Ρ‹ с ΠΎΡ‡Π΅Π½ΡŒ Π½Π΅Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ объСмом памяти (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρƒ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π±ΡŽΠ΄ΠΆΠ΅Ρ‚Π½ΠΎΠ³ΠΎ Arduino Uno доступно Ρ‡ΡƒΡ‚ΡŒ мСньшС 8ΠΊΠ± для Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹). ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒΡŽ ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠ² Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ AVR являСтся отсутствиС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы, Π° Ρ‚Π°ΠΊΠΆΠ΅ отличная ΠΎΡ‚ принятой Π½Π° Intel-Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π΅ модСль ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠΉ ΠΈ многозадачности, Ρ‡Ρ‚ΠΎ Π½Π°ΠΊΠ»Π°Π΄Ρ‹Π²Π°Π΅Ρ‚ ограничСния ΠΊΠ°ΠΊ Π½Π° Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ (ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ сСмСйства ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠ²), Ρ‚Π°ΠΊ ΠΈ Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ возмоТностСй языка Go ΠΈ использованиС структур Π΄Π°Π½Π½Ρ‹Ρ… Π² памяти (goroutines, динамичСскоС ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ, сборка мусора). ΠŸΡ€ΠΈ этом, благодаря возмоТностям ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ компилятора Go, Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΎΠ±Ρ€Π°Π·Π° для ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π² срСднСм получаСтся мСньшС, Ρ‡Π΅ΠΌ послС компиляции с языка C (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, классичСская «ΠΌΠΈΠ³Π°Π»ΠΊΠ°» Π½Π° C создаСт ΠΎΠ±Ρ€Π°Π· Π² 924 Π±Π°ΠΉΡ‚Π°, Ρ‚ΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ TinyGo создаСт ΠΎΠ±Ρ€Π°Π· 560 Π±Π°ΠΉΡ‚).

ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ TinyGo Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя компилятор (ΡΠΎΠ·Π΄Π°ΡŽΡ‰ΠΈΠΉ IR-ΠΊΠΎΠ΄ для компиляции Π² LLVM с использованиСм Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ количСства ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΉ), Π½Π°Π±ΠΎΡ€ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠ² для ΠΏΠ΅Ρ€ΠΈΡ„Π΅Ρ€ΠΈΠΉΠ½ΠΎΠ³ΠΎ оборудования (ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌΠΎΠ³ΠΎ Ρ‡Π΅Ρ€Π΅Π· ΡˆΠΈΠ½Ρ‹ ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π°), Π° Ρ‚Π°ΠΊΠΆΠ΅ инструмСнты для создания выполняСмого ΠΎΠ±Ρ€Π°Π·Π° ΠΈ Π΅Π³ΠΎ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π½Π° ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€. Π¦Π΅Π»Π΅Π²ΠΎΠΉ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠΎΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠ² Π½Π° Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°Ρ… AVR (всС Arduino), сСмСйства Xtensa (ESP32/ESP8266), ARM ΠΈ частично RISC-V. Π’Π°ΠΊΠΆΠ΅ компилятор ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ выполняСмыС Ρ„Π°ΠΉΠ»Ρ‹ для Linux ΠΈ WebAssembly (Π² срСднСм Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΎΠ±Ρ€Π°Π·Π° становится мСньшС, Ρ‡Π΅ΠΌ ΠΏΡ€ΠΈ компиляции Π² Ρ†Π΅Π»Π΅Π²ΡƒΡŽ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡƒ wasm32 Ρ‡Π΅Ρ€Π΅Π· ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ компилятор Go).

ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ собран ΠΈΠ· исходных тСкстов, установлСн для Windows / Linux ΠΈΠ»ΠΈ MacOS, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π·Π°ΠΏΡƒΡ‰Π΅Π½ с использованиСм Docker. ΠŸΡ€ΠΈ установкС ΠΈΠ· ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² для сборки ΠΊΠΎΠ΄Π° для ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠ² Π½Π° Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π΅ AVR Π½ΡƒΠΆΠ½ΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ avr-gcc, avr-libc ΠΈ avrdude (для взаимодСйствия с Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊΠΎΠΌ).

ПослС установки становится доступной ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки tinygo, которая ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ использована Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… сцСнариях:

  • tinygo build -o <name> -target <platform> path — сборка Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΎΠ±Ρ€Π°Π·Π° для ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, arduino ΠΈΠ»ΠΈ nintendoswitch. Π’ΠΈΠΏ ΠΎΠ±Ρ€Π°Π·Π° опрСдСляСтся ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠΎΠΉ ΠΈ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ΠΌ Ρ„Π°ΠΉΠ»Π°, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€.

    • ll — созданиС тСкстового IR-прСдставлСния;

    • bc — созданиС Π±ΠΈΡ‚ΠΊΠΎΠ΄Π° LLVM;

    • hex — созданиС Ρ„Π°ΠΉΠ»Π° Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ Intel HEX для ΠΏΡ€ΠΎΡˆΠΈΠ²ΠΊΠΈ Π½Π° ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€;

    • bin — созданиС Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° для ΠΏΡ€ΠΎΡˆΠΈΠ²ΠΊΠΈ Π½Π° ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€;

    • wasm — созданиС webassembly-Ρ„Π°ΠΉΠ»Π° для запуска Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅.

  • tinygo flash -target <platform> path — сборка ΠΎΠ±Ρ€Π°Π·Π° ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° ΠΏΡ€ΠΎΡˆΠΈΠ²ΠΊΠΈ Π½Π° ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€;

  • tinygo gdb — созданиС ΠΎΡ‚Π»Π°ΠΆΠΈΠ²Π°Π΅ΠΌΠΎΠ³ΠΎ ΠΎΠ±Ρ€Π°Π·Π° ΠΊΠΎΠ΄Π° (с Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠΉ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΎΠΉ Π½Π° ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€) ΠΈ запуск ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠ°;

  • tinygo run — Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° ΠΈ запуск выполняСмого ΠΊΠΎΠ΄Π° Π½Π° Ρ†Π΅Π»Π΅Π²ΠΎΠΌ устройствС;

  • tinygo clean — ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹Ρ… Π°Ρ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚ΠΎΠ².

ΠŸΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ компиляции ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ (-opt=0 — отсутствиС ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΉ, 1 — минимальная оптимизация (ΠΏΠΎΠ»Π΅Π·Π½Π° ΠΏΡ€ΠΈ нСобходимости изучСния IR), 2 — Ρ…ΠΎΡ€ΠΎΡˆΠ°Ρ оптимизация, s — оптимизация ΠΏΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρƒ ΠΊΠΎΠ΄Π°, z — агрСссивная оптимизация). ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ сборка мусора интСгрируСтся Π² скомпилированный ΠΊΠΎΠ΄ (ΠΈ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ объСм ΠΎΠ±Ρ€Π°Π·Π°), ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π·Π°Π΄Π°Π½Π° модСль управлСния ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ (-gc=none — автоматичСскоС ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ отсутствуСт, leaking — Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΎ Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅ памяти, автоматичСски Π½Π΅ освобоТдаСтся, conservative — сборка мусора Π½Π° основС Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° mark-sweep). Π’Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π·Π°Π΄Π°Π½Π° рСализация ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊΠ°, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ для AVR ΠΌΠΎΠΆΠ½ΠΎ Π΅Π³ΠΎ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ -scheduler= none. ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ -size Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»Π΅Π·Π½Π° для получСния ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Π΅ ΠΎΠ±Ρ€Π°Π·Π°.

Для доступа ΠΊ ΠΎΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΡŽ (с ΡƒΡ‡Π΅Ρ‚ΠΎΠΌ спСцифики Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ ΠΈ/ΠΈΠ»ΠΈ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ ΠΏΠ»Π°Ρ‚Ρ‹) ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΠ°ΠΊΠ΅Ρ‚ machine, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ прСдставляСт Π½Π°Π±ΠΎΡ€ констант для ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ интСрфСйсов gpio (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ†ΠΈΡ„Ρ€ΠΎΠ²Ρ‹Ρ… ΠΈ Π°Π½Π°Π»ΠΎΠ³ΠΎΠ²Ρ‹Ρ… ΠΏΠΈΠ½ΠΎΠ²) ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² для взаимодСйствия с Π½ΠΈΠΌΠΈ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Configure для настройки Ρ€Π΅ΠΆΠΈΠΌΠ°, Low/High для ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ состояния Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΠΈΠ½Π°). Π’Π°ΠΊΠΆΠ΅, Π² зависимости ΠΎΡ‚ возмоТностСй ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π°, ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ΡΡ структуры для взаимодСйствия Ρ‡Π΅Ρ€Π΅Π· ΡˆΠΈΠ½Ρ‹ I2C, SPI, UART, ΠΏΡ€ΠΈ этом ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½Ρ‹Π΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, Ρ‚Π°ΠΊ ΠΈ (для Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠ²) программная эмуляция ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠ² ΡˆΠΈΠ½Ρ‹. ΠŸΡ€ΠΈ нСобходимости создания ΠΊΠΎΠ΄Π° с Ρ‚ΠΎΡ‡Π½Ρ‹ΠΌ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π΅ΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΉ эмуляции ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠ² Ρ‡Π΅Ρ€Π΅Π· GPIO) для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΊΠΎΠ΄ Π½Π° ассСмблСрС (зависит ΠΎΡ‚ Ρ‚ΠΈΠΏΠ° ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π°).

Рассмотрим нСсколько ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² ΠΊΠΎΠ΄Π° Π½Π° Go для запуска Π½Π° ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π΅.

Аналогом Hello World для языков программирования являСтся ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅-ΠΌΠΈΠ³Π°Π»ΠΊΠ°, которая ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ (ΠΈΠ»ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹ΠΉ Ρ‡Π΅Ρ€Π΅Π· GPIO-ΠΏΠΈΠ½Ρ‹) свСтодиод ΠΈ цикличСски ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ состояниС Π΅Π³ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ. Для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ‚Π°ΠΊΠΎΠ³ΠΎ прилоТСния Π±ΡƒΠ΄Π΅Ρ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π΄Π²Π° ΠΏΠ°ΠΊΠ΅Ρ‚Π°: timer (для выполнСния Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡΠΌΠΈ состояния) ΠΈ machine (для доступа ΠΊ GPIO, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ свСтодиод).

package main
import (
    "machine"
    "time"
)

ΠŸΡ€ΠΈ запускС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΏΡ€Π΅ΠΆΠ΄Π΅ всСго Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠΌ настройку GPIO Π² Ρ€Π΅ΠΆΠΈΠΌ Π²Ρ‹Π²ΠΎΠ΄Π° (Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ константу LED для опрСдСлСния ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° GPIO, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ Π½Π° ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΌ устройствС ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ встроСнный свСтодиод):

    led := machine. LED
    led.Configure(machine.PinConfig{Mode: machine.PinOutput})

Π”Π°Π»Π΅Π΅ Π² Ρ†ΠΈΠΊΠ»Π΅ Π±ΡƒΠ΄Π΅ΠΌ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ состояниС свСтодиода ΠΈ Ρ€Π°Π·Π΄Π΅Π»ΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ

    for {
        led.Low()
        time.Sleep(time.Millisecond * 500)
        led.High()
        time.Sleep(time.Millisecond * 500)
    }

ΠŸΠΎΠ»Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ прилоТСния ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Ρ‚Π°ΠΊ:

package main
import (
  "machine"
  "time"
)
func main() {
    led := machine.LED
    led.Configure(machine.PinConfig{Mode: machine.PinOutput})
    for {
        led.Low()
        time.Sleep(time.Millisecond * 500)
        led.High()
        time.Sleep(time.Millisecond * 500)
    }
}

Запустим нашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½Π½ΠΎΠΌ ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π΅, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ для Arduino Uno:

tinygo flash -target arduino .

Рассмотрим Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π±ΠΎΠ»Π΅Π΅ слоТный сцСнарий с использованиСм Π΄Π°Π½Π½Ρ‹Ρ… аксСлСромСтра ADXL335. Для доступа ΠΊ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½Π½ΠΎΠΌΡƒ устройству Π±ΡƒΠ΄Π΅Ρ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΏΠ°ΠΊΠ΅Ρ‚ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π° ΠΈΠ· ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ рСпозитория.

import "tinygo.org/x/drivers/adxl345"

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ устройство взаимодСйствуСт с ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠΌ ΠΏΠΎ шинС I2C, ΠΏΠ΅Ρ€Π΅Π΄ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ настройку I2C (доступна для Arduino Ρ‡Π΅Ρ€Π΅Π· machine.I2C0), послС ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ выполняСтся конфигурация оборудования ΠΈ становятся доступными ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ для получСния. Π’ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с аксСлСромСтром Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹Π·Π²Π°Π½Π° функция Halt, которая ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ устройство ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚.

machine.I2C0.Configure(machine.I2CConfig{})
sensor := adxl345.New(machine.I2C0)
sensor.Configure()
x,y,z,err := sensor.ReadAcceleration()
sensor.Halt()

ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π°Ρ информация ΠΏΠΎ использованию Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ adxl345 ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π°ΠΉΠ΄Π΅Π½Π° Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ посмотрим Π½Π° использованиС возмоТностСй ассСмблСрных вставок для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ‚ΠΎΡ‡Π½ΠΎΠΉ настройки Ρ‚Π°ΠΉΠΌΠΈΠ½Π³Π°. Π’ качСствС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° посмотрим Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡƒΡŽ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° WS2812B для AVR (Π² ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΌ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π΅ поддСрТиваСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° WS2812), которая ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π²ΠΎ мноТСствС свСтодиодных ΠΏΠ°Π½Π΅Π»Π΅ΠΉ ΠΈ Π»Π΅Π½Ρ‚. ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒΡŽ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° являСтся использованиС скваТности для кодирования значСния Π±ΠΈΡ‚. Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ подстройка Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… характСристик ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ вставка пустых ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ (nop).

//ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ° Π±Π°ΠΉΡ‚Π° (ассСмблСр, для ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π°)
func (sp Spot) sendByte(pin machine.Pin, value byte) {
  portSet, maskSet := pin.PortMaskSet()
  portClear, maskClear := pin.PortMaskClear()
  avr.AsmFull(`
		ldi r17, 8 ; bit counter
  send_bit1:
		st {portSet}, {maskSet} ; set to 1
		lsl {value}
		brcs skip_store1
		st {portClear}, {maskClear} ; set to 0 (if zero bit)
		nop
		nop
	skip_store1:
		nop ; protocol timing adjust
		nop
		nop
		nop
		st {portClear}, {maskClear} ; end of pulse
		nop ; protocol timing adjust
		nop
		nop
		subi r17, 1 ; bit loop
		brne send_bit1 ; send next bit
`, map[string]interface{}{
		"value": value,
		"portSet": portSet,
		"maskSet": maskSet,
		"portClear": portClear,
		"maskClear": maskClear,
	})
}

Π₯очСтся ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° использованиС рСгистров. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π² AVR систСмах использованиС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ памяти вСсьма ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΎ, для хранСния Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… (ΠΏΡ€ΠΈ оптимизациях —opt=2 ΠΈ Π²Ρ‹ΡˆΠ΅) ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ рСгистры процСссора ΠΈ это ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°ΠΌ ΠΏΡ€ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΈ рСгистров Π² ассСмблСрном ΠΊΠΎΠ΄Π΅ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π½Π° этапС компиляции с —opt=z Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ошибка ΠΈΠ·-Π·Π° нСвозмоТности Π·Π°Ρ€Π΅Π·Π΅Ρ€Π²ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ рСгистры для хранСния всСх Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

Для Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²ΠΎΠ³ΠΎ доступа ΠΊ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½Ρ‹ΠΌ возмоТностям ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° доступны ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ device/<arch> (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, device/avr) ΠΈ runtime/volatile ΠΈ runtime/interrupt. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ volatile ΠΌΠΎΠΆΠ΅Ρ‚ Π°Π½ΠΎΠ½ΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ явноС Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π² рСгистрС (Ρ‚ΠΈΠΏ *volatile.Register8). Π§Π΅Ρ€Π΅Π· ΠΏΠ°ΠΊΠ΅Ρ‚ device/avr ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ доступ ΠΊ линиям ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠΉ, связанным с Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½Ρ‹ΠΌΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌΠΈ ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, avr.IRQ_SPI_STC для рСгистрации ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° прСрывания ΠΏΡ€ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠΈ Π΄Π°Π½Π½Ρ‹Ρ… Ρ‡Π΅Ρ€Π΅Π· Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½Ρ‹ΠΉ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ SPI с использованиСм interrupt.New(avr.IRQ_SPI_STC, handler), Π³Π΄Π΅ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ структуру interrupt. Interrupt.

Аналогично ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Ρ‹ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½Ρ‹Π΅ возмоТности для Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠ², Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΡ€ΠΈ использовании Xtensa (ESP32/ESP8266) ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ AT-ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ для Wi-Fi Π°Π΄Π°ΠΏΡ‚Π΅Ρ€Π° с использованиСм Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π° ΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚Π° tinygo.org/x/drivers/net. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… выполняСтся асинхронно Π²Π°ΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ goroutines ΠΈ ΠΊΠ°Π½Π°Π»Ρ‹ для ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ-получСния Π΄Π°Π½Π½Ρ‹Ρ… Ρ‡Π΅Ρ€Π΅Π· ΡΠ΅Ρ‚ΡŒ. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ использования goroutines для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π² Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π΅ mqtt-router.

ΠŸΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΊΠΎΠ΄Π° ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ всС языковыС возмоТности Go, ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ структуры с функциями для описания бизнСс-Π»ΠΎΠ³ΠΈΠΊΠΈ ΠΈ интСрфСйсов устройств Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π°. Π’ зависимости ΠΎΡ‚ доступного объСма памяти ΠΈ Ρ‚ΠΈΠΏΠ° процСссора ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹ многозадачности (goroutines, channels), динамичСскоС Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅ памяти ΠΈ сборку мусора, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π³ΠΎΡ‚ΠΎΠ²Ρ‹Π΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹, Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Π² доступных ΠΏΠ°ΠΊΠ΅Ρ‚Π°Ρ… Π½Π° Go (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π²Π΅Π±-сСрвСр Π½Π° ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π΅). Π’Π°ΠΊΠΆΠ΅ доступны ΠΌΠ½ΠΎΠ³ΠΈΠ΅ стандартныС ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ Go, Π½ΠΎ особоС Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π°Π΄ΠΎ ΡƒΠ΄Π΅Π»ΡΡ‚ΡŒ динамичСскому Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΡŽ памяти, особСнно Π½Π° ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π°Ρ… с нСбольшим объСмом ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ памяти. ИспользованиС динамичСских массивов (с Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ памяти Ρ‡Π΅Ρ€Π΅Π· make) Π² этом случаС Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΎ Ρ‚ΠΈΠΏΠΎΠΌ []byte, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ являСтся эквивалСнтом строки. Для Ρ€Π°Π±ΠΎΡ‚Ρ‹ со строками Π² TinyGo доступны ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ fmt, strconv, strings, unicode ΠΈ text. Π’Π°ΠΊΠΆΠ΅ Π΅ΡΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ encoding ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ Ρ„ΠΎΡ€ΠΌΠ°ΠΌΠΈ кодирования Π΄Π°Π½Π½Ρ‹Ρ… (ΠΊΡ€ΠΎΠΌΠ΅ xml), crypto для ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ ΠΈ Ρ…ΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ, archive ΠΈ compress для Ρ€Π°Π±ΠΎΡ‚Ρ‹ со сТатыми Π΄Π°Π½Π½Ρ‹ΠΌΠΈ. image для ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ, math для матСматичСских дСйствий, net для ΠΎΠ±ΠΌΠ΅Π½Π° Π΄Π°Π½Π½Ρ‹ΠΌΠΈ с использованиСм сСтСвых ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠ² (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, net/http) ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅. Из ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ использования матСматичСских ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² хочСтся ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ чисСл с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ сущСствСнно ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° скомпилированного ΠΎΠ±Ρ€Π°Π·Π° ΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, для Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ случайных чисСл ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΡˆΡƒΠΌ, ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌΡ‹ΠΉ с Π½Π΅ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹ΠΌΠΈ Π°Π½Π°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ³ΠΎ Π²Ρ…ΠΎΠ΄Π° ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠΉ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ случайных чисСл (Ссли ΠΎΠ½ прСдусмотрСн Π² ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π΅). Π’ TinyGo нСдоступны os/exec, os/signal ΠΈ os/user, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π½Π° ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π°Ρ… отсутствуСт опСрационная систСма ΠΈΠ»ΠΈ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹ взаимодСйствия с Π½Π΅ΠΉ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ ΠΎΡ‚ принятых Π² POSIX.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ использования TinyGo ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π² исходном ΠΊΠΎΠ΄Π΅ ΠΏΡ€ΠΎΡˆΠΈΠ²ΠΊΠΈ для ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΠ° устройства AirCube Π½Π° Github.

А всСх, ΠΊΡ‚ΠΎ Π΄ΠΎΡ‡ΠΈΡ‚Π°Π» Π΄ΠΎ ΠΊΠΎΠ½Ρ†Π°, Ρ…ΠΎΡ‡Ρƒ ΠΏΡ€ΠΈΠ³Π»Π°ΡΠΈΡ‚ΡŒ Π½Π° бСсплатноС занятиС ΠΎΡ‚ ΠΌΠΎΠΈΡ… ΠΊΠΎΠ»Π»Π΅Π³ ΠΈΠ· OTUS ΠΏΠΎ Ρ‚Π΅ΠΌΠ΅: «Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Ρ‹ языка Golang». На занятии Π±ΡƒΠ΄ΡƒΡ‚ рассмотрСны Ρ‚Π°ΠΊΠΈΠ΅ понятия ΠΊΠ°ΠΊ: процСсс опрСдСлСния структур, инкапсуляция ΠΏΠΎΠ»Π΅ΠΉ структуры, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² структуры. ΠŸΠΎΠ±Π΅ΡΠ΅Π΄ΡƒΠ΅ΠΌ ΠΏΡ€ΠΎ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ ΠΈ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹Π΅ структуры. Π’Π°ΠΊΠΆΠ΅ постараСмся ΡƒΡΠΏΠ΅Ρ‚ΡŒ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ ΠΈ ΠΏΡ€ΠΎ структурныС тэги ΠΈ ΠΈΡ… использованиС Π² контСкстС JSON, XML ΠΈ Π‘Π£Π‘Π”. ПослС занятия Π²Ρ‹ смоТСтС ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ… ΠΌΠ΅ΠΆΠ΄Ρƒ собой.

Π—Π°Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π½Π° Π²Π΅Π±ΠΈΠ½Π°Ρ€.

ΠœΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Ρ‹ Arduino

ΠœΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Ρ‹ Arduino
Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ½Π°Π»ΠΈΡ‡ΠΈΡŽ ΠΏΠΎΠ΄ Π·Π°ΠΊΠ°Π· Ρ†Π΅Π½Π° дСшСвая Ρ†Π΅Π½Π° дорогая
  • Arduino UNO R3 SMD Ch440 30. 47 Br

    Π’ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ

  • Arduino UNO R3 DIP + экранированый USB кабСль 43.50 Br

    Π’ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ

  • Arduino Nano V3.0 Ch440 Chip (Π½Π΅ припаяна Π³Ρ€Π΅Π±Π΅… 30.00 Br

    Π’ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ

  • Arduino Nano V3.0 Ch440 Chip + Mini USB кабСль 33.00 Br

    Π’ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ

  • Arduino Pro Mini ATMEGA328P 5V/16M 21.00 Br

    Π’ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ

  • Arduino Nano V3.0 ATmega328P 5V 16MHz Ch440 Ty… 34.50 Br

    Π’ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ

  • Arduino Nano V3. 0 FT232 Chip + Mini USB кабСль 39.00 Br

    Π’ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ

  • Arduino Pro Micro ATmega32U4 5V/16MHz 37.50 Br

    Π’ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ

  • Arduino UNO R3 c ΠΊΠ°Π±Π΅Π»Π΅ΠΌ 60.00 Br

    Π’ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ

  • Arduino LilyPad 328 ATmega328P Main Board 16M 33.00 Br

    Π’ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ

  • Arduino MEGA 2560 R3 Π±Π΅Π· Π»ΠΎΠ³ΠΎΡ‚ΠΈΠΏΠ° + USB кабСль 64.80 Br

    Π’ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ

  • Arduino Micro Atmega32u4, 5V 16MHz + Micro USB … 57.00 Br

    Π’ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ

  • WiFi R3 ATmega328P+ESP8266 (32Mb memory), USB-T. .. 63.00 Br

    Π’ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ

  • Leonardo R3 с Π»ΠΎΠ³ΠΎΡ‚ΠΈΠΏΠΎΠΌ Atmega32u4 28.45 Br

    Π’ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ

  • Arduino MEGA 2560 R3 Ch440 + USB кабСль 12.000 MHZ 53.65 Br

    Π’ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ

  • Leonardo R3 с Π»ΠΎΠ³ΠΎΡ‚ΠΈΠΏΠΎΠΌ Atmega32u4 33.70 Br

    Π’ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ

  • Arduino nano V3.0 pro XI 8F328P-U 14.10 Br

    Π’ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ

  • Arduino MEGA 2560 WiFi ESP8266 32MB Memory USB… 90.00 Br

    Π’ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ

  • Π˜Π½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ BLE Nano Bluetooth CC254. .. 54.00 Br

    Π’ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ

  • Arduino Pro Mini ATMEGA328P 5V/16M Π½Π΅ припаяна … 27.00 Br

    Π’ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ

  • Arduino DUE 2013 + Micro USB кабСль 201.00 Br

    Π’ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ

  • ΠŸΠ»Π°Ρ‚Π° Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ Ciclop для Arduino Uno. Для ΠΏΠΎ… 45.00 Br

    Π’ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ

  • Arduino Nano 3.0 с ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΎΠΌ 39.00 Br

    1-4 НСдСли

  • ATmega32A-AU 10.95 Br

    1-4 НСдСли

  • KittenBot Wifi 90. 00 Br

    1-4 НСдСли

  • ΠŸΠ»Π°Ρ‚Π° Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ для Arduino Mega (RAMPS 1.4 Bo… 23.78 Br

    1-4 НСдСли

  • Arduino Pro Mini ATMEGA328P 3.3V/8M 22.50 Br

    1-4 НСдСли

  • Π˜Π½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ бСспроводной ΠΌΠΎΠ΄ΡƒΠ»ΡŒ RF Nano NRF… 71.44 Br

    1-4 НСдСли

  • SMD-ΠΏΠ»Π°Ρ‚Π° MEGA 2560 R3 с Π»ΠΎΠ³ΠΎΡ‚ΠΈΠΏΠΎΠΌ 61.24 Br

    1-4 НСдСли

  • ArduinoMEGA ADK + Usb кабСль 111.67 Br

    1-4 НСдСли

  • DUE 2013 Π±Π΅Π· Π»ΠΎΠ³ΠΎΡ‚ΠΈΠΏΠ° 74. 12 Br

    1-4 НСдСли

  • Arduino Nano ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Π°Ρ вСрсия (Π˜Ρ‚Π°Π»ΠΈΡ) 210.29 Br

    1-4 НСдСли

  • ATmega88PA-AU 10.35 Br

    1-4 НСдСли

  • ΠžΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½Π°Ρ Arduino Mega 2560 R3 300.00 Br

    1-4 НСдСли

  • ELM327 Super Mini Wifi OBD2 сканСр 56.25 Br

    1-4 НСдСли

  • ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ для построСния колёсного Ρ€ΠΎΠ±ΠΎΡ‚Π° Rome… 153.98 Br

    1-4 НСдСли

  • Arduino Uno Π½Π° Atmega8 27.00 Br

    1-4 НСдСли

  • ΠŸΠ»Π°Ρ‚Π° Pro Mini ATMEGA328P 5V 16M (ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Π°Ρ . .. 18.84 Br

    1-4 НСдСли

  • DIP-ΠΏΠ»Π°Ρ‚Π° UNO R3 Π±Π΅Π· Π»ΠΎΠ³ΠΎΡ‚ΠΈΠΏΠ° 27.39 Br

    1-4 НСдСли

  • ATMEGA2560-16AU USB Ch440G 78.00 Br

    1-4 НСдСли

  • ΠžΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½Π°Ρ Arduino UNO R3 120.00 Br

    1-4 НСдСли

  • Arduino Yun 521.40 Br

    1-4 НСдСли

  • Arduino esplora с экраном 120.00 Br

    1-4 НСдСли

  • Распаянная микросхСма Nano V3 ATmega328P 5V 16M… 28.35 Br

    1-4 НСдСли

  • ΠŸΠ»Π°Ρ‚Π° Pro Mini ATMEGA328P 3. 3V 8M 10.69 Br

    1-4 НСдСли

  • Nano 3.0 FT232 51.90 Br

    1-4 НСдСли

  • Frearduino Uno + USB кабСль 143.02 Br

    1-4 НСдСли

  • DUE 2013 Π±Π΅Π· Π»ΠΎΠ³ΠΎΡ‚ΠΈΠΏΠ° 117.05 Br

    1-4 НСдСли

  • Arduino MEGA ADK 120.00 Br

    1-4 НСдСли

  • Arduino MEGA 2560 + 3.2inch TFT LCD + Π°Π΄Π°ΠΏΡ‚Π΅Ρ€ +… 158.40 Br

    1-4 НСдСли

  • Arduino Leonardo R3 + Micro USB кабСль ( с Π»ΠΎΠ³ΠΎ… 28.45 Br

    1-4 НСдСли

  • ΠŸΠ»Π°Ρ‚Π° Pro Mini ATMEGA328P 5V 16M (ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Π°Ρ . .. 14.19 Br

    1-4 НСдСли

  • Arduino Leonardo 45.00 Br

    1-4 НСдСли

  • Seeeduino V4.2(ATMega328P) 74.09 Br

    1-4 НСдСли

  • ΠŸΠ»Π°Ρ‚Π° Pro Mini ATMEGA328P 3.3V 8M 13.48 Br

    1-4 НСдСли

  • KUONGSHUN MEGA 2560 R3 53.63 Br

    1-4 НСдСли

  • Arduino Pro Mini (5Π², 16ΠœΠ“Π¦) 27.00 Br

    1-4 НСдСли

  • Arduino Pro Micro 39.00 Br

    1-4 НСдСли

  • SMD-ΠΏΠ»Π°Ρ‚Π° MEGA 2560 R3 с Π»ΠΎΠ³ΠΎΡ‚ΠΈΠΏΠΎΠΌ 46. 20 Br

    1-4 НСдСли

  • DIP-ΠΏΠ»Π°Ρ‚Π° UNO R3 Π±Π΅Π· Π»ΠΎΠ³ΠΎΡ‚ΠΈΠΏΠ° 32.07 Br

    1-4 НСдСли

  • KUONGSHUN UNO R3 30.00 Br

    1-4 НСдСли

  • Arduino Pro Mini (5Π², 16ΠœΠ“Π¦) 9.00 Br

    1-4 НСдСли

  • Arduino Mini USB ATmega32U4 Pro Micro 5V 16MHz … 36.00 Br

    1-4 НСдСли

  • Arduino UNO R3 + 2.4inch TFT LCD + Π°Π΄Π°ΠΏΡ‚Π΅Ρ€ + US… 115.50 Br

    1-4 НСдСли


Ардуино ΠΈ ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Ρ‹ — Pimoroni

Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ†Π΅Π½Ρ‹ Π² Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π²Π°Π»ΡŽΡ‚Π΅, Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Π΅Π΅ Π½ΠΈΠΆΠ΅.

Ρ„ΡƒΠ½Ρ‚ΠΎΠ² стСрлингов Π΄ΠΎΠ»Π»Π°Ρ€ БША Π΅Π²Ρ€ΠΎ ΠΈΠ΅Π½Π° австралийский Π΄ΠΎΠ»Π»Π°Ρ€ норвСТских ΠΊΡ€ΠΎΠ½ ΡˆΠ²Π΅ΠΉΡ†Π°Ρ€ΡΠΊΠΈΡ… Ρ„Ρ€Π°Π½ΠΊΠ°Ρ… новозСландский Π΄ΠΎΠ»Π»Π°Ρ€ БАПР Π‘Π’Π”

ΠŸΠΎΠΆΠ°Π»ΡƒΠΉΡΡ‚Π°, ΠΎΠ±Ρ€Π°Ρ‚ΠΈ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅:

Если Ρƒ вас Π΅ΡΡ‚ΡŒ ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ вопросы, Π½Π΅ ΡΡ‚Π΅ΡΠ½ΡΠΉΡ‚Π΅ΡΡŒ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ Π½Π°ΠΌ.

ΡΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎ Π½Π°ΠΈΠ»ΡƒΡ‡ΡˆΠ΅ΠΌΡƒ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΈΡŽΡ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌΡ‹Π΅Π½ΠΎΠ²Π΅ΠΉΡˆΠΈΠ΅Π»ΡƒΡ‡ΡˆΠΈΠ΅ ΠΏΡ€ΠΎΠ΄Π°ΠΆΠΈΡ†Π΅Π½Π° 163264 Π½Π° страницу Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Π½Π°Π»ΠΈΡ‡ΠΈΠΈ

Поиск Π½Π΅ Π΄Π°Π» Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ².

ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ большС продуктов…

${ stockHtml }

${ hit.product_title } ${ hit.variant_title ? («-» + hit.variant_title): «» }:

${ hit.description_first_paragraph}

` Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ $(resultHtml) } const searchResultCallback = (попадания, аспСкты, количСство) => { debug(«> ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΉ Π²Ρ‹Π·ΠΎΠ² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² поиска», совпадСния, фасСты, количСство) $(«#search . load-more-results»).toggle(hits.page 0) { $(«#search.no-results»).hide() ΠΏΡƒΡΡ‚ΡŒ html = «» for(let hit of hits.hits) { $(«#search .results»).append(createSearchResultFull(ΠΏΠΎΠΏΠ°Π΄Π°Π½ΠΈΠ΅)) } }Π΅Ρ‰Π΅{ if(searchSearcher.inStockOnly) {$(«#search .no-results .message»).html(«Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Ρƒ нас Π΅ΡΡ‚ΡŒ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ подходящСС, Ρ‡Π΅Π³ΠΎ Π½Π΅Ρ‚ Π² Π½Π°Π»ΠΈΡ‡ΠΈΠΈ. Π’ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Ρ‚ΠΎΠ²Π°Ρ€Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π½Π΅Ρ‚ Π² Π½Π°Π»ΠΈΡ‡ΠΈΠΈ.»)} для (ΠΏΡƒΡΡ‚ΡŒ я = 0; я `)) } $(«#поиск .Π±Π΅Π· Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ²»).show() } // обновляСм списки Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ² $(«#search .filters»).find(«Ρ€Π°Π·Π΄Π΅Π»»).each((i, e) => { buildFilters($(«#search»), searchSearcher, $(e).data(«type»), аспСкты, количСство) }) ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒΡ€Π΅ΠΉΡ‚ΠΈΠ½Π³ΠΈ() ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒΠ¦Π΅Π½Ρ‹() ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒΠ—Π½Π°Ρ‡ΠΊΠΈ() } var searchSearcher = Π½ΠΎΠ²Ρ‹ΠΉ ΠΈΡΠΊΠ°Ρ‚Π΅Π»ΡŒ([], searchResultCallback) searchSearcher.permanentFilters = true var searchLanding = window.location.pathname == «/search» Π²Π°Ρ€ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΉ URL = ноль Π²Π°Ρ€ послСдний запрос = «» const queryInput = (запрос) => { Ссли(!searchLanding) { if(!lastQuery && запрос) { debug(«> Π½Π°Ρ‡Π°Ρ‚ΡŒ поиск, ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ состояниС URL», document. location.href) ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΉ URL = document.location.href $(«#поиск»).show() $(«#ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚»).ΡΠΊΡ€Ρ‹Ρ‚ΡŒ() } Ссли (послСдний запрос && !запрос) { debug(«> Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡŒ поиск, Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒΡΡ ΠΊ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌΡƒ URL-адрСсу», previousUrl) history.replaceState(null, window.title, ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΉUrl) $(«#поиск»).ΡΠΊΡ€Ρ‹Ρ‚ΡŒ() $(«#ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚»).ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ() } Ссли (запрос) { searchSearcher.queryText = запрос ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒΠŸΠΎΠΈΡΠΊ() } послСдний запрос = запрос }Π΅Ρ‰Π΅{ searchSearcher.queryText = запрос ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒΠŸΠΎΠΈΡΠΊ() } } $(функция() { Ссли (window.location.pathname == «/search») { $(«#поиск»).show() $(«#ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚»).ΡΠΊΡ€Ρ‹Ρ‚ΡŒ() searchSearcher.queryText = urlGet(«q», «») $(«#search_input_desktop»).val(searchSearcher.queryText) $(«#search_input_mobile»).val(searchSearcher.queryText) $(«#search .filters»).find(«Ρ€Π°Π·Π΄Π΅Π»»).each((i, e) => { searchSearcher.filters[$(e).data(«Ρ‚ΠΈΠΏ»)] = urlGet($(e). data(«Ρ‚ΠΈΠΏ»)) }) Ссли(urlGet(«Π°ΠΊΡ†ΠΈΠΈ»)) { $(«#поиск .Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° складС»).prop(«ΠΏΡ€ΠΎΠ²Π΅Ρ€Π΅Π½ΠΎ», ΠΏΡ€Π°Π²Π΄Π°) searchSearcher.inStockOnly = истина } Ссли (urlGet («ΡΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ»)) { $(«#search .sort-by»).val(urlGet(«sort»)) searchSearcher.sort = urlGet(«ΡΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ°») } Ссли(urlGet(«ΡΡ‚Ρ€Π°Π½ΠΈΡ†Π°»)) { searchSearcher.preloadPageCount = parseInt(urlGet(«ΡΡ‚Ρ€Π°Π½ΠΈΡ†Π°»)) } searchSearcher.pageSize = ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ(«searchPageSize», 32) $(«#search .per-page»).val(get(«searchPageSize», 32)) searchSearcher.doSearch() } }) // Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ поиск ΠΈ ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ URL const updateSearch = (страница = 1) => { searchSearcher.page = страница searchSearcher.doSearch() ΠΏΡƒΡΡ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ = [] if(searchSearcher.queryText) {parameters.push(`q=${searchSearcher.queryText}`)} for(let filter of Object.keys(searchSearcher.filters)) { Ссли (searchSearcher.filters[Ρ„ΠΈΠ»ΡŒΡ‚Ρ€]) { ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹.push(`${Ρ„ΠΈΠ»ΡŒΡ‚Ρ€}=${searchSearcher. filters[Ρ„ΠΈΠ»ΡŒΡ‚Ρ€]}`) } } if(searchSearcher.page != 1) {parameters.push(`page=${searchSearcher.page}`)} if(searchSearcher.sort) {parameters.push(`sort=${searchSearcher.sort}`)} if(searchSearcher.inStockOnly) {parameters.push(`stock=true`)} ΠΏΡƒΡΡ‚ΡŒ queryString = ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹.Π΄Π»ΠΈΠ½Π° > 0? «?» + ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹.соСдинСниС(«&») : «» history.replaceState(null, window.title, «/search» + queryString) } const showOutOfStock = () => { $(«#поиск .Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° складС»).prop(«ΠΏΡ€ΠΎΠ²Π΅Ρ€Π΅Π½ΠΎ», лоТь) searchSearcher.inStockOnly = лоТь ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒΠŸΠΎΠΈΡΠΊ() } $(«#search_input_desktop»).on(«input», (e) => { // Π²Π²ΠΎΠ΄ поиска Π½Π° Ρ€Π°Π±ΠΎΡ‡Π΅ΠΌ столС searchSearcher.queryText = $(«#search_input_desktop»).val().trim() $(«#search_input_mobile»).val(searchSearcher.queryText) queryInput (searchSearcher.queryText) }) $(«#search_input_mobile»).on(«input», (e) => { // Π²Π²ΠΎΠ΄ мобильного поиска searchSearcher.queryText = $(«#search_input_mobile»).val().trim() $(«#search_input_desktop»). val(searchSearcher.queryText) queryInput (searchSearcher.queryText) }) $(«#search .filters >section ul»).click((e) => { // Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ ΠΊΠ»ΠΈΠΊΠΎΠ² searchSearcher.filters[$(e.target).closest(«Ρ€Π°Π·Π΄Π΅Π»»).data(«Ρ‚ΠΈΠΏ»)] = $(e.target).hasClass(«Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ») ? ноль: $(e.target).data(«Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅») ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒΠŸΠΎΠΈΡΠΊ() }) $(«#search .per-page»).change((e) => { // элСмСнтов Π½Π° страницС set(«searchPageSize», parseInt($(e.target).val())) ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒΠŸΠΎΠΈΡΠΊ() }) $(«#search .sort-by»).change((e) => { // сортировка searchSearcher.sort = $(e.target).val() ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒΠŸΠΎΠΈΡΠΊ() }) $(«#search .Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° складС»).change((e) => { // Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° складС searchSearcher.inStockOnly = $(e.target).prop(«ΠΏΡ€ΠΎΠ²Π΅Ρ€Π΅Π½ΠΎ») ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒΠŸΠΎΠΈΡΠΊ() }) $(«#search .load-more-results»).click(() => { // Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ большС Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² updateSearch(searchSearcher.page + 1) })

    ΠΎΡ‡ΠΈΡΡ‚ΠΈΡ‚ΡŒ
    Π€ΠΈΠ»ΡŒΡ‚Ρ€
      ΠΎΡ‡ΠΈΡΡ‚ΠΈΡ‚ΡŒ
      ΠœΠ°Ρ€ΠΊΠ°
        ΠΎΡ‡ΠΈΡΡ‚ΠΈΡ‚ΡŒ
        Π’ΠΈΠΏ

          ΡΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎ ΠΏΡ€ΠΈΠ·Π½Π°ΠΊΠ°ΠΌΠ½ΠΎΠ²Π΅ΠΉΡˆΠΈΠ΅Π»ΡƒΡ‡ΡˆΠΈΠ΅ ΠΏΡ€ΠΎΠ΄Π°ΠΆΠΈΡ†Π΅Π½Π° 163264 Π½Π° страницу Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Π½Π°Π»ΠΈΡ‡ΠΈΠΈ

          Поиск Π½Π΅ Π΄Π°Π» Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ².

          ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ большС продуктов…

          Π‘Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅ ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠ² Arduino

          БСмСйство Arduino выпустило большоС количСство ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ Π½ΠΎΠ²ΠΈΡ‡ΠΊΠ°ΠΌΠΈ, Ρ‚Π°ΠΊ ΠΈ Π½Π° ΠΏΡ€ΠΎΠΌΡ‹ΡˆΠ»Π΅Π½Π½ΠΎΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅. ΠŸΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ Π΄Π²ΠΈΠ³Π°Ρ‚ΡŒΡΡ дальшС, Π΄Π°Π²Π°ΠΉΡ‚Π΅ разбСрСмся, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Ρ‹? ΠœΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Ρ‹ β€” это нСбольшиС ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Ρ‹ с процСссором ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ ΠΏΠ΅Ρ€ΠΈΡ„Π΅Ρ€ΠΈΠΉΠ½Ρ‹ΠΌΠΈ устройствами, Ρ‚Π°ΠΊΠΈΠΌΠΈ ΠΊΠ°ΠΊ Ρ‚Π°ΠΉΠΌΠ΅Ρ€Ρ‹, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ устройства Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π°, ΠΏΠ°ΠΌΡΡ‚ΡŒ ΠΈ всС эти ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹, встроСнныС Π² ΠΎΠ΄ΠΈΠ½ Ρ‡ΠΈΠΏ.

          БущСствуСт мноТСство ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠ², Π²Ρ‹ΠΏΡƒΡ‰Π΅Π½Π½Ρ‹Ρ… сСмСйством Arduino, Π² этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ сравним Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Ρ‹ сСмСйства Arduino.

          Π‘Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠ² Arduino

          БСмСйство Arduino содСрТит мноТСство ΠΏΠ»Π°Ρ‚ с Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π°ΠΌΠΈ ΠΈ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ ΠΏΠ΅Ρ€ΠΈΡ„Π΅Ρ€ΠΈΠΉΠ½Ρ‹ΠΌΠΈ устройствами, встроСнными Π² ΠΏΠ»Π°Ρ‚Ρƒ для упрощСния использования. ЗаписываСтся ΠΏΡ€ΠΎΡˆΠΈΠ²ΠΊΠ° Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊΠ° (ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, ΠΎΡ‚Π²Π΅Ρ‡Π°ΡŽΡ‰Π°Ρ Π·Π° ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΏΠ»Π°Ρ‚Ρ‹), ΠΈ всС это ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ‚ΡΡ Π² ΠΏΡ€ΠΎΡΡ‚ΡƒΡŽ срСду, ΠΈΠ·Π²Π΅ΡΡ‚Π½ΡƒΡŽ ΠΊΠ°ΠΊ интСгрированная срСда Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ (IDE). Π’ IDE ΠΊΠΎΠ΄Ρ‹ ΠΏΠΈΡˆΡƒΡ‚ΡΡ для Ρ€Π°Π·Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ², эти ΠΊΠΎΠ΄Ρ‹ извСстны ΠΊΠ°ΠΊ эскизы, ΠΈ всС эти описания ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΡŽΡ‚ΡΡ для создания ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π°, извСстного ΠΊΠ°ΠΊ Arduino.

          БущСствуСт мноТСство ΠΏΠ»Π°Ρ‚ Arduino, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для Ρ€Π°Π·Π½Ρ‹Ρ… Ρ†Π΅Π»Π΅ΠΉ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Arduino Uno для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…, Π° Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Arduino Mega ΠΈ Due. ΠœΡ‹ обсудим ΠΏΠ»Π°Ρ‚Ρ‹ Arduino, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡˆΠΈΡ€ΠΎΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ сообщСством Arduino.

          Arduino Uno

          Arduino Uno настроСн Π½Π° ATmega328P, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΠΌΠ΅Π΅Ρ‚ Π²Ρ‹ΡΠΎΠΊΡƒΡŽ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΈ Π½ΠΈΠ·ΠΊΠΎΠΌ энСргопотрСблСнии, ΠΊΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Arduino Uno ΠΈΠΌΠ΅Π΅Ρ‚ 14 Ρ†ΠΈΡ„Ρ€ΠΎΠ²Ρ‹Ρ… ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚ΠΎΠ² Π²Π²ΠΎΠ΄Π°/Π²Ρ‹Π²ΠΎΠ΄Π°, Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ 16 ΠΌΠ΅Π³Π°Π³Π΅Ρ€Ρ†, ΠΊΠ½ΠΎΠΏΠΊΡƒ сброса ΠΈ Ρ€Π°Π·ΡŠΠ΅ΠΌ USB. Arduino Uno β€” Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ рСкомСндуСмая ΠΏΠ»Π°Ρ‚Π° для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…, Π΅Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для домашнСй Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ, управлСния Π°Π²Π°Ρ€ΠΈΠΉΠ½Ρ‹ΠΌ освСщСниСм ΠΈ для мСдицинских инструмСнтов. ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ особСнностями этой доски ΡΠ²Π»ΡΡŽΡ‚ΡΡ; ΠΎΠ½ ΠΈΠΌΠ΅Π΅Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ³ΠΎ обнаруТСния ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ, ΡˆΠ΅ΡΡ‚ΡŒ Ρ€Π΅ΠΆΠΈΠΌΠΎΠ² сна ΠΈ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ ΠΊΠ°Π»ΠΈΠ±Ρ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€.

          Π”Ρ€ΡƒΠ³ΠΈΠ΅ особСнности Arduino Uno:

          Π Π°Π·ΠΌΠ΅Ρ€ ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° 8 Π±ΠΈΡ‚
          АрхитСктура RISC Он ΠΈΠΌΠ΅Π΅Ρ‚ 32*8 Ρ€Π°Π±ΠΎΡ‡ΠΈΡ… рСгистров ΠΎΠ±Ρ‰Π΅Π³ΠΎ назначСния ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΏΡ€ΠΎΠΏΡƒΡΠΊΠ½ΡƒΡŽ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ Π΄ΠΎ 16 MIPS Π½Π° частотС 16 ΠœΠ“Ρ†
          ΠŸΠ°ΠΌΡΡ‚ΡŒ Он ΠΈΠΌΠ΅Π΅Ρ‚ 32 ΠšΠ‘ внутрисистСмной самопрограммируСмой Ρ„Π»ΡΡˆ-памяти ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, 1 ΠšΠ‘ EEPROM ΠΈ 2 ΠšΠ‘ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΉ SRAM
          ΠŸΠ΅Ρ€ΠΈΡ„Π΅Ρ€ΠΈΠΉΠ½Ρ‹Π΅ элСмСнты Он ΠΈΠΌΠ΅Π΅Ρ‚ Π΄Π²Π° 8-Π±ΠΈΡ‚Π½Ρ‹Ρ… Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π°, 6 ΠΊΠ°Π½Π°Π»ΠΎΠ² ШИМ ΠΈ встроСнный ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ ΠΊΠΎΠΌΠΏΠ°Ρ€Π°Ρ‚ΠΎΡ€
          ΠšΠΎΠ½Ρ‚Π°ΠΊΡ‚Ρ‹ Π²Π²ΠΎΠ΄Π°/Π²Ρ‹Π²ΠΎΠ΄Π° 14 Ρ†ΠΈΡ„Ρ€ΠΎΠ²Ρ‹Ρ… Π²Ρ…ΠΎΠ΄ΠΎΠ²/Π²Ρ‹Ρ…ΠΎΠ΄ΠΎΠ² ΠΈ 6 Π°Π½Π°Π»ΠΎΠ³ΠΎΠ²Ρ‹Ρ…
          НапряТСниС ΠΎΡ‚ 2,2 Π΄ΠΎ 5,5 Π’
          Π’Π΅ΠΌΠΏΠ΅Ρ€Π°Ρ‚ΡƒΡ€Π° ΠΎΡ‚ -40 Π΄ΠΎ +125 градусов
          Π‘ΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ ΠΎΡ‚ 0 Π΄ΠΎ 16 ΠœΠ“Ρ†

          Arduino Nano

          ΠŸΠ»Π°Ρ‚Π° Arduino Nano настроСна Π½Π° ATmega328 ΠΈ ΠΈΠ· названия понятно, Ρ‡Ρ‚ΠΎ эта ΠΏΠ»Π°Ρ‚Π° нСбольшого Ρ€Π°Π·ΠΌΠ΅Ρ€Π°. Arduino nano ΠΈΠΌΠ΅Π΅Ρ‚ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Ρ‹, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ ΠΊ ΠΌΠ°ΠΊΠ΅Ρ‚Π½ΠΎΠΉ ΠΏΠ»Π°Ρ‚Π΅ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ, Π±Π΅Π· использования ΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΎΠ², Π° Ρ‚Π°ΠΊΠΆΠ΅ Ρƒ Π½Π΅Π³ΠΎ Π½Π΅Ρ‚ ΠΏΠΎΡ€Ρ‚Π° для Ρ€Π°Π·ΡŠΠ΅ΠΌΠ° питания, Π½ΠΎ для источника питания доступСн нСбольшой USB-ΠΏΠΎΡ€Ρ‚. ΠŸΠ»Π°Ρ‚Π° Arduino nano Ρ‚Π°ΠΊΠΆΠ΅ рСкомСндуСтся для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…, ΠΈ Π΅Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для получСния Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… ΠΎΡ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠΎΠ².

          Π”Ρ€ΡƒΠ³ΠΈΠ΅ особСнности Arduino Nano:

          Π Π°Π·ΠΌΠ΅Ρ€ ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° 8 Π±ΠΈΡ‚
          АрхитСктура RISC Он ΠΈΠΌΠ΅Π΅Ρ‚ 32*8 Ρ€Π°Π±ΠΎΡ‡ΠΈΡ… рСгистров ΠΎΠ±Ρ‰Π΅Π³ΠΎ назначСния ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΏΡ€ΠΎΠΏΡƒΡΠΊΠ½ΡƒΡŽ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ Π΄ΠΎ 20 MIPS Π½Π° частотС 20 ΠœΠ“Ρ†
          ΠŸΠ°ΠΌΡΡ‚ΡŒ Он ΠΈΠΌΠ΅Π΅Ρ‚ 4/8/16/32 ΠšΠ‘ внутрисистСмной самопрограммируСмой Ρ„Π»ΡΡˆ-памяти ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, 256/512/512/1 ΠšΠ‘ EEPROM ΠΈ 512/1 ΠšΠ‘/1 ΠšΠ‘/2 ΠšΠ‘ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΉ SRAM
          ΠŸΠ΅Ρ€ΠΈΡ„Π΅Ρ€ΠΈΠΉΠ½Ρ‹Π΅ элСмСнты Π˜ΠΌΠ΅Π΅Ρ‚ Π΄Π²Π° 8-Π±ΠΈΡ‚Π½Ρ‹Ρ… Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π°, 6 ΠΊΠ°Π½Π°Π»ΠΎΠ² ШИМ ΠΈ встроСнный Π°Π½Π°Π»ΠΎΠ³ΠΎΠ²Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΠ°Ρ€Π°Ρ‚ΠΎΡ€
          ΠšΠΎΠ½Ρ‚Π°ΠΊΡ‚Ρ‹ Π²Π²ΠΎΠ΄Π°/Π²Ρ‹Π²ΠΎΠ΄Π° 22
          НапряТСниС ΠΎΡ‚ 1,8 Π΄ΠΎ 5,5 Π’
          Π’Π΅ΠΌΠΏΠ΅Ρ€Π°Ρ‚ΡƒΡ€Π° ΠΎΡ‚ -40 Π΄ΠΎ +85 градусов
          Π‘ΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ ΠΎΡ‚ 0 Π΄ΠΎ 20 ΠœΠ“Ρ†

          Ардуино Ноль

          ΠŸΠ»Π°Ρ‚Π° Arduino Zero настроСна Π½Π° SAMD21 ΠΎΡ‚ Atmel ΠΈ оснащСна Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹ΠΌΠΈ функциями, благодаря ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠΎΠ½Π° ΡˆΠΈΡ€ΠΎΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² носимых ΠΎΡ‡ΠΊΠ°Ρ…, Ρ€ΠΎΠ±ΠΎΡ‚ΠΎΡ‚Π΅Ρ…Π½ΠΈΠΊΠ΅ ΠΈ ΠΏΡ€ΠΎΠΌΡ‹ΡˆΠ»Π΅Π½Π½ΠΎΠΉ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ. Arduino Zero ΠΈΠΌΠ΅Π΅Ρ‚ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ EDBG (встроСнный ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ Atmel), которая ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² качСствС интСрфСйса ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ, поэтому ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ Π½Π΅ трСбуСтся Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния для Π΅Π³ΠΎ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ. Arduino Zero ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ с Ρ€Π΅Π»Π΅, сСрвоприводами, двигатСлями, Π° Ρ‚Π°ΠΊΠΆΠ΅ с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ устройствами, Ρ‚Π°ΠΊΠΈΠΌΠΈ ΠΊΠ°ΠΊ Raspberry Pi.

          Π”Ρ€ΡƒΠ³ΠΈΠ΅ особСнности Arduino Zero:

          Π Π°Π·ΠΌΠ΅Ρ€ ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° 32 Π±ΠΈΡ‚Π°
          ΠŸΠ°ΠΌΡΡ‚ΡŒ Он ΠΈΠΌΠ΅Π΅Ρ‚ 256 ΠšΠ‘ внутрисистСмной самопрограммируСмой Ρ„Π»ΡΡˆ-памяти ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ 32 ΠšΠ‘ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΉ SRAM
          ΠŸΠ΅Ρ€ΠΈΡ„Π΅Ρ€ΠΈΠΉΠ½Ρ‹Π΅ элСмСнты Π˜ΠΌΠ΅Π΅Ρ‚ сСнсорный ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ ΠΈ 32-Π±ΠΈΡ‚Π½Ρ‹ΠΉ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ CRC
          ΠšΠΎΠ½Ρ‚Π°ΠΊΡ‚Ρ‹ Π²Π²ΠΎΠ΄Π°/Π²Ρ‹Π²ΠΎΠ΄Π° 20
          НапряТСниС 3,3 Π²ΠΎΠ»ΡŒΡ‚Π°
          Π’Π΅ΠΌΠΏΠ΅Ρ€Π°Ρ‚ΡƒΡ€Π° ΠΎΡ‚ -40 Π΄ΠΎ +85 градусов
          Π‘ΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ ΠΎΡ‚ 0 Π΄ΠΎ 48 ΠœΠ“Ρ†

          Arduino Due.

          Ρ€Π°Π·ΡŠΠ΅ΠΌ JTAG ΠΈ Ρ€Π°Π·ΡŠΠ΅ΠΌ USB. Arduino Due использовался для ΠΌΠΎΡ‰Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² Arduino ΠΈΠ·-Π·Π° Π΅Π³ΠΎ ΠΌΠΎΡ‰Π½ΠΎΠΉ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹.

          Π”Ρ€ΡƒΠ³ΠΈΠ΅ особСнности Arduino Due:

          Π Π°Π·ΠΌΠ΅Ρ€ ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° 32 Π±ΠΈΡ‚Π°
          ΠŸΠ°ΠΌΡΡ‚ΡŒ Он ΠΈΠΌΠ΅Π΅Ρ‚ ΠΎΡ‚ 256 Π΄ΠΎ 512 ΠšΠ±Π°ΠΉΡ‚ внутрисистСмной самопрограммируСмой Ρ„Π»ΡΡˆ-памяти ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, 16 ΠšΠ±Π°ΠΉΡ‚ ΠŸΠ—Π£ ΠΈ ΠΎΡ‚ 32 Π΄ΠΎ 100 ΠšΠ±Π°ΠΉΡ‚ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΉ SRAM
          ΠŸΠ΅Ρ€ΠΈΡ„Π΅Ρ€ΠΈΠΉΠ½Ρ‹Π΅ элСмСнты Π˜ΠΌΠ΅Π΅Ρ‚ Π΄ΠΎ 4 USART, Π΄ΠΎ 8-ΠΊΠ°Π½Π°Π»ΡŒΠ½Ρ‹Ρ… 16-Π±ΠΈΡ‚Π½Ρ‹Ρ… ШИМ-ΠΊΠ°Π½Π°Π»ΠΎΠ² ΠΈ Π·Π°Ρ‰ΠΈΡ‚Ρƒ рСгистра ΠΎΡ‚ записи
          ΠšΠΎΠ½Ρ‚Π°ΠΊΡ‚Ρ‹ Π²Π²ΠΎΠ΄Π°/Π²Ρ‹Π²ΠΎΠ΄Π° 66 (54 Ρ†ΠΈΡ„Ρ€ΠΎΠ²Ρ‹Ρ… ΠΈ 12 Π°Π½Π°Π»ΠΎΠ³ΠΎΠ²Ρ‹Ρ… ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚ΠΎΠ² Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π°)
          НапряТСниС 3,3 Π²ΠΎΠ»ΡŒΡ‚Π°
          Π’Π΅ΠΌΠΏΠ΅Ρ€Π°Ρ‚ΡƒΡ€Π° ΠΎΡ‚ -40 Π΄ΠΎ +125 градусов
          Π‘ΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ ΠΎΡ‚ 0 Π΄ΠΎ 84 ΠœΠ“Ρ†

          Arduino Mega

          ΠŸΠ»Π°Ρ‚Π° Arduino Mega настроСна Π½Π° ATmega2560 ΠΈ ΠΈΠΌΠ΅Π΅Ρ‚ 54 Ρ†ΠΈΡ„Ρ€ΠΎΠ²Ρ‹Ρ… ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Π° Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π°, Ρ‚Π°ΠΊΡ‚ΠΎΠ²ΡƒΡŽ частоту 16 ΠœΠ“Ρ†, ΠΊΠ½ΠΎΠΏΠΊΡƒ сброса, Ρ€Π°Π·ΡŠΠ΅ΠΌ ICSP ΠΈ Ρ€Π°Π·ΡŠΠ΅ΠΌ USB. Π•Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° ΠΏΡ€ΠΎΠΌΡ‹ΡˆΠ»Π΅Π½Π½ΠΎΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅ для управлСния двигатСлями, сСрвоприводами ΠΈ Ρ€Π΅Π»Π΅, ΠΊΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, особСнности этой ΠΏΠ»Π°Ρ‚Ρ‹: ΠΎΠ½ ΠΈΠΌΠ΅Π΅Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ³ΠΎ обнаруТСния ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ, ΡˆΠ΅ΡΡ‚ΡŒ Ρ€Π΅ΠΆΠΈΠΌΠΎΠ² сна ΠΈ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ ΠΊΠ°Π»ΠΈΠ±Ρ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ осциллятор.

          Π”Ρ€ΡƒΠ³ΠΈΠ΅ особСнности Arduino Mega:

          Π Π°Π·ΠΌΠ΅Ρ€ ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° 8 Π±ΠΈΡ‚
          АрхитСктура RISC Он ΠΈΠΌΠ΅Π΅Ρ‚ 32*8 Ρ€Π°Π±ΠΎΡ‡ΠΈΡ… рСгистров ΠΎΠ±Ρ‰Π΅Π³ΠΎ назначСния ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΏΡ€ΠΎΠΏΡƒΡΠΊΠ½ΡƒΡŽ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ Π΄ΠΎ 16 MIPS Π½Π° частотС 16 ΠœΠ“Ρ†
          ΠŸΠ°ΠΌΡΡ‚ΡŒ Он ΠΈΠΌΠ΅Π΅Ρ‚ 64K/128K/256KΠ±Π°ΠΉΡ‚ внутрисистСмной самопрограммируСмой Ρ„Π»ΡΡˆ-памяти ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, 4Kb EEPROM ΠΈ 8Kb Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΉ SRAM
          ΠŸΠ΅Ρ€ΠΈΡ„Π΅Ρ€ΠΈΠΉΠ½Ρ‹Π΅ элСмСнты Π˜ΠΌΠ΅Π΅Ρ‚ Π΄Π²Π° 8-разрядных Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π°, 4 Π²ΠΎΡΡŒΠΌΠΈΡ€Π°Π·Ρ€ΡΠ΄Π½Ρ‹Ρ… ΠΊΠ°Π½Π°Π»Π° ШИМ, СмкостныС сСнсорныС ΠΊΠ½ΠΎΠΏΠΊΠΈ, ΠΏΠΎΠ»Π·ΡƒΠ½ΠΊΠΈ, колСса ΠΈ встроСнный Π°Π½Π°Π»ΠΎΠ³ΠΎΠ²Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΠ°Ρ€Π°Ρ‚ΠΎΡ€
          ΠšΠΎΠ½Ρ‚Π°ΠΊΡ‚Ρ‹ Π²Π²ΠΎΠ΄Π°/Π²Ρ‹Π²ΠΎΠ΄Π° 54 ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Π° Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΠΎΠ³ΠΎ Π²Π²ΠΎΠ΄Π°/Π²Ρ‹Π²ΠΎΠ΄Π° ΠΈ 16 ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚ΠΎΠ² Π°Π½Π°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ³ΠΎ Π²Π²ΠΎΠ΄Π°
          НапряТСниС 5 Π²ΠΎΠ»ΡŒΡ‚
          Π’Π΅ΠΌΠΏΠ΅Ρ€Π°Ρ‚ΡƒΡ€Π° ΠΎΡ‚ -40 Π΄ΠΎ +125 градусов
          Π‘ΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ ΠΎΡ‚ 0 Π΄ΠΎ 16 ΠœΠ“Ρ†

          Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

          БСмСйство Arduino прСдставило ряд ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Ρ‹ для Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ†Π΅Π»Π΅ΠΉ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΎΠ΄Π½ΠΈ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Ρ‹ для ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ уровня, Π΄Ρ€ΡƒΠ³ΠΈΠ΅ β€” для ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² ΠΏΡ€ΠΎΠ΄Π²ΠΈΠ½ΡƒΡ‚ΠΎΠ³ΠΎ уровня ΠΈ для ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² ΠΏΡ€ΠΎΠΌΡ‹ΡˆΠ»Π΅Π½Π½ΠΎΠ³ΠΎ уровня.

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *