内容正文:
2.4.1传感与控制第二课时(分层作业)
【基础达标】
1. 下列不属于micro:bit开发板自带传感器的是( )
A.红外传感器 B.加速度计
C.地磁传感器 D.湿度传感器
2. 在 BXY 中输入如下代码:
①sleep(500)
②sleep(500)
③display.show(Image.HEART_SMALL)
④display.show(Image.HEART)
要想在 LED 点阵屏显示一颗“跳动的心”,则需要补充的代码顺序不可能是 ( )
A.①③②④ B.①④②③
C.②③①④ D.①③④②
3. 将 micro:bit 板与计算机相连,并通过 BXY 软件将以下程序“烧录”进开发板,并查看输出结果。
from microbit import *
import random
while True:
display.scroll(str(random.randint(1,5)))
sleep(5000)
下列关于上述操作的描述,正确的是( )
A.显示器中隔 5 分钟输出一次随机数
B.在 BXY Python Editor 编辑器里不断随机显示“1~4”四个数字中的其中一个
C.在 micro:bit 开发板的 LED 阵列滚动随机显示“1~5”五个数字中的其中一个
D.不可以将从串口获取的数据保存到文本文件中
4. 在 BXY 中输入代码如下:
from microbit import *
while True:
if button_a.is_pressed(): #按钮 A 被按下
display.show(Image.HAPPY)
elif button_b.is_pressed():
break
else:
display.show(Image.SAD)
display.clear()
运行该段代码,下列关于代码执行效果的描述,正确的是( )
A.按下 micro:bit 开发板上的按钮 A,LED 点阵屏显示“高兴”图形
B.按下 micro:bit 开发板上的按钮 A,LED 点阵屏显示“难过”图形
C.按下 micro:bit 开发板上的按钮 B,LED 点阵屏显示“高兴”图形
D.按下 micro:bit 开发板上的按钮 B,LED 点阵屏显示“难过”图形
5. 某智能终端接上声音传感器,能接收拍手时发出的声音,并在主板上显示“幸福”图形,没有声音时则显示“难过”图形,每隔 1 秒钟检测一次。代码如下:
from microbit import *
while True:
voice=pin0.read_analog(0)
if voice>380:
display.show(Image.HAPPY) #显示“幸福”图形
sleep(1000)
else:
display.show(Image.SAD) #显示“难过”图形
若声音传感器和主板的连接正常,下载并运行该代码,发现发出拍手声音后,主板上的“难过”图形并没有变为“幸福”图形,下列说法正确的是 ( )
A.产生这一问题的原因是第 3 行代码中的值“380”太大
B.产生这一问题的原因是第 5 行代码中的“sleep(1000)”导致等 待时间过长
C.为解决这一问题可将第 3 行代码改为“if voice=380:”
D.为解决这一问题可在第 7 行代码下方添加代码“sleep(1000)”
6. “猜大小”游戏的规则是:若读取到的字符串为“T”,LED 点阵屏显示“高兴”图形,并且在串口监视器给出提示“恭喜你,猜对了!”;若读取到的字符串为“F”,LED 点阵屏显示“伤心”图形,并且在串口监视器给出提示“不好意思,你猜错了!”;若读取到的字符串有误,LED 点阵屏显示“×”图形,并且在串口监视器给出提示“警告:输入数据有误!”。完成该程序需要在 BXY 软件以及 Python 软件中各输入一段代码,其中 BXY 中用于判断输入字符并做出相应动作的代码如下:
from microbit import *
while True:
if uart.any(): #等待接收串口数据
incoming=str(uart.readall(),''UTF-8'') #接收字符串,并存储到变 incoming 中
incoming=incoming.strip(''
'') #去除字符串两边的空格,并换行
if ① :
display.show(Image.HAPPY)
print("恭喜你,猜对了!")
elif incoming=="F":
display.show(Image.SAD)
print("不好意思,你猜错了!")
else:
②
print("警告:输入数据有误!")
则划线处应填入的代码分别是( )
A.①incoming=="Y" ②display.show(Image.NO)
B.①incoming=="Y" ②display.show(Image.NO)
C.①incoming=="T" ②display.show(Image.YES)
D.①incoming=="T" ②display.show(Image.NO)
【巩固提升】
7. 某创客小组模拟设计了货物装箱控制系统。使用智能终端连接传感器,检测到装满一箱后传感器反馈值为 1,否则值为 0,当装完 n 箱时,关闭输送带。实现上述功能的 Python 程序如下:
n=100 #①处
sumn=0
pin14.write_digital(1) #打开输送带控制开关
while True:
d=pin2.read_digital() #返回装箱状态
if d==1: #②处
sumn=sumn+1
if sumn==n:
pin14.write_digital(0) #关闭输送带控制开关
break
sleep(1000) #等待 1 秒
下列关于上述代码及系统功能的说法,不正确的是 ( )
A.智能终端的 pin14 引脚连接了执行器
B.智能终端的 pin2 引脚连接了传感器
C.若将程序②处代码中的 d==1 修改为 d!=0,则该系统的功能发生变化
D.若将程序①处代码中的 n=100 修改为 n=200,则输送带连续运行的时间会变长
8. 农业大棚中需要监测 CO2 含量,当 CO2 含量超过一定数值的时候,自动打开排风扇进行通风。小明使用 micro:bit 作为智能终端 ,通过 CCS811 空气质量模块采集 CO2浓度并借助风扇模块驱动排风扇。实现上述功能的 Python 程序如下:
from microbit import *
import time
import CCS811
cs811=CCS811()
while True:
if cs811.check_data_ready():
#采集 CO2的数据
CO2=cs811.CO2_PPM()
print("CO2:"+str(CO2)+"ppm")
#当 CO2 浓度超过 800 时打开风扇
if CO2>800:
pin1.write_digital(1) #打开风扇
else:
pin1.write_digital(0) #关闭风扇
time.sleep(0.5) #等待 0.5 秒
下列关于上述代码及系统功能的说法,不正确的是 ( )
A.智能终端的 pin1 引脚连接了执行器
B.程序运行时会在 LED 阵列上显示 CO2 浓度数值
C.可以通过加框处语句 CO2 的标准阈值来调整系统预警的灵敏度
D.系统搭建完成后,可以对 CCS811 模块喷射 CO2气体,观察风 扇模块是否正常工作
【链接高考】
9. 小明借助智能终端和光线传感器获取环境亮度数据,当亮度值低于 200 时开启蜂鸣器提醒(置高电平 1,蜂鸣器响;置低电平 0,蜂鸣器不响),在 BXY 编辑器中的部分代码如图所示。
下列说法正确的是 ( )
A.蜂鸣器初始状态有提醒声音
B.光线传感器接在 pin0 引脚
C.每隔 5 秒读取一次光线传感器的值
D.只有当亮度值高于 200 时蜂鸣器才会停止提醒
10. 近场通信(简称 NFC)是由非接触式射频识别(RFID)及互联互通技术整合演变而来的,通过在单一芯片上集成感应式读卡器、感应式卡片和点对点通信的功能。近年来,NFC 技术越来越受到人们的关注,基于 NFC 技术发展起来的业务逐渐深入到人们生活的方方面面,比如利用移动终端实现移动支付、电子票务、门禁、移动身份识别、防伪等应用。运用 micro:bit,结合 NFC 近场通讯模块,可以实现检测 RFID 卡的 ID 信息,当读取到卡片时,舵机转动,从而实现开门的效果。搭建好硬件设备之后,输入如下代码:
from microbit import *
import PN532
import Servo
nfc=PN532()
sv=Servo(pin8)
nfc.begin()
while True:
sleep(2000)
#是否读取到卡片
print(nfc.scan())
#读取 NFC 的 UID
print(nfc.read_uid())
#读取到卡片
if nfc.scan==True:
sv.angle(140)
else:
sv.angle(50)
请回答下列问题:
(1)舵机连接在扩展板的 端口。
(2)当读取到卡片时,串口打印 与卡片的 UID。
(3)若想实现在读取到卡片时,在 LED 阵列上显示“ 笑脸 ”图案 ,则添加的代码应当是 (单选,填字母)。
A.display.show(HAPPY) B.display.show("HAPPY")
C.display.show(Image.HAPPY) D.display.show(Image.YES)
参考答案
【基础达标】
1.D 解析:micro:bit板载 5×5 LED 阵列、A B 两个独立按键、蓝牙、红外、加速度计、电子罗盘等,其中电子罗盘使用的是地磁传感器。
2.D 解析:要想在 LED 点阵屏显示一颗“跳动的心”,则在显示“大心”和“小心”之间需要让程序暂停一段时间,即代码③④不能放在一起,图案显示的顺序是任意的。
3.C 解析:sleep(5000) 表示 5 秒。display.scroll(str(random.randint(1,5))) 语句表示在开发板的 LED 阵列滚动随机显示“1~5”五个数字中的其中一个。可以将从串口获取的数据保存到文本文件中。
4.A 解析:不按任何按钮时,LED 点阵屏显示“难过”的表情。按下按钮 A,LED 点阵屏显示“高兴”的表情。按下按钮 B,跳出循环,然后清空 LED 点阵屏。
5.A 解析:连接正常的情况下拍手没有变换图形,说明可能是发出的声音响度没有达到要求或设置的目标值太大。第 5 行代码中的“sleep(1000)”表示等待时间为 1 秒,不会影响图案的变化,在第 7 行代码下方添加该句代码也没有任何影响。为解决这一问题,可以将第 3 行的代码修改为“if voice>380:”,扩大目标值而不是局限于一个固定值可以使其更容易达到条件。
6.D 解析:根据题目要求可知,①处属于猜对的条件,因此输入的是字符“T”,②处为输入有误的情况下显示“×”图形,填入代码为 display.show(Image.NO)。
【巩固提升】
7.C 解析:传感器的反馈值只有 1 和 0 两种情况,②处的代码 d==1 和 d!=0 等价,故修改后系统的功能不会发生变化
8.B 解析:观察代码发现,程序运行时会在串口监视器中显示 CO2 的浓度值,并且当浓度值超过 800 时会打开风扇,反之关闭风扇。没有提到会在 LED 阵列上显示 CO2 的浓度数值。
【链接高考】
9.C 解析:蜂鸣器初始状态时置于低电平,没有提醒声音。光线传感器接在 pin1 引脚。当亮度大于等于 200 时蜂鸣器就会停止提醒
10.(1)pin8 (2)True (3)C 解析:(1)根据“sv=Servo(pin8)”可知,舵机连接在扩展板的 pin8 端口。(2)根据语句“print(nfc.scan())”与“if nfc.scan==True:”可知,当读取到卡片时,串口会打印字符“True”。(3)在 LED 点阵屏上显示笑脸的代码为 display.show(Image.HAPPY)。
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
学科网(北京)股份有限公司
$$