ESP8266_MicroPython——ADC_PWM

news2024/11/15 19:27:17

MicroPython

文章目录

  • MicroPython
  • 前言
  • 一、ADC
  • 二、PWM


前言

这一节简单学习一下ACD和PWM

一、ADC

ADC(analog to digital conversion) 模拟数字转换。意思就是将模拟信号转化成数字信号,由于单片机只能识别二级=进制数字,所以外界模拟信号常常会通过 ADC转换成其可以识别的数字信息。常见的应用就是将变化的电压转成数字信号。
ESP8266 的 ADC 输入引脚只能测量 0-1V 的量程。这个大家要注意,和单片机的0到3.3V是不一样。
我们来看看 ADC 模块的构造函数和使用方法。

adc=machine.ADC(0)
构建 ADC 对象。0:ESP8266 只有 1 个 ADC
adc.read()
获取 ADC 值。测量精度是 10 位,返回 0-1024(表示 0-1V)。

你没看错,就这么简单。两句函数就可以获得 ADC 数值
先导入相关模块,然后初始化模块。在循环中不断读取 ADC 的值,转化成电压值后在 OLED 上面显示,每隔 100 毫秒读取一次
在这里插入图片描述


#导入相关模块
from machine import Pin,I2C,ADC,Timer
from ssd1306 import SSD1306_I2C

#初始化相关模块
i2c = I2C(sda=Pin(13), scl=Pin(14))  #I2C初始化:sda-->13, scl --> 14
oled = SSD1306_I2C(128, 64, i2c, addr=0x3c)
adc = ADC(0) #Pin='AD'

def ADC_Test(tim):

	oled.fill(0)  # 清屏显示黑色背景
	oled.text('ADC', 0, 15)      # 次行显示实验名称

	#获取ADC数值
 	oled.text(str(adc.read()),0,40)
 	oled.text('(1024)',40,40)

 	#计算电压值,获得的数据0-1024相当于0-1V,('%.2f'%)表示保留2位小数
 	oled.text(str('%.2f'%(adc.read()/1024)),0,55)
  	oled.text('V',40,55)

 	oled.show()

#开启RTOS定时器
tim = Timer(-1)
tim.init(period=100, mode=Timer.PERIODIC, callback=ADC_Test) #周期300ms

二、PWM

PWM 就是一个信号输出。PWM(脉冲宽度调制),主要用于输出不同频率、占空比(一个周期内高电平出现时间占总时间比例)的方波。以实现固定频率或平均电压输出。概念就不详细介绍了,详细的可以看主页文章。
在这里插入图片描述
通过PWM可以驱动蜂鸣器以不同的频率发声,无源蜂鸣器,需要给定指定的频率,才能发声的,而且可以通过改变频率来改变蜂鸣器的发声音色。
PWM 可以通过 ESP8266 所有引脚输出除了 Pin(16). 所有通道都有 1 个特定的频率,从 1 到 1000 之间(单位是 Hz)。占空比的值为 0 至 1023 之间。
先看看 PWM 模块对象:

pwm15=machine.PWM(machine.Pin(id),freq,duty)
构建 PWM 对象。id:引脚编号;freq:频率值;duty:占空比;配置完后 PWM 自动生效
pwm15.freq(freq)
设置频率。freq:频率值在 1-1000 之间,freq 为空时表示获取当前频率值。
pwm15.duty(duty)
设置占空比。duty:占空比在 0-1023 之间,duty 为空时表示获取当前占空比值。
pwm15.deinit()
关闭 PWM。

无源蜂鸣器我们可以用特定频率的方波来驱动,方波的原理很简单,就是一定频率的高低电平转换,可以简单理解成占空比为 50%的 PWM 输出。
在这里插入图片描述


from machine import Pin, PWM
import time

Beep = PWM(Pin(15), freq=0, duty=512) # 在同一语句下创建和配置 PWM

#蜂鸣器发出频率200Hz响声
Beep.freq(200)
time.sleep_ms(1000)

#蜂鸣器发出频率400Hz响声
Beep.freq(400)
time.sleep_ms(1000)

#蜂鸣器发出频率600Hz响声
Beep.freq(600)
time.sleep_ms(1000)


#蜂鸣器发出频率800Hz响声
Beep.freq(800)
time.sleep_ms(1000)


#蜂鸣器发出频率1000Hz响声
Beep.freq(1000)
time.sleep_ms(1000)

#停止
Beep.deinit()

下载程序后可以听到蜂鸣器依次发出不同频率的响声。
可以用示波器看一下(1k频率和200HZ频率)

在这里插入图片描述
在这里插入图片描述

比如说你要控制舵机就可以这么写
在这里插入图片描述
这样写舵机就可以动(注意占空比范围就可以了(0-1023))

from machine import Pin, PWM
pwm0 = PWM(Pin(15))      # create PWM object from a pin
pwm0.freq(1000)         # set frequency
pwm0.duty(300)          # set duty cycle

可以看一下1K频率下300的占空比和800占空比的波形
300
在这里插入图片描述
800
在这里插入图片描述

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

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

相关文章

OpenCV结构分析与形状描述符(22)计算图像中某个轮廓或区域的矩函数moments()的使用

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 计算一个多边形或光栅化形状直到三阶的所有矩。 该函数计算一个向量形状或光栅化形状直到三阶的矩。结果返回在 cv::Moments 结构中。 函数原型…

数据结构————二叉树基础知识(零基础包会的!)

今天带来数据结构二叉树的知识,保证大家不会离散数学或者没有数据结构基础,也能明明白白的。 一,树 1,树的结构 我们在了解什么是二叉树之前我们先了解下什么是树,树是一种非线性的数据结构,它是由n个节点…

Bootstrap 警告信息(Alerts)使用介绍

本章将讲解警告(Alerts)以及 Bootstrap 所提供的用于警告的 class。警告(Alerts)向用户提供了一种定义消息样式的方式。它们为典型的用户操作提供了上下文信息反馈。 您可以为警告框添加一个可选的关闭按钮。为了创建一个内联的可…

C# 实现二维数据数组导出到 Excel

目录 功能需求 范例运行环境 Excel DCOM 配置 设计实现 组件库引入 ​编辑​ 方法设计 生成二维数据数组 核心方法实现 调用示例 总结 功能需求 将数据库查询出来的数据导出并生成 Excel 文件,是项目中经常使用的一项功能。本文将介绍通过数据集生成二维…

基于TCP的网络计算器实现

目录 一. 重新理解协议 二. 序列化与反序列化 2.1 概念 2.2 重新理解 read、write、recv、send 和 tcp 为什么支持全双工 2.3 理解TCP面向字节流 三. 请求应答模块实现 3.1 添加与解析报头 3.2 定制协议: 3.3 Json 四. 计算模块实现…

字典转换(根据字典转换、根据id转换)

一、三种转换方式 翻译场景:序列化时候转换 适用类型: 字典type转中文用户id转用户名部门id转名称附件id转url路径1.1 根据另一个映射字段 翻译保存到此字段 根据创建者createBy的id,查询名称设置到 createName 1.2 直接根据此字段值翻译后替换此字段值 ossId 替换为 url …

医疗监测数据检测系统源码分享

医疗监测数据检测检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer…

vue3透传、注入

属性透传 传递给子组件时,没有被子组件消费的属性或事件,常见的如id、class 注意1 1.class、style是合并的,style中如果出现重复的样式,以透传属性为准2.id属性是以透传属性为准,其他情况透传属性名相同&#xff0c…

深度学习云服务器免费使用教程

#云服务器# #深度学习# #人工智能# #计算机视觉# 本文为各位学习深度学习的入门选手而创建,降低深度学习的入门门槛。 谷歌云服务器Colab: T4GPU。限额,需要科学上网,不能使用终端。 谷歌云服务器地址:欢迎使用 C…

C语言 | Leetcode C语言题解之第405题数字转换为十六进制数

题目&#xff1a; 题解&#xff1a; char * toHex(int num){int i0;char *nums(char*)malloc(sizeof(char)*32);unsigned int newnum(unsigned int)num;if(num0){nums[0]0;nums[1]\0;return nums;}while(newnum>1){int flagnewnum%16;newnum/16;if(flag<9){nums[i]flag0…

华为OD机试 - 计算误码率(Python/JS/C/C++ 2024 E卷 100分)

华为OD机试 2024E卷题库疯狂收录中&#xff0c;刷题点这里 专栏导读 本专栏收录于《华为OD机试真题&#xff08;Python/JS/C/C&#xff09;》。 刷的越多&#xff0c;抽中的概率越大&#xff0c;私信哪吒&#xff0c;备注华为OD&#xff0c;加入华为OD刷题交流群&#xff0c;…

Acwing 队列

模拟队列 主要思想&#xff1a;先进先出&#xff08;注意与栈做区分&#xff09;&#xff0c;队尾插入&#xff0c;队头删除。设置一个数组存储数据&#xff0c;队头指针指向队列第一个元素&#xff08;初始为0&#xff09;&#xff0c;队尾指针指向最后一个元素&#xff08;初…

Qt常用控件——QSpinBox

文章目录 QSpinBox核心属性及信号点餐示例 QSpinBox核心属性及信号 QSpinBox或者QDoubleSpinBox表示微调框&#xff0c;带有按钮的输入框&#xff0c;可以用来输入整数/浮点数或者通过点击按钮调整数值大小 QSpinBox和QDoubleSpinBox用法基本相同&#xff0c;本篇以QSpinBox为…

Ubuntu 安装包下载(以20版本 阿里镜像站为例子)

Ubuntu安装包下载 上一篇文章写了一些国内常用的镜像站&#xff0c;这篇以阿里云镜像站Ubuntu20版本为例。 https://mirrors.aliyun.com/ubuntu-releases/ 1.点击自己想要下载的版本 2.点击以amd64.iso为结尾的文件&#xff0c;这个是安装文件&#xff0c;如果是桌面端&…

C++初阶学习——探索STL奥秘——vector的模拟实现

vector的结构比较特殊&#xff0c;成员变量为三个指针 #pragma once #include <iostream> using std::cin; using std::cout; using std::endl;#include <string> using std::string;namespace Yohifo {template<class T>class vector{public:typedef T val…

使用jmeter做性能测试实践过程中需要注意什么

前言 在驾驭Apache JMeter进行性能测试之旅中&#xff0c;深刻理解其特性和限制是至关重要的。以下是提升JMeter效能的关键策略&#xff0c;旨在挖掘其潜力&#xff0c;克服局限&#xff0c;实现精准测试。 1.精确调控线程数 推荐阈值&#xff1a;将线程数控制在300以内&…

模拟视频推到WVP推流列表

效果 1. wvp创建RTMP 2. 使用ffmpeg将本地的视频转为rtmp ffmpeg -re -i F:rtsp\123.mp4 -c copy -f flv rtmp://192.168.1.237:1935/cd/10001?sign=Z4Y3eYeSg

HTML5之canvas绘图

介绍 <canvas> 是 HTML5 引入的一个强大元素&#xff0c;允许直接在网页上进行矢量图形和位图图像的绘制&#xff0c;为网页提供了一个动态图形渲染的平台。这一特性极大丰富了网页的表现力&#xff0c;特别是在数据可视化、游戏开发、交互式图表和动画制作等领域发挥着…

第311题| 超好用!二重积分求旋转体体积公式|武忠祥老师每日一题

第一步&#xff1a; &#xff08;1&#xff09;找渐近线&#xff0c;先看水平渐近线&#xff0c;看x趋于无穷时&#xff0c;y有没有趋于一个有限的值。 , 得出水平渐近线y1。因为左右两边都是水平渐近线&#xff0c;所以没有斜渐近线。 第二步&#xff1a; 画出图像&#…

Spring Boot环境下的学生读书笔记共享

第4章 系统设计 4.1系统结构设计 读书笔记共享平台的设计主要是为了满足用户的实际需求。 因此&#xff0c;它需要通过Internet实现&#xff0c;因此它必须具备硬件和软件基础。该平台最终可以通过科学技术和各种方式达到支持智能化的信息管理的目的。因此&#xff0c;它必须具…