楼宇外墙霓虹灯
大约 5 分钟约 1560 字
楼宇外墙霓虹灯
| 适用教材 | 浙教版《义务教育教科书 信息科技》 |
|---|---|
| 资源名称 | 楼宇外墙的霓虹灯 |
| 使用产品 | 信息科技(浙教版教具资源包) |
| 课程参考 | 六年级下册 第8页 |
| 搭建动画 | |
| 搭建动画 | |
![]() |
楼宇外墙的霓虹灯符合信息科技新课程标准的六年级教学实验要求。 本次实验采用信息科技实验板,配备了扩展板、彩色灯带模块、光敏传感器,实现霓虹灯闪烁功能。该模型有两种工作模式,一种是手动开灯,一种是自动开灯,自动模式下当光线过暗时,灯带会自动亮起,此时通过板载按键B可对灯带进行三种灯光模式的调节。手动模式下,通过板载按键A开灯,同样的灯带有三种灯光模式可调节,此时可通过按键A退出手动模式。

# -*- coding: utf_8 -*-
#导入信息科技实验板程序库
from npython import * # 导入npython模块
#在下面开始写你自己的代码
# 显示课例名称
oled.print(4,1,"楼宇外墙的霓虹灯",1)
time.sleep(1.5)
light_mode = 1 # 初始灯光模式设为1
nowtime = time.ticks_ms() # 记录当前时间
step = 0
night_mode_toggle = False # 初始化按键A的开灯状态开关
#控制灯带灯珠颜色,一共7个灯,连接端口为P9, 灯id号为0-6,每个灯有三个RGB参数可调节,一共27个参数,a1、a2、a3代表1号灯的颜色,依次类推
def led_mode(a1,a2,a3,b1,b2,b3,c1,c2,c3,d1,d2,d3,e1,e2,e3,f1,f2,f3,g1,g2,g3):
npled.write_color(9,0,a1,a2,a3)
npled.write_color(9,1,b1,b2,b3)
npled.write_color(9,2,c1,c2,c3)
npled.write_color(9,3,d1,d2,d3)
npled.write_color(9,4,e1,e2,e3)
npled.write_color(9,5,f1,f2,f3)
npled.write_color(9,6,g1,g2,g3)
while True:
Light_value = pin0.read_analog() # 读取亮度值
oled.print(1,2,"亮度:"+str(Light_value),1)
# 检测按键A的状态
if button.get_a() == 1:
if not night_mode_toggle: # 如果当前不是由按键A触发的开灯状态
night_mode_toggle = True # 标记由按键A触发的开灯状态
elif night_mode_toggle: # 如果当前是由按键A触发的开灯状态
night_mode_toggle = False # 标记由按键A触发的关灯状态
if Light_value == 0 or night_mode_toggle == True: # 如果亮度等于0或者当前是由按键A触发的开灯状态
oled.print(1,3,"开灯",1)
if button.get_b() == 1: # 如果按键B被按下
light_mode +=1 # 灯光模式切换
if light_mode > 3:light_mode = 1 # 如果灯光模式大于3,则切换到1
if light_mode == 1: # 如果灯光模式等于1
if(time.ticks_ms() - nowtime > 500): # 如果当前时间与上一次记录时间相差500毫秒,为了避免闪屏,所以只执行一次
nowtime = time.ticks_ms()
oled.print(1,4,"模式1",1)
step +=1 # 步进
if step > 7:step=0 # 如果步进大于7,则重置
if step == 0:
led_mode(255,0,0, 255,0,0, 255,0,0, 0,0,0, 0,0,0, 0,0,0, 0,0,0)
elif step == 1:
led_mode(0,0,0, 255,0,0, 255,0,0, 255,0,0, 0,0,0, 0,0,0, 0,0,0)
elif step == 2:
led_mode(0,0,0, 0,0,0, 255,0,0, 255,0,0, 255,0,0, 0,0,0, 0,0,0)
elif step == 3:
led_mode(0,0,0, 0,0,0, 0,0,0, 255,0,0, 255,0,0, 255,0,0, 0,0,0)
elif step == 4:
led_mode(0,0,0, 0,0,0, 0,0,0, 0,0,0, 255,0,0, 255,0,0, 255,0,0)
elif step == 5:
led_mode(0,0,0, 0,0,0, 0,0,0, 255,0,0, 255,0,0, 255,0,0, 0,0,0)
elif step == 6:
led_mode(0,0,0, 0,0,0, 255,0,0, 255,0,0, 255,0,0, 0,0,0, 0,0,0)
elif step == 7:
led_mode(0,0,0, 255,0,0, 255,0,0, 255,0,0, 0,0,0, 0,0,0, 0,0,0)
if light_mode == 2:
if(time.ticks_ms() - nowtime > 1000):
nowtime = time.ticks_ms()
oled.print(1,4,"模式2",1)
step +=1
if step > 1:step=0
if step == 0:
led_mode(255,0,0, 255,12,0, 255,24,0, 255,36,0, 255,48,0, 255,60,0, 255,72,0)
elif step == 1:
led_mode(255,72,0, 255,0,0, 255,12,0, 255,24,0, 255,36,0, 255,48,0, 255,60,0)
elif step == 2:
led_mode(255,60,0, 255,72,0, 255,0,0, 255,12,0, 255,24,0, 255,36,0, 255,48,0)
elif step == 3:
led_mode(255,48,0, 255,60,0, 255,72,0, 255,0,0, 255,12,0, 255,24,0, 255,36,0)
elif step == 4:
led_mode(255,36,0, 255,48,0, 255,60,0, 255,72,0, 255,0,0, 255,12,0, 255,24,0)
elif step == 5:
led_mode(255,24,0, 255,36,0, 255,48,0, 255,60,0, 255,72,0, 255,0,0, 255,12,0)
elif step == 6:
led_mode(255,12,0, 255,24,0, 255,36,0, 255,48,0, 255,60,0, 255,72,0, 255,0,0)
if light_mode == 3:
if(time.ticks_ms() - nowtime > 500):
nowtime = time.ticks_ms()
oled.print(1,4,"模式3",1)
step +=1
if step > 6:step=0
if step == 0:
led_mode(0,0,255, 255,128,0, 255,255,0, 0,255,0, 0,255,255, 0,0,255, 128,0,255)
elif step == 1:
led_mode(128,0,255, 0,0,255, 255,128,0, 255,255,0, 0,255,0, 0,255,255, 0,0,255)
elif step == 2:
led_mode(0,0,255, 128,0,255, 0,0,255, 255,128,0, 255,255,0, 0,255,0, 0,255,255)
elif step == 3:
led_mode(0,255,255, 0,0,255, 128,0,255, 0,0,255, 255,128,0, 255,255,0, 0,255,0)
elif step == 4:
led_mode(0,255,0, 0,255,255, 0,0,255, 128,0,255, 0,0,255, 255,128,0, 255,255,0)
elif step == 5:
led_mode(255,255,0, 0,255,0, 0,255,255, 0,0,255, 128,0,255, 0,0,255, 255,128,0)
elif step == 6:
led_mode(255,128,0, 255,255,0, 0,255,0, 0,255,255, 0,0,255, 128,0,255, 0,0,255)
if Light_value > 0 and night_mode_toggle == False: # 如果亮度大于0且当前不是由按键A触发的开灯状态
oled.print(1,3,"关灯",1)
if(time.ticks_ms() - nowtime > 500):
nowtime = time.ticks_ms()
led_mode(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)

