JERRY12138 发表于 2024-4-23 07:00:17

智能按钮

继上一篇wifi签到徽章后
又开始了智能按钮的制作

想法是:走到一个智能设备面前,按钮配对,接着就可以开始互动啦。
之前已经完成了互动端的制作,也测试成功了,但可惜目前互动端联网出现了问题,
只能演示智能按钮的功能状态了。
【智能按钮使用教程】
1.长按进入智能按钮模块
2.短按发送信号1;长按发送信号2
【智能互动终端工作原理】
1.按钮A被按下进入互动模式
2.接收到信号1或2,做出不同的互动反应
测试视频链接:
https://www.bilibili.com/video/BV14x4y167GT/?spm_id_from=333.999.0.0
测试截图:

主要按钮程序代码如下:
if level == 1:
      time.sleep(0.5)
      level = pin.value()
      if level == 1:                            #进入答题环节
          led.value(1)
          time.sleep(1)
          while i < 2:
            level = pin.value()
            if level == 1:
                  time.sleep(0.5)            #判断选“A”/“B”
                  level = pin.value()
                  if level == 1:
                      mqtt.publish(str("testtopic/4"), str("2.00").encode('utf-8'))
                      break
                  if not level == 1:
                      mqtt.publish(str("testtopic/4"), str("1.00").encode('utf-8'))
                      break 完整代码如下:
#程序准备部分(导入各种库文件及定义)
import time
import machine
from umqtt.simple import MQTTClient      #导入 mqtt    库文件
from machine import Pin                  #导入 指示灯库文件
#程序准备部分(导入各种库文件及定义)
import time
import machine
from umqtt.simple import MQTTClient      #导入 mqtt    库文件
from machine import Pin                  #导入 指示灯库文件


led = Pin(15,Pin.OUT)                      #定义指示灯引脚
pin = Pin(4,Pin.IN)                        #定义按钮引脚
level = pin.value()

#联网部分
def do_connect():
    import network
    wlan = network.WLAN(network.STA_IF)
    wlan.active(True)
    if not wlan.isconnected():
      print('connecting to network...')                        #报告联网状态
      wlan.connect('Wifi名称', 'WiFi密码')   #此处填写无线热点的信息
      while not wlan.isconnected():
            pass
    print('network config:', wlan.ifconfig())                  #打印联网信息
do_connect()

import network

#连接mqtt服务器部分

mqtt = MQTTClient("4495363070978111", "链接地址", 1883, "用户名", "密码")   #设置mqtt服务器参数

try:
mqtt.connect()                            #开始连接mqtt服务器
print('MQTT Connected Successful')
except:
print('MQTT Connection Failed')         #报告连接状态

#开始工作部分
i = 1
while i < 2:
level = pin.value()

if level == 1:
      time.sleep(0.5)
      level = pin.value()
      if level == 1:                            #进入答题环节
          led.value(1)
          time.sleep(1)
          while i < 2:
            level = pin.value()
            if level == 1:
                  time.sleep(0.5)            #判断选“A”/“B”
                  level = pin.value()
                  if level == 1:
                      mqtt.publish(str("testtopic/4"), str("2.00").encode('utf-8'))
                      break
                  if not level == 1:
                      mqtt.publish(str("testtopic/4"), str("1.00").encode('utf-8'))
                      break
      if not wlan.isconnected():
          print('connecting to network...')                        #报告联网状态
          wlan.connect('Wifi名称', 'WiFi密码')   #此处填写无线热点的信息
          while not wlan.isconnected():
            pass
      mqtt.publish(str("testtopic/1"), str("学生A入校").encode('utf-8'))    #发送入校信息
      time.sleep(0.5)
      led.value(1)
      time.sleep(0.5)
      led.value(0) #指示灯闪烁报告完成入校流程
else:
      led.value(0)









页: [1]
查看完整版本: 智能按钮