Day 18 ( 中级 ) 阵列点灯 ( 显示图形 )

阵列点灯 ( 显示图形 )

教学原文参考:阵列点灯 ( 显示图形 )

这篇文章会介绍如何使用「阵列」积木,搭配「回圈」和「点亮」积木,让 micro:bit 能透过阵列的内容,显示对应的图形。

相关文章参考:阵列回圈点亮

积木程序原理

micro:bit 的显示器由 25 颗 LED 灯组成,由於 25 颗灯以 5x5 的方式排列,所以可以采用「二维阵列」的方式,以 xy 座标控制,以下图为例,左方使用 0 和 1 组成的阵列,经过转换 ( 让 1 亮灯 0 熄灯 ),就可以透过 micro:bit 显示。

micro:bit - 阵列点灯 ( 显示图形 )

举例来说,只要建立一个简单的阵列,就能显示对应的图形:

  • 建立 list 阵列:[0,1,0,1,0]。
  • 使用计次回圈,重复 0~4 共五次
  • 回圈每次重复,取出阵列 list 对应的项目 ( 例如第一次就取出 list[0],第二次就取出 list[1] )。
  • 判断如果取出的项目等於 1,就让指定座标的 LED 亮灯。
  • 判断如果取出的项目不等於 1,就让指定座标的 LED 熄灯。

micro:bit - 阵列点灯 ( 显示图形 )

如果把 list 改成以「亮度」为内容的阵列,就能够让 LED 依据内容显示不同亮度。

micro:bit - 阵列点灯 ( 显示图形 )

接下来要使用「二维阵列」,产生 25 颗灯的图形,首先将原本的 list 阵列内容改成「空阵列」,点击後方的「+」新增项目。

micro:bit - 阵列点灯 ( 显示图形 )

将具有五个项目的阵列,放入 list 阵列中,成为二维阵列。

因为 MakeCode 的阵列积木,「超过五个项目」才会变成直式,为了让程序编辑方便,范例使用六个项目,第六个项目留空

micro:bit - 阵列点灯 ( 显示图形 )

如果第六个项目无法留空 ( 受限於积木的外观,有时会无法留空 ),也可以使用其他阵列代替 ( 实际操作不会用到 )

micro:bit - 阵列点灯 ( 显示图形 )

建立 x 和 y 两个新变数,作为计次回圈使用。

micro:bit - 阵列点灯 ( 显示图形 )

在阵列 list 下方,放入两个「计次回圈」,次数设定 0~4,用滑鼠在 index 变数上方按右键,选择 x 和 y 作为计次回圈的变数,外层为 y,内层为 x。

micro:bit - 阵列点灯 ( 显示图形 )

使用两次「取得索引项目」,先取得 list 里的项目阵列,再从每个取得的项目阵列中,取出每个项目的亮度,套用在各自 xy 座标的 LED,完成後,micro:bit 就会按照阵列显示对应的亮度。

micro:bit - 阵列点灯 ( 显示图形 )

如果不要使用亮度,也可以改成 0 和 1 的点灯版本,差别在於判断 1 就亮灯,0 就熄灯。

micro:bit - 阵列点灯 ( 显示图形 )

范例解答

关於我

大家好,我是 OXXO,是个即将迈入中年的斜杠青年,如果对我有点兴趣(笑,可以与我联系,一起来做点有玩又有创意的东西吧!


<<:  [Day 4] 来个简单的小应用呗~

>>:  组译器与连结器 (上)

[区块链&DAPP介绍 Day12] Solidity 教学 - contracts-1

今日来介绍 solidity 里的 contracts。 contract contract 其实是...

Day 29 - 使用 Config 为 NestJS 专案拆分不同开发环境

前言 终於来到了第 29 天了,也就是名义上技术篇章的最後一篇了 XDD,到了今天我还真是突然不知道...

Day4-标头档1

昨天把所有程序码都写在一起包括class与程序进入点main(),但这样做有个缺点就是会暴露原始码,...

[Day11]-集合(set)

基本集合 集合本身是无序,且元素都是唯一值,集合里的元素内容不能改变,但集合本身可以新增或删除 增...

[Day 28] 储存训练好的模型

储存训练好的模型 今日学习目标 使用 pickle + gzip 储存模型 将训练好的模型打包并储存...