【行空板 Python编程学习主控板】LED和光线传感器使用体验-自动灯光控制器实现
<div class='showpostmsg'><h1>a80badf9bdff0a8810218e4e1f462c91<br /> </h1>
<h1><b>前言</b></h1>
<p > 前面我们已经了解了Python的开发环境,现在开始我们逐一测试各个传感器和接口模块。</p>
<p >先从最简单的开始,先了解IO的操作,控制LED。另外为了体验到实用性,我们结合光线传感器进行联动,实现LED自动根据环境亮度开关,模拟实现自动灯光控制器。这样一各案例测试两个模块:LED和光线传感器。</p>
<p > </p>
<h1 ><b>IO操作LED</b></h1>
<p >参见https://wiki.unihiker.com/pinpong_python_lib#target_6</p>
<p > </p>
<p >开发板提供了一个蓝色用户LED灯,在背面丝印L</p>
<p ></p>
<p >L灯为高低电平控制,接到了行空板的P25接口上,因此控制P25即可控制L灯。</p>
<p >控制输出1则点亮,否则熄灭。</p>
<p > </p>
<p >控制LED需要从pinpong中导入Pin模块</p>
<p >from pinpong.board import Pin # 从pinpong.board包中导入Board Pin模块</p>
<p >然后创建led实例</p>
<p >led = Pin(Pin.P25, Pin.OUT) #引脚初始化为电平输出模式,P25为L灯的引脚</p>
<p >再控制led输出对应电平</p>
<p >Pin(Pin.P25, Pin.OUT).write_digital(电平信号)</p>
<p > </p>
<h1 ><b>光线传感器</b></h1>
<p >参见https://wiki.unihiker.com/pinpong_python_lib#target_8</p>
<p >正面屏幕上方有一颗光线传感器,可以获取环境光线强度,单位为模拟输入值0~4095.</p>
<p > </p>
<p >使用光线传感器线要导入模块</p>
<p >from pinpong.board import *</p>
<p >from pinpong.extension.unihiker import *</p>
<p > </p>
<p >读取光线传感器值</p>
<p >Light = light.read() # 读取光线值</p>
<p >光线传感器接到行空板的P29接口上,因此还可以通过ADC输入方法读取。</p>
<p > </p>
<p >可以按照如下在终端中打印传感器值</p>
<p >print("光线强度:%d"%(Light)) #终端打印信息</p>
<p > </p>
<h1 ><b>光线传感器和LED联动</b></h1>
<p >我们设计自动灯光控制,在环境亮度低于一定值时打开LED,环境亮度高于一定值时关闭LED。</p>
<p >逻辑如下</p>
<div class="parsedown-markdown">
<p> if(Light < 100):</p>
<p > led.write_digital(1) </p>
<p > else:</p>
<p > led.write_digital(0) </p>
</div>
<p > </p>
<p >这里的100需要按照实际情况调整。</p>
<p > </p>
<p > </p>
<h1 ><b>测试</b></h1>
<p >综上,整个代码如下</p>
<div class="parsedown-markdown">
<p>from pinpong.extension.unihiker import * # 导入pinpong.extension.unihiker包中所有模块</p>
<p >from pinpong.board import Board,Pin # 从pinpong.board包中导入Board Pin模块</p>
<p >import time # 导入时间库</p>
<p > </p>
<p >Board('UNIHIKER').begin() # 初始化,选择板型和端口号,不输入则进行自动识别</p>
<p >led = Pin(Pin.P25, Pin.OUT) #引脚初始化为电平输出模式,P25为L灯的引脚</p>
<p > </p>
<p >while True: # 循环</p>
<p > time.sleep(1) # delay1秒</p>
<p > Light = light.read() # 读取光线值</p>
<p > print("光线强度:%d"%(Light)) #终端打印信息</p>
<p > if(Light < 100):</p>
<p > led.write_digital(1) </p>
<p > else:</p>
<p > led.write_digital(0) </p>
</div>
<p > </p>
<p >按照前面开发环境中说明,使用直接代码编辑方式,添加源文件</p>
<p >light_led.py并下载运行</p>
<p ></p>
<p >可以看到终端打印了传感器值</p>
<p ></p>
<p >正常环境光线较强时,灯不亮,我们用手指挡住光线传感器,模拟环境光变弱,LED亮,</p>
<p >实现了我们设计的逻辑,也就是一个自动控制灯光实现了。如视频:</p>
<p >如果我们用LED对应的引脚去控制继电器,那么就实现了一个实际可用的自动灯光控制器,实现十分简单快速。</p>
<p > </p>
<h1 ><b>总结</b></h1>
<p > 我们通过一个自动灯光控制器的设计,测试了LED的控制和光线传感器的使用,用一个具有实用价值的案例,快速体验了基于该开发板进行开发和想法实现的乐趣,所以该开发板作为Python编程学习板,既能学习语言,又能结合实际,能快速原型实现自己的想法,体验学习的乐趣,确实是一个不错的开源硬件平台。</p>
<p > </p>
<p > </p>
</div><script> var loginstr = '<div class="locked">查看本帖全部内容,请<a href="javascript:;" style="color:#e60000" class="loginf">登录</a>或者<a href="https://bbs.eeworld.com.cn/member.php?mod=register_eeworld.php&action=wechat" style="color:#e60000" target="_blank">注册</a></div>';
if(parseInt(discuz_uid)==0){
(function($){
var postHeight = getTextHeight(400);
$(".showpostmsg").html($(".showpostmsg").html());
$(".showpostmsg").after(loginstr);
$(".showpostmsg").css({height:postHeight,overflow:"hidden"});
})(jQuery);
} </script><script type="text/javascript">(function(d,c){var a=d.createElement("script"),m=d.getElementsByTagName("script"),eewurl="//counter.eeworld.com.cn/pv/count/";a.src=eewurl+c;m.parentNode.insertBefore(a,m)})(document,523)</script> 6666,这块开发板玩python那是挺牛的! <p>用Python来控制硬件着实很舒服。不知道能不能跑AI。</p>
页:
[1]