478|1

143

帖子

4

TA的资源

一粒金砂(高级)

楼主
 

【得捷电子Follow me第3期】任务6:综合实践(分任务3:开灯提醒器) [复制链接]

 
任务6:综合实践(分任务3:开灯提醒器)
这个任务是要求完成监测环境光强度,如果光线太暗,通过屏幕和蜂鸣器提醒用户开灯,达到保护视力的效果。而我们有了前面几个任务之后,完成这个任务相对就比较简单了。
也就是在任务5的基础上,将温湿度的部分去除,再加入蜂鸣器的部分即可
首先是添加蜂鸣器
然后在下面增加光敏获取的照度值判断,当小于一定值时,蜂鸣器响起,并在OLED屏幕上显示Turn Light On的提示,而如果照度大于该值,则蜂鸣器关闭,且OLED不提示内容。
运行效果如下
当照度大于一定值
当照度小于该值
完整代码如下
from machine import Pin, SoftI2C, ADC, PWM
import ssd1306
import utime
import time

# Buzzer settings
buzzer_pin = Pin(5, Pin.OUT)
buzzer_pwm = PWM(buzzer_pin, freq=440, duty=0)  # 初始频率为440 Hz,初始占空比为0

i2c = SoftI2C(scl=Pin(7), sda=Pin(6))

oled_width = 128
oled_height = 64
oled = ssd1306.SSD1306_I2C(oled_width, oled_height, i2c)

# 清空屏幕,并显示任务要求
oled.fill(0)
oled.text("Task 6-3", 0, 0)
oled.text("Light:", 0, 16)
oled.show()

# 光照部分
adc = ADC(Pin(2))
adc.atten(ADC.ATTN_11DB)
adc.width(ADC.WIDTH_12BIT)  #4095

while True:

    
    light_adc = adc.read()
    
    # 计算光照强度单位Lux
    light_lux = light_adc * 350 * 1.0 / 4095
    
    # 算出电阻值单位K
    light_res = (4095 - light_adc) * 10.0 / light_adc
    
    print("Light(lux):");
    print('{:.2f}'.format(light_lux))
    print("Light(K):");
    print('{:.2f}'.format(light_res))
    
    # 清除变化部分的内容
    oled.fill_rect(64,16,64,48,0) 
    oled.fill_rect(0,48,128,16,0)
    
    oled.text('{:.2f}'.format(light_lux), 64, 16)
    
    if light_lux < 66:
        print("We need to turn the light on\n");
        oled.text("Turn Light On", 0, 48)
        buzzer_pwm.duty(512)
    else:
        buzzer_pwm.duty(0)
        
    # 在此处更新显示
    oled.show()
    
    # 延时1秒
    time.sleep(1)

效果视频

task-6_3

 

最新回复

感谢楼主提供的技术分享,先收藏学习再发表个人意见,顶起来   详情 回复 发表于 2023-11-21 14:12
点赞 关注
 
 

回复
举报

755

帖子

5

TA的资源

纯净的硅(高级)

沙发
 

感谢楼主提供的技术分享,先收藏学习再发表个人意见,顶起来

 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/6 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表