跳至主要內容

楼宇外墙霓虹灯

大约 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)



上次编辑于: