物联网开发笔记(39)- 使用Micropython开发ESP32开发板之控制PS2摇杆

本文主要是介绍物联网开发笔记(39)- 使用Micropython开发ESP32开发板之控制PS2摇杆,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、目的

        这一节我们学习如何使用我们的ESP32开发板来控制PS2摇杆。

二、环境

        ESP32 + PS2摇杆 + Thonny IDE + 几根杜邦线

接线示意图:注意接3.3V,接5V烧板子。

三、ESP32 ADC

        ESP32 上有几个引脚可以用来获取模拟量——这些引脚称为 ADC 引脚(模拟值转换为数字值),以下所有 GPIO 均可用作 ADC 引脚:0、2、4、12、13、14、15、25、26、27、32、33、34、35、36、39

但有些开发板上0、2、4引脚不能使用,推荐使用32、 32、33、34、35、36、39

官方文档:Quick reference for the ESP32 — MicroPython latest documentation

注意,默认ESP32的对应值是1v对应4095,所以为了能够调整需要在代码中控制

  • ADC.ATTN_0DB— 满量程电压:1.2V
  • ADC.ATTN_2_5DB— 满量程电压:1.5V
  • ADC.ATTN_6DB— 全量程电压:2.0V
  • ADC.ATTN_11DB— 全量程电压:3.3V

四、代码

from machine import Pin, ADC
import timeps2_y = ADC(Pin(33))
ps2_y.atten(ADC.ATTN_11DB)  # 这里配置测量量程为3.3V,默认为1V
ps2_x = ADC(Pin(32))
ps2_x.atten(ADC.ATTN_11DB)  # 这里配置测量量程为3.3V,默认为1Vbtn = Pin(15, Pin.IN)  # 按键按下输出0,while True:val_y = ps2_y.read()  # 输出范围0-4095,默认处于中间位置if(val_y > 1900):print("向上")elif(val_y < 1800):print("向下")val_x = ps2_x.read()  # 输出范围0-4095,默认处于中间位置if(val_x > 1900):print("向右")elif(val_x < 1800):print("向左")if(btn.value() == 0):print("按键按下")print("x:{} y:{} btn:{}".format(val_x, val_y, btn.value()))  # 打印出x轴,y轴的值time.sleep(0.2)

五、演示效果

六、摇杆购买

        同样大家可以在某宝上购买到摇杆:

https://detail.tmall.com/item.htm?spm=a1z10.3-b.w4011-23212844728.102.33a931e5KWj9l4&id=637208197637&rn=7f003cb721f85bfc44d51e018752b58d&abbucket=8

这篇关于物联网开发笔记(39)- 使用Micropython开发ESP32开发板之控制PS2摇杆的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/301267

相关文章

使用Redis快速实现共享Session登录的详细步骤

《使用Redis快速实现共享Session登录的详细步骤》在Web开发中,Session通常用于存储用户的会话信息,允许用户在多个页面之间保持登录状态,Redis是一个开源的高性能键值数据库,广泛用于... 目录前言实现原理:步骤:使用Redis实现共享Session登录1. 引入Redis依赖2. 配置R

使用Python的requests库调用API接口的详细步骤

《使用Python的requests库调用API接口的详细步骤》使用Python的requests库调用API接口是开发中最常用的方式之一,它简化了HTTP请求的处理流程,以下是详细步骤和实战示例,涵... 目录一、准备工作:安装 requests 库二、基本调用流程(以 RESTful API 为例)1.

Python38个游戏开发库整理汇总

《Python38个游戏开发库整理汇总》文章介绍了多种Python游戏开发库,涵盖2D/3D游戏开发、多人游戏框架及视觉小说引擎,适合不同需求的开发者入门,强调跨平台支持与易用性,并鼓励读者交流反馈以... 目录PyGameCocos2dPySoyPyOgrepygletPanda3DBlenderFife

使用Python开发一个Ditto剪贴板数据导出工具

《使用Python开发一个Ditto剪贴板数据导出工具》在日常工作中,我们经常需要处理大量的剪贴板数据,下面将介绍如何使用Python的wxPython库开发一个图形化工具,实现从Ditto数据库中读... 目录前言运行结果项目需求分析技术选型核心功能实现1. Ditto数据库结构分析2. 数据库自动定位3

Python yield与yield from的简单使用方式

《Pythonyield与yieldfrom的简单使用方式》生成器通过yield定义,可在处理I/O时暂停执行并返回部分结果,待其他任务完成后继续,yieldfrom用于将一个生成器的值传递给另一... 目录python yield与yield from的使用代码结构总结Python yield与yield

Go语言使用select监听多个channel的示例详解

《Go语言使用select监听多个channel的示例详解》本文将聚焦Go并发中的一个强力工具,select,这篇文章将通过实际案例学习如何优雅地监听多个Channel,实现多任务处理、超时控制和非阻... 目录一、前言:为什么要使用select二、实战目标三、案例代码:监听两个任务结果和超时四、运行示例五

python使用Akshare与Streamlit实现股票估值分析教程(图文代码)

《python使用Akshare与Streamlit实现股票估值分析教程(图文代码)》入职测试中的一道题,要求:从Akshare下载某一个股票近十年的财务报表包括,资产负债表,利润表,现金流量表,保存... 目录一、前言二、核心知识点梳理1、Akshare数据获取2、Pandas数据处理3、Matplotl

Django开发时如何避免频繁发送短信验证码(python图文代码)

《Django开发时如何避免频繁发送短信验证码(python图文代码)》Django开发时,为防止频繁发送验证码,后端需用Redis限制请求频率,结合管道技术提升效率,通过生产者消费者模式解耦业务逻辑... 目录避免频繁发送 验证码1. www.chinasem.cn避免频繁发送 验证码逻辑分析2. 避免频繁

Java使用Thumbnailator库实现图片处理与压缩功能

《Java使用Thumbnailator库实现图片处理与压缩功能》Thumbnailator是高性能Java图像处理库,支持缩放、旋转、水印添加、裁剪及格式转换,提供易用API和性能优化,适合Web应... 目录1. 图片处理库Thumbnailator介绍2. 基本和指定大小图片缩放功能2.1 图片缩放的

Spring Boot集成/输出/日志级别控制/持久化开发实践

《SpringBoot集成/输出/日志级别控制/持久化开发实践》SpringBoot默认集成Logback,支持灵活日志级别配置(INFO/DEBUG等),输出包含时间戳、级别、类名等信息,并可通过... 目录一、日志概述1.1、Spring Boot日志简介1.2、日志框架与默认配置1.3、日志的核心作用