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

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

    • 1、蜂鸣器奏乐
    • 2、实验目的
    • 3、实验内容
    • 5、实验结果
    • 6、小车传感器应用
    • 7、实验目的
    • 8、实验内容
    • 9、参考代码
    • 10、实验结果

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)

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()	
读取红外遥控解码,返回解码值

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/164230.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

如何将 Docsify 项目部署到 CentOS 系统的 Nginx 中

文章目录 第一步:准备 CentOS 服务器第二步:安装 Node.js 和 Docsify第三步:初始化 Docsify 项目第四步:本地预览 Docsify 项目第五步:配置 Nginx 服务器第六步:重启 Nginx 服务器拓展:使用 HTT…

VisualBox7.0.12 主机和宿舍互PING设置

设置成桥接模式 主机设置 虚拟机设置

day07_数组初识

数组的概述 数组就是用于存储数据的长度固定的容器,保证多个数据的数据类型要一致。 数组适合做一批同种类型数据的存储 数组是属于引用数据类型, 数组变量名中存储的数组在内存中的地址信息。 数组中的元素可以是基本数据类型,也可以是引用…

[qemu逃逸] DefconQuals2018-EC3

前言 一道简单的套壳堆题.原本题目环境为 ubu16, 我这里使用的是 ubu18 设备逆向 qemu-system-x86_64 只开了 Canary 和 NX 保护. 比较简单, 主要逻辑在 mmio_write 里面, 其实现了一个菜单堆, 具有增删改的功能: 但是在释放堆块时并没有置空, 所以这里存在 UAF. 而程序还直…

.Net中Redis的基本使用

前言 Redis可以用来存储、缓存和消息传递。它具有高性能、持久化、高可用性、扩展性和灵活性等特点,尤其适用于处理高并发业务和大量数据量的系统,它支持多种数据结构,如字符串、哈希表、列表、集合、有序集合等。 Redis的使用 安装包Ser…

IIC通信协议

IIC是串行半双工同步总线 I2C总线为两线制,只有两根双向信号线,一根是数据线SDA,另一根是时钟线SCL,IIC总线外接两个上拉电阻作用:在总线处于空闲状态,总线处于高电平状态 IIC总线硬件连接 1、IIC总线支…

tamarin运行

首先我们找到安装tamarin的文件位置,找到以后进入该文件夹下 ubuntuubuntu:~$ sudo find / -name tamarin-prover /home/linuxbrew/.linuxbrew/var/homebrew/linked/tamarin-prover /home/linuxbrew/.linuxbrew/Cellar/tamarin-prover /home/linuxbrew/.linuxbrew/…

URAT串口通信协议

UART是异步串行全双工总线,面向设备和设备之间的连接 配置相关内容 1、串口为串行通讯方式,代表一个时钟周期,只可以收发一位数据 2、115200代表什么,以及115200单位 单位:bps(比特率、二进制/秒) 115200代表&#…

泉盛UV-K5/K6全功能中文固件

https://github.com/wu58430/uv-k5-firmware-chinese/releases 主要功能: 中文菜单 许多来自 OneOfEleven 的模块: AM 修复,显著提高接收质量长按按钮执行 F 操作的功能复制快速扫描菜单中的频道名称编辑频道名称 频率显示选项扫描列表分配…

mysql 实现去重

个人网站 首发于公众号小肖学数据分析 1、试题描述 数据表user_test如下,请你查询所有投递用户user_id并且进行去重展示,查询结果和返回顺序如下 查询结果和返回顺序如下所示 解题思路: (1) 对user_id列直接去重: &#xff…

小程序开通电子发票

总目录 文章目录 总目录前言结语 前言 随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。 首先登录商户号:https://pay.weixin.qq.com/index.php/core/home/lo…

FPGA模块——IIC协议(读写PCF8591)

FPGA模块——IIC协议(读取PCF8591) PCF8591/AT8591芯片对iic协议的使用 PCF8591/AT8591芯片 低功耗8位CMOS数据采集设备,4路模拟输入,1路模拟输出,分时多路复用,读取数据用串型iic总线接口,最大…

计算机硬件的基本组成

一、冯诺依曼结构 存储程序: “存储程序”的概念是指将指令以二进制代码的形式事先输入计算机的主存储器,然后按其在存储器中的首地址执行程序的第一条指令,以后就按该程序的规定顺序执行其他指令,直至程序执行结束。 冯诺依曼计…

Linux进程间通信之匿名管道

文章目录 为什么要有进程间通信pipe函数共享管道原理管道特点管道的应用场景(进程池)ProcessPool.ccTask.hpp 为什么要有进程间通信 数据传输:一个进程需要将它的数据发送给另一个进程 资源共享:多个进程之间共享同样的资源。 通…

FlinkCDC数据实时同步Mysql到ES

考大家一个问题,如果想要把数据库的数据同步到别的地方,比如es,mongodb,大家会采用哪些方案呢? ::: 定时扫描同步? 实时日志同步? 定时同步是一个很好的方案,比较简单,但是如果对实时要求比较高的话,定…

JAVAEE---计算机是如何组成的

计算机软件硬件 硬件是冯诺依曼体系结构,这个结构的精髓在于将存储和执行分开。 这里存储器内存外存(硬盘,u盘,光碟等) cpu是计算机的大脑,是计算机最核心的地方。 cpu中央处理:进行算术运算…

ESP32 Arduino实战协议篇-搭建独立的 Web 服务器

在此项目中,您将创建一个带有 ESP32 的独立 Web 服务器,该服务器使用 Arduino IDE 编程环境控制输出(两个 LED)。Web 服务器是移动响应的,可以使用本地网络上的任何浏览器设备进行访问。我们将向您展示如何创建 Web 服务器以及代码如何逐步工作。 项目概况 在直接进入项目…

03. Python中的语句

1、前言 在《Python基础数据类型》一文中,我们了解了Python中的基础数据类型,今天我们继续了解下Python中的语句和函数。 2、语句 在Python中常用的语句可以大致分为两类:条件语句、循环语句。 2.1、条件语句 条件语句就是我们编码时常见…

Redis篇---第八篇

系列文章目录 文章目录 系列文章目录前言一、说说 Redis 哈希槽的概念?二、Redis 常见性能问题和解决方案有哪些?三、假如 Redis 里面有 1 亿个 key,其中有 10w 个 key 是以某个固定的已知的前缀开头的,如果将它们全部找出来?前言 前些天发现了一个巨牛的人工智能学习网站…