2020-9-8 14:54:36 [显示全部楼层]
1137浏览
查看: 1137|回复: 5

[pinpong 库控制硬件] 【pinpong库控制硬件】之Arduino uno-智能节能灯

[复制链接]
本帖最后由 _木子_ 于 2020-9-8 14:54 编辑

智能节能灯
一、概述
——————————————————————————————————————————

在前面的章节我们学习了如何点亮小灯,如何调节亮度等等功能,那像楼道灯那样,只会在黑夜且发出声音时才会亮起的灯是如何实现的呢?我们将在本项目中学习。

图片2.jpg

二、项目实施
——————————————————————————————————————————

(1)通过光线亮度控制小灯

硬件准备:
主控:Arduino UNOIO 传感器扩展板 V7.1
模块:LED发光模块光线传感器
连接线:TypeAtoB方口USB连接线

图片3.jpg

程序编写:
1、打开pingpong库的官方文档,找到基础库示例中的“模拟输入”,并用IDLE打开。

图片4.jpg

2、修改代码,当亮度低于100的时候,点亮LED灯。
[mw_shl_code=python,false]import time

from pinpong.board import Board,Pin

Board("uno").begin()

Light = Pin(Pin.A2,Pin.ANALOG)

LED = Pin(Pin.D13, Pin.OUT)

while True:

    vl=Light.read_analog()

    print("Light=",vl)

    if vl < 100:

        LED.write_digital(1)

    else:

        LED.write_digital(0)[/mw_shl_code]
3、摁下F5运行程序,查看效果。当亮度低于100(遮住光线传感器)的时候LED灯会亮起,恢复后LED灯会熄灭。

图片5.jpg


(2)加入声音传感器检测
硬件准备:
主控:Arduino UNOIO 传感器扩展板 V7.1
模块:LED发光模块光线传感器声音传感器
连接线:TypeAtoB方口USB连接线

图片6.jpg


程序编写
[mw_shl_code=python,false]import time
from pinpong.board import Board,Pin #导入必要的库函数

Board("uno").begin()#初始化,选择板型(uno、leonardo、xugu)和端口号,不输入端口号则进行自动识别

Sound = Pin(Pin.A1,Pin.ANALOG) #初始化声音传感器引脚为A1,检测声音大小
Light = Pin(Pin.A2,Pin.ANALOG)#初始化光线传感器引脚为A2,检测光线强度
LED = Pin(Pin.D13, Pin.OUT) #初始化LED引脚为D13
while True:
    vs=Sound.read_analog()#读取模拟声音信号数值
    vl=Light.read_analog()#读取模拟灯光信号数值
    print("Sound=",vs,"Light=",vl)#打印声音和光线数据
    if vs>200 and vl < 100:#判断光线和声音大小
        LED.write_digital(1)
        time.sleep(3)
    else:
        LED.write_digital(0)
[/mw_shl_code]
运行代码,当亮度值低于100且声音值大于200时(遮住光线传感器且发出声音时),LED灯会点亮,当没有声音或光线传感器没有被遮住的状态维持3秒以上时,LED灯会熄灭。

图片7.jpg


三、代码分析
——————————————————————————————————————————

1、设计程序逻辑图
图片8.jpg

2、导入必要的包和初始化设置。
[mw_shl_code=python,false]import time
from pinpong.board import Board,Pin

Board("uno").begin()

Sound = Pin(Pin.A1,Pin.ANALOG)
Light = Pin(Pin.A2,Pin.ANALOG)
LED = Pin(Pin.D13, Pin.OUT) [/mw_shl_code]
3、加入判断
[mw_shl_code=python,false]while True:
    vs=Sound.read_analog()
    vl=Light.read_analog()
    print("Sound=",vs,"Light=",vl)
    if vs>200 and vl < 100:
        LED.write_digital(1)
        time.sleep(3)
    else:
        LED.write_digital(0)
[/mw_shl_code]
如何进行多条件判断
在本项目中我们需要判断两个条件,在我们做逻辑判断的时候经常会需要进行多条件判断,有些时候是需要两个条件都要满足的,有些时候是两个条件满足任意一条就可以了。在这种情况下,我们应该如何编写程序呢?

两条条件都需要满足的情况下,我们可以这样写
if 条件A and 条件B

两条条件满足任一即可的情况下,我们可以这样写
if 条件A or 条件B

想要得到反向的结果,即当x为true,得到的结果为false,当x为false时,得到的结果为true,我们可以这样写
not 条件

四、硬件分析
——————————————————————————————————————————

在项目中我们用到了两种传感器,光线传感器和声音传感器。

光线传感器是将光信号变成电信号的特殊电子元件,在光线传感器中起到主要作用的就是就是光敏二极管。光敏二极管是光敏电阻中的一种。光明电阻在黑暗环境中,具有非常高阻值的电阻。光线越强,电阻值反而越低。随着两端电阻值的减小,电压也就相应减小,所以从模拟口独到的值也就变小。我们读取的数据也是由此而来的。

图片9.jpg

声音传感器的作用相当于一个麦克风。它用来接收声波,反馈声音的振动图像。在声音传感器上起到主要作用的就是麦克风,声波使麦克风内的薄膜震动,导致内部电容的变化,而产生与之对应的电压变化,经过转换为可监测的电压值反馈而来。

图片10.jpg









gada888  版主

发表于 2020-9-8 17:14:31

很棒的功能
回复

使用道具 举报

_木子_  NPC
 楼主|

发表于 2020-9-9 09:46:30


            
回复

使用道具 举报

glwz007  高级技师

发表于 2020-12-22 11:39:08

请问这个代码必须是板子跟电脑连接才可以运行是吗?能不能刷入板子脱离电脑运行?
谢谢!
回复

使用道具 举报

Nick-ccq  初级技匠

发表于 2020-12-22 14:03:31

glwz007 发表于 2020-12-22 11:39
请问这个代码必须是板子跟电脑连接才可以运行是吗?能不能刷入板子脱离电脑运行?
谢谢! ...

不能脱离电脑,必须和电脑连接
回复

使用道具 举报

glwz007  高级技师

发表于 2020-12-22 16:53:26

Nick-ccq 发表于 2020-12-22 14:03
不能脱离电脑,必须和电脑连接

不能讲代码写入主板就有点尴尬了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2022 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail