自动灯光控制
前言
前面我们已经了解了Python的开发环境,现在开始我们逐一测试各个传感器和接口模块。
先从最简单的开始,先了解IO的操作,控制LED。另外为了体验到实用性,我们结合光线传感器进行联动,实现LED自动根据环境亮度开关,模拟实现自动灯光控制器。这样一各案例测试两个模块:LED和光线传感器。
IO操作LED
参见https://wiki.unihiker.com/pinpong_python_lib#target_6
开发板提供了一个蓝色用户LED灯,在背面丝印L
L灯为高低电平控制,接到了行空板的P25接口上,因此控制P25即可控制L灯。
控制输出1则点亮,否则熄灭。
控制LED需要从pinpong中导入Pin模块
from pinpong.board import Pin # 从pinpong.board包中导入Board Pin模块
然后创建led实例
led = Pin(Pin.P25, Pin.OUT) #引脚初始化为电平输出模式,P25为L灯的引脚
再控制led输出对应电平
Pin(Pin.P25, Pin.OUT).write_digital(电平信号)
光线传感器
参见https://wiki.unihiker.com/pinpong_python_lib#target_8
正面屏幕上方有一颗光线传感器,可以获取环境光线强度,单位为模拟输入值0~4095.
使用光线传感器线要导入模块
from pinpong.board import *
from pinpong.extension.unihiker import *
读取光线传感器值
Light = light.read() # 读取光线值
光线传感器接到行空板的P29接口上,因此还可以通过ADC输入方法读取。
可以按照如下在终端中打印传感器值
print("光线强度:%d"%(Light)) #终端打印信息
光线传感器和LED联动
我们设计自动灯光控制,在环境亮度低于一定值时打开LED,环境亮度高于一定值时关闭LED。
逻辑如下
if(Light < 100):
led.write_digital(1)
else:
led.write_digital(0)
这里的100需要按照实际情况调整。
测试
综上,整个代码如下
from pinpong.extension.unihiker import * # 导入pinpong.extension.unihiker包中所有模块
from pinpong.board import Board,Pin # 从pinpong.board包中导入Board Pin模块
import time # 导入时间库
Board('UNIHIKER').begin() # 初始化,选择板型和端口号,不输入则进行自动识别
led = Pin(Pin.P25, Pin.OUT) #引脚初始化为电平输出模式,P25为L灯的引脚
while True: # 循环
time.sleep(1) # delay1秒
Light = light.read() # 读取光线值
print("光线强度:%d"%(Light)) #终端打印信息
if(Light < 100):
led.write_digital(1)
else:
led.write_digital(0)
按照前面开发环境中说明,使用直接代码编辑方式,添加源文件
light_led.py并下载运行
可以看到终端打印了传感器值
正常环境光线较强时,灯不亮,我们用手指挡住光线传感器,模拟环境光变弱,LED亮,
实现了我们设计的逻辑,也就是一个自动控制灯光实现了。如视频:
如果我们用LED对应的引脚去控制继电器,那么就实现了一个实际可用的自动灯光控制器,实现十分简单快速。
总结
我们通过一个自动灯光控制器的设计,测试了LED的控制和光线传感器的使用,用一个具有实用价值的案例,快速体验了基于该开发板进行开发和想法实现的乐趣,所以该开发板作为Python编程学习板,既能学习语言,又能结合实际,能快速原型实现自己的想法,体验学习的乐趣,确实是一个不错的开源硬件平台。