ESP32-C3实现网页控制LED的亮灭(局域网实现控制)

news2024/10/11 3:19:19

源代码

#include <WiFi.h>
#include <WebServer.h>

// Wi-Fi 设置
const char* ssid = "ESP32-Access-Point";
const char* password = "123456789";

// 创建 WebServer 实例
WebServer server(80);

// 定义 LED 管脚
const int ledPin = 2;

void setup() {
  // 初始化 LED 管脚
  pinMode(ledPin, OUTPUT);

  // 初始化串口
  Serial.begin(115200);

  // 设置 Wi-Fi 模式为接入点
  WiFi.softAP(ssid, password);

  // 打印接入点 IP 地址
  Serial.println();
  Serial.print("IP address: ");
  Serial.println(WiFi.softAPIP());

  // 设置服务器路由
  server.on("/", handleRoot);  // 主页
  server.on("/ledon", handleLedOn);  // LED 亮
  server.on("/ledoff", handleLedOff);  // LED 灭
  server.begin();  // 启动服务器
}

void loop() {
  server.handleClient();  // 处理客户端请求
}

void handleRoot() {
  String html = "<html><body>"
                "<h1>ESP32 LED Control</h1>"
                "<form action=\"/ledon\" method=\"POST\"><input type=\"submit\" value=\"Turn ON\"></form>"
                "<form action=\"/ledoff\" method=\"POST\"><input type=\"submit\" value=\"Turn OFF\"></form>"
                "</body></html>";
  server.send(200, "text/html", html);
}

void handleLedOn() {
  digitalWrite(ledPin, HIGH);
  server.sendHeader("Location", "/");
  server.send(303);
}

void handleLedOff() {
  digitalWrite(ledPin, LOW);
  server.sendHeader("Location", "/");
  server.send(303);
}

解释

  1. 包含必要的库

    • #include <WiFi.h>:包含用于 ESP32 Wi-Fi 功能的库。
    • #include <WebServer.h>:包含用于创建网页服务器的库。
  2. Wi-Fi 设置

    • const char* ssid = "ESP32-Access-Point";:定义接入点的 SSID(网络名称)。
    • const char* password = "123456789";:定义接入点的密码。
  3. 创建 WebServer 实例

    • WebServer server(80);:创建一个 WebServer 实例,监听默认的 HTTP 端口 80。
  4. 定义 LED 管脚

    • const int ledPin = 2;:定义连接到 LED 的 GPIO 管脚号(在 ESP32 上为 2)。
  5. setup() 函数

    • 初始化 LED 管脚为输出模式。
    • 初始化串口通信,波特率为 115200。
    • 将 Wi-Fi 设置为接入点模式,并提供 SSID 和密码。
    • 打印接入点的 IP 地址,客户端需要这个地址来连接到服务器。
    • 设置服务器路由:
      • /:主页,调用 handleRoot 函数。
      • /ledon:处理 LED 点亮请求,调用 handleLedOn 函数。
      • /ledoff:处理 LED 熄灭请求,调用 handleLedOff 函数。
    • 启动服务器。
  6. loop() 函数

    • server.handleClient();:持续监听并处理来自客户端的请求。
  7. handleRoot() 函数

    • 发送一个 HTML 页面,包含两个表单,分别用于控制 LED 的开关。
  8. handleLedOn() 函数

    • 将 LED 管脚设置为高电平(点亮 LED)。
    • 发送一个 303 重定向响应,将客户端重定向回主页。
  9. handleLedOff() 函数

    • 将 LED 管脚设置为低电平(熄灭 LED)。
    • 发送一个 303 重定向响应,将客户端重定向回主页。

具体函数解释

server.on("/", handleRoot);   事件监听器方法

  • server.sendHeader("Location", "/");

    • server.sendHeader 是一个方法,用于发送HTTP响应头。
    • "Location" 是响应头的名称,它告诉客户端(通常是浏览器)资源现在位于一个新的URL。
    • "/" 是响应头的值,表示新的URL是服务器上的根目录。
    • 这行代码的作用是发送一个HTTP重定向响应头,告诉客户端应该导航到服务器的根目录。
  • server.send(303);

    • server.send 是一个方法,用于发送HTTP响应状态码和可选的响应体。
    • 303 是HTTP状态码,代表“See Other”,通常用于重定向响应,表示客户端应该通过GET方法在另一个URL上检索资源。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2203941.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

穷人就不该乱买电车

文 | AUTO芯球 作者 | 雷慢 买车最怕的是什么你知道吗&#xff1f; 是没钱的穷人还要去买豪华电车&#xff0c; 比买电车更可怕的是什么你知道吗&#xff1f; 是买了电车没两年又卖了&#xff01; 真不是讲鬼故事&#xff0c; 新能源车尤其是纯电车&#xff0c;一年打五折…

压缩包格式详解:RAR、ZIP、7z等格式的优劣与使用场景

随着数字信息的迅猛增长&#xff0c;文件压缩已成为日常生活和工作中的必要操作。通过压缩技术&#xff0c;文件可以被减小体积&#xff0c;便于传输和存储。 目前&#xff0c;市面上常见的压缩格式有 RAR、ZIP 和 7z 等&#xff0c;不同的压缩格式在效率、兼容性和功能方面各…

FFmpeg 简介及其下载安装步骤

目录 一、FFmpeg 简介 二、FFmpeg 安装步骤 2.1 打开官网 2.2 选择FFmpeg系统版本 2.3 下载FFmpeg压缩包 2.4 将下载好的压缩包进行解压 2.5 设置环境变量 2.5.1 在搜索栏中搜索【环境变量】&#xff0c;然后单击将其打开 2.5.2 找到系统变量中的【Path】&#xff0c;点…

实景三维赋能地下管线综合智管应用

在现代城市基础设施管理中&#xff0c;地下管线作为城市的生命线&#xff0c;其安全、高效的管理至关重要。随着实景三维技术的快速发展&#xff0c;地下管线管理迎来了新的发展机遇。本文将探讨实景三维技术如何赋能地下管线的综合智管应用。 一、地下管线管理面临的挑战 地…

Qt_软件添加版本信息

文章内容: 给生成的软件添加软件的版权等信息 #include <windows.h> //中文的话增加下面这一行 #pragma code_page(65001)VS_VERSION_INFO VERSIONINFO

java遍历数组填充排序

java数组 遍历数组 for循环 遍历二维数组 小案例 // 定义一个包名为nb package nb;// 定义一个名为ErWei的公共类 public class ErWei {// 主方法&#xff0c;程序的入口点public static void main(String[] args) {// 声明并初始化一个二维数组a&#xff0c;其中包含三个一…

jdbc连接数据库时 java.lang.RuntimeException错误解决

url中加入 useSSLfalse SSL(Secure Sockets Layer)&#xff0c;安全套接字协议。 在连接mysql时&#xff0c; 如果MySQL的版本为5.7以上时&#xff0c;必须加上useSSLfalse&#xff0c;直接通过用户账号和密码进行连接MySQL数据库&#xff1b;当MySQL的版本是5.7以下则不进行…

干部管理系统:全面提升干部管理效能

数字化浪潮下&#xff0c;干部管理系统作为管理利器&#xff0c;日益凸显其核心价值。该系统全面实现干部信息的数据化&#xff0c;涵盖从基础档案到教育、工作、培训及考核等全方位细节&#xff0c;信息详尽且条理清晰。这不仅极大提升了干部信息查询与更新的效率&#xff0c;…

中航资本:这个“舰队”猛攻!发生了什么?

今日早盘&#xff0c;A股商场动摇较大&#xff0c;但经过一段下挫之后&#xff0c;很快就被多头拉起。而从盘面来看&#xff0c;以代码601最初的大盘蓝筹股&#xff08;亦是高股息板块&#xff09;今日体现非常突发&#xff0c;盈利ETF大多涨幅在4%左右水平。那么&#xff0c;毕…

MR30系列IO——工业自动化的智慧纽带

一、引言 在工业自动化技术的广阔天地中&#xff0c;MR30系列IO模块、数字量模块以及模拟量模块构成了控制系统的核心基石。它们被广泛应用于可编程逻辑控制器&#xff08;PLC&#xff09;、分布式控制系统&#xff08;DCS&#xff09;等多种自动化系统中&#xff0c;为工业生…

安卓13屏蔽蓝牙匹配对话框 自动匹配 android13屏蔽蓝牙匹配对话框 自动匹配

总纲 android13 rom 开发总纲说明 文章目录 1.前言2.问题分析3.代码分析4.代码修改5.编译6.彩蛋1.前言 设置 蓝牙连接的时候,会有匹配对话框提示。我们来实现自动配对。 2.问题分析 这里我们是通过点击操作来实现功能的,所以我们思路可以是自动点击功能的实现。 3.代码分…

笔记||VUE3

侦听器 | Vue.js (vuejs.org) 模板引用 | Vue.js (vuejs.org)

Java 对接485协议数据基于jSerialComm库

Java 对接 485 协议数据的科普 一&#xff1a;引言 485协议&#xff0c;通常指的是RS-485&#xff0c;它是一种用于长距离通信的标准电气接入规范。由于其优越的抗干扰能力和较长的通信距离&#xff0c;RS-485在工业自动化、楼宇控制等领域得到了广泛应用。本篇文章将介绍如何…

基于Springboot+vue的漫画网站

一、系统架构 前端&#xff1a;vue | element-ui | html 后端&#xff1a;springboot | mybatis-plus 环境&#xff1a;jdk1.8 | mysql | maven | nodejs 二、代码及数据库 三、功能介绍 01. web端-首页1 02. web端-首页2 03. web端-登录 04. web端-注册 05. w…

免费分享:中国县级居民点

数据详情 1:100万中国县级居民点矢量数据 数据属性 数据名称&#xff1a;1:100万中国县级居民点矢量数据 数据时间&#xff1a;2010年之前 空间位置&#xff1a;全国 数据格式&#xff1a;Shp矢量 空间分辨率&#xff1a;- 坐标系&#xff1a;WGS1984 下载方法 打开数字…

5款人声分离免费软件分享,从入门到精通,伴奏提取分分钟拿捏!

人声分离通常是音乐制作、混音和卡拉OK中常用的重要技术之一。它的核心是将乐器伴奏从原始音轨中分离出来&#xff0c;使得用户可以单独处理或重混音频&#xff0c;创造出清晰干净的伴奏轨道。若缺乏强大的音频剪辑软件或专业人声分离工具&#xff0c;这一过程往往会比较困难。…

npm ERR! PhantomJS not found on PATH

安装phantomj时发生报错 old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js. npm ERR! code 1 npm ERR! path /va…

2024年【四川省安全员B证】新版试题及四川省安全员B证试题及解析

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2024年【四川省安全员B证】新版试题及四川省安全员B证试题及解析&#xff0c;包含四川省安全员B证新版试题答案和解析及四川省安全员B证试题及解析练习。安全生产模拟考试一点通结合国家四川省安全员B证考试最新大纲及…

[linux 驱动]网络设备驱动详解

目录 1 描述 2 结构体 2.1 net_device 2.2 sk_buff 2.3 net_device_ops 2.4 ethtool_ops 3 相关函数 3.1 网络协议接口层 3.1.1 dev_queue_xmit 3.1.2 netif_rx 3.1.3 alloc_skb 3.1.4 kfree_skb 3.1.5 skb_put 3.1.6 skb_push 3.1.7 skb_reserve 3.2 网络设备驱…

Meilisearch 和 Ollama 实现文本向量搜索

Meilisearch 是一个开源、快速、简洁的全文搜索引擎&#xff0c;专为构建高性能、实时的搜索功能而设计。其主要特点如下&#xff1a; 极速搜索&#xff1a;Meilisearch 使用反向索引来加速搜索查询&#xff0c;因此能够在海量数据中提供毫秒级的响应时间&#xff0c;尤其适合实…