qinyunti 发表于 2022-10-29 01:38

【行空板 Python编程学习主控板】LED和光线传感器使用体验-自动灯光控制器实现

<div class='showpostmsg'><h1>a80badf9bdff0a8810218e4e1f462c91<br />
&nbsp;</h1>

<h1><b>前言</b></h1>

<p >&nbsp;&nbsp;&nbsp;&nbsp;前面我们已经了解了Python的开发环境,现在开始我们逐一测试各个传感器和接口模块。</p>

<p >先从最简单的开始,先了解IO的操作,控制LED。另外为了体验到实用性,我们结合光线传感器进行联动,实现LED自动根据环境亮度开关,模拟实现自动灯光控制器。这样一各案例测试两个模块:LED和光线传感器。</p>

<p >&nbsp;</p>

<h1 ><b>IO操作LED</b></h1>

<p >参见https://wiki.unihiker.com/pinpong_python_lib#target_6</p>

<p >&nbsp;</p>

<p >开发板提供了一个蓝色用户LED灯,在背面丝印L</p>

<p ></p>

<p >L灯为高低电平控制,接到了行空板的P25接口上,因此控制P25即可控制L灯。</p>

<p >控制输出1则点亮,否则熄灭。</p>

<p >&nbsp;</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 >&nbsp;</p>

<h1 ><b>光线传感器</b></h1>

<p >参见https://wiki.unihiker.com/pinpong_python_lib#target_8</p>

<p >正面屏幕上方有一颗光线传感器,可以获取环境光线强度,单位为模拟输入值0~4095.</p>

<p >&nbsp;</p>

<p >使用光线传感器线要导入模块</p>

<p >from pinpong.board import *</p>

<p >from pinpong.extension.unihiker import *</p>

<p >&nbsp;</p>

<p >读取光线传感器值</p>

<p >Light = light.read() # 读取光线值</p>

<p >光线传感器接到行空板的P29接口上,因此还可以通过ADC输入方法读取。</p>

<p >&nbsp;</p>

<p >可以按照如下在终端中打印传感器值</p>

<p >print(&quot;光线强度:%d&quot;%(Light)) #终端打印信息</p>

<p >&nbsp;</p>

<h1 ><b>光线传感器和LED联动</b></h1>

<p >我们设计自动灯光控制,在环境亮度低于一定值时打开LED,环境亮度高于一定值时关闭LED。</p>

<p >逻辑如下</p>

<div class="parsedown-markdown">
<p>&nbsp;&nbsp;&nbsp;&nbsp;if(Light&nbsp;&lt;&nbsp;100):</p>

<p >&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;led.write_digital(1)&nbsp;</p>

<p >&nbsp;&nbsp;&nbsp;&nbsp;else:</p>

<p >&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;led.write_digital(0)&nbsp;</p>
</div>

<p >&nbsp;</p>

<p >这里的100需要按照实际情况调整。</p>

<p >&nbsp;</p>

<p >&nbsp;</p>

<h1 ><b>测试</b></h1>

<p >综上,整个代码如下</p>

<div class="parsedown-markdown">
<p>from&nbsp;pinpong.extension.unihiker&nbsp;import&nbsp;*&nbsp;#&nbsp;导入pinpong.extension.unihiker包中所有模块</p>

<p >from&nbsp;pinpong.board&nbsp;import&nbsp;Board,Pin&nbsp;#&nbsp;从pinpong.board包中导入Board&nbsp;Pin模块</p>

<p >import&nbsp;time&nbsp;&nbsp;#&nbsp;导入时间库</p>

<p >&nbsp;</p>

<p >Board(&#39;UNIHIKER&#39;).begin()&nbsp;#&nbsp;初始化,选择板型和端口号,不输入则进行自动识别</p>

<p >led&nbsp;=&nbsp;Pin(Pin.P25,&nbsp;Pin.OUT)&nbsp;#引脚初始化为电平输出模式,P25为L灯的引脚</p>

<p >&nbsp;</p>

<p >while&nbsp;True:&nbsp;&nbsp;#&nbsp;循环</p>

<p >&nbsp;&nbsp;&nbsp;&nbsp;time.sleep(1)&nbsp;&nbsp;#&nbsp;delay1秒</p>

<p >&nbsp;&nbsp;&nbsp;&nbsp;Light&nbsp;=&nbsp;light.read()&nbsp;#&nbsp;读取光线值</p>

<p >&nbsp;&nbsp;&nbsp;&nbsp;print(&quot;光线强度:%d&quot;%(Light))&nbsp;#终端打印信息</p>

<p >&nbsp;&nbsp;&nbsp;&nbsp;if(Light&nbsp;&lt;&nbsp;100):</p>

<p >&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;led.write_digital(1)&nbsp;</p>

<p >&nbsp;&nbsp;&nbsp;&nbsp;else:</p>

<p >&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;led.write_digital(0)&nbsp;</p>
</div>

<p >&nbsp;</p>

<p >按照前面开发环境中说明,使用直接代码编辑方式,添加源文件</p>

<p >light_led.py并下载运行</p>

<p ></p>

<p >可以看到终端打印了传感器值</p>

<p ></p>

<p >正常环境光线较强时,灯不亮,我们用手指挡住光线传感器,模拟环境光变弱,LED亮,</p>

<p >实现了我们设计的逻辑,也就是一个自动控制灯光实现了。如视频:</p>

<p >如果我们用LED对应的引脚去控制继电器,那么就实现了一个实际可用的自动灯光控制器,实现十分简单快速。</p>

<p >&nbsp;</p>

<h1 ><b>总结</b></h1>

<p >&nbsp;&nbsp;&nbsp;&nbsp;我们通过一个自动灯光控制器的设计,测试了LED的控制和光线传感器的使用,用一个具有实用价值的案例,快速体验了基于该开发板进行开发和想法实现的乐趣,所以该开发板作为Python编程学习板,既能学习语言,又能结合实际,能快速原型实现自己的想法,体验学习的乐趣,确实是一个不错的开源硬件平台。</p>

<p >&nbsp;</p>

<p >&nbsp;</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>

lugl4313820 发表于 2022-10-29 21:53

6666,这块开发板玩python那是挺牛的!

wangerxian 发表于 2022-10-30 10:07

<p>用Python来控制硬件着实很舒服。不知道能不能跑AI。</p>
页: [1]
查看完整版本: 【行空板 Python编程学习主控板】LED和光线传感器使用体验-自动灯光控制器实现