之前写项目正好卡在这个地方,结果发现了这个官方例程
顺带就写篇博客

虽说是按键切换模式,但官方例程并未使用中断

代码


// 演示如何在wifi和蓝牙模式之间切换,或者同时使用
// 按键绑定在GPIO 0 和 GND之间,模式也随之按下而切换#include "WiFi.h"
#define STA_SSID "wifi名称"
#define STA_PASS "wifi密码"
#define AP_SSID  "Esp32"enum { STEP_BTON, STEP_BTOFF, STEP_STA, STEP_AP, STEP_AP_STA, STEP_OFF, STEP_BT_STA, STEP_END };  //枚举,即别名
//没有指定值的枚举元素,其值为前一元素加 1。也就说 STEP_BTON 的值为 0,STEP_BTOFF 的值为 1...
void setup() {Serial.begin(115200);pinMode(12, INPUT_PULLUP);                    //引脚12,输入模式WiFi.onEvent(WiFiEvent);Serial.print("ESP32 SDK: ");Serial.println(ESP.getSdkVersion());Serial.println("按下按键切换至下一模式");
}void loop() {static uint8_t lastPinState = 1;      //unsigned int ,esp32引脚默认电平为高uint8_t pinState = digitalRead(12);    //unsigned charif(!pinState && lastPinState){       //如果本次引脚电平不等于前次onButton();}lastPinState = pinState;
}void onButton(){static uint32_t step = STEP_BTON;switch(step){case STEP_BTON://BT onlySerial.println("** 启动蓝牙");btStart();break;case STEP_BTOFF://ALL OffSerial.println("** 关闭蓝牙");btStop();break;case STEP_STA://STA OnlySerial.println("** 启动wifi站点模式");WiFi.begin(STA_SSID, STA_PASS);       //连接wifibreak;case STEP_AP://AP OnlySerial.println("** 关闭wifi站点模式");WiFi.mode(WIFI_AP);Serial.println("** 开启AP模式");WiFi.softAP(AP_SSID);                 //初始化AP,wifi名字为AP_SSIDbreak;case STEP_AP_STA://AP+STASerial.println("** 启动wifi站点模式");WiFi.begin(STA_SSID, STA_PASS);break;case STEP_OFF://All OffSerial.println("** wifi关闭");WiFi.mode(WIFI_OFF);break;case STEP_BT_STA://BT+STASerial.println("** 启动 wifi站点模式+蓝牙");WiFi.begin(STA_SSID, STA_PASS);btStart();break;case STEP_END://All OffSerial.println("** 关闭 wifi站点模式+蓝牙");WiFi.mode(WIFI_OFF);btStop();break;default:break;}if(step == STEP_END){step = STEP_BTON;} else {step++;}//抖动消除delay(100);
}void WiFiEvent(WiFiEvent_t event){switch(event) {case SYSTEM_EVENT_AP_START:Serial.println("AP Started");WiFi.softAPsetHostname(AP_SSID);break;case SYSTEM_EVENT_AP_STOP:Serial.println("AP Stopped");break;case SYSTEM_EVENT_STA_START:Serial.println("STA Started");WiFi.setHostname(AP_SSID);break;case SYSTEM_EVENT_STA_CONNECTED:Serial.println("STA Connected");WiFi.enableIpV6();break;case SYSTEM_EVENT_AP_STA_GOT_IP6:Serial.print("STA IPv6: ");Serial.println(WiFi.localIPv6());break;case SYSTEM_EVENT_STA_GOT_IP:Serial.print("STA IPv4: ");Serial.println(WiFi.localIP());break;case SYSTEM_EVENT_STA_DISCONNECTED:Serial.println("STA Disconnected");break;case SYSTEM_EVENT_STA_STOP:Serial.println("STA Stopped");break;default:break;}
}

结果:

使用Arduino开发ESP32(二十一):WiFiBlueToothSwitch例程,按键切换esp32为蓝牙或wifi模式相关推荐

  1. Arduino开发(二)_基于Arduino UNO开发板的RGB灯光控制方法

    Arduino开发(二)_基于Arduino UNO开发板的RGB灯光控制方法 首先,我们来看一下Arduino UNO开发板的具体引脚排列,如下图所示, 再了解一下三色RGB LED模块,如下图所示 ...

  2. SQL Server数据库开发的二十一条军规

    如果你正在负责一个基于SQL Server的项目,或者你刚刚接触SQL Server,你都有可能要面临一些数据库性能的问题,这篇文章会为你提供一些有用的指导(其中大多数也可以用于其它的DBMS). 在 ...

  3. 【ESP8266之Arduino开发】二、实战YeeLink平台远程控制小灯

    硬件准备:200欧电阻,LED以及NodeMCU 虽然模块仍然使用nodemcu,但是使用Arduino开发. 不再使用Lua及其固件! arduino IDE 直接下载程序进ESP8266,相当于下 ...

  4. 仿酷狗音乐播放器开发日志二十一 开发动态调色板控件(附源码)

    转载请说明原出处,谢谢~~ 上一篇仿酷狗日志结束后,整个换肤功能就只剩下调色板功能没有做了,我本以为会很简单,但是研究了酷狗的调色板功能后发现不是那么简单的事情.首先看一下酷狗的调色板的样子: 我原本 ...

  5. 仿酷狗音乐播放器开发日志二十一 开发动态调色板控件(附源代码)

    转载请说明原出处,谢谢~~ 上一篇仿酷狗日志结束后,整个换肤功能就仅仅剩下调色板功能没有做了.我本以为会非常easy.可是研究了酷狗的调色板功能后发现不是那么简单的事情.首先看一下酷狗的调色板的样子: ...

  6. 【Visual C++】游戏开发笔记二十一 游戏基础物理建模(三) 摩擦力系统模拟

    本系列文章由zhmxy555(毛星云)编写,转载请注明出处. http://blog.csdn.net/zhmxy555/article/details/7555785 作者:毛星云    邮箱: h ...

  7. NXP UWB NCJ29D5开发(二)BlinkyLed例程

    路径为UWB\NCJ29D5\NCJ29D5_CAS_Examples_v1.4\onic\BlinkyLed\toolsupport\keil 例程怎么来的可以看看上一篇NXP UWB NCJ29D ...

  8. ESP32/ESP8266安装arduino开发板失败的方法(附合宙esp32用blinker固件连接小爱同学提示“要操作的设备好像出问题了等一会再试吧”的解决方法

    如果要挂梯子连GitHub的链接下就太麻烦了 我们直接用中文论坛老哥传好的包 esp32 https://www.arduino.cn/thread-81194-1-1.html esp8266 如果 ...

  9. 【Visual C++】游戏开发笔记二十一 游戏基础物理建模 三 摩擦力系统模拟

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 本系列文 ...

最新文章

  1. 牛X,试用了下 GitHub 上 2 万 Star 的第一抢票神器,3 秒钟抢到!
  2. 零基础入门学习Python(13)-字符串
  3. 数据中心业界需要新的设计标准
  4. Android 创建文件,删除文件,加载本地txt文件,string转txt文件,创建文件夹,读取文件夹,open failed: ENOENT
  5. C#LeetCode刷题之#119-杨辉三角 II(Pascal‘s Triangle II)
  6. Oracle、DB2、SQLSERVER、Mysql、Access分页SQL语句梳理
  7. Server(Iocp)的那些烦恼
  8. apache加nginx加Php,Apache/Nginx为PHP设置、添加$_SERVER服务器环境变量
  9. Altium Designed导出Gerber,Gerber文件所对应的层
  10. 萤火虫小程序_漫展情报蛋趣携福利来萤火虫IDO漫展咯
  11. 护眼html颜色,在电脑中设置护眼颜色、更换网页背景色、一键护眼
  12. 计算机学院部长换届答辩,未来可期,各自精彩——记计算机科学学院2020年两委换届竞职答辩活动...
  13. 在Unity中实现基于粒子的水模拟(三:混合屏幕)
  14. 案例:淘宝用户行为数据分析(SQL实现)
  15. cufflinks一行代码搞定plotly
  16. Linux中DNS服务器地址查询命令nslookup使用教程
  17. SpringBoot+MybatisPlus无实体类,查询数据库
  18. php爬虫程序是什么,php爬虫怎么运行
  19. 【一周时讯技评】安卓平台挖矿蠕虫ADB.Miner勃然而兴,中韩两国成为重灾区|Apple应用下载网站被发现传播挖矿代码
  20. macOS Big Sur:您会喜欢的事情

热门文章

  1. 移动常见问题--H5标签之浏览器兼容性、JS之浏览器兼容性、CSS3之浏览器兼容性、移动端动画、click300ms延迟、单行和多行文字溢出省略、水平居中和垂直居中
  2. 手机的imei号的获取
  3. WORD表格合并单元格并居中对齐
  4. 快来抄吧:Project Plan Template 项目计划模板
  5. java对象转xml 高性能_xml与java对象的快速互转
  6. word2003,使用修订模式
  7. 智能家居之红外遥控---手机万能红外遥控器
  8. HTML如何实现多个空格
  9. 名帖337 张旭 草书《古诗四帖》
  10. 华为云BI,真正的一站式BI解决方案