从零开始学MicroPython和micro:bit

MicroPython语言介绍

 

MicroPython是专为微控制器开发的基于Python编程语言的开源解释性语言。在这个实验指南中,我们将向您展示如何开始使用MicroPython和流行的micro:bit板和我们的micro:bit。

注意:本文假定您有编程经验。如果您以前从未使用过编程语言,那么我们建议您看看这个指南的MakeCode版本。MakeCode是一个拖放编辑器,它对所有年龄段的初学者都很有帮助。

当你完成了这个指南,你就知道如何用开始用MicroPython对micro:bit编程,来创建自己的项目和实验!

使用MicroPython

MicroPython只是一种编译语言,所以它不包含写和编辑代码的空间。幸运的是,我们可以使用一个编辑器来编写Python代码。在开始之前,您需要下载Mu。Mu是一个简单的代码编辑器,适合在Windows, OSX, Linux和Raspberry Pi上运行。

使用MicroPython的一个主要的优点是交互式的REPL。REPL(read-evaluate-print loop)代表读取﹣求值﹣输出循环,此中技术背后的原理一言难尽,有兴趣的读者可以参考维基百科相关介绍,REPL对于学习一门新的编程语言具有很大的帮助,因为它能立刻对初学者做出回应。这意味着你可以马上执行代码,查看结果,而无需先经过编译然后上传的繁琐步骤。要让REPL在Windows上工作,您需要安装mbed的串口驱动程序。

Python的应用程序非常广泛,使用Python拥有优于其他编程语言的优势,包括与其他语言和平台、第三方模块、广泛的支持库、用户友好的数据结构进行交流,当然,它是开源的。

目前一些已知的使用Mu和micro:bit的问题,是不能导入第三方模块,不能使用中断,也不能用一种合适的方式将一个范围的数字映射到另一个范围。由于不支持导入第三方模块,所以我们将在当前的Mu MicroPython文件中复制和粘贴源代码。和学习任何新的语言一样,Python需要时间、耐心、自学和大量的例子!坚持下去,我们会在路上帮助你。

项目文件

 

要下载跟随所有实验所需的所有文件,请点击下面的按钮。

DOWNLOAD THE PROJECT FILES!下载项目文件

选择软件

 

要使用MicroPython和micro:bit,有几个不同的选择。

建议阅读

 

如果您以前从未使用过电子产品,我们建议您对以下教程中的概念略作了解:

 

  • 电压、电流、电阻和欧姆定律——电子和电气工程中最基本的概念。熟悉这些概念,因为它们将在你的电子产品探索中使用到。
  • 电路是什么?——在本指南中,我们将构建各种电路。理解这意味着什么,对于理解发明者的工具包是至关重要的。
  • 如何使用面包板——第一次使用面包板?请查看本教程!它将帮助您理解为什么breadboard对于原型设计和如何使用非常有用。

实验:你好,micro:bit

 

Hello World你好,世界:程序员的第一个程序

在micro:bit上的“你好世界”有点不同。在大多数微控制器上,这个程序将使用串行终端执行。您可以使用内置的LED阵列来与您的微处理器进行交互,而不是使用串行终端。所以,micro:bit的“Hello World”是用LED阵列来绘制的!

 

让我们先从REPL运行程序,然后我们将构建一个.py脚本并将其上传到micro:bit。打开Mu,并确保你的micro:bit通过USB数据线连接到你的电脑上。

 

打开REPL,单击图标,您应该会看到第二个窗口出现在底部。输入help(),看看会发生什么。

 

 

The colon is how Python blocks code the way Arduino uses a set of curly brackets. Everything indented under a colon will execute as a block of code.

Type the program above in your Mu editor, or download all the programs from this GitHub Repository. Save it, then click the Flash icon to program your micro:bit.

Let’s display an image next instead of text.

点击任何一个图像来进一步观察。

在REPL输入 display.scroll("Hello World")观察你的micro:bit的5×5 LED阵列。现在通过单击REPL图标关闭REPL。

对于第一个MicroPython脚本,我们将介绍如何添加注释、如何导入模块以及如何创建将永久运行的循环。在程序的顶端,你会看到三条注释。注释是使用#符号和一个空格创建的。你可以使用 from 和import访问模块。这些单词告诉解释器要从哪些模块中导入。在这种情况下,我们从micro:bit导入所有内容。while True:是关于如何在Python中创建一个永久循环。冒号是Python如何用一组花括号来阻塞代码。在冒号下缩进的所有内容都将作为代码块执行。

在您的Mu编辑器中输入程序,或者从这个GitHub存储库下载所有程序。保存它,然后点击Flash图标来为你的微处理器编程。

让我们接下来显示一个图像而不是文本。

 

当键入display.show(Image...)时,让这个有用的信息框显示你所构建的图像。然后尝试编写自己的自定义映像。

实验一:眨眼睛的LED

介绍

This is experiment 1 – blinking an LED. We get to the fun stuff: adding hardware and constructing circuits.

这是实验一 ——一个闪烁的LED。我们得到了有趣的东西:添加硬件和构造电路。

需要的东西

你将会使用到以下部分:

  • 1x Breadboard面包板
  • 1x micro:bit板
  • 1X micro:bit Breakout with Headers
  • 1x LED
  • 1x 100Ω Resistor电阻
  • 1x Jumper Wires杜邦线跳线

Didn’t Get the SIK for micro:bit?

如果你正在进行这个实验并没有得到发明者的工具包,我们建议使用以下部分:

Suggested Reading建议阅读

在继续进行这个实验之前,我们建议您熟悉以下教程中的概念:

  • Light-Emitting Diodes — Learn more about LEDs!
  • 发光二极管——知道更多关于LED的知识!

Introducing the micro:bit Edge Connector介绍micro:bit ???

edge connector

We also broke out ground and VCC (3.3 volts) for your convenience.

为了扩展micro:bit的功能,我们开发了一个面包板适配器。这个适配器板使得在micro:bit上使用所有可用的引脚更加方便。为了您的方便,我们还为您提供了地面和VCC(3.3伏特)。

The adapter board lines up with the pins of a breadboard. We recommend using a full-sized breadboard with this breakout to give you enough room to prototype circuits on either end of the breadboard.

适配器板与面包板的插脚相连。我们建议使用一个全尺寸的面包板,这个突破可以给你足够的空间,让你可以在面包板的两端建立电路原型。

介绍LED

alt text

发光二极管(LED)只会让电流通过一个方向。把一个LED当作单行道。当电流流过LED灯时,灯就亮了!当你看着LED的时候,你会发现它的引线是不同的长度。较长的引线,“阳极”,是电流进入LED的地方。这个引线应该始终连接到电源。更短的引线,“阴极”,是电流的出口。短的引线应该一直连接到地面上。

当谈到你对它们的应用时,led是很讲究的。太大的电流会导致烧坏的LED。为了限制通过LED的电流,我们使用电阻器与电源和LED的长引脚连接;这叫做限流电阻器。为了使用micro:bit,你应该使用100欧姆的电阻。就为了这个原因,我们已经在工具包里放了一袋这种电阻!

硬件连接

 

准备好开始连接了吗?看看下面的接线图和连接表,看看它们是如何连接的。

Pay special attention to the component’s markings indicating how to place it on the breadboard. Polarized components can only be connected to a circuit in one direction.

marked with a flat edge.

请注意:请密切注意LED。LED的反面是短引脚,用平边标记。

LED drawing

有些组件,比如电阻,为了适应面包板的插槽,需要腿弯曲成90°角。你也可以缩短引脚的长度,让它们更容易在面包板上工作。

Bent resistor

实验电路图

alt text

看电路有困难吗?在接线图上点击查看。

运行脚本

alt text

编程时要注意:

pin0.write_digital(1) and pin0.write_digital(0)

除了第8和第10行,你会发现这和之前的实验没有太大区别除了第8和第10行。

pin0.write_digital(1) sends a HIGH value, ON or a voltage of 3.3V to pin 0 on the micro:bit.

发送一个高值,或电压为3.3V,在micro:bit板上输入0位。

pin0.write_digital(0) sends LOW value, OFF or 0V to pin 0 of the micro:bit.

发送一个低值,或电压为0V,在micro:bit板上输入0

你应该看到的现象

 

你应该在看到你的LED以一秒的间隔闪烁。如果没有,请确保您已经正确地组装了电路,并验证并将代码上传至您的micro:bit,或者查看故障排除部分。改变 sleep()的次数,并使用LED闪烁频率。

故障排除

LED不闪烁

确保你把它正确地连接在一起,并正确地将针固定在地面上。记住,短针落地;长针信号。

仍旧未能成功

 

断了电路是没有乐趣的。给我们发邮件,我们会尽快回复你:techsupport@sparkfun.com。

实验二:阅读电位计

介绍

在这个电路中,你将使用电位器。您将学习如何使用一个电位器来控制LED的亮度,并通过读取一个传感器并将其0-1023的值存储为一个变量,然后使用它作为LED的亮度级别。

所需部分

你将会需要用到以下几部分:

  • 1x 面包板
  • 1x micro:bit
  • 1x LED
  • 1x 100Ω 电阻
  • 7x 杜邦线
  • 1x 10kΩ Potentiometer电位计

Didn’t Get the SIK for micro:bit?

如果你正在进行这个实验并没有得到发明者的工具包,我们建议使用以下部分:

建议阅读

在继续进行这个实验之前,我们建议您熟悉以下教程中的概念:

Introducing the Potentiometer电位计介绍

alt text

电位器是一种基于电阻的模拟传感器,它根据旋钮的转动来改变其内部电阻。电位器有一个内部的分压器,使你可以用微控制器(micro:bit)读取中心引脚上电压的变化。为了连接电位器,将两个外引脚连接到电源电压(该电路的5V)和接地。只要一个连接到电源,另一个连接到地面,哪个连接在哪里都无关紧要。然后将中心引脚连接到一个模拟输入插脚,这样micro:bit就可以测量电压的变化。当你转动旋钮时,感应器读数将会改变!

注意:工具箱中包含的电位器上有三个标记,可以帮助你弄清楚插针的位置。

硬件连接

准备好开始连接了吗?看看下面的接线图和连接表,看看它们是如何连接的。

Pay special attention to the component’s markings indicating how to place it on the breadboard. Polarized components can only be connected to a circuit in one direction.特别注意组件的标记,指示如何将其放置在面包板上。偏振分量只能在一个方向上与电路相连。

实验接线图

alt text

看到电路有困难吗?可以在接线图上点击查看。

 

注:全尺寸的面包板动力轨道中间有一个断裂。如果你使用的是下半部分的电力轨道,你将需要在上端和下端之间跳跃。

运行脚本

alt text

编码注意事项

pin2.read_analog()

 

在这个程序中,你正在读取电位器的电压,电位器的电压是0到3.3伏在引脚2上。micro:bit将值作为一个10位数字读取,该值的值范围从0到1023,调用代码 pin2.read_analog()。我们将这个数字保存到一个名为potVal的变量中。

pin0.write_analog()

与模拟读取一样,模拟写处理的是一系列的值,但不是将一个引脚作为输入,而是将一个模拟值 pin0.write_analog() 输出到一个引脚上。我们把它看作是一个亮度范围的LED,但是它可以是一个蜂鸣器的音调,一个电机的速度,等等。我们把模拟输出设置为我们储存电位器的变量。

“变量”是在代码中可能更改的值的占位符。您可以通过输入一个名称并设置它等于您想要的值来创建一个变量。Python是一种动态类型语言。这意味着变量的类型是在运行时确定的。所以您不必担心声明变量类型。

你应该看到的现象

 

你应该拧一下电位器。你会注意到LED会根据电位器的位置变得更亮或更暗。如果你把电位器转到一个方向,它就会完全打开,另一端就会完全关闭。

故障排除

间断工作

这很可能是由于与电位器的引引脚有轻微的接触。通常可以通过将电位器压低或将电位器电路移到面包板上的其他地方来解决。

不工作

Make sure you haven’t accidentally connected the wiper (center pin), the resistive element in the potentiometer, to a wrong pin!

确保你没有意外地连接到电位器的电阻元件,到一个错误的针!

LED没有被点亮

LED只能在一个方向上工作。再次检查你的连接。

Experiment 3: Reading a Photoresistor实验三:理解光敏电阻

介绍

在实验2中,你需要使用一个电位器,它会根据一个旋钮的转动来改变电阻,反过来,也会改变模拟输入所读取的电压。在这个电路中,你将使用一个光敏电阻,它会根据传感器接收到的光的多少来改变电阻。你会读到房间的光值,如果是暗的,就会打开LED灯,如果灯是亮的就关掉。就是这样;你要造一个夜灯!

所需部分

你将会需要用到以下部分:

  • 1x 面包板
  • 1x micro:bit
  • 1X micro:bit Breakout with Headers
  • 1x LED
  • 1x 100Ω电阻
  • 7x 杜邦线
  • 1x 光敏电阻
  • 1x 10kΩ 电阻

Didn’t Get the SIK for micro:bit?

If you are conducting this experiment and didn’t get the Inventor’s Kit, we suggest using these parts:

光敏电阻介绍

alt text

光敏电阻根据所暴露的光改变其电阻。要用这个micro:bit,你需要用一个10k欧姆电阻器来建立一个分压器,就像这个实验的接线图。micro:bit不能读出电阻上的变化,只能读出电压的变化。分压器允许你将电阻的变化转换成相应的电压值。

To learn more about resistors in general, check out our tutorial on resistors and also our tutorial on voltage dividers

分压器允许在基于电压的系统中使用像光敏电阻这样的基于电阻的传感器。当你探索不同的传感器时,你会发现更多的基于电阻的传感器,像光敏电阻一样只有两个引脚。用你的micro:bit来使用它们:你需要在这个实验中建立一个像这样的分压器。要了解更多关于电阻的知识,请参阅我们的电阻器教程,以及关于分压器的教程。

注意:要确保在你的分压器中使用的是10k欧姆电阻和这个工具包中的传感器。否则,你会得到奇怪而不一致的结果。

硬件连接

准备好开始连接了吗?看看下面的接线图,看看所有的东西是如何连接的。

Pay special attention to the component’s markings indicating how to place it on the breadboard. Polarized components can only be connected to a circuit in one direction.特别注意组件的标记,指示如何将其放置在面包板上。偏振分量只能在一个方向上与电路相连。

实验布线图

alt text

 

看到电路有困难吗?在接线图上点击查看。

.注:全尺寸的面包板动力轨道中间有一个断裂。如果你使用的是下半部分的电力轨道,你将需要在上端和下端之间跳跃。

Running Your Script运行脚本

alt text

编码注意事项

if 和 else

如果在永久循环中不断更新的光值变量小于校准值- 50,那么它是黑的,LED应该打开。if语句的(-50)部分是一个敏感值。值越高,电路就越不敏感;值越低,光照条件越敏感。

ifelse语句是设置永久循环的控制流的简单方法。如果绑定到If语句的逻辑语句是正确的(True),那么它将执行在冒号下缩进的代码。如果该语句是假的(False),它将跳到下一个语句,也就是else语句。在这种情况下,如果陈述是真实的(True)(房间是暗的),那么micro:bit将会打开引脚16;否则(如果房间是亮的),它将使用前面提到的write_digital命令来关闭LED。

校准器calibrationval是一个校准变量。你的micro:bit在进入永久循环之前,需要对光传感器进行一次读取,并使用该值与永久循环中的lightVal变量进行比较。在进入永久循环之前,这个值不会在永久循环中发生变化。要更新这个值,你可以在你的微处理器的背面按下RESET按钮:bit或重启。

你将会看到的现象

当micro:bit运行程序时,它将从光传感器中读取一个读数,并将其作为房间“正常”状态的校准值。当你把你的手放在光传感器上或者把灯关掉时,LED灯就会打开。如果你把灯打开或打开灯感应器,LED灯就会关闭。

故障排除

LED仍旧不亮

You may have been leaning over the light sensor when the code started. Make sure the light sensor is reading the normal light in the room at startup. Try resetting the micro:bit.当代码开始时,您可能已经在光线传感器上倾斜了。确保光传感器在启动时在房间里感受正常光线。尝试重置micro:bit。

仍然不工作

再次检查你的信号插头接线;有时,你会错过一整排面包板的连接。

实验四:操作驱动RGB LED

介绍

你知道什么比眨眼睛更有趣吗?用一个LED改变颜色!在这个电路中,您将学习如何使用RGB LED来创建独特的颜色组合。根据每个二极管的亮度,显示几乎任何颜色都是可能的!

所需部分

你将会需要用到以下部分:

  • 1x 面包板
  • 1x micro:bit
  • 1X micro:bit Breakout with Headers
  • 1x Common Cathode RGB LED
  • 3x 100Ω 电阻
  • 5x 杜邦线

Didn’t Get the SIK for micro:bit?

如果你正在进行这个实验并没有得到发明者的工具包,我们建议使用以下部分:

Introducing the Red/Green/Blue (RGB) LED

alt text

红/绿/蓝(RGB) LED是一种发光二极管。RGB有四个引脚,每三个引脚控制一个单独的颜色:红色,绿色或蓝色。RGB的更长的引脚是常用的地脚。你可以通过将不同颜色的不同颜色组合在一起来创建一个定制的LED。例如,如果你打开红色的引脚和绿色的引脚,RGB就会变成黄色。

But which pin is which color? Pick up the RGB so that the longest pin (common ground) is aligned to the left as shown in the graphic below. The pins are Red, Ground, Green and Blue — starting from the far left

但是哪个针是哪个颜色呢?拿起RGB,让最长的引脚(接地)与左边对齐,如下图所示。引脚是红色的、地面的、绿色的和蓝色的——从最左边开始。

注意:当连接RGB时,每个有色的引脚仍然需要一个电流限制的电阻器,与micro:bit的I/O 相连,那么你就能用来控制它,和任何标准的LED一样。

硬件连接

准备好开始连线了吗?看看下面的接线图和连接表,看看它们是如何连接的。

Pay special attention to the component’s markings indicating how to place it on the breadboard. Polarized components can only be connected to a circuit in one direction.特别注意组件的标记,指示如何将其放置在面包板上。偏振分量只能在一个方向上与电路相连。

实验布线图

alt text

看电路有困难吗?在接线图上点击查看

运行脚本

alt text

编码注意事项

使用随机模块

 

MicroPython附带了一个随机random模块,用于在程序中引入一些未知的内容。有几种方法可以使用随机模块,而不是在这个实验中将它作为随机数生成器使用。要查看文档,请阅读random模块上的官方文档

In this experiment we are using random to generate a random number between 0 and 255在这个实验中,我们使用一个随机生成的、0到255之间的随机数。

button_a.is_pressed() 和 button_b.is_pressed()

button_a and button_b represent the left and right buttons on the micro:bit respectively. There are three built-in functions that can be attached to button_a or button_b:

button_a 和 button_b分别代表micro:bit上的左右按钮。有三个内置函数可以附加到

button_a或者 button_b:

 

  • is_pressed() — Will return True if the button specified is pressed. If the specified button is not pressed, it will return False.如果按下指定的按钮,将返回True。如果指定的按钮没有被按下,它将返回False
  • was_pressed() — Will return True or False depending on whether the specified button was pressed since start-up or since the last time this statement (method) was called.将返回TrueFalse,这取决于自启动时指定的按钮是否被按下,或者自上次调用该语句(方法)以来。
  • get_pressed() — Will return the number of times the specified button has been pressed since the device started or since the last time the statement (method) was used. Once the method is used, it will reset to zero.将返回自设备启动以来按指定按钮的次数,或者自上次使用语句(方法)以来。一旦使用该方法,它将重置为零。

elif

elif语句允许您检查可能为正确(True)的多个表达式。在这个实验中,我们想要做不同的事情,即按下按钮是正确的True还是按按钮B是正确的True

你应该看到的现象

你应该看到你的LED灯变红了。如果你按下micro:bit的按钮,颜色会变成绿色,如果你按下B键,颜色就会变成蓝色。

故障排除

LED仍旧不亮或者亮着不正常的颜色

由于LED的四个引脚挨在一起,有时容易放错其中一个。需要仔细检查每根针的位置。

看到红色

RGB LED内的红色二极管可能比另外两个要亮一些。为了使你的颜色更加平衡,要使用更高的欧姆电阻。

实验五:理解单刀双掷开关

介绍

在这个实验中,你将使用你的第一个数字输入:一个开关。SPDT(单刀双掷)开关是在两个选项之间进行选择的一种简单方式,特别是在与“if”状态配对时。您将使用该开关来选择两个led中的哪一个会闪烁。

所需部分

你将会需要用到以下部分:

  • 1x Breadboard面包板
  • 1x micro:bit
  • 1x micro:bit Breakout with Headers
  • 2x LEDs (1红,1黄)
  • 2x 100Ω电阻
  • 8x 跳线
  • 1x 单刀双掷开关

 

Didn’t Get the SIK for micro:bit?

如果你正在进行这个实验并没有得到发明者的工具包,我们建议使用以下部分:

建议阅读

Before continuing with this tutorial, we recommend you be somewhat familiar with the concepts in these tutorials:

Introducing the Single-Pole, Double-Throw (SPDT) Switch

alt text

单刀双掷(SPDT)开关在中间有一个公共引脚,然后根据开关的位置有两个其他引脚连接到公共(中心)引脚。为了以类似于按钮的方式读取开关,您将公共引脚连接到micro:bit的数字通用输入/输出(GPIO)引脚,其他引脚连接到3.3V并接地。哪个引脚是哪个并不重要。当您移动开关时,公共引脚将为高电平(连接至3.3V)或低电平(接地)。

硬件连接

准备开始把所有东西都勾起来?查看下面的接线图和连接表,了解各种连接方式。

Pay special attention to the component’s markings indicating how to place it on the breadboard. Polarized components can only be connected to a circuit in one direction.

实验连线图

alt text

Having a hard time seeing the circuit? Click on the wiring diagram for a closer look.

注意:全尺寸的面包板电源导轨有中间断开的情况。如果您最终使用电源导轨的下半部分,则需要在上端和下端之间跳转。

运行脚本

alt text

编程注意

pin0.read_digital()

就像write_digital()语句打开(1)或关闭(0)引脚一样,write_digital()语句确定引脚的状态,即HIGH(1)或LOW(0)。通过建立一个连接3.3V或接地的电路,我们可以检测到开关是否被触发或按下了按钮。

你应该看到的现象

根据开关的状态,不同的LED将闪烁。如果您移动开关将信号引脚连接至3.3V(HIGH),则连接至引脚P15的LED将闪烁。如果您拨动开关并将信号引脚接地,则引脚P16上的LED将开始闪烁,并且LED 1将关闭。

故障排除

Light Not Turning On

开关的电线紧挨​​着。确保信号位于外部引脚上的电压和地线的中间。如果你连接接地和电压,你的电路板将短路并关闭。

确保您的电源指示灯亮起。如果它关闭,请拉动信号线并查看是否有任何改变。如果您将micro:bit电路短路,它将自动关闭以保护电路。

Underwhelmed

 

别担心;这些电路都是非常精简的,以便轻松玩游戏组件,但一旦将它们放在一起,天空才是它们的极限。

Experiment 6: Reading a Button Press

Introduction

到目前为止,我们主要关注输出。现在我们要走到频谱的另一端,并连同输入一起玩。在实验二中,我们使用模拟输入来读取电位器。在这个实验中,我们将通过使用数字输入来读取最常见和最简单的输入之一 – 按钮。我们将使用它来循环RGB上的不同颜色。

Parts Needed

You will need the following parts:

  • 1x Breadboard
  • 1x micro:bit
  • 1x micro:bit Breakout with Headers
  • 1x RGB LED
  • 3x 100Ω Resistors
  • 8x Jumper Wires
  • 1x Push Button
  • 1x 10kΩ Resistor

Didn’t Get the SIK for micro:bit?

If you are conducting this experiment and didn’t get the Inventor’s Kit, we suggest using these parts:

Suggested Reading

Before continuing with this experiment, we recommend you be somewhat familiar with the concepts in these tutorials:

Introducing the Push Button

alt text

 

瞬时按钮仅在按下时关闭或接通电路。按钮有四个引脚,分成两组两个引脚。当你按下按钮并获得一个很好的“咔嗒”声时,按钮桥接两组引脚,并允许电流流过电路。

How do you know which pins are paired up? The buttons included in this kit will only fit across the breadboard ditch in one direction. Once you get the button pressed firmly into the breadboard (across the ditch), the pins are horizontally paired. The pins toward the top of the breadboard are connected, and the pins toward the button of the breadboard are connected.

你怎么知道哪个引脚配对?此套件中包含的按钮仅适用于一个方向上的面包板沟。一旦将按钮牢固地按入面包板(穿过沟渠),这些引脚就会水平配对。面向面包板顶部的引脚已连接,面向面包板按钮的引脚已连接。

注意:并非所有按钮都共享此引脚格式。请参考您特定按钮的数据表以确定哪些引脚配对。

Hardware Hookup

Ready to start hooking everything up? Check out the wiring diagram and hookup table below to see how everything is connected.

Pay special attention to the component’s markings indicating how to place it on the breadboard. Polarized components can only be connected to a circuit in one direction.

Wiring Diagram for the Experiment

alt text

Having a hard time seeing the circuit? Click on the wiring diagram for a closer look.

Note: The full-sized breadboard
注意:全尺寸的面包板电源导轨有中间断开的情况。如果最终使用电源导轨的下半部分,则需要在上端和下端之间跳转。

Run Your Script

alt text

Code to Note

 

micro:bit上的引脚为低电平有效,这意味着外部按钮应连接到引脚并接地以通过按钮触发事件。这在MicroPython中无法更改,因为它可以在MakeCode中进行更改。我们还发现,MicroPython的中断时间非常困难,并且一次只能运行多个线程。使用MakeCode,可以运行多个线程。

pass

 

由于中断在MicroPython中非常困难,我们决定使用pass

pass是一种处理来自while 循环的外部触发器而不影响while 循环的方式。在这种情况下,外部触发器是否按钮已被按下。这是使用中断的一种欺骗手段。我们可以连续检查micro:bit上的引脚16,以查看按钮是否被按下。

iter

 

iter()_方法创建一个对象,可以一次迭代或增加一个元素,直到指定的结束。在迭代结束时,会引发异常:“StopIteration”。

try and exceptiterator

tryexcept允许程序捕捉意外(或在这种情况下预期)错误,并处理错误,除非程序员想要。在这种情况下的错误将是iter 函数如何让程序知道它已经超过了最后的可迭代值。iter 方法引发的异常是“StopIteration”。我们正在“尝试”下一个异常,直到意外出现。一旦意外出现,我们退出尝试并移至except,这将再次启动迭代器。

What You Should See

 

当你按下按钮时,RGB将变成一种颜色。当再次按下时,颜色会改变,而另一次按则会再次改变颜色。再按一次,它会关闭。每次按下按钮,它都会增加一个变量,然后我们检查它以设置颜色。如果变量超过2的值,我们将它重置为0,这是关闭的。

Troubleshooting

Light Not Turning On

 

按钮是方形的,正因为如此,很容易出错。给它一个90度的扭曲,看看它是否开始工作。

Underwhelmed

 

别担心;这些电路都是非常精简的,以便轻松玩游戏组件,但一旦将它们放在一起,天空才是极限。不过请记住,这些都是钢铁侠套装的基石。

Experiment 7: Reading the Temperature Sensor

介绍

 

温度传感器正是它听起来像 – 用于测量环境温度的传感器。在此实验中,您将读取温度传感器的原始0-1023值,计算实际温度,然后通过micro:bit上的LED阵列打印出来。

Parts Needed

You will need the following parts:

  • 1x Breadboard
  • 1x micro:bit
  • 1x micro:bit Breakout with Headers
  • 3x Jumper Wires
  • 1x TMP36 Temperature Sensor

Didn’t Get the SIK for micro:bit?

If you are conducting this experiment and didn’t get the Inventor’s Kit, we suggest using these parts:

Introducing the TMP36 Temperature Sensor

alt text

 

TMP36是一款低电压精密摄氏温度传感器。它提供与摄氏温度成线性比例的电压输出。它也不需要任何外部校准来提供+ 25°C时±1°C和-40°C至+ 125°C温度范围内±2°C的典型精度。使用10 mV /°C的比例因子,输出电压可以轻松转换为温度。

 

如果您正在查看带有文字的一面,中心引脚是信号引脚,左侧引脚是电源电压(本教程中为3.3V),右侧引脚接地。

专业提示:TMP36看起来很像一个晶体管。在TMP36的顶部放一个指甲油抛光点,这样能很容易找到。

硬件连接

Ready to start hooking everything up? Check out the wiring diagram below to see how everything is connected.

Pay special attention to the component’s markings indicating how to place it on the breadboard. Polarized components can only be connected to a circuit in one direction.

请注意:温度传感器只能连接到一个方向的电路。请参阅下面的温度传感器引脚 – TMP36。

实验连线图

alt text

Having a hard time seeing the circuit? Click on the wiring diagram for a closer look.

运行脚本

alt text

编程注意

str

 

我们已经介绍了display.show() ,但是我们需要在将数字(温度)转换为字符串(类型)之前将其显示到micro:bit 5×5 LED阵列。 MicroPython中的类型转换是一个简单的str,它放置在保持类型编号温度的变量前面。

挑战:你如何修改这段代码来获得华氏度的温度?

你将会看到的现象

当您的micro:bit打开时,TMP36温度传感器的温度读数将显示并在LED阵列上滚动。

故障排除

温度值不变

用手指捏住传感器加热,或者用一个冰袋将其冷却。

温度传感器真的很热!

你已经把它连接到后面!立即拔下你的micro:bit,让传感器冷却下来,然后仔细检查你的接线。如果您足够快地发现,您的传感器可能没有受到损坏,并且可能仍然有效。

实验八:使用伺服电机

介绍

本实验是对您介绍伺服电机,该电机是一种智能电机,您可以将其旋转到特定的角度位置。您将其编程为旋转到一系列位置,然后扫过整个运动范围,然后重复。

Parts Needed

You will need the following parts:

  • 1x 面包板
  • 1x micro:bit
  • 1x micro:bit Breakout with Headers
  • 1x 伺服电机
  • 3x 杜邦线

Didn’t Get the SIK for micro:bit?

If you are conducting this experiment and didn’t get the Inventor’s Kit, we suggest using these parts:

建议阅读

Before continuing with this experiment, we recommend you be familiar with the concepts in the following tutorial:

介绍伺服电机

alt text

 

与大多数电机不断旋转的动作不同,伺服电机可以旋转并保持特定的角度,直到它被告知旋转到不同的角度。您可以通过发送一个PWM(脉宽调制)脉冲串来控制伺服的角度; PWM信号被映射到从0到180度的特定角度。

伺服内部有一个齿轮箱连接到驱动轴的电机。还有一个电位器,用于反馈伺服机构的旋转位置,然后与输入的PWM信号进行比较。伺服相应地进行调整以匹配两个信号。

 

在这个实验中,伺服电源通过红线上的3.3伏电源和黑线上的地线供电;白线连接到引脚P0。

硬件连接

Ready to start hooking everything up? Check out the wiring diagram below to see how everything is connected.

Pay special attention to the component’s markings indicating how to place it on the breadboard. Polarized components can only be connected to a circuit in one direction.

 

连接3x跳线到伺服器上的3针插座。这将使面包板伺服更容易接入。

实验电路图

alt text

Having a hard time seeing the circuit? Click on the wiring diagram for a closer look.

运行脚本

alt text

编程注意

 

在micro:bit中使用MicroPython的主要缺点之一是无法导入第三方模块。或者至少,我们没有任何运气将两个Python文件闪存到micro:bit。这段代码似乎很长,因为我们必须将Servo Class代码粘贴到我们的脚本中。忽略伺服类代码,让我们看看永久循环内发生了什么。

range

范围函数生成一个数字列表。在这个实验中,我们正在生成一个从0-90增加5的列表。

Servo(pin0).write_angle()

 

伺服类在引脚0作为参数的语句中调用。.write_angle()函数是伺服移动的方式 – 通过括号中指定的数字映射到伺服电机上的度数。

你应该看到的现象

通电后,您应该看到伺服器移动到一个位置(0度),然后开始前后扫动180度,直到关闭或告诉它转到不同的角度。

挑战:你将如何修改这个代码来让按钮A上的伺服扫动到180度?

故障排除

伺服不扭转

即使使用彩色电线,向后插入伺服器仍然非常容易。这可能是这种情况。

仍然不工作

我们犯了一个或两个错误,只是忘记将电源(红色和黑色线)连接到3.3伏和地(GND)。

实验九:使用蜂鸣器

介绍

在这个实验中,我们将再次填补数字世界和模拟世界之间的差距。我们将使用压电式蜂鸣器,当您施加电压时会产生一个小的“咔嗒”声(尝试!)。本身并不令人兴奋,但如果每秒打开和关闭电压数百次,压电式蜂鸣器将产生一个音调。如果你把一串音调串在一起,你就获得了音乐!这个电路和一组代码块将创建一个简单的声音机器。

Parts Needed

You will need the following parts:

  • 1x 面包板
  • 1x micro:bit
  • 1x micro:bit Breakout with Headers
  • 1x Piezo Buzzer
  • 2x Momentary Push Buttons
  • 7x 杜邦线

Didn’t Get the SIK for micro:bit?

If you are conducting this experiment and didn’t get the Inventor’s Kit, we suggest using these parts:

 介绍蜂鸣器

alt text

 

蜂鸣器是一个小部件,其中有一块金属片,当您在其上施加电压时会移动。这个动作会产生一个很小的声音,或者“咔嗒”。如果您打开和关闭电压足够快,您会听到不同的嘟嘟声,尖叫声,啁啾声和嗡嗡声。您将使用PWM来控制打开和关闭压电的速度 – 反过来,蜂鸣器发出的音频。调整PWM可让您从蜂鸣器中获得合理的音符。

alt text

 

如果您将蜂鸣器翻转过来并看向底部,您会看到一个针脚旁边有一个(+)。该引脚连接到来自P0引脚的信号。另一个引脚应该接地。

硬件连接

Ready to start hooking everything up? Check out the wiring diagram below to see how everything is connected.

Pay special attention to the component’s markings indicating how to place it on the breadboard. Polarized components can only be connected to a circuit in one direction.

实验连线图

alt text  ??

Having a hard time seeing the circuit? Click on the wiring diagram for a closer look.

注意:全尺寸的面包板电源导轨有中间断开的情况。如果最终使用电源导轨的下半部分,则需要在上端和下端之间跳转。

运行脚本

alt text

编程注意

music

MicroPython有一个很棒的音乐和声音模块。我们花了几个小时在REPL中产生音调和写歌。当你学会在micro:bit上创作你自己的音乐时,我们强烈建议使用REPL来熟悉所有的声音 – 在你想要看到(听到)你能做什么时,额外的help()将会很棒。

音乐模块内置21种旋律。要查看列表,请在Mu编辑器中键入music.play(_... ,然后弹出列表。

 

要获得有关音乐模块的深入教程,请单击此处

music.play()

 

要弹奏乐曲,您需要指定一个音符(A,C#,F),一个八度(0-8)和一个持续时间(音符将播放多长时间)。例如,如果按下引脚15上的按钮,则八度音阶4中的音符C将播放持续时间为8。

你应该看到的现象

 

你应该看到 – 呃,什么都没有!你应该听到 – 每个按钮都有自己的调子。享受您的音响设备,随时更换您选择的歌曲和曲调。添加更多按钮和播放语句以制作自定义钢琴!

 

再试一次,但这次用真正的扬声器。在按下按钮时,您可以播放葬礼进行曲,生日快乐或带有更好音频的Nyan Cat主题!

故障排除

没有声音

 

鉴于压电式蜂鸣器的尺寸和形状,很容易错过面包板上的正确孔。尝试双重检查其位置。

另外,请仔细检查以确保按钮连接正确。如果你误接线了,那么无论你是否按下按钮,电路都不会通路。

实验十:使用加速度计

介绍

在本实验中,您将结合使用micro:bit上的加速度计来测量micro:bit的方向并使用它来控制伺服器的角度。

 

准备摇动,拨动和滚动?

Parts Needed

You will need the following parts:

  • 1x面包板
  • 1x micro:bit
  • 1x micro:bit Breakout with Headers
  • 1x Hobby Servo
  • 3x 杜邦线

Didn’t Get the SIK for micro:bit?

If you are conducting this experiment and didn’t get the Inventor’s Kit, we suggest using these parts:

介绍加速度传感器

 

加速度传感器是您在套件袋中找不到的组件。为什么?因为它在micro:bit上本身!在micro:bit的背面你可以看到一些小芯片。其中之一是加速度计。

Accel closeup

 

加速度计是一种传感器,用于测量在芯片X,Y和Z轴的所有三个维度上的重力。

alt text

 

加速度计不仅可以测量拉动芯片和芯片所在物体的原始力量,还可以检测具有特定模式的步骤,抖动和其他运动。最重要的是,您可以使用加速度计来简单检测设备的方向。你有没有想过当你将手机从肖像转为风景时,你的手机是如何知道的?这完全是因为手机中的加速度计!

硬件连接

Ready to start hooking everything up? Check out the wiring diagram below to see how everything is connected.

Pay special attention to the component’s markings indicating how to place it on the breadboard. Polarized components can only be connected to a circuit in one direction.

实验接线图

alt text

Having a hard time seeing the circuit? Click on the wiring diagram for a closer look.

运行脚本

alt text

编程注意

 

再次忽略伺服类代码,我们有一些新的东西!

accelerometer.get_x()

The accelerometer.get_x() statement will return the acceleration measurement on the x-axis as a number between -1024 and 1024, depending on the direction.

加速度计模块具有五个内置功能并可识别11个手势。要查看完整文档,请单击此处accelerometer.get_x() 语句会根据方向将x轴上的加速度测量返回为-1024和1024之间的数字。

由于存储在num 中的值需要在-1024到1024之间的范围内转换为0-180之间的角度,因此需要对其进行缩放。将比例值加90将为0-89的负加速度计值和90-180的正加速度计值设置一系列角度。

你将会看到的现象

在程序开始时,伺服应该移动到0度,然后对micro:bit的方向作出反应。如果您将micro:bit平放,伺服将处于90度。然后,如果将伺服器向左倾斜,它将朝向0值移动小于90度。如果将其移动到右侧,伺服器将向180移动。

故障排除

这看起来很落后

 

您可能会以不同的方向保持micro:bit。翻转它并再试一次!

伺服不工作

 

仔细检查你的接线!记住,红色到3.3伏,黑色接地面,白色接信号。

Resources and Going Further

资源和进一步发展

 

MicroPython是开始您的Python编程之旅的有趣和令人兴奋的方式。这里有更多的资源可以帮助你。

我们生产了许多其他套件和载板,您可以将它们连接到micro:bit,以帮助您将项目提升到一个新的水平。这里有一些进一步的阅读,可以帮助你更多地了解电子世界。

 

 

micro:climate套件实验指南

气象站套件建立在便宜,易用的micro:bit和Microsoft MakeCode之上。

micro:bot工具包实验指南

开始使用moto:bit,这是micro:bit的载板,可让您控制电机,并使用micro:bot套件的实验指南创建您自己的机器人。

micro:arcade 街机套件实验指南

我们爱游戏!我们喜欢写游戏,制作游戏,甚至建立游戏控制台。所以我们想向你介绍微型的micro:arcade套件!

micro:bit Breakout Board连接指南

How to get started with the micro:bit breakout board.如何开始使用micro:bit???

开源!

 

我们所有的实验和指南均根据知识共享署名 – 相同方式共享4.0 Unported许可协议进行许可。随意混合并重用我们的工作。但是,请分享这份爱,给我们辛勤工作得到归属!

要查看许可证的副本,请访问此链接,或写信至:Creative Commons,171 Second Street,Suite 300,San Francisco,CA 94105,USA。


 


cc

原始文章采用CC BY-SA 4.0,您可以自由地:

  • 演绎 — 修改、转换或以本作品为基础进行创作
  • 在任何用途下,甚至商业目的。
  • 只要你遵守许可协议条款,许可人就无法收回你的这些权利。

本文由翻译美国开源硬件厂商Sparkfun(火花快乐)的相关教程翻译,原始教程采用同样的CC BY-SA 4.0协议,为便于理解和方便读者学习使用,部分内容为适应国内使用场景稍有删改或整合,这些行为都是协议允许并鼓励的。

原始文章及相关素材链接:

https://learn.sparkfun.com/tutorials/getting-started-with-micropython-and-the-sparkfun-inventors-kit-for-microbit/all#experiment-2-
打赏

发表评论