触摸控制

下面介绍如何外部地控制灯的亮灭,我采用esp32里面的触摸按键资源,实现触摸控制开关,一摸灯就亮。先上代码:

from machine import TouchPad, Pin  #引入touchpad模块
from time import sleepled = Pin(12,Pin.OUT)      #在12脚外接一个led灯,也可利用板子自带led
touch_pin = TouchPad(Pin(14))   #定义14脚为触摸脚
while True:touch_value = touch_pin.read()print(touch_value)   #打印出14脚感应的值if touch_value > 500 :      #若读取的值大于阀值,则为没触摸led.value(0)else:led.value(1)              #触摸则灯亮sleep(0.5)                 #延时0.5秒,实现每0.5秒判断一次触摸状态

其实很简单的,如果看过我的前两节,这个代码都不需要解释,就是多引入了一个Touchpad模块,然后把14脚定义为触摸脚。在主循环中,sleep(0.5)定义了每0.5秒就读取一次14脚的数据,然后通过串口打印出来,在upycraft下面的框应该能看到每0.5秒出现一个值,通过对比触摸14脚与否的数值自己定义阀值,用于if函数的判断,实现触摸控制。
若熟悉了代码,完全可以升级一下代码实现双稳态控制,即摸一下就可以改变灯的亮灭;或再升级一下实现双击或长按等功能,然后与前面的呼吸跑马灯结合起来,就很酷了。
这讲的触摸控制跟按键控制实现的效果一模一样,只是我觉得按键太简单,触摸好玩一点哈哈。

附上esp32的引脚图:

可以看到我的14引脚不是乱设的,esp32的引脚只有8个支持touch,就是上面的T0-T7,我们还可以发现有各种AD、DA、SD等功能,等着你去玩耍。

ADC

下面我们来看一个有趣的ADC实验,即模拟和数字的转换。效果是通过旋转电位器从而控制灯的亮度,这是呼吸灯的升级版:

from machine import Pin, PWM, ADC  #引入ADC模块
from time import sleepfrequency = 5000
led = PWM(Pin(12), frequency)pot = ADC(Pin(34))         #定义34脚为ADC脚,可以读取模拟电压
pot.width(ADC.WIDTH_12BIT) #读取的电压转为0-4096
pot.atten(ADC.ATTN_11DB)   #输入电压0-3.3vwhile True:pot_value = pot.read() //4  #使读取的电压变为0-1024print(pot_value)            #打印出读取到的电压以便调试  if pot_value < 15:led.duty(0)else:led.duty(pot_value)        #通过读取电位器的电压调节灯的占空比sleep(0.1)                   #每100ms读取一次



代码我相信不需要多说了,有很多是呼吸灯的程序粘贴过来的,看我的注释肯定能懂的。面包板上将电位器的两端接3.3v和GND后,把中间的引脚接到esp32的34脚,然后再在12脚外接个led,搞定!原理是通过读取0-3.3v的电压,将其转换为0-4096的数字,实现模数的转换,因为led的pwm输出占空比范围是0-1024(上一讲呼吸灯谈过),所以将读取的值除以4,刚好,直接定义为灯的占空比,这即是数模转换,小小十几行代码把ADC都囊括了。

综合前面几讲,可以完成一个好玩的项目:用触摸感应控制3盏灯的依次点亮,一次只亮一盏,且是呼吸灯的形式,然后一旁有个电位器,它可以调节呼吸灯的呼吸速度。 相信你可以很快写出这个项目的代码。

附上其他文章的链接:
《吃白菜一样用micropython玩esp32(一)—— 搭建环境》
《吃白菜一样用micropython玩esp32(二)—— 点灯大师》
《吃白菜一样用micropython玩esp32(四)—— siri远程控制点灯》

吃白菜一样用micropython玩esp32(三)—— 触摸按键、ADC相关推荐

  1. 吃白菜一样用micropython玩esp32(四)—— siri远程控制点灯

    这节让esp32通过wifi自己建立一个web server,就是自己建立一个网站服务器,就会有一个ip地址,在手机或电脑和esp32连接同一个wifi的情况下,让手机或电脑登录那个ip地址的网站就可 ...

  2. 吃白菜一样用micropython玩esp32(二)—— 点灯大师

    基础点灯 按上一节一般新建好文件夹选好串口后,输入下面的代码 import time #引入时间模块,才可以用延时函数 from machine import Pin #引入引脚模块,才可以控制esp ...

  3. MicroPython开发ESP32入门笔记 -- 蓝牙篇

    文章目录 前言 一. ESP32 和 Micropython 简介 二.蓝牙模组通讯原理简介 三.手机端和ESP32蓝牙通讯 1. ESP32蓝牙呼吸灯代码 2. 手机端准备 总结 前言 博主之前学习 ...

  4. 利用CH340C制作MicroPython ESP8266,ESP32的下载器-改进型

    简 介: 本文给出了利用CH340C芯片制作ESP32,ESP8266下载器的方法,并进行了实测测试. 关键词: ESP32,CH340C,MicroPython,下载器 ▌01 ESP的MicroP ...

  5. 物联网开发笔记(9)- 使用Wokwi仿真MicroPython on ESP32开发板实现温度和湿度检测并使用屏幕显示

    一.测试环境 我们同样使用在Wokwi网站上选择Micropython with ESP32进行仿真,来进行温度和湿度的检测. ESP32官方技术参考手册: https://www.espressif ...

  6. 物联网开发笔记(25)- 使用Micropython开发ESP32开发板之控制LCD1602显示屏

    这一节我们讲解了如何控制LCD1602显示屏,显示两行字. 一.目的 使用MicroPython开发ESP32开发板控制LCD1602显示屏 二.环境 ESP32 + LCD1602显示屏 + Tho ...

  7. 物联网开发笔记(64)- 使用Micropython开发ESP32开发板之控制ILI9341 3.2寸TFT-LCD触摸屏进行LVGL图形化编程:控件显示

    一.目的 这一节我们学习如何使用我们的ESP32开发板来控制ILI9341 3.2寸TFT-LCD触摸屏进行LVGL图形化编程:控件显示. 二.环境 ESP32 + ILI9341 3.2寸TFT-L ...

  8. 物联网开发笔记(77)- 使用Micropython开发ESP32开发板之使用MAX7219驱动控制8x8LED点阵模块(续)

    一.目的 这一节我们继续学习如何使用我们的ESP32开发板控制带MAX7219驱动的8x8LED点阵模.我们使用库来显示,更加方便. 二.环境 ESP32 + MAX7219驱动的8x8LED点阵模块 ...

  9. 物联网开发笔记(84)- 使用Micropython开发ESP32开发板之控制LCD12864液晶屏和AHT10温度传感器

    一.目的 这一节我们学习如何使用我们的ESP32开发板来学习LCD12864液晶屏和AHT10温度传感器的操作.  二.环境 ESP32 + Thonny + LCD12864液晶屏 + AHT10温 ...

  10. 物联网开发笔记(68)- 使用Micropython开发ESP32开发板之使用官方工具esptool烧录

    一.目的 这一节我们学习如何使用我们的ESP32开发板来烧录. 二.环境 ESP32 + esptool + Win10 + python3.10 + 其他工具. ESP32开发板购买地址: http ...

最新文章

  1. 面试题: 难点 已看1
  2. pdf批量添加图章_关于添加图章,过来人有哪些实用经验
  3. HibernateDaoSupport的使用
  4. Hibernate中通过annotaion配置SQLServer的存储过程
  5. 如果你想写自己的Benchmark框架
  6. 如何制作U盘启动菜单
  7. 怎么看服务器连接记录_企业微信怎么查看打卡记录?自己和他人的都可以看
  8. layui搭建的php后台,使用layui框架搭建后台布局
  9. SSM框架的基本概念
  10. 日常运维小知识--1
  11. 微服务架构下的统一身份认证和授权
  12. matlab变道超车_你们对新能源汽车怎么看?
  13. ps矩形框的宽高值如何显示像素单位
  14. 自定义进度条PictureProgressBar
  15. 长难句——考研英语刘晓燕#6
  16. 计算机语言中daly什么意思,计算机存储器 - dalyHu的个人空间 - OSCHINA - 中文开源技术交流社区...
  17. 四川c语言二级成绩查询,求历年四川省计算机二级考试c语言真题.
  18. json rpgmv 加密_加密-如何对JSON对象进行加密哈希处理?
  19. IDEA小游戏数字炸弹
  20. 什么是Web1.0、2.0、3.0?

热门文章

  1. 魅族16 USB连接计算机,在魅族16x中连接电脑的方法分享
  2. Flutter - 图片/视频选择器(支持拍照及录制视频)
  3. puts()函数详解
  4. JavaScript中null、underfined、NaN的辨别以及数据类型的检测
  5. vue导入音乐_vue中添加mp3音频文件的方法
  6. js多重循环遍历渲染
  7. 计算机电子表格课程导入,又到了每年此刻,教你把课程表导入日历
  8. pytorch、torch、torchvision介绍
  9. 阿里云智能编码插件Cosy,提升开发效率杠杠滴!
  10. 软件测试周刊(第81期):能够对抗消极的不是积极,而是专注;能够对抗焦虑的不是安慰,而是具体。