[ESP8266/ESP32]智能按钮

2024-4-23 07:00:17 [显示全部楼层]
110浏览
查看: 110|回复: 0

[ESP8266/ESP32] 智能按钮

[复制链接]
继上一篇wifi签到徽章后
又开始了智能按钮的制作
智能按钮图1
想法是:走到一个智能设备面前,按钮配对,接着就可以开始互动啦。
之前已经完成了互动端的制作,也测试成功了,但可惜目前互动端联网出现了问题,
只能演示智能按钮的功能状态了。
【智能按钮使用教程】
1.长按进入智能按钮模块
2.短按发送信号1;长按发送信号2
【智能互动终端工作原理】
1.按钮A被按下进入互动模式
2.接收到信号1或2,做出不同的互动反应
测试视频链接:
https://www.bilibili.com/video/BV14x4y167GT/?spm_id_from=333.999.0.0
测试截图:
智能按钮图2
主要按钮程序代码如下:
  1.   if level == 1:
  2.       time.sleep(0.5)
  3.       level = pin.value()
  4.       if level == 1:                            #进入答题环节
  5.           led.value(1)
  6.           time.sleep(1)
  7.           while i < 2:
  8.               level = pin.value()
  9.               if level == 1:
  10.                   time.sleep(0.5)            #判断选“A”/“B”
  11.                   level = pin.value()
  12.                   if level == 1:
  13.                       mqtt.publish(str("testtopic/4"), str("2.00").encode('utf-8'))
  14.                       break
  15.                   if not level == 1:
  16.                       mqtt.publish(str("testtopic/4"), str("1.00").encode('utf-8'))
  17.                       break
复制代码
完整代码如下:
  1. #程序准备部分(导入各种库文件及定义)
  2. import time
  3. import machine
  4. from umqtt.simple import MQTTClient      #导入 mqtt    库文件
  5. from machine import Pin                  #导入 指示灯  库文件
  6. #程序准备部分(导入各种库文件及定义)
  7. import time
  8. import machine
  9. from umqtt.simple import MQTTClient      #导入 mqtt    库文件
  10. from machine import Pin                  #导入 指示灯  库文件
  11. led = Pin(15,Pin.OUT)                      #定义指示灯引脚
  12. pin = Pin(4,Pin.IN)                          #定义按钮引脚
  13. level = pin.value()
  14. #联网部分
  15. def do_connect():
  16.     import network
  17.     wlan = network.WLAN(network.STA_IF)
  18.     wlan.active(True)
  19.     if not wlan.isconnected():
  20.         print('connecting to network...')                        #报告联网状态
  21.         wlan.connect('Wifi名称', 'WiFi密码')   #此处填写无线热点的信息
  22.         while not wlan.isconnected():
  23.             pass
  24.     print('network config:', wlan.ifconfig())                    #打印联网信息
  25. do_connect()
  26. import network  
  27.   
  28. #连接mqtt服务器部分
  29. mqtt = MQTTClient("4495363070978111", "链接地址", 1883, "用户名", "密码")   #设置mqtt服务器参数
  30. try:
  31.   mqtt.connect()                            #开始连接mqtt服务器
  32.   print('MQTT Connected Successful')
  33. except:
  34.   print('MQTT Connection Failed')           #报告连接状态
  35. #开始工作部分
  36. i = 1
  37. while i < 2:
  38.   level = pin.value()
  39.   if level == 1:
  40.       time.sleep(0.5)
  41.       level = pin.value()
  42.       if level == 1:                            #进入答题环节
  43.           led.value(1)
  44.           time.sleep(1)
  45.           while i < 2:
  46.               level = pin.value()
  47.               if level == 1:
  48.                   time.sleep(0.5)            #判断选“A”/“B”
  49.                   level = pin.value()
  50.                   if level == 1:
  51.                       mqtt.publish(str("testtopic/4"), str("2.00").encode('utf-8'))
  52.                       break
  53.                   if not level == 1:
  54.                       mqtt.publish(str("testtopic/4"), str("1.00").encode('utf-8'))
  55.                       break
  56.       if not wlan.isconnected():
  57.           print('connecting to network...')                        #报告联网状态
  58.           wlan.connect('Wifi名称', 'WiFi密码')   #此处填写无线热点的信息
  59.           while not wlan.isconnected():
  60.               pass
  61.       mqtt.publish(str("testtopic/1"), str("学生A入校").encode('utf-8'))    #发送入校信息
  62.       time.sleep(0.5)
  63.       led.value(1)
  64.       time.sleep(0.5)
  65.       led.value(0) #指示灯闪烁报告完成入校流程
  66.   else:
  67.       led.value(0)
复制代码


您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
关于楼主

楼主的其它帖子

上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail