内容正文:
用计算机来控制
micro:bit
必修2 信息系统与社会
关于micro:bit
Micro:bit全称为BBC Micro:bit,是一款英国广播公司(BBC)推出的,用于青少年编程教育的ARM开发版。它主要由加速度传感器,磁力传感器,两个可编程按钮,5 x 5 LED点阵组成,蓝牙等常用传感器设备集成,主要用于青少年的编程教育。
按键
A
按键
B
5*5 LED点阵
micro
USB接口
复位按键
地磁
传感器
加速度传感器
操作步骤
选择micro:bit开发板作为采集传感器数据的终端,通过编程获取micro:bit内置传感器的信息,并向串口输出。
具体操作步骤
① 通过USB连接线将micro:bit接到计算机,安装串口驱动程序;
② 编写程序(BXY编程软件),读取传感器数据,并向串口输出;
③ 通过串口调试工具,查看串口数据。
导 入 模 块
from microbit import *
say “Hello,World!”
from microbit import *
Python程序代码
display.scroll(“Hello,World!”,delay = 200 )
对象
设备的物理显示
方法
在显示器上滚动显示
字符串滚动的速度,单位:ms
micro:bit 大艺术家
from microbit import *
Python程序代码
display.show( Image . HAPPY )
方法
在显示器上展示
类
图像
5×5的红色LED点阵,可以通过控制生成各种有趣的效果。
如图所示,在显示屏上显示“高兴”,代码该如何书写呢?
方法
具体图片
micro:bit 大艺术家
常用表情图像函数
Image.HAPPY 高兴
Image.SAD 伤心
Image.ANGRY 生气
Image.ASLEEP 困
Image.HEART 心
Image.HEART_SMALL 心(小)
Image.ARROW_W 朝西箭头 ←
Image.ARROW_E 朝东箭头 →
请编写代码,在内置LED阵列上显示红心。
from microbit import *
display.show( Image.HEART )
如何在micro:bit上显示自己创建的图像呢?
每个LED像素可以设置为十个值的其中一个。
如果像素设置为 0,表示处于关闭状态,即为0亮度。而设置为 9,表示亮度最强。
1 到 8 代表关闭状态和最强亮度之间的亮度级别。
micro:bit 大艺术家
from microbit import *
display.show( 需要显示自定义图像 )
0 0 9 0 0
0 9 9 9 0
9 9 9 9 9
0 0 9 0 0
0 9 9 0 0
请编写代码,在内置LED阵列上显示如图所示的自定义图像。
san = Image( “00900:09990:99999:00900:09900” )
san
micro:bit 大艺术家
每个LED像素可以设置为十个值的其中一个。
如果像素设置为 0,表示处于关闭状态,即为0亮度。而设置为 9,表示亮度最强。
1 到 8 代表关闭状态和最强亮度之间的亮度级别。
将像素(x,y)的亮度设置为val(在0到9之间)
display.get_pixel(x, y)
display.set_pixel(x, y, val)
得到像素的亮度(x,y),亮度可以是0(熄灭)到9(像素处于最大亮度)。
display.clear()
清除显示
micro:bit 大艺术家
通过将图片向左移动n次,返回一个新图像
image.shift_left(n)
image.shift_right(n)
通过将图片向右移动n次,返回一个新图像
image.shift_up(n)
image.shift_down(n)
通过将图片向上移动n次,返回一个新图像
通过将图片向下移动n次,返回一个新图像
display.show(Image.HEART.shift_left(1))
micro:bit 大艺术家
from microbit import *
a="00900:09000:99999:09000:00900"
while True:
for i in range(0,6):
display.show(Image(a).shift_left(i))
sleep(200);
sleep(1000)
from microbit import *
pic=Image("00900:09000:99999:09000:00900")
while True:
for i in range(0,6):
display.show(pic.shift_left(i))
sleep(200);
sleep(1000)
micro:bit 按钮
在LED阵列的两侧包含了两个按键,分别是 button_a 和 button_b 。
注意:
用户不可以创建新的按钮,micro中的按钮仅为内置,且仅能使用它们。
按钮的相关函数
is_pressed( )
如果指定的按钮被按下返回 True ,否则返回 False 。
was_pressed( )
get_presses( )
如果指定的按钮在开机或复位之后被按下过,则返回True,否则返回False。
返回开机或复位后,button被按下的次数,并且调用此方法后,会将计数置0。
根据如下程序,说说其功能。
from microbit import *
sleep ( 10000 )
display.scroll ( str ( button_a.get_presses() ) )
程序分析
sleep()函数
使 micro:bit 睡眠一定量的毫秒数
display.scroll ( str ( button_a.get_presses() ) )
按钮 A 开机后被按下的次数
将数值转换为字符型
通过显示器应滚动显示的内容
功能
睡眠1万毫秒(10秒),接着滚动显示按钮 A 10秒内被按下的次数。
程序设计
请编写MicroPython程序,完成如下功能:在LED阵列上先显示字符” A ” , 2秒后显示字符 ” B ” 。
from microbit import *
sleep( 2000 )
display.show( “A” )
display.show( “B” )
请编写MicroPython程序,完成如下功能:“心情探测器”,当你感觉“开心”的时候,请按下开发板上的按钮A,LED面板将显示“笑脸”;当你觉得难过的时候请按下开发板上的按钮B,LED面板将显示“哭脸”;系统会每隔20秒,检测一次,周而复始。
from microbit import *
if :
else:
display.show( Image.HAPPY )
sleep( 20000 )
display.show( Image.SAD )
sleep( 20000 )
button_a .is_pressed()
while True:
elif button_b .is_pressed():
micro:bit 大作曲家
在BBC micro:bit设备中MicroPython配有强大的音乐和声音模块。一旦连接扬声器,很容易发出哔哔声和杂音。
你需要做的是用鳄鱼夹将引脚0和GND连接到扬声器的正负极输入端(连接扬声器的方式没有要求)。
导 入 模 块
import music
micro:bit 大作曲家
import music
Python程序代码
while True:
for freq in range(880, 1760, 16):
music.pitch(freq, 6)
方法
后面紧跟频率值
频率值
持续的时长
单位:ms
小试牛刀
import music
while True:
for freq in range( 880, 1760, 16 ):
music.pitch( freq, 6 )
for freq in range( 1760, 880, -16 ):
music.pitch( freq, 6 )
下载并运行该代码,下列关于代码执行效果描述正确的是( )
A. 声音频率升高一次,降低一次 B. 声音频率不变
C. 声音频率降低一次,升高一次 D. 声音频率呈周期性变化
D
micro:bit 加速计
一个加速度传感器可以测量micro:bit的加速度;这个传感器可以检测micro:bit的移动。它也可以检测其他的动作,例如:摇动,倾斜以及自由落体。
acceleromete
加速计类
加速计相关函数
accelerometer.get_x() 测量加速度X轴的值
accelerometer.get_y() 测量加速度 y 轴的值
accelerometer.get_z() 测量加速度 z 轴的值
accelerometer.current_gesture() 返回当前检测到的动作
MicroPython可识别以下手势名称: "up", "down", "left", "right", "face up", "face down", "freefall", "shake"。手势通常表示为字符串。
micro:bit 加速计
程序设计:利用micro:bit中的加速计制定水平仪。通过检测其在x轴的值,判定其方向,由于加速度计非常敏感,所以我设置了水平方向 +/-20 的范围。若值大于20,则在LED阵列上显示字符“R”,反之则显示字符“L”,处于水平状态时显示字符“-”。
from microbit import *
while True:
reading = .
if reading > 20:
.
elif :
display.show("L")
else:
display.show("-")
accelerometer.get_x()
display.show("R")
reading < -20
micro:bit 引脚
Micro:bit拥有边缘连接端子引出引脚,其引出的引脚如图所示:
在Micro:bit中,可将引脚配置为输入与输出,当配置为输出的时候,可输出高低电平,当配置为输入的时候,可读取引脚输入电平。
micro:bit 引脚 - 输出
电亮外部LED指示灯
用彩色线将LED指示灯连接在 pin2 口,并在BXY中输入如下代码:
from microbit import *
while True:
if button_a.is_pressed():
#如果按钮a被按下
pin2.write_digital(1)
#向pin口2写入高电平,从而开启外接设备
else:
pin2.write_digital(0)
#向pin口2写入低电平,从而关闭外接设备
程序分析
pinx.write_digital(value) :
向pinx口写入数字值
value 可以设置为 { 1,0 } 或 { True,False }
表示为高电平或低电平
micro:bit 引脚
用彩色线将LED指示灯连接在 pin2 口,请制作实例 “ 闪烁的星星 ” —— 通过代码,使得LED灯每一秒闪烁一次。
from microbit import *
while True:
pin2.write_digital(1)
sleep(1000)
pin2.write_digital(0)
sleep(1000)
micro:bit 引脚 - 输入
读取传感器的状态数值
用内置传感器按钮B来模拟数字输入,其实就是按钮B就是连接在引脚11上,按下时返回0,反之,返回1.
from microbit import *
while True:
if pin11.read_digital():
#如果pin口11从设备上读到了高电平
display.show(Image.HAPPY) else:
display.show(Image.SAD)
程序分析
pinx.read_digital( ) :读取引脚x的数字值,其值为 { 1,0 } 或 { True,False }
micro:bit 引脚 - 输入
读取光线传感器的数值
用彩色线将光线传感器连接在pin2口,并在BXY中输入如下代码:
from microbit import *
while True:
if button_a.is_pressed():
light = pin2.read_analog()
#将pin2从光线传感器上获得的模拟值赋值给light
display.scroll( light )
#Led屏幕上滚动显示light的值
程序分析
pinx.read_analog( ) :
读取pinx口的传感器的模拟值,返回值在0到1023之间。
micro:bit 引脚 - 输出
LED模块制作呼吸灯
用彩色线将LED指示灯连接在 pin2 口,实现呼吸灯亮度的变化,从暗到亮,从亮到暗,循环变化,并在BXY中输入如下代码:
from microbit import *
while True:
for i in range( 1024 ) :
pin2.write_analog(i)
sleep(50)
for i in range( 1023,0,-1 ) :
pin2.write_analog(i)
sleep(50)
小试牛刀
from microbit import *
while True:
print( temperature() )
t = pin0 . read_analog()
if t > 40:
display.show( Image.HAPPY )
sleep( 2000 )
else:
display.show( Image.SAD )
下载并运行该代码,下列关于代码执行效果描述正确的是( )
A. 热风机加热后,主板LED显示“笑脸”图形,2秒后显示“哭脸”图形
B. 热风机加热后,主板LED显示“哭脸”图形,2秒后显示“笑脸”图形
C. 室温低于40℃时,主板LED显示“哭脸”图形
D. 室温低于40℃时,主板LED不显示任何图形
C
Lavf58.76.100
$$