原文地址: MicroBlocks 编程案例: 运用 micro:bit 接收 xlight

MicroBlocks 中文主页

xlight

@leeyve 前些时分买到 MakeBlock 众筹的项目: xlight

MicroBlocks 编程案例: 使用 micro:bit 接管 xlight

彩虹灯很好看,细巧而明媚。 但我不想用它的控制盒和编程软件。 不爱用图形化编程范畴的大多数软件/硬件。 或许只要 scratch 是破例(硬件的话,micro:bit、树莓派很棒)。大多图形化体系,不是太愚蠢,便是自在度太低,一般,两者兼而有之。

于是我深思着如何绕开 xlight 的软件和硬件,接收这个彩虹灯。 就像之前接收洛克人的手持设备(@leeyve 从日本带来的):

视频地址 adapter.codelab.club/video/60022…

Hack it!

对核算机的拜访(以及任何或许帮助你知道咱们这个国际的事物)应该是不受限制的、彻底的。任何人都有着手尝试的权力! 黑客们信任,通过将东西拆开,了解它们的作业原理,并依据这种了解发明新奇的甚至更风趣的东西,能够学习到关于体系(关于国际)的重要常识。他们怨恨全部试图阻挠他们这么做的人、物理障碍或者法律。 — 《黑客: 核算机革命的英雄》

黑客精力并不总是与破坏、入侵有关,在它诞生之初,更多是一种对体系的猎奇,对事物的运转机制的猎奇。

我对 xlight 感到猎奇,对其虚构出的明媚彩虹 感到喜悦和猎奇。 这猎奇和一个六岁孩子面对滴答作响的时钟 ⏰ 的猎奇是相同的,它从前导致我对着散落一屋的零件流泪,现在导致我对这彩虹灯有满足的了解。

当你了解一个东西的时分,你差不多就能 hack 它,从而接收它(假如你愿意的话),正如大多数黑客所做的那样。

简单调查之后,我猜测 xlight 的灯座里的可编程灯珠是 ws281x。

MicroBlocks 编程案例: 使用 micro:bit 接管 xlight

假如的确如此,运用 micro:bit 就能够轻松接收。

我运用 microblocks 做了个试验,果真如此。

MicroBlocks 编程案例: 使用 micro:bit 接管 xlight

You just do it and it’s done. — Daniel Ingalls 《The Evolution of Smalltalk》

简而言之,我把 xlight(不包括编程板) 接到 micro:bit 上,翻开 microblocks 进行编程,顺利接收。从而能够在 CodeLab Scratch 上对 xlight 进行实时编程,运用到了 CodeLab Adapter 的 micro:bit radio 插件。

以下是一些简单的试验代码。我用杜邦线将 xlight 接到 micro:bit 1 号引脚(扩展版选用了恩孚的,恩孚现在是英荔的合作伙伴)。

MicroBlocks 编程案例: 使用 micro:bit 接管 xlight

在 microblocks 积木库里翻开 NeoPixel 插件库:

MicroBlocks 编程案例: 使用 micro:bit 接管 xlight

John Maloney

假如一个体系关于孩子来说是好的,那么对专业人士一般也是好的。 — Alan Kay

MicroBlocks 是 John Maloney 最新的项目。John Maloney 是我最喜欢的核算机科学家之一。

他是 Alan Kay 意义上的科学家,而不是咱们今日运用这个词所指的。

MicroBlocks 编程案例: 使用 micro:bit 接管 xlight

牛顿说他站在巨人的膀子上看得更远,而核算机科学家却经常站在对方的脚趾上。 — Alan Kay 《The Early History Of Smalltalk》

John Maloney 之前是 Scratch 的首席架构师,对图形/实时交互式编程体系有深化考虑,或许是这个范畴最出色的考虑者之一, 他曩昔的作业包括:

  • morphic
  • etoys
  • Scratch
  • GPblocks

MicroBlocks 根据 GPblocks,彻底在图形化环境里构建,GPblocks 是自举的图形化编程言语!在图形化环境里实现了自己的编译器!

John Maloney 现在的精力都在 MicroBlocks,他说之后或许会重新回到 GPblocks。

假如你仔细看看 John Maloney 的作业,简直要置疑现在整个范畴在瞎搞什么玩意儿(这里包括微软的 MakeCode 和 Google 的 Blockly)。这些项目既没有新的主意,对曩昔的好主意也是一窍不通,成果便是一些乱七八糟的随意拼凑。

今日的编程入门一般与图形化有关,考虑到这个范畴的设施是如此之差(干流范畴或许只要 Scratch 是破例)。 以至于咱们要置疑孩子们究竟在学些什么东西,我想今日所谓的编程学习,主要是在尽力掌握工程师/产品司理们的糟糕主意。这些主意内化在他们的软件渠道里、内化学习材料里、内化在考试题目上。

按 Alan Kay 的说法,软件工程范畴忙着出产 ‘一次性塑料垃圾’。

why Microblocks?

现代的编程就如同闭着眼睛去摆放符号相同 — Bret Victor

在编译和运转一个程序之前,我彻底看不到程序会输出一个怎样的成果,我需求在脑内想象并且依据我所想象的图画去修改程序。为了得出我想要的输出我需求一向不停地修改、编译和运转, 反反复复。并且有些时分,当我彻底不明白程序为什么没有像我所希望的那样去运转的时分,我就要逐行查看, 运用各种 debug 技巧。 — David Luo

丢掉 MakeCode 之类的东西, 别再闭着眼睛摆放积木了。张开双眼,在 Microblocks 里以可了解的方法实时编程吧!

可悲的是,MakeCode 已经是现在与硬件有关的图形化编程工具里最好的了。

我在两种硬件编程风格的比较说到两种典型的风格:

  • 灌入式
  • 交互式

这两者差异很明显,各自的长处也很明显,所以现在干流范畴,两个阵营都有很多拥趸。

John Maloney 的豪举之一是, 在 MicroBlocks 里一致了两者!让交互式的 可了解性 和离线的 实时性 能够兼得!这是整个范畴朝思暮想的特性。 MicroBlocks 通过沿用 Smalltalk 的架构风格实现这一豪举。

MicroBlocks 的另一豪举是为用户供给了一个高度易用和 自在 的环境,MicroBlocks 是自支撑和可成长的,这是个人核算社区一向以来寻求的特质(CodeLab Adapter 也尽力寻求这一特质), 在这样的环境中,终端用户具有高度自在,能够以一致的方法考虑体系的各个层次,从而深化了解体系并进行自在发明。 假如你对这种对发明友好的体系感兴趣,可参阅Smalltalk 背后的规划原则

hello Microblocks

在 Microblocks 中对 micro:bit 编程是非常简易的,就像运用 Scratch 相同简易直观(由于都是 John Maloney 的规划)。

你只需求:

1 运用 Chrome/Edge 浏览器翻开 Microblocks 2 为 micro:bit 刷入固件,也能够下载固件,手动拖到 micro:bit 里

MicroBlocks 编程案例: 使用 micro:bit 接管 xlight

3 衔接 micro:bit

MicroBlocks 编程案例: 使用 micro:bit 接管 xlight

4 开端编程!

乍看起来和 makecode 差异不大,并且 makecode 的界面好像还要更好看些(我置疑 makecode 的大多数精力都集中在这些微创新上),一旦你完成 hello world 阶段,开端构建实在的项目,就会发现它们的大相径庭。

假如你有过 Scratch 的经历,你关于体系的 ‘活性’ 会有很高等待,你不再愿意闭着眼睛摆放东西了,你等待体系给你的实时反应,这些反应支撑或对立你脑子里的假设(就像物理学家等待在试验中获得物理国际的反应,以校准观念),如此一来,与体系的每次实时交互。都让你了解体系那些不行见的部分。 microblocks 在硬件编程范畴彻底供给了和 Scratch 相同的体会,你甚至能够运用音讯!它还默认支撑多任务!

The challenge is not buiding it, but understanding it — Bret Victor 《Seeing Spaces》

We make, not just to have, but to know — Alan Kay 《The Early History Of Smalltalk》

由于体系的’活性’, 在 microblocks 里,对探究式编程供给了绝佳支撑,’了解’发生在探究的过程中,而不是了解今后再去编程,这是一种帮助你了解事物的体系,而不只是做出某个东西的体系。

换句话说,它是支撑「建构主义」的体系。

编程应该成为了解事物的方法,正如写作是一种了解事物的方法。动态前言(核算机)最强壮的潜力之一在于,对过程中的考虑供给强壮支撑,甚至超越写作(根据静态前言)所能供给的支撑。现在仅有个人核算社区展示了核算机的这种潜力。

我前几天在 microblocks 里玩 micro:bit 的一个下午,比我曩昔学到的任何关于 micro:bit 的东西都多。

接入 Scratch

以下是我把 xlight 接收到 CodeLab Scratch 之后,做的一个演示视频。

视频地址 adapter.codelab.club/video/debfc…

思路是这样的: 在 microblocks 里为 micro:bit 写一个固件,这个固件让 micro:bit 呼应来自外部的 radio 音讯,并解释这些音讯(Smalltalk风味)。Scratch 通过另一块 micro:bit 运用 radio 给前边的 micro:bit 发送音讯。 对 xlight 的控制语义编码在 radio 音讯里。

对的,这正是 CodeLab Adapter 的 micro:bit radio 插件的作业原理。 插件文档有具体阐明,曩昔咱们运用 makecode 构建固件(功用板),现在咱们用 microblocks 替代它,一切东西都兼容(中转站(天线)无需任何修改)!由于音讯是松耦合的!这是可成长体系的一个例子。可成长的体系能够轻松接入来自未来的新事物,尽管它自己是在曩昔构建的。

以下是固件代码(当代码达到必定复杂度时,microblocks 的优势就越发明显,由于它供给了强壮的笼统构件和交互式支撑,编程非常愉快):

MicroBlocks 编程案例: 使用 micro:bit 接管 xlight

你也能够自行下载运用: xlight-node.ubp。 下载之后,能够在 microblocks 里翻开程序:

MicroBlocks 编程案例: 使用 micro:bit 接管 xlight

Scratch 中的 demo 链接

附录

在 microblocks 里无法衔接 micro:bit?

重新插拔 micro:bit

确保只要当前一个 microblocks 页面,关掉或许占用串口的页面: microblocks、MakeCode

microblocks 与 Scratch(micro:bit radio) 通讯的根底模版

MicroBlocks 编程案例: 使用 micro:bit 接管 xlight

xlight-node.ubp

GPblocks 的文本方式

GPblocks 的文本方式与图形方式是等价的。

GPblocks 的文本代码相似 Smalltalk72, Smalltalk72 参阅了 Logo ,而 Logo 来自 LISP。

GPblocks 惊人的可组合性和实现之简单,很大程度与 LISP 的表现力有关。

以下是 microblocks 的编译器代码片段:

MicroBlocks 编程案例: 使用 micro:bit 接管 xlight

LISP 风味十足!

运用 to 界说函数的风格的语规律来自 Smalltalk72

MicroBlocks 编程案例: 使用 micro:bit 接管 xlight

Smalltalk72 是从 Logo 里学来的语法。这种界说语法与英语中的动词界说相似: to speed is to drive fast。这是 Logo 为可了解性做的尽力(符合直觉),也是个人核算社区一向的做法。

英荔比特

英荔比特里的一切设备在 microblocks 里应该都可用,其间的大多数我都做了测试

入门与深化

microblocks 官网给出了很多好的材料:

  • get started
  • learn
  • wiki

参阅

  • 两种硬件编程风格的比较
  • CodeLab 纪事#批评过分垂青积木的视角
  • xlight
  • gpblocks
  • John Maloney
  • MicroBlocks
  • Bootstrapping
  • 软件: 艺术,工程,数学还是科学?
  • CodeLab Adapter 深度衔接 micro:bit (makecode)生态
  • Personal Dynamic Media
  • Personal Computing