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

news2024/11/18 4:18:04

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.coloradmin.cn/o/1226494.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

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

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

【机器学习12】集成学习

1 集成学习分类 1.1 Boosting 训练基分类器时采用串行的方式, 各个基分类器之间有依赖。每一层在训练的时候, 对前一层基分类器分错的样本, 给予更高的权重。 测试时, 根据各层分类器的结果的加权得到最终结果。 1.2 Bagging …

【Linux】21、软中断、网络小包、SYN FLOOD 攻击、sar tcpdump

文章目录 一、通俗理解:从“取外卖”看中断二、软中断2.1 网卡收发数据包2.2 查看软中断和内核线程2.3 案例2.3.1 案例:动态库 sleep 导致软中断2.3.2 Nginx 进程的不可中断状态是系统的一种保护机制,可以保证硬件的交互过程不被意外打断。所…

【数据结构算法(一)】递归篇(常见实例讲解)

🌈键盘敲烂,年薪30万🌈 ⭐本篇讲解实例: 斐波那契、兔子问题、猴子吃桃问题、跳台阶问题、汉诺塔、杨辉三角 ⭐用到的递归思想: 无记忆递归、记忆递归(重点掌握) 目录 一、斐波那契: ①无记忆多路递归&am…

NSSCTF第13页(2)

[HNCTF 2022 Week1]Challenge__rce 提示?hint 访问看到了源码 <?php error_reporting(0); if (isset($_GET[hint])) { highlight_file(__FILE__); } if (isset($_POST[rce])) { $rce $_POST[rce]; if (strlen($rce) < 120) { if (is_string($rce…

十八、Linux任务调度crond和at

1、crond任务调度 crond进行 定时任务的设置 概述 任务调度&#xff1a;是指系统在某个时间执行的特定的命令或程序。 任务调度分类&#xff1a;1.系统工作&#xff1a;有些重要的工作必须周而复始地执行。如病毒扫描等 个别用户工作&#xff1a;个别用户可希望执行某些程序…

Linux | 信号

目录 前言 一、信号基础概念 1、生活中的信号 2、Linux中的信号 二、信号的产生 1、接口介绍 2、信号产生的方式 &#xff08;1&#xff09;终端按键的方式产生信号 &#xff08;2&#xff09;系统调用接口 a、kill b、raise c、abort &#xff08;3&#xff09…

毅速丨3D打印透气钢正在被各行业广泛应用

随着制造技术的发展&#xff0c;企业对生产效率和产品品质的进一步提高&#xff0c;3D打印透气钢已逐渐在各行业中广泛应用。传统的透气钢制造方法&#xff0c;如粉末冶金和扩散焊&#xff0c;通常只能加工出透气钢的嵌块&#xff0c;使用时需要进行镶嵌&#xff0c;存在强度不…

Nginx的核心配置文件

Nginx的核心配置文件 学习Nginx首先需要对它的核心配置文件有一定的认识&#xff0c;这个文件位于Nginx的安装目录/usr/local/nginx/conf目录下&#xff0c;名字为nginx.conf 详细配置&#xff0c;可以参考resources目录下的<<nginx配置中文详解.conf>> Nginx的核…

基于吉萨金字塔建造算法优化概率神经网络PNN的分类预测 - 附代码

基于吉萨金字塔建造算法优化概率神经网络PNN的分类预测 - 附代码 文章目录 基于吉萨金字塔建造算法优化概率神经网络PNN的分类预测 - 附代码1.PNN网络概述2.变压器故障诊街系统相关背景2.1 模型建立 3.基于吉萨金字塔建造优化的PNN网络5.测试结果6.参考文献7.Matlab代码 摘要&a…

Linux - 进一步理解 文件系统 - inode - 机械硬盘

详谈机械磁盘 在上一篇博客当中&#xff0c;已经对 用户级缓冲区 和 系统缓冲区 的区别&#xff0c;和 初步认识 C 库函数 封装的 文件接口这些做了阐述。具体可以参考下述博客&#xff1a; Linux - 用户级缓冲区和系统缓冲区 - 初步理解Linux当中文件系统-CSDN博客 本博客将…

量化交易:建立趋势跟踪策略的五个指标

什么是趋势跟踪策略&#xff1f; 趋势跟踪策略是只需需顺势而为的策略&#xff0c;即在价格上涨时买入&#xff0c;在价格开始下跌时卖出。在趋势跟踪策略中&#xff0c;人们的目标不是预测或预测&#xff0c;而只是关注市场上的任何新兴趋势。 趋势是如何出现的&#xff1f;…

解析Spring Boot中的CommandLineRunner和ApplicationRunner:用法、区别和适用场景详解

在Spring Boot应用程序中&#xff0c;CommandLineRunner和ApplicationRunner是两个重要的接口&#xff0c;它们允许我们在应用程序启动后执行一些初始化任务。本文将介绍CommandLineRunner和ApplicationRunner的区别&#xff0c;并提供代码示例和使用场景&#xff0c;让我们更好…

2023年四川省安全员A证证模拟考试题库及四川省安全员A证理论考试试题

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2023年四川省安全员A证证模拟考试题库及四川省安全员A证理论考试试题是由安全生产模拟考试一点通提供&#xff0c;四川省安全员A证证模拟考试题库是根据四川省安全员A证最新版教材&#xff0c;四川省安全员A证大纲整理…

PL/SQL编程

一、Oracle常用函数 concat&#xff1a;用于连接两个字符串。 CONCAT(Oraok, .com) -- Result: Oraok.com ceil&#xff1a;小数点向上取整。 secect ceil(7.3) from dual --Result: 8 dual表是oracle系统为计算设计的一张临时表 select sysdate as 系统日期 from dual…

我的创作纪念日——365天

机缘 最开始我写博客没有什么特别的原因&#xff0c;主要是因为以下几点&#xff1a; 练习自己的语言组织能力 记录自己学习生活中学到的知识 主要还是想找一个好的保存 Markdown 笔记的平台。 最终我选择了 CSDN&#xff0c;一来是因为 CSDN 对 Markdown 语法的支持较为全面…

C++ map和set的使用

关联式容器 vector、list、deque统称为序列式容器&#xff0c;因为其底层为线性序列的数据结构&#xff0c;存储的是元素本身 侧重于单纯的存储数据 关联式容器也是用来存储数据的&#xff0c;里面存储的是<key, value>结构的键值对&#xff0c;在数据检索时比序列式…

java--拼图游戏

1、了解拼图游戏基本功能&#xff1a; 拼图游戏内容由若干小图像块组成的&#xff0c;通过鼠标点击图像块上下左右移动&#xff0c;完成图像的拼凑。 2、拼图游戏交互界面设计与开发&#xff1a; 通过创建窗体类、菜单、中间面板和左右面板完成设计拼图的交互界面 &#xff…

基于世界杯算法优化概率神经网络PNN的分类预测 - 附代码

基于世界杯算法优化概率神经网络PNN的分类预测 - 附代码 文章目录 基于世界杯算法优化概率神经网络PNN的分类预测 - 附代码1.PNN网络概述2.变压器故障诊街系统相关背景2.1 模型建立 3.基于世界杯优化的PNN网络5.测试结果6.参考文献7.Matlab代码 摘要&#xff1a;针对PNN神经网络…

【文末附资料链接】2023年第十三届亚太杯数学建模竞赛(APMCM)优秀参考论文思路指导(持续更新中ing)

一、赛事介绍 数学建模作为一门跨学科的科学&#xff0c;不仅需要对数学知识的熟练掌握&#xff0c;还需要对实际问题的深刻理解和解决问题的创新思维。亚太杯数学建模竞赛旨在激发青年学子的创造力和团队协作精神&#xff0c;培养其在实际问题中运用数学方法解决现实挑战的能力…