为玩转 JavaScript 而生的硬件

距离上一篇文章「JavaScript 很少为人所知的玩法」发表正好过去一个月,文章反响还不错,也带来了不少关注,说明还是有人对在微控制器上跑 JavaScript 感兴趣的。

为了进一步学习 JavaScript 以及在微控制器上实现的解析器,我专门设计了一款简单的硬件 nRF52832 Micro Development Kit,目前已经能够支持 JerryScript 以及 Espruino 这两个 JavaScript 解析器,平时就用来研究学习,感觉还是挺方便的。

先功能框图,再上“写真集”,最后一个简单的 Demo。

功能框图

专门制作的框图,有没有比纯文字描述好看多了?

写真集

能用图片表达的,我尽量少说话......🤐

Demo

我保证这次不再闪灯了,换种方式,来一个稍微进阶一点的。

材料清单

  • nRF52832 Micro Development Kit(本文主角)
  • 128*64 OLED Display(SPI接口)
  • 面包板
  • 面包板专用跳线

连接图

运行 JavaScript 代码

require("Font8x16").add(Graphics);  
var s = new SPI();  
s.setup({mosi: D26 /* D1 */, sck: D25 /* D0 */});  
var g = require("SSD1306").connectSPI(s, D28 /* DC */,  
        D27 /* RST - can leave as undefined */, start, { cs : D29 });
g.setContrast(255);

function start(){  
  g.setFont8x16();
  g.drawString("Welcome to", 0,12);
  g.drawString("makerdiary.co", 20,30);
  g.flip();  
}

显示图片当然也很简单,可以先使用 ImageMagick 将图片转换一下:

var img_logo = {  
  width : 64, height : 64, bpp : 1,
  transparent : 0,
  buffer : E.toArrayBuffer(atob("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAOAAAAAAAAAB8AAAAAAAAAP4AAAAAAAAA/wAAAAAAAAH/gAAAAAAAA//AAAAAAAAD/+AAAAAAAAf/8AAAAAAAB//4AAAAAAAP//gAAAAAAB///AAAAAAAB//8AAAAAAAD//4AAAAAAAD//gAAAAAAYH/+AAAAAAD4H/8AAAAAAfwP/gAAAAAB/wPwAAAAAAP/wYAAAAAAB//gAIAAAAAH//gHgAAAAA//+D/AAAAAD//w/8AAAAAf/+H/4AAAAD//wf/gAAAAP/+D/+AAAAB//wf/8AAAAD/+D//gAAAAP/4f/+AAAAA//D//wAAAAB/4f/+AAAAAH+D//4AAAAAPAP//AAAAAAgAP/8AAAAAAAwf/gAAAAAAfgf8AAAAAAP/gfwAAAAAB//A+AAAAAAD//AwAAAAAAP/+AAAAAAAA//+AAAAAAAB//8AAAAAAAH//8AAAAAAAP//gAAAAAAA//8AAAAAAAB//wAAAAAAAD/+AAAAAAAAH/4AAAAAAAAP/AAAAAAAAAf4AAAAAAAAA/gAAAAAAAAB8AAAAAAAAADgAAAAAAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="))
};

function start(){  
  g.drawImage(img_logo, 32, 0);
  g.flip();  
}

好了,今天就先这样,感兴趣的朋友可以关注一下,更多例子以后慢慢推送。


如无特殊说明,本文版权归本文作者及「创客日记」所有,采用知识共享署名-非商业性使用 4.0 国际许可协议进行许可。

转载请注明:来自「创客日记」https://makerdiary.co/the-hardware-for-learning-javascript/

Zelin

开源硬件爱好者

Subscribe to 创客日记

Get the latest posts delivered right to your inbox.

or subscribe via RSS with Feedly!