Espruino:Примеры/Часто задаваемые вопросы: различия между версиями

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску
Нет описания правки
 
(не показано 7 промежуточных версий 2 участников)
Строка 7: Строка 7:
==Что такое Espruino?==
==Что такое Espruino?==


Espruino – это JavaScript-интерпретатор для микроконтроллеров, заметно упрощающий разработку встроенного ПО. Интерпретатор Espruino – это прошивка с открытым кодом, запускаемая на множестве различных микроконтроллеров. Кроме того, в продаже есть [https://www.espruino.com/Order платы Espruino], где этот интерпретатор уже предустановлен по умолчанию, что облегчает первые этапы работы с ними.
[[Espruino]] – это [[JavaScript]]-интерпретатор для микроконтроллеров, заметно упрощающий разработку встроенного [[ПО]]. Интерпретатор [[Espruino]] – это прошивка с открытым кодом, запускаемая на множестве различных [[микроконтроллер]]ов. Кроме того, в продаже есть [https://www.espruino.com/Order платы Espruino], где этот интерпретатор уже предустановлен по умолчанию, что облегчает первые этапы работы с ними.


Но Espruino – это не только интерпретатор и платы, но и [https://www.espruino.com/ide/ Web IDE], инструменты командной строки, документация, руководства и модули, вместе составляющие оптимальное решение для разработки встроенного ПО.
Но [[Espruino]] – это не только интерпретатор и платы, но и [https://www.espruino.com/ide/ Web IDE], инструменты командной строки, документация, руководства и модули, вместе составляющие оптимальное решение для разработки встроенного ПО.


==Возникли проблемы с платой Espruino?==
==Возникли проблемы с платой Espruino?==
Строка 25: Строка 25:
== Espruino имеет какое-нибудь отношение к ESP8266/ESP32/Espressif? ==
== Espruino имеет какое-нибудь отношение к ESP8266/ESP32/Espressif? ==


Общие буквы «esp» – это просто совпадение. ESP8266 была выпущена в 2014 году, а сайт espruino.com был создан в 2012 году.
Общие буквы ''«esp»'' – это просто совпадение. [[ESP8266]] была выпущена в [[2014 год]]у, а сайт espruino.com был создан в [[2012 год]]у.


У прошивки Espruino есть порты, которые можно запускать на чипах ESP8266 и ESP32, но эти порты – плод работы комьюнити. Во-первых, Espressif никак не поддерживает Espruino, и во-вторых, ни одна из официальных плат Espruino не использует ESP8266/ESP32 как платформу.
У прошивки [[Espruino]] есть порты, которые можно запускать на чипах [[ESP8266]] и [[ESP32]], но эти порты – плод работы комьюнити. Во-первых, [[Espressif]] никак не поддерживает [[Espruino]], и во-вторых, ни одна из официальных плат [[Espruino]] не использует [[ESP8266]]/[[ESP32]] как платформу.


== Espruino – это проект с открытым кодом? ==
== Espruino – это проект с открытым кодом? ==


Да! И он [https://github.com/espruino весь есть на GitHub]. Главная прошивка распространяется по лицензии MPLv2. Если вы планируете использовать Espruino в коммерческих целях, разработчики просят связаться с ними для [https://www.espruino.com/Business взаимовыгодного сотрудничества].
Да! И он [https://github.com/espruino весь есть на GitHub]. Главная прошивка распространяется по лицензии [[MPLv2]]. Если вы планируете использовать [[Espruino]] в коммерческих целях, разработчики просят связаться с ними для [https://www.espruino.com/Business взаимовыгодного сотрудничества].


== Почему JavaScript? ==
== Почему JavaScript? ==


Нам нужен был язык программирования, который:
Нам нужен был язык программирования, который:
* Имеет ту же базовую форму, что и C, благодаря чему простой код похож на Arduino-код.
* Имеет ту же базовую форму, что и C, благодаря чему простой код похож на [[Arduino]]-код.
* Подталкивает к событийному программированию (для снижения энергопотребления).
* Подталкивает к событийному программированию (для снижения энергопотребления).
* Широко используется и у которого много обучающих онлайн-руководств.
* Широко используется и у которого много обучающих онлайн-руководств.
Строка 49: Строка 49:
=== Espruino vs Raspberry Pi / встраиваемые Linux-платы ===
=== Espruino vs Raspberry Pi / встраиваемые Linux-платы ===


* Raspberry Pi – это очень мощные и гибкие платы, но в состоянии покоя потребляющие относительно много электричества, из-за чего их проблематично питать от батареи. В режиме покоя Raspberry Pi потребляет минимум около 50 мА, а Puck.js – 0.003 мА.
* [[Raspberry Pi]] – это очень мощные и гибкие платы, но в состоянии покоя потребляющие относительно много электричества, из-за чего их проблематично питать от батареи. В режиме покоя Raspberry Pi потребляет минимум около 50 мА, а Puck.js – 0.003 мА.
* На Raspberry Pi ненадёжная планировка действий в реальном времени, из-за чего синхронизация особой точностью не отличается.
* На [[Raspberry Pi]] ненадёжная планировка действий в реальном времени, из-за чего синхронизация особой точностью не отличается.
* Raspberry Pi хорошо подходит для работы с видео, тогда как Espruino недостаточно мощна для этого.
* [[Raspberry Pi]] хорошо подходит для работы с видео, тогда как [[Espruino]] недостаточно мощна для этого.
* Espruino работает на JavaScript. Это делает эту платформу более доступной и лёгкой для использования для начинающих. С другой стороны, Raspberry Pi даёт больше выбора в языках, что хорошее качество, но может отпугнуть некоторых пользователей.
* [[Espruino]] работает на [[JavaScript]]. Это делает эту платформу более доступной и лёгкой для использования для начинающих. С другой стороны, [[Raspberry Pi]] даёт больше выбора в языках, что хорошее качество, но может отпугнуть некоторых пользователей.
* У Raspberry Pi нет аналогового ввода/вывода, а у Espruino есть.  
* У [[Raspberry Pi]] нет аналогового ввода/вывода, а у [[Espruino]] есть.  
* Для Raspberry Pi нужна SD-карта, содержащая операционную систему (для Espruino – нет).
* Для [[Raspberry Pi]] нужна [[SD-карта]], содержащая операционную систему (для [[Espruino]] – нет).


=== Espruino vs Arduino ===
=== Espruino vs Arduino ===


* Espruino меньше, чем большинство Arduino, и гораздо дружелюбнее для начинающих.
* [[Espruino]] меньше, чем большинство [[Arduino]], и гораздо дружелюбнее для начинающих.
* На ПК или Mac необязательно предустанавливать какое-либо ПО.
* На [[ПК]] или [[Mac]] необязательно предустанавливать какое-либо [[ПО]].
* Хотя Arduino потребляет меньше электричества, платы Espruino разработаны с прицелом на энергоэффективность и потребляют более чем в 10 раз меньше в режиме сна.
* Хотя [[Arduino]] потребляет меньше электричества, платы [[Espruino]] разработаны с прицелом на энергоэффективность и потребляют более чем в 10 раз меньше в режиме сна.
* Использование JavaScript-интерпретатора означает, что вам не придётся выполнять сброс Espruino после внесения изменений в код, но это также значит, что скорость выполнения будет чуть ниже.
* Использование [[JavaScript]]-интерпретатора означает, что вам не придётся выполнять сброс [[Espruino]] после внесения изменений в код, но это также значит, что скорость выполнения будет чуть ниже.


== Когда я печатаю команду, почему Espruino пишет =undefined? ==
== Когда я печатаю команду, почему Espruino пишет =undefined? ==


После выполнения команды Espruino печатает =, а затем возвращаемое значение. Например:
После выполнения команды [[Espruino]] печатает =, а затем возвращаемое значение. Например:


<syntaxhighlight lang="javascript" enclose="div">
<syntaxhighlight lang="javascript">
>1+2
>1+2
=3
=3
Строка 74: Строка 74:
</syntaxhighlight>
</syntaxhighlight>


Но если вызвать функцию, которая ничего не возвращает, она вернёт undefined – это именно то, что вы видите у себя:
Но если вызвать функцию, которая ничего не возвращает, она вернёт [[undefined]] – это именно то, что вы видите у себя:


<syntaxhighlight lang="javascript" enclose="div">
<syntaxhighlight lang="javascript">
>digitalWrite(D0,1)
>digitalWrite(D0,1)
=undefined
=undefined
</syntaxhighlight>
</syntaxhighlight>


'''Примечание:''' Начиная с версии 1v99 =undefined уже не печатается.
{{Примечание1|1=Начиная с версии 1v99 =undefined уже не печатается.}}


== Когда я печатаю функцию, почему Espruino печатает =function ...? ==
== Когда я печатаю функцию, почему Espruino печатает =function ...? ==


Смотрите ответ в предыдущем вопросе – когда вы задаёте функцию, Espruino также возвращает саму эту функцию в качестве значения. Она печатает её в консоль аналогично всем прочим командам, которые вы печатаете.
Смотрите ответ в предыдущем вопросе – когда вы задаёте функцию, [[Espruino]] также возвращает саму эту функцию в качестве значения. Она печатает её в консоль аналогично всем прочим командам, которые вы печатаете.


== Мой код стёрся, когда я отключил питание от Espruino. Что можно сделать? ==
== Мой код стёрся, когда я отключил питание от Espruino. Что можно сделать? ==


Чтобы более надёжно сохранить код, просто впишите save() в левой части Web IDE. Когда питание снова будет подключено, Espruino восстановится в том же состоянии, которое было сохранено при использовании save(), запомнив таймеры, прерывания и даже состояния контактов. Наличие какого-то работающего кода с самого запуска Espruino может пригодиться, например, если вам нужно инициализировать какие-то подключенные к Espruino устройства вроде дисплеев. В этом случае вы просто можете добавить функцию onInit() – она будет выполняться при каждом запуске Espruino. Более подробно читайте в [http://wikihandbk.com/wiki/Espruino:Примеры/Сохранение_кода_на_Espruino этой статье].
Чтобы более надёжно сохранить код, просто впишите [[save()]] в левой части [[Web IDE]]. Когда питание снова будет подключено, Espruino восстановится в том же состоянии, которое было сохранено при использовании save(), запомнив таймеры, прерывания и даже состояния контактов. Наличие какого-то работающего кода с самого запуска Espruino может пригодиться, например, если вам нужно инициализировать какие-то подключенные к Espruino устройства вроде дисплеев. В этом случае вы просто можете добавить функцию onInit() – она будет выполняться при каждом запуске Espruino. Более подробно читайте в [http://wikihandbk.com/wiki/Espruino:Примеры/Сохранение_кода_на_Espruino этой статье].


== Могу ли я использовать Espruino для управления устройствами при помощи программы на ПК? ==
== Могу ли я использовать Espruino для управления устройствами при помощи программы на ПК? ==


Да! Если у вас есть возможность отправлять данные по последовательному порту с ПК на Espruino, то делается это очень просто. Всё, что вам нужно – это отправить команду echo(0). Она останавливает работу, назовём это так, «пользовательского интерфейса» Espruino. После этого вы сможете отправлять и получать данные при помощи команд вроде print(analogRead(A0)).
Да! Если у вас есть возможность отправлять данные по последовательному порту с [[ПК]] на [[Espruino]], то делается это очень просто. Всё, что вам нужно – это отправить команду echo(0). Она останавливает работу, назовём это так, ''«пользовательского интерфейса»'' [[Espruino]]. После этого вы сможете отправлять и получать данные при помощи команд вроде print(analogRead(A0)).


Более подробно читайте в [https://www.espruino.com/Interfacing этой статье].
Более подробно читайте в [https://www.espruino.com/Interfacing этой статье].
Строка 101: Строка 101:
Espruino достаточно быстро работает для всего, что касается взаимодействия с реальным миром (серводвигатели, моторы, светильники и так далее). События вроде setWatch имеют временную отметку, благодаря чему вы можете измерить продолжительность импульса с точностью до одной микросекунды (1 / 1.000.000 секунды).
Espruino достаточно быстро работает для всего, что касается взаимодействия с реальным миром (серводвигатели, моторы, светильники и так далее). События вроде setWatch имеют временную отметку, благодаря чему вы можете измерить продолжительность импульса с точностью до одной микросекунды (1 / 1.000.000 секунды).


Чтобы вы примерно понимали скорость работы Espruino, вот этот код создаёт квадратную волну с частотой 1.5 КГц.
Чтобы вы примерно понимали скорость работы [[Espruino]], вот этот код создаёт квадратную волну с частотой 1.5 КГц.


<syntaxhighlight lang="javascript" enclose="div">
<syntaxhighlight lang="javascript">
setInterval("digitalWrite(LED1,l=!l)",1000/3000);
setInterval("digitalWrite(LED1,l=!l)",1000/3000);
</syntaxhighlight>
</syntaxhighlight>
Строка 113: Строка 113:
== Насколько энергоэффективен язык Espruino? ==
== Насколько энергоэффективен язык Espruino? ==


Очень. Espruino – это событийный язык программирования, и поэтому интерпретатор Espruino может переходить в режим сна, если будет знать, что ему не нужно выполнять никаких действий.
Очень. [[Espruino]] – это событийный язык программирования, и поэтому интерпретатор Espruino может переходить в режим сна, если будет знать, что ему не нужно выполнять никаких действий.


Это значит, что код на Espruino будет гораздо более энергоэффективным, чем тот же код на C, разве что в этом C-коде не задан явно переход в более энергоэффективный режим сна.
Это значит, что код на [[Espruino]] будет гораздо более энергоэффективным, чем тот же код на C, разве что в этом C-коде не задан явно переход в более энергоэффективный режим сна.
[https://www.espruino.com/Power+Consumption Энергопотребление] зависит от используемой платы, но для устройств вроде [https://www.espruino.com/Puck.js Puck.js] энергопотребление в состоянии покоя может составлять всего 3 мкА (0.000003 А).
[https://www.espruino.com/Power+Consumption Энергопотребление] зависит от используемой платы, но для устройств вроде [https://www.espruino.com/Puck.js Puck.js] энергопотребление в состоянии покоя может составлять всего 3 мкА (0.000003 А).


Строка 122: Строка 122:
См. таблицу ниже:
См. таблицу ниже:


{|  
{| class="wikitable"
|-  
|-  
|| '''Тип платы'''
|| '''Тип платы'''
Строка 149: Строка 149:
== Язык Espruino на 100% совместим с JavaScript? ==
== Язык Espruino на 100% совместим с JavaScript? ==


В Espruino реализована (значительная) часть спецификации JavaScript, но не 100%. По словам разработчиков, они стараются делать так, чтобы функционал Espruino максимально соответствовал стандартам JavaScript.
В Espruino реализована (значительная) часть спецификации [[JavaScript]], но не 100%. По словам разработчиков, они стараются делать так, чтобы функционал [[Espruino]] максимально соответствовал стандартам [[JavaScript]].
Список функций языка JavaScript, поддерживаемых в Espruino, смотрите [https://www.espruino.com/Features тут].


Наименее используемые части JavaScript в Espruino не вошли, потому что для них не хватает памяти. Справочник по Espruino можно найти [http://wikihandbk.com/wiki/Espruino:Справочник_по_API тут].
Список функций языка [[JavaScript]], поддерживаемых в [[Espruino]], смотрите [https://www.espruino.com/Features тут].


'''Но, по сути, если вы будете программировать обычным JavaScript-кодом, то вряд ли заметите какую-нибудь разницу между Espruino и обычным JavaScript.''' Если у вас возникли какие-нибудь проблемы, то можете описать их на [http://forum.espruino.com/ форуме] (но не забудьте приложить проблемный фрагмент кода) – разработчики пишут, что постараются исправить этот баг, а если окажется, что это какая-то интересная функция, то попробуют сделать так, чтобы её смогли использовать другие люди.
Наименее используемые части [[JavaScript]] в [[Espruino]] не вошли, потому что для них не хватает памяти. Справочник по Espruino можно найти [http://wikihandbk.com/wiki/Espruino:Справочник_по_API тут].
 
'''Но, по сути, если вы будете программировать обычным [[JavaScript]]-кодом, то вряд ли заметите какую-нибудь разницу между [[Espruino]] и обычным [[JavaScript]].''' Если у вас возникли какие-нибудь проблемы, то можете описать их на [http://forum.espruino.com/ форуме] (но не забудьте приложить проблемный фрагмент кода) – разработчики пишут, что постараются исправить этот баг, а если окажется, что это какая-то интересная функция, то попробуют сделать так, чтобы её смогли использовать другие люди.


== Будет ли Espruino работать на моей плате? ==
== Будет ли Espruino работать на моей плате? ==


Если она есть в [https://www.espruino.com/Other+Boards этом списке], то да. Если нет, но если она оснащена похожим процессором с таким же (или похожим) количеством RAM- и flash-памяти, то не факт, но попробовать всё равно можно – инструкции по сборке смотрите на [https://github.com/espruino/Espruino GitHub].
Если она есть в [https://www.espruino.com/Other+Boards этом списке], то да. Если нет, но если она оснащена похожим процессором с таким же (или похожим) количеством [[RAM]]- и [[flash]]-памяти, то не факт, но попробовать всё равно можно – инструкции по сборке смотрите на [https://github.com/espruino/Espruino GitHub].


На нашем форуме есть [http://forum.espruino.com/microcosms/1085/ специальная секция], где вы можете задавать вопросы на эту тему или рассказывать о том, как у вас получается заставить свою плату работать на Espruino.
На нашем форуме есть [http://forum.espruino.com/microcosms/1085/ специальная секция], где вы можете задавать вопросы на эту тему или рассказывать о том, как у вас получается заставить свою плату работать на Espruino.


'''Примечание:''' Из-за большого количества поддерживаемых плат (более 50) разработчики уже не могут добавлять поддержку новых плат в главную кодовую базу Espruino. Но вы всегда можете разработать и поддерживать такой форк сами или же мы можем заняться поддержкой вашей платы за [https://www.espruino.com/Business небольшую месячную плату].
{{Примечание1|Из-за большого количества поддерживаемых плат (более 50) разработчики уже не могут добавлять поддержку новых плат в главную кодовую базу Espruino. Но вы всегда можете разработать и поддерживать такой форк сами или же мы можем заняться поддержкой вашей платы за [https://www.espruino.com/Business небольшую месячную плату].}}


=См.также=
=См.также=


{{ads}}
 


=Внешние ссылки=
=Внешние ссылки=
Строка 172: Строка 173:
<references />
<references />


{{Навигационная таблица/Espruino}}
{{Навигационная таблица/Портал/Espruino}}
{{Навигационная таблица/Телепорт}}

Текущая версия от 15:16, 28 мая 2023

Перевод: Максим Кузьмин
Проверка/Оформление/Редактирование: Мякишев Е.А.


Часто задаваемые вопросы[1]

Что такое Espruino?

Espruino – это JavaScript-интерпретатор для микроконтроллеров, заметно упрощающий разработку встроенного ПО. Интерпретатор Espruino – это прошивка с открытым кодом, запускаемая на множестве различных микроконтроллеров. Кроме того, в продаже есть платы Espruino, где этот интерпретатор уже предустановлен по умолчанию, что облегчает первые этапы работы с ними.

Но Espruino – это не только интерпретатор и платы, но и Web IDE, инструменты командной строки, документация, руководства и модули, вместе составляющие оптимальное решение для разработки встроенного ПО.

Возникли проблемы с платой Espruino?

Ознакомьтесь с этой статьёй. Если там нет решения вашей проблемы, обратитесь на форум.

Я подключил Espruino к ПК/Mac – что делать дальше?

Загляните на страницу «быстрого старта», выберите там своё устройство и следуйте пошаговым инструкциям – они объяснят вам, что делать.

Есть ли форум, где я могу попросить помощи?

Да! Вот он.

Espruino имеет какое-нибудь отношение к ESP8266/ESP32/Espressif?

Общие буквы «esp» – это просто совпадение. ESP8266 была выпущена в 2014 году, а сайт espruino.com был создан в 2012 году.

У прошивки Espruino есть порты, которые можно запускать на чипах ESP8266 и ESP32, но эти порты – плод работы комьюнити. Во-первых, Espressif никак не поддерживает Espruino, и во-вторых, ни одна из официальных плат Espruino не использует ESP8266/ESP32 как платформу.

Espruino – это проект с открытым кодом?

Да! И он весь есть на GitHub. Главная прошивка распространяется по лицензии MPLv2. Если вы планируете использовать Espruino в коммерческих целях, разработчики просят связаться с ними для взаимовыгодного сотрудничества.

Почему JavaScript?

Нам нужен был язык программирования, который:

  • Имеет ту же базовую форму, что и C, благодаря чему простой код похож на Arduino-код.
  • Подталкивает к событийному программированию (для снижения энергопотребления).
  • Широко используется и у которого много обучающих онлайн-руководств.
  • Интерпретируется и позволяет модифицировать функции при запущенном интерпретаторе (в отличие от некоторых других языков, JavaScript воспринимает функции как переменные).

Я сделал кое-что крутое при помощи Espruino, хотите взглянуть?

Разработчики посмотрят с удовольствием! Показать свой проект можно в этом разделе форума.

Как Espruino отличается от Arduino / Raspberry Pi / встраиваемых Linux-плат?

Espruino vs Raspberry Pi / встраиваемые Linux-платы

  • Raspberry Pi – это очень мощные и гибкие платы, но в состоянии покоя потребляющие относительно много электричества, из-за чего их проблематично питать от батареи. В режиме покоя Raspberry Pi потребляет минимум около 50 мА, а Puck.js – 0.003 мА.
  • На Raspberry Pi ненадёжная планировка действий в реальном времени, из-за чего синхронизация особой точностью не отличается.
  • Raspberry Pi хорошо подходит для работы с видео, тогда как Espruino недостаточно мощна для этого.
  • Espruino работает на JavaScript. Это делает эту платформу более доступной и лёгкой для использования для начинающих. С другой стороны, Raspberry Pi даёт больше выбора в языках, что хорошее качество, но может отпугнуть некоторых пользователей.
  • У Raspberry Pi нет аналогового ввода/вывода, а у Espruino есть.
  • Для Raspberry Pi нужна SD-карта, содержащая операционную систему (для Espruino – нет).

Espruino vs Arduino

  • Espruino меньше, чем большинство Arduino, и гораздо дружелюбнее для начинающих.
  • На ПК или Mac необязательно предустанавливать какое-либо ПО.
  • Хотя Arduino потребляет меньше электричества, платы Espruino разработаны с прицелом на энергоэффективность и потребляют более чем в 10 раз меньше в режиме сна.
  • Использование JavaScript-интерпретатора означает, что вам не придётся выполнять сброс Espruino после внесения изменений в код, но это также значит, что скорость выполнения будет чуть ниже.

Когда я печатаю команду, почему Espruino пишет =undefined?

После выполнения команды Espruino печатает =, а затем возвращаемое значение. Например:

>1+2
=3
>analogRead(A0)
=0.0324

Но если вызвать функцию, которая ничего не возвращает, она вернёт undefined – это именно то, что вы видите у себя:

>digitalWrite(D0,1)
=undefined
Примечание

Начиная с версии 1v99 =undefined уже не печатается.

Когда я печатаю функцию, почему Espruino печатает =function ...?

Смотрите ответ в предыдущем вопросе – когда вы задаёте функцию, Espruino также возвращает саму эту функцию в качестве значения. Она печатает её в консоль аналогично всем прочим командам, которые вы печатаете.

Мой код стёрся, когда я отключил питание от Espruino. Что можно сделать?

Чтобы более надёжно сохранить код, просто впишите save() в левой части Web IDE. Когда питание снова будет подключено, Espruino восстановится в том же состоянии, которое было сохранено при использовании save(), запомнив таймеры, прерывания и даже состояния контактов. Наличие какого-то работающего кода с самого запуска Espruino может пригодиться, например, если вам нужно инициализировать какие-то подключенные к Espruino устройства вроде дисплеев. В этом случае вы просто можете добавить функцию onInit() – она будет выполняться при каждом запуске Espruino. Более подробно читайте в этой статье.

Могу ли я использовать Espruino для управления устройствами при помощи программы на ПК?

Да! Если у вас есть возможность отправлять данные по последовательному порту с ПК на Espruino, то делается это очень просто. Всё, что вам нужно – это отправить команду echo(0). Она останавливает работу, назовём это так, «пользовательского интерфейса» Espruino. После этого вы сможете отправлять и получать данные при помощи команд вроде print(analogRead(A0)).

Более подробно читайте в этой статье.

Насколько быстро работает Espruino?

Espruino достаточно быстро работает для всего, что касается взаимодействия с реальным миром (серводвигатели, моторы, светильники и так далее). События вроде setWatch имеют временную отметку, благодаря чему вы можете измерить продолжительность импульса с точностью до одной микросекунды (1 / 1.000.000 секунды).

Чтобы вы примерно понимали скорость работы Espruino, вот этот код создаёт квадратную волну с частотой 1.5 КГц.

setInterval("digitalWrite(LED1,l=!l)",1000/3000);

То есть он выполняется 3000 раз в секунду, в то же время позволяя фоном выполнять и какие-то другие задачи. Но вы можете генерировать и ещё более высокочастотные квадратные волны при помощи ШИМ-функционала Espruino. Более подробно читайте в этой статье.

А есть вещи, для которых Espruino не подходит? Да – рендеринг/обработка видео и анализ данных большого размера. Впрочем, если вам нужно, чтобы какая-то часть вашего проекта работала очень быстро, вы всегда можете воспользоваться ассемблерной вставкой, C-вставкой и предварительно скомпилированным C-кодом.

Насколько энергоэффективен язык Espruino?

Очень. Espruino – это событийный язык программирования, и поэтому интерпретатор Espruino может переходить в режим сна, если будет знать, что ему не нужно выполнять никаких действий.

Это значит, что код на Espruino будет гораздо более энергоэффективным, чем тот же код на C, разве что в этом C-коде не задан явно переход в более энергоэффективный режим сна. Энергопотребление зависит от используемой платы, но для устройств вроде Puck.js энергопотребление в состоянии покоя может составлять всего 3 мкА (0.000003 А).

Как много питания могут давать контакты Espruino?

См. таблицу ниже:

Тип платы Сила тока на одном IO-контакте Суммарная сила тока на всех IO-контактах
Original 25 мА 120 мА
Pico
WiFi
20 мА 120 мА
Puck.js
Pixl.js
MDBT42Q
15 мА 15 мА (см. тут)

Язык Espruino на 100% совместим с JavaScript?

В Espruino реализована (значительная) часть спецификации JavaScript, но не 100%. По словам разработчиков, они стараются делать так, чтобы функционал Espruino максимально соответствовал стандартам JavaScript.

Список функций языка JavaScript, поддерживаемых в Espruino, смотрите тут.

Наименее используемые части JavaScript в Espruino не вошли, потому что для них не хватает памяти. Справочник по Espruino можно найти тут.

Но, по сути, если вы будете программировать обычным JavaScript-кодом, то вряд ли заметите какую-нибудь разницу между Espruino и обычным JavaScript. Если у вас возникли какие-нибудь проблемы, то можете описать их на форуме (но не забудьте приложить проблемный фрагмент кода) – разработчики пишут, что постараются исправить этот баг, а если окажется, что это какая-то интересная функция, то попробуют сделать так, чтобы её смогли использовать другие люди.

Будет ли Espruino работать на моей плате?

Если она есть в этом списке, то да. Если нет, но если она оснащена похожим процессором с таким же (или похожим) количеством RAM- и flash-памяти, то не факт, но попробовать всё равно можно – инструкции по сборке смотрите на GitHub.

На нашем форуме есть специальная секция, где вы можете задавать вопросы на эту тему или рассказывать о том, как у вас получается заставить свою плату работать на Espruino.

Примечание

Из-за большого количества поддерживаемых плат (более 50) разработчики уже не могут добавлять поддержку новых плат в главную кодовую базу Espruino. Но вы всегда можете разработать и поддерживать такой форк сами или же мы можем заняться поддержкой вашей платы за небольшую месячную плату.

См.также

Внешние ссылки