Програмування мікроконтроллерів на JavaScript

Андрій Костецький

  • Випускник ЧНУ
  • Full stack розробник в ASD
  • Ментор NodeSchool Чернівці

JavaScript
&&
мікроконтроллери

Espruino

Екосистема програмування мікроконтролерів на мові JavaScript

  • плати Espruino і сумісні пристрої
  • прошивка з інтерпретатором JavaScript
  • Espruino WEB IDE

http://www.espruino.com/

ECMAScript 5

  • Відсутні мітки для break
  • Відсутні регулярні вирази і деякі функції
  • ";" не додаються автоматично в кінці рядків
  • API для роботи з портами

Espruino


							setInterval(function() {
								a != a;
								digitalWrite(LED1, a);
							}, 1000);
						

Arduino


							void setup() {
								pinMode(LED1, OUTPUT);
							}
							void loop() {
								digitalWrite(LED1, HIGH);
								delay(1000);
								digitalWrite(LED1, LOW);
								delay(1000);
							}
						

Espruino


							setInterval(function() {
								a != a;
								digitalWrite(LED1, a);
							}, 1000);
							setInterval(function() {
								b != b;
								digitalWrite(LED2, b);
							}, 1024);
						

Arduino


							int count1 = 0;
							int count2 = 0;
							void setup() {
								pinMode(LED1, OUTPUT);
								pinMode(LED2, OUTPUT);
							}
							void loop() {
								digitalWrite(LED1,
									count1 < 1000);
								if(++count1 >= 2000)
									count1 = 0;
								digitalWrite(LED2,
									count2 < 1234);
								if(++count2 >= 2468)
									count2 = 0;
								delay(1);
							}
						

IskraJS

  • Мікроконтроллер: STM32F405RG
    (32-бітний ARM Cortex M4)
  • Тактова частота: 168 МГц
  • Об'єм флеш-пам'яті: 1024 КБ
  • Об'єм SRAM: 192 КБ

Набір додаткового API

  • setWatch
  • pinMode
  • digital[Read/Pulse/Write]
  • analog[Read/Write]
  • SPI
  • File API
  • I2C
  • Serial
  • OneWire

Висновки

  • 95% стандарту JS
  • Можливість відправки команд процесору
  • API схоже з Arduino та Node.JS