~~NOTOC~~
====== Начало работы с Espruino: JavaScript в микроконтроллере ======
Лёгкий, гибкий, выразительный JavaScript может исполнять не только ваш браузер, но и микроконтроллер.
Благодаря open source ядру [[js:espruino | Espruino]] и открытой среде программирования, вы сможете создавать сложные
электронные устройства действительно просто.
===== Железо =====
{{:js:iskra_js:iskra-js.2.1.jpg?nolink |}}
**[[js:iskra_js | Iskra JS]]** — флагманская плата Амперки со встроенным интерпретатором JavaScript.
Построена на микроконтроллере Cortex-M4. 168 МГц, оперативная память на 5000 переменных JS, 1 МБ флеш-памяти для хранения программы.
Совместима по компоновке со стандартом Arduino Uno R3: можно использовать модули и платы расширения Arduino.
{{:js:start:yodo-box.jpg?nolink |}}
**«[[amp>product/yodo|Йодо]]»** — набор из Iskra JS, модулей, конструктива и книги. Набор учит собирать и
программировать собственные устройства на JavaScript и платформе Iskra JS. Книга включает 25 мини-проектов и необходимую теорию.
Мы выпустили три продолжения «Йодо»:
* «[[amp>product/yodo-iot|Интернет вещей]]» — 7 экспериментов с WiFi, SD-картридером, мини-реле и сетевыми IFTTT, dweet.io и telegram;
* «[[amp>product/yodo-automatic-watering|Автополив]]» — 7 электронных модулей для сборки системы автополива;
* «[[amp>product/yodo-to-robonjasha|Робоняша]]» — 8 электронных модулей, #структор и инструкция по сборке робота.
===== Среда программирования =====
[[ide|{{:js:start:espruino_web_ide_049.png?nolink |}}]]
**[[ide|Espruino Web IDE]]** — штатная среда для программирования, обновления и отладки плат Iskra JS и Espruino.
Работает на всех настольных операционных системах. Устанавливается в 2 клика.
===== Документация =====
==== Стандартный JavaScript ====
* [[builtins]] — константы и функции
* [[Array]], [[Boolean]], [[Function]], [[Number]], [[Object]], [[String]] — примитивы
* [[TypedArray]] — типизированые массивы, ArrayBuffer, DataView, ArrayBufferView
* [[Error]], [[Error#InternalError|InternalError]], [[Error#ReferenceError|ReferenceError]], [[Error#SyntaxError|SyntaxError]], [[Error#TypeError|TypeError]] — ошибки
* [[Date]] — работа с датами и временем
* [[JSON]] — кодирование и декодирование JSON
* [[Math]] — математические функции
==== Классы и объекты, уникальные для Espruino и Iskra JS ====
* [[E]] — утилитарные функции Espruino
* [[Pin]] — работа с портами ввода-вывода (пинами)
* [[File]] — чтение и запись файлов
* [[SPI]] — работа с интерфейсом SPI
* [[I2C]] — работа с интерфейсом TWI/I²C
* [[Serial]] — работа с интерфейсом UART
* [[OneWire]] — работа с шиной 1-Wire
==== Встроенные библиотеки Espruino и Iskra JS ====
* [[crypto]] — работа с криптографией
* [[flash]] — прямые чтение и запись флеш-памяти контроллера
* [[fs]] — работы с файловой системой карт памяти
==== Подгружаемые библиотеки ====
* [[accelerometer]] — драйвер акселерометра
* [[analog-line-sensor]] — драйвер аналогового сенсора пересечения линии
* [[animation]] — плавное изменение параметров
* [[barometer]] — драйвер барометра
* [[bluetooth]] — драйвер bluetooth-модуля
* [[button]] — драйвер модуля-кнопки и других кнопок
* [[buzzer]] — драйвер модуля-зуммера
* [[card-reader]] — расширение библиотеки fs для работы с SD картами
* [[digital-line-sensor]] — драйвер цифрового сенсора пересечения линии
* [[dweet]] — клиент для работы с графиками в dweet.io
* [[gas-sensor]] — драйвер датчиков газа
* [[gpio-expander]] — драйвер GPIO expander
* [[gprs-shield]] — драйвер GPRS-модуля
* [[hysteresis]] — фиксация пересечения пороговых значений
* [[ifttt-webhooks]] — клиент для компонента webhooks сервиса ifttt.com
* [[ir-receiver]] — драйвер модуля инфракрасного приёмника
* [[led]] — драйвер модуля-светодиода и других светодиодов
* [[led-matrix]] — драйвер светодиодной матрицы 8×8
* [[led-strip]] — драйвер светодиодной ленты
* [[light-sensor]] — драйвер модуля сенсора освещённости
* [[magnetometer]] — драйвер магнитометра (компаса)
* [[motor]] — драйвер для контроллера двигателей
* [[multiservo]] — драйвер для контроллера сервоприводов
* [[nfc]] — драйвер RFID/NFC сканера
* [[pot]] — драйвер модуля-потенциометра
* [[pid]] — ПИД-регулятор
* [[power-control]] — управление транзистором
* [[proximity]] — драйвер датчика приближения и освещённости
* [[quaddisplay]] — драйвер для работы с четырёхразрядным индикатором (v1)
* [[quaddisplay2]] — драйвер для работы с четырёхразрядным индикатором (v2)
* [[ringtone]] — проигрывание мелодий в формате Nokia RTTTL
* [[relay]] — драйвер для работы с реле
* [[robot-2wd]] — драйвер двухколёсного робота
* [[rs-485]] — драйвер для работы с модулей RS-485
* [[rtc]] — драйвер для работы с часами реального времени
* [[servo]] — драйвер хобби-сервомоторов
* [[stepper]] — драйвер шагового двигателя
* [[telegram]] — телеграм-бот
* [[thermometer]] — драйвер для модуля аналогового линейного термометра
* [[timer]] — периодически повторяющиеся и отложенные действия
* [[ultrasonic]] — драйвер для ультразвукового дальномера HC-SR04
* [[usb-keyboard]] — эмуляция HID-устройства USB-клавиатуры
* [[water-flow]] — драйвер датчика потока воды
* [[water-level]] — драйвер датчика уровня воды
* [[wifi]] — драйвер модуля Wi-Fi
[[https://github.com/amperka/espruino-modcat/tree/master/modules/%40amperka|Репозиторий библиотек от Амперки]]
По умолчанию библиотеки модулей Амперки работают только при подключении к интернету.
Если вы планируете прошивать плату Iskra JS без выхода в сеть, сперва необходимо [[js:ide:amperka-modules-without-internet|настроить ваш компьютер.]]
Вы также можете создать свою библиотеку и [[js:modules:connection|подключить её к Espruino Web IDE]].
==== MDN ====
[[https://developer.mozilla.org/ru/docs/Web/JavaScript|MDN (Mozilla Development Network)]] — обширная
документация по JavaScript на русском языке. Большая часть информации применима к программированию
микроконтроллеров. [[espruino#отличия_javascript_от_стандарта|Отличия от стандарта]] — в минорных деталях.
==== Espruino ====
Англоязычные материалы на официальном сайте платформы:
* [[http://www.espruino.com/Reference|Документация по Espruino]]
* [[http://www.espruino.com/Tutorials|Примеры]]
* [[http://www.espruino.com/Modules|Модули / библиотеки]]