原文地址: MicroBlocks 编程案例: 运用 micro:bit 接收 xlight
MicroBlocks 中文主页
xlight
@leeyve 前些时分买到 MakeBlock 众筹的项目: xlight
彩虹灯很好看,细巧而明媚。 但我不想用它的控制盒和编程软件。 不爱用图形化编程范畴的大多数软件/硬件。 或许只要 scratch 是破例(硬件的话,micro:bit、树莓派很棒)。大多图形化体系,不是太愚蠢,便是自在度太低,一般,两者兼而有之。
于是我深思着如何绕开 xlight 的软件和硬件,接收这个彩虹灯。 就像之前接收洛克人的手持设备(@leeyve 从日本带来的):
视频地址 adapter.codelab.club/video/60022…
Hack it!
对核算机的拜访(以及任何或许帮助你知道咱们这个国际的事物)应该是不受限制的、彻底的。任何人都有着手尝试的权力! 黑客们信任,通过将东西拆开,了解它们的作业原理,并依据这种了解发明新奇的甚至更风趣的东西,能够学习到关于体系(关于国际)的重要常识。他们怨恨全部试图阻挠他们这么做的人、物理障碍或者法律。 — 《黑客: 核算机革命的英雄》
黑客精力并不总是与破坏、入侵有关,在它诞生之初,更多是一种对体系的猎奇,对事物的运转机制的猎奇。
我对 xlight 感到猎奇,对其虚构出的明媚彩虹 感到喜悦和猎奇。 这猎奇和一个六岁孩子面对滴答作响的时钟 ⏰ 的猎奇是相同的,它从前导致我对着散落一屋的零件流泪,现在导致我对这彩虹灯有满足的了解。
当你了解一个东西的时分,你差不多就能 hack 它,从而接收它(假如你愿意的话),正如大多数黑客所做的那样。
简单调查之后,我猜测 xlight 的灯座里的可编程灯珠是 ws281x。
假如的确如此,运用 micro:bit 就能够轻松接收。
我运用 microblocks 做了个试验,果真如此。
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 积木库里翻开 NeoPixel 插件库:
John Maloney
假如一个体系关于孩子来说是好的,那么对专业人士一般也是好的。 — Alan Kay
MicroBlocks 是 John Maloney 最新的项目。John Maloney 是我最喜欢的核算机科学家之一。
他是 Alan Kay 意义上的科学家,而不是咱们今日运用这个词所指的。
牛顿说他站在巨人的膀子上看得更远,而核算机科学家却经常站在对方的脚趾上。 — 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 里
3 衔接 micro:bit
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 的优势就越发明显,由于它供给了强壮的笼统构件和交互式支撑,编程非常愉快):
你也能够自行下载运用: xlight-node.ubp。 下载之后,能够在 microblocks 里翻开程序:
Scratch 中的 demo 链接
附录
在 microblocks 里无法衔接 micro:bit?
重新插拔 micro:bit
确保只要当前一个 microblocks 页面,关掉或许占用串口的页面: microblocks、MakeCode
microblocks 与 Scratch(micro:bit radio) 通讯的根底模版
xlight-node.ubp
GPblocks 的文本方式
GPblocks 的文本方式与图形方式是等价的。
GPblocks 的文本代码相似 Smalltalk72, Smalltalk72 参阅了 Logo ,而 Logo 来自 LISP。
GPblocks 惊人的可组合性和实现之简单,很大程度与 LISP 的表现力有关。
以下是 microblocks 的编译器代码片段:
LISP 风味十足!
运用 to
界说函数的风格的语规律来自 Smalltalk72
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