• ESP32 MicroPython 蜂鸣器及传感器的使用⑦


    1、蜂鸣器奏乐

    我们小车底板配置有蜂鸣器,下面我们来学习如何去利用蜂鸣器演奏乐曲

    2、实验目的

    学习使用使用定义函数关键字def,调用另一函数内的“使用方法”,6.3章节myCar.buzzer(freq)

    3、实验内容

    根据《两只老虎》简谱和myCar.buzzer(freq)函数
    在这里插入图片描述
    参考代码

    from machine import UART
    import time
    import car
    
    uart1 = UART(1,115200,rx=18,tx=17) #构建小车控制串口
    myCar=car.SERIAL_CAR(uart1)   #构建小车控制对象
    time.sleep(1)                 #延时1s,等待模块稳定
    
    def JP():#定义函数JP(),方便统一修改时间间隔
        time.sleep_ms(450)
        
    def dao():#定义函数dao(),音符dao
        myCar.buzzer(1046)
        JP()
    def re():#定义函数re(),音符re
        myCar.buzzer(1174)
        JP()
    def mi():#定义函数mi(),音符mi
        myCar.buzzer(1318)
        JP()
    def fa():#定义函数fa(),音符fa
        myCar.buzzer(1396)
        JP()
    def sao():#定义函数sao(),音符sao
        myCar.buzzer(1568)
        JP()
    def la():#定义函数la(),音符la
        myCar.buzzer(1760)
        JP()
    def xi():#定义函数xi(),音符xi
        myCar.buzzer(1974)
        JP()
    
    while 1:#根据音乐简谱依次罗列出音符
        dao()
        re()
        mi()
        dao()
        
        dao()
        re()
        mi()
        dao()
        
        mi()
        fa()
        sao()
        time.sleep_ms(500)
        mi()
        fa()
        sao()
        time.sleep_ms(500)
        
        sao()
        la()
        dao()
        fa()
        mi()
        dao()
        
        sao()
        la()
        dao()
        fa()
        mi()
        dao()
        
        dao()
        sao()
        dao()
        time.sleep_ms(500)
        dao()
        sao()
        dao()
        
        myCar.buzzer(0)
        time.sleep_ms(4000)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77

    5、实验结果

    保存好参考代码后,执行运行程序可以听到蜂鸣器演奏《两只老虎》的乐谱。

    6、小车传感器应用

    我们小车顶板配置有温湿度、空气质量、火焰、光敏传感器,下面我们来学习如何去读取他们,方便我们后面做应用时方便使用。

    7、实验目的

    学习使用外部传感器数据

    8、实验内容

    读取小车顶板温湿度、空气质量、红外遥控解码、光照强度、火焰传感器数据。并且在显示屏上显示出来。
    实验中实验到的构造函数:
    构造函数 说明

    s=ex_sensor.sensor()	
    创建/构造传感器对象,返回传感器控制对象
    
    s.read_temp()
    读取温度数据,返回温度放大10倍后的整数,最终结果除以10为真实温度,精度0.1摄氏度
    s.read_hum()	
    读取湿度数据,返回湿度放大10倍后的整数,最终结果除以10,单位为百分比,精度0.1%
    s.read_aiq()	
    读取空气质量,返回整数类型(0~1000),单位PPM
    s.read_flam()	
    读取火焰,越靠近火源值越大,反之越小,范围0~4095
    s.read_ldr()	
    读取光照,越亮值越大,反之越小,范围0~4095
    s.read_ir()	
    读取红外遥控解码,返回解码值
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    9、参考代码

    参考代码文件可以在资料包文件夹“智能小车mpy例程\基础实验\12-顶板传感器实验-温湿度-空气质量”文件夹下的main.py 下面为完整代码内容:

    import time               #导入时间控制模块
    import ex_sensor          #导入外部传感器模块
    from lcd import LCD20     #导入2.0寸LCD模块
    
    ###############################################################
    #颜色值定义,(R,G,B) 0~255代表颜色值
    red = (255,0,0)  #红色
    green = (0,255,0) #绿色
    blue = (0,0,255)  #蓝色
    white = (255,255,255) #白色
    back = (0,0,0)    #黑色
    ###############################################################
    #构建显示屏对象,并返回对象句柄ld
    ld=LCD20(dir=1) #创建LCD对象 dir 显示方向为竖屏,1、3竖屏,2、4横盘
    
    ld.fill(back) # 整屏填充指定颜色
    
    #LCD显示信息
    ld.dText("顶板传感器实验",25,10,color=white,size=2)
    ld.dText("温度:",25,50,color=green,size=2)
    ld.dText("湿度:",25,90,color=green,size=2)
    ld.dText("空气质量:",25,130,color=green,size=2)
    ld.dText("光照度:",25,170,color=green,size=2)
    ld.dText("火焰值:",25,210,color=green,size=2)
    ld.dText("红外遥控:",25,250,color=green,size=2)
    
    ###############################################################
    #定义读取传感器变量数据
    tempf = 0.0      #温度数据
    humf = 0.0       #湿度数据
    irData = 0       #红外数据
    aiqData = 0      #空气质量
    ldrData = 0      #光照度
    flamData = 0     #火焰
    ###############################################################
    s = ex_sensor.sensor()            #构建传感器对象
    while True:
        tempf = s.read_temp()         #读取温度
        humf = s.read_hum()           #读取温度
        irData = s.read_ir()          #读取红外遥控解码数据
        aiqData = s.read_aiq()        #读取空气质量数据
        ldrData = s.read_ldr()        #读取光照度数据
        flamData = s.read_flam()      #读取火焰数据
        
        #显示屏显示温度值
        ld.dText("{:.1f}".format(tempf/10)+" ℃",95,50,color=white,size=2)
        #显示湿度
        ld.dText("{:.1f}".format(humf)+" %",95,90,color=white,size=2)
        #显示红外遥控解码值
        ld.dText("{:3d}".format(irData),130,250,color=white,size=2)
        #显示空气质量
        ld.dText("{:4d}".format(aiqData)+"PPM",130,130,color=white,size=2) 
        #显示光照度值
        ld.dText("{:4d}".format(ldrData),120,170,color=white,size=2)
        #显示火焰值
        ld.dText("{:4d}".format(flamData),120,210,color=white,size=2)
                
        time.sleep_ms(100)  #延时等待100ms
        pass
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59

    10、实验结果

    编写好代码,点击运行程序后,在显示屏显示了温度、湿度,我们向顶部传感器吹一口气可以看到温度和湿度都变化。使用红外遥控器对着小车按下任意按键,可以看到显示屏显示出解码出遥控值。
    在这里插入图片描述

    相关代码及固件:
    https://download.csdn.net/download/lu330274924/88549191

    智能小车购买链接
    技术支持抖音:易驱达Easy Drive Coming
    淘宝官方商城:https://item.taobao.com/item.htm?spm=a1z10.5-c.w4002-18887194911.15.135014bdaKI6mV&id=715385110550

  • 相关阅读:
    SQL数据分析:sqlzoo官网学习select,where,order by,limit,聚合函数,having,常用函数,窗口函数,表链接,子查询
    大小屏适配
    如何使用 mail 指令在命令行发送邮件
    三面“有赞”Java岗斩获offer:Spring+JVM+并发锁+分布式+算法
    Vue中一键批量注册全局组件
    进程间通信的方式及其特点
    TDSQL PG版节省30%磁盘空间的同时如何保障数据安全?|DB·洞见
    代码随想录 Day - 56|#583 两个字符串的删除操作|#72 编辑距离
    MySQL Create table as select无法执行
    代码随想录 | Day 55 - LeetCode 392. 判断子序列、LeetCode 115. 不同的子序列
  • 原文地址:https://blog.csdn.net/lu330274924/article/details/134474047