首页 前端知识 【花雕学编程】Arduino JSON 之控制多个智能设备

【花雕学编程】Arduino JSON 之控制多个智能设备

2025-03-03 13:03:19 前端知识 前端哥 685 653 我要收藏

在这里插入图片描述

Arduino是一个开放源码的电子原型平台,它可以让你用简单的硬件和软件来创建各种互动的项目。Arduino的核心是一个微控制器板,它可以通过一系列的引脚来连接各种传感器、执行器、显示器等外部设备。Arduino的编程是基于C/C++语言的,你可以使用Arduino IDE(集成开发环境)来编写、编译和上传代码到Arduino板上。Arduino还有一个丰富的库和社区,你可以利用它们来扩展Arduino的功能和学习Arduino的知识。

Arduino的特点是:
1、开放源码:Arduino的硬件和软件都是开放源码的,你可以自由地修改、复制和分享它们。
2、易用:Arduino的硬件和软件都是为初学者和非专业人士设计的,你可以轻松地上手和使用它们。
3、便宜:Arduino的硬件和软件都是非常经济的,你可以用很低的成本来实现你的想法。
4、多样:Arduino有多种型号和版本,你可以根据你的需要和喜好来选择合适的Arduino板。
5、创新:Arduino可以让你用电子的方式来表达你的创意和想象,你可以用Arduino来制作各种有趣和有用的项目,如机器人、智能家居、艺术装置等。

在这里插入图片描述
Arduino JSON 的全面详细科学解释

  1. Arduino 概述
    Arduino 是一个开源的电子原型平台,基于易用的硬件和软件。它由硬件(各种型号的 Arduino 板)和软件(Arduino IDE)组成,主要用于快速开发交互式项目。

  2. JSON 概述
    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。它基于 JavaScript 的一个子集,但独立于语言,广泛用于 Web 应用和 IoT 设备之间的数据交换。

  3. Arduino JSON 的定义
    Arduino JSON 是指在 Arduino 平台上使用 JSON 格式进行数据交换和处理。通过 Arduino JSON 库,开发者可以轻松地在 Arduino 项目中解析和生成 JSON 数据。Arduino JSON是一个用于处理JSON数据的Arduino库,适用于嵌入式C++项目。它支持JSON的序列化和反序列化,能够在有限的内存环境中高效地解析和生成JSON数据。

  4. 关键特点:
    简单的API:Arduino JSON提供了直观的语法,使开发者能够轻松地处理对象和数组。
    序列化和反序列化:支持将JSON数据转换为字符串(序列化)和将字符串转换为JSON数据(反序列化)。
    输入过滤:可以过滤大型输入,只保留与应用程序相关的字段,从而节省内存。
    流式处理:支持从输入流(如串行端口、以太网连接等)中解析JSON数据。
    缩进输出:可以生成紧凑的JSON文档或美化的JSON文档。
    闪存字符串:可以直接使用存储在程序内存中的字符串(PROGMEM)。
    字符串去重:去重JSON文档中的字符串,减少内存消耗。
    隐式或显式转换:支持两种编码风格,可以选择隐式或显式转换。

  5. 主要功能
    数据解析: 从 JSON 字符串中提取数据。
    数据生成: 将数据转换为 JSON 格式的字符串。
    数据交换: 通过 JSON 格式与外部服务进行数据交换。

  6. 技术实现
    库支持: 使用 Arduino JSON 库(如 ArduinoJson)来解析和生成 JSON 数据。
    数据格式: JSON 数据格式包括对象(用花括号 {} 表示)和数组(用方括号 [] 表示),键值对用冒号 : 分隔。
    数据处理: 在 Arduino 上处理 JSON 数据,执行相应操作。

  7. 应用场景
    物联网(IoT): 与云平台进行数据交换。
    Web 服务: 与 Web API 进行数据交互。
    传感器数据: 处理和传输传感器数据。
    配置文件: 存储和读取配置信息。

  8. 开发工具
    Arduino IDE: 编写和上传代码到 Arduino 板。
    ArduinoJson 库: 提供 JSON 解析和生成的库。
    网络模块: 如 ESP8266、ESP32,用于连接互联网。

  9. 优势与挑战
    优势:
    轻量级: JSON 格式简洁,易于解析和生成。
    跨平台: 独立于语言,适用于多种开发环境。
    灵活性: 支持复杂的数据结构。
    挑战:
    内存限制: Arduino 内存有限,处理大 JSON 数据需优化。
    性能限制: 解析和生成 JSON 数据可能占用较多资源。
    数据安全: 需要确保数据完整性和安全性。

  10. 未来发展方向
    优化性能: 提高 JSON 解析和生成的效率。
    扩展功能: 支持更多的 JSON 特性(如 JSON Schema)。
    增强安全性: 提供数据加密和验证机制。

在这里插入图片描述

主要特点

  1. 数据结构化与可读性
    Arduino JSON 使用 JSON(JavaScript Object Notation)格式来表示和传输数据。JSON 是一种轻量级的数据交换格式,具有良好的结构化特性。当控制多个智能设备时,可以将每个设备的相关信息(如设备 ID、状态、控制指令等)组织成键 - 值对的形式,然后嵌套在 JSON 对象或数组中。这种结构清晰,易于人类阅读和理解,也方便 Arduino 进行解析和处理。
  2. 灵活性和可扩展性
    可以轻松地添加、删除或修改设备信息和控制指令。如果需要控制新的智能设备,只需在 JSON 数据中添加相应的对象;如果要更改某个设备的控制参数,也能方便地修改对应的键值对。这使得系统能够适应不同的设备组合和应用场景,具有很强的扩展性。
  3. 跨平台兼容性
    JSON 是一种通用的数据格式,几乎所有的编程语言和平台都支持 JSON 的解析和生成。因此,Arduino 可以与各种不同类型的设备(如手机、电脑、服务器等)进行通信,只要这些设备能够处理 JSON 数据。这为构建多设备的智能控制系统提供了极大的便利,方便实现不同平台之间的数据交互和协同工作。
  4. 高效的数据传输
    JSON 数据以文本形式表示,相对简洁,传输效率较高。在 Arduino 与智能设备或控制中心之间进行数据传输时,能够减少通信带宽的占用,提高通信速度。同时,由于 JSON 数据易于解析,Arduino 可以快速处理接收到的控制指令,及时响应设备的控制需求。

应用场景

  1. 智能家居系统
    在智能家居场景中,一个 Arduino 控制器可以通过 JSON 数据控制多个智能设备,如智能灯光、智能窗帘、智能空调、智能门锁等。用户可以通过手机应用或语音控制中心发送包含 JSON 指令的控制信号给 Arduino,Arduino 解析这些指令后,分别对各个智能设备进行相应的操作。例如,用户可以发送一个 JSON 指令来同时打开客厅的灯光和调整空调的温度。
  2. 工业自动化生产线
    在工业自动化领域,Arduino 可以作为分布式控制系统的一部分,通过 JSON 数据控制多个工业设备,如机器人手臂、传送带、传感器等。每个设备的状态和控制信息可以通过 JSON 格式进行传输和管理,实现设备之间的协同工作和自动化生产流程的控制。例如,根据生产任务的要求,Arduino 可以发送 JSON 指令来调整机器人手臂的动作和传送带的速度。
  3. 智能农业系统
    在智能农业中,Arduino 可以控制多个农业设备,如灌溉系统、施肥系统、温湿度调节设备等。通过传感器收集土壤湿度、温度、光照等环境数据,并将这些数据以 JSON 格式传输给 Arduino。Arduino 根据预设的规则解析这些数据,并发送 JSON 控制指令来调整相应的农业设备,实现农业生产的自动化和智能化管理。

需要注意的事项

  1. 内存管理
    Arduino 的内存资源相对有限,处理复杂的 JSON 数据可能会导致内存不足。在解析和生成 JSON 数据时,要注意合理分配内存,避免创建过大的 JSON 对象或数组。可以使用动态内存分配函数时要谨慎,防止内存泄漏和碎片化。例如,在使用 Arduino JSON 库时,要根据实际需求选择合适的内存分配方式。
  2. 数据安全性
    在传输和处理 JSON 数据时,要确保数据的安全性。特别是在涉及到用户隐私和设备控制权限的场景中,需要对 JSON 数据进行加密和身份验证。可以使用 SSL/TLS 协议对数据传输进行加密,防止数据被窃取或篡改。同时,要对控制指令进行合法性检查,避免恶意指令对设备造成损害。
  3. 错误处理
    在解析 JSON 数据时,可能会遇到各种错误,如数据格式错误、语法错误等。要在代码中添加完善的错误处理机制,当遇到错误时能够及时捕获并进行相应的处理,如记录错误信息、返回错误码等。同时,要确保系统在出现错误时能够保持稳定,避免因错误导致设备失控或系统崩溃。
  4. 设备兼容性
    不同的智能设备可能有不同的通信协议和数据格式要求。在使用 Arduino JSON 控制多个智能设备时,要确保 Arduino 与各个设备之间的兼容性。需要对设备的通信接口和协议进行适配,将 JSON 数据转换为设备能够识别的格式。同时,要考虑设备的响应时间和稳定性,确保控制指令能够准确无误地传达给设备并得到正确的执行。

在这里插入图片描述

1、简单的 LED 控制

#include <ESP8266WiFi.h>
#include <ArduinoJson.h>

const char* ssid = "your_SSID"; // WiFi SSID
const char* password = "your_PASSWORD"; // WiFi 密码

WiFiServer server(80); // 创建 HTTP 服务器
const int ledPin1 = D1; // LED1 引脚
const int ledPin2 = D2; // LED2 引脚

void setup() {
    Serial.begin(115200);
    pinMode(ledPin1, OUTPUT);
    pinMode(ledPin2, OUTPUT);
    WiFi.begin(ssid, password); // 连接 WiFi
    while (WiFi.status() != WL_CONNECTED) {
        delay(1000);
        Serial.println("Connecting to WiFi...");
    }
    Serial.println("Connected to WiFi");
    server.begin(); // 启动服务器
}

void loop() {
    WiFiClient client = server.available(); // 处理客户端请求
    if (client) {
        while (!client.available()) {
            delay(1);
        }

        String request = client.readStringUntil('\r'); // 读取请求
        client.flush();

        // 控制 LED
        if (request.indexOf("/led1/on") != -1) {
            digitalWrite(ledPin1, HIGH); // 打开 LED1
        } else if (request.indexOf("/led1/off") != -1) {
            digitalWrite(ledPin1, LOW); // 关闭 LED1
        } else if (request.indexOf("/led2/on") != -1) {
            digitalWrite(ledPin2, HIGH); // 打开 LED2
        } else if (request.indexOf("/led2/off") != -1) {
            digitalWrite(ledPin2, LOW); // 关闭 LED2
        }

        // 创建 JSON 响应
        StaticJsonDocument<200> doc;
        doc["led1"] = digitalRead(ledPin1) ? "ON" : "OFF";
        doc["led2"] = digitalRead(ledPin2) ? "ON" : "OFF";

        // 序列化 JSON 对象
        String jsonString;
        serializeJson(doc, jsonString);

        // 返回 HTTP 响应
        client.println("HTTP/1.1 200 OK");
        client.println("Content-Type: application/json");
        client.println("Connection: close");
        client.println();
        client.println(jsonString);

        delay(1);
        client.stop(); // 关闭客户端连接
    }
}

2、控制风扇和 LED

#include <ESP8266WiFi.h>
#include <ArduinoJson.h>

const char* ssid = "your_SSID"; // WiFi SSID
const char* password = "your_PASSWORD"; // WiFi 密码

WiFiServer server(80); // 创建 HTTP 服务器
const int fanPin = D1; // 风扇引脚
const int ledPin = D2; // LED 引脚

void setup() {
    Serial.begin(115200);
    pinMode(fanPin, OUTPUT);
    pinMode(ledPin, OUTPUT);
    WiFi.begin(ssid, password); // 连接 WiFi
    while (WiFi.status() != WL_CONNECTED) {
        delay(1000);
        Serial.println("Connecting to WiFi...");
    }
    Serial.println("Connected to WiFi");
    server.begin(); // 启动服务器
}

void loop() {
    WiFiClient client = server.available(); // 处理客户端请求
    if (client) {
        while (!client.available()) {
            delay(1);
        }

        String request = client.readStringUntil('\r'); // 读取请求
        client.flush();

        // 控制风扇和 LED
        if (request.indexOf("/fan/on") != -1) {
            digitalWrite(fanPin, HIGH); // 打开风扇
        } else if (request.indexOf("/fan/off") != -1) {
            digitalWrite(fanPin, LOW); // 关闭风扇
        } else if (request.indexOf("/led/on") != -1) {
            digitalWrite(ledPin, HIGH); // 打开 LED
        } else if (request.indexOf("/led/off") != -1) {
            digitalWrite(ledPin, LOW); // 关闭 LED
        }

        // 创建 JSON 响应
        StaticJsonDocument<200> doc;
        doc["fan"] = digitalRead(fanPin) ? "ON" : "OFF";
        doc["led"] = digitalRead(ledPin) ? "ON" : "OFF";

        // 序列化 JSON 对象
        String jsonString;
        serializeJson(doc, jsonString);

        // 返回 HTTP 响应
        client.println("HTTP/1.1 200 OK");
        client.println("Content-Type: application/json");
        client.println("Connection: close");
        client.println();
        client.println(jsonString);

        delay(1);
        client.stop(); // 关闭客户端连接
    }
}

3、控制多个设备并返回状态

#include <ESP8266WiFi.h>
#include <ArduinoJson.h>

const char* ssid = "your_SSID"; // WiFi SSID
const char* password = "your_PASSWORD"; // WiFi 密码

WiFiServer server(80); // 创建 HTTP 服务器
const int ledPin = D1; // LED 引脚
const int fanPin = D2; // 风扇引脚
const int heaterPin = D3; // 加热器引脚

void setup() {
    Serial.begin(115200);
    pinMode(ledPin, OUTPUT);
    pinMode(fanPin, OUTPUT);
    pinMode(heaterPin, OUTPUT);
    WiFi.begin(ssid, password); // 连接 WiFi
    while (WiFi.status() != WL_CONNECTED) {
        delay(1000);
        Serial.println("Connecting to WiFi...");
    }
    Serial.println("Connected to WiFi");
    server.begin(); // 启动服务器
}

void loop() {
    WiFiClient client = server.available(); // 处理客户端请求
    if (client) {
        while (!client.available()) {
            delay(1);
        }

        String request = client.readStringUntil('\r'); // 读取请求
        client.flush();

        // 控制设备
        if (request.indexOf("/led/on") != -1) {
            digitalWrite(ledPin, HIGH); // 打开 LED
        } else if (request.indexOf("/led/off") != -1) {
            digitalWrite(ledPin, LOW); // 关闭 LED
        } else if (request.indexOf("/fan/on") != -1) {
            digitalWrite(fanPin, HIGH); // 打开风扇
        } else if (request.indexOf("/fan/off") != -1) {
            digitalWrite(fanPin, LOW); // 关闭风扇
        } else if (request.indexOf("/heater/on") != -1) {
            digitalWrite(heaterPin, HIGH); // 打开加热器
        } else if (request.indexOf("/heater/off") != -1) {
            digitalWrite(heaterPin, LOW); // 关闭加热器
        }

        // 创建 JSON 响应
        StaticJsonDocument<300> doc;
        doc["led"] = digitalRead(ledPin) ? "ON" : "OFF";
        doc["fan"] = digitalRead(fanPin) ? "ON" : "OFF";
        doc["heater"] = digitalRead(heaterPin) ? "ON" : "OFF";

        // 序列化 JSON 对象
        String jsonString;
        serializeJson(doc, jsonString);

        // 返回 HTTP 响应
        client.println("HTTP/1.1 200 OK");
        client.println("Content-Type: application/json");
        client.println("Connection: close");
        client.println();
        client.println(jsonString);

        delay(1);
        client.stop(); // 关闭客户端连接
    }
}

要点解读
控制多个设备:
所有示例展示了如何通过 HTTP 请求来控制多个设备(如 LED、风扇和加热器)。客户端可以发送不同的命令来打开或关闭设备,实现远程控制。
JSON 格式的状态反馈:
每个示例在控制设备后,都会创建一个 JSON 响应,反馈当前设备的状态(如打开或关闭)。这种结构化的反馈方式使得用户能够清晰地了解设备状态。
HTTP 服务器的实现:
使用 ESP8266 创建简单的 HTTP 服务器,允许用户通过浏览器或其他客户端发送请求。服务器处理请求并返回相应的状态信息,适用于 IoT 应用。
代码结构清晰:
示例中的代码结构清晰,易于理解和扩展。用户可以轻松添加更多设备或控制逻辑,适应不同的应用需求。
实时更新状态:
通过 digitalRead() 方法实时获取设备状态,确保反馈信息的准确性。这种实时反馈机制增强了用户交互体验,使得设备控制更加直观。

在这里插入图片描述

4、控制两个设备的开关状态

#include <ArduinoJson.h>
#include <ESP8266WiFi.h>
#include <WebServer.h>

WebServer server(80); // 创建Web服务器对象
bool device1Status = false; // 设备1状态
bool device2Status = false; // 设备2状态

void setup() {
    Serial.begin(115200);
    WiFi.begin("YourSSID", "YourPassword"); // 连接Wi-Fi
    while (WiFi.status() != WL_CONNECTED) {
        delay(1000);
        Serial.println("Connecting to WiFi...");
    }
    Serial.println("Connected to WiFi");

    server.on("/control", HTTP_POST, handleControl); // 设置控制路由
    server.begin(); // 启动服务器
}

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

void handleControl() {
    if (server.hasArg("plain")) {
        StaticJsonDocument<200> doc;
        DeserializationError error = deserializeJson(doc, server.arg("plain")); // 反序列化JSON请求
        if (error) {
            server.send(400, "application/json", "{\"error\":\"Invalid JSON\"}");
            return;
        }

        // 更新设备状态
        const char* device = doc["device"];
        const char* action = doc["action"];
        if (strcmp(device, "device1") == 0) {
            device1Status = (strcmp(action, "on") == 0);
        } else if (strcmp(device, "device2") == 0) {
            device2Status = (strcmp(action, "on") == 0);
        }

        // 创建JSON响应
        doc.clear();
        doc["device1"] = device1Status ? "on" : "off";
        doc["device2"] = device2Status ? "on" : "off";

        String response;
        serializeJson(doc, response); // 序列化JSON文档到字符串
        server.send(200, "application/json", response); // 返回JSON响应
    } else {
        server.send(400, "application/json", "{\"error\":\"No data\"}");
    }
}

要点解读:
Wi-Fi连接与HTTP服务器:使用ESP8266的Wi-Fi功能连接到网络并创建HTTP服务器,处理设备控制请求。
设备状态管理:使用布尔变量device1Status和device2Status分别管理两个设备的状态。
JSON解析与处理:通过POST请求接收JSON数据,解析设备和操作类型并更新状态。
动态响应:返回当前所有设备的状态,以JSON格式反馈给客户端,方便用户了解设备状态。
简洁易懂:代码结构简单,适合初学者理解如何控制多个设备。

5、控制多个设备并查询状态

#include <ArduinoJson.h>
#include <ESP8266WiFi.h>
#include <WebServer.h>

WebServer server(80); // 创建Web服务器对象
bool device1Status = false; // 设备1状态
bool device2Status = false; // 设备2状态

void setup() {
    Serial.begin(115200);
    WiFi.begin("YourSSID", "YourPassword"); // 连接Wi-Fi
    while (WiFi.status() != WL_CONNECTED) {
        delay(1000);
        Serial.println("Connecting to WiFi...");
    }
    Serial.println("Connected to WiFi");

    server.on("/control", HTTP_POST, handleControl); // 设置控制路由
    server.on("/status", HTTP_GET, handleStatus); // 设置状态查询路由
    server.begin(); // 启动服务器
}

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

void handleControl() {
    if (server.hasArg("plain")) {
        StaticJsonDocument<200> doc;
        DeserializationError error = deserializeJson(doc, server.arg("plain")); // 反序列化JSON请求
        if (error) {
            server.send(400, "application/json", "{\"error\":\"Invalid JSON\"}");
            return;
        }

        const char* device = doc["device"];
        const char* action = doc["action"];
        if (strcmp(device, "device1") == 0) {
            device1Status = (strcmp(action, "on") == 0);
        } else if (strcmp(device, "device2") == 0) {
            device2Status = (strcmp(action, "on") == 0);
        }

        // 返回当前状态
        handleStatus(); // 直接调用状态处理
    } else {
        server.send(400, "application/json", "{\"error\":\"No data\"}");
    }
}

void handleStatus() {
    StaticJsonDocument<200> doc;
    doc["device1"] = device1Status ? "on" : "off";
    doc["device2"] = device2Status ? "on" : "off";

    String response;
    serializeJson(doc, response); // 序列化JSON文档到字符串
    server.send(200, "application/json", response); // 返回JSON响应
}

要点解读:
状态查询功能:增加/status路由,允许用户查询所有设备的状态,增强了应用的功能性。
代码重用:在控制设备后直接调用状态处理函数,避免重复代码,简化逻辑。
清晰的JSON响应:通过JSON格式返回设备的开关状态,便于客户端解析和使用。
错误处理机制:有效处理无效请求,确保系统的健壮性和用户体验。
良好的结构:逻辑清晰,适合扩展更多设备或功能,易于维护。

6、控制多个设备并设置亮度

#include <ArduinoJson.h>
#include <ESP8266WiFi.h>
#include <WebServer.h>

WebServer server(80); // 创建Web服务器对象
bool device1Status = false; // 设备1状态
bool device2Status = false; // 设备2状态
int device1Brightness = 0; // 设备1亮度
int device2Brightness = 0; // 设备2亮度

void setup() {
    Serial.begin(115200);
    WiFi.begin("YourSSID", "YourPassword"); // 连接Wi-Fi
    while (WiFi.status() != WL_CONNECTED) {
        delay(1000);
        Serial.println("Connecting to WiFi...");
    }
    Serial.println("Connected to WiFi");

    server.on("/control", HTTP_POST, handleControl); // 设置控制路由
    server.on("/status", HTTP_GET, handleStatus); // 设置状态查询路由
    server.begin(); // 启动服务器
}

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

void handleControl() {
    if (server.hasArg("plain")) {
        StaticJsonDocument<300> doc;
        DeserializationError error = deserializeJson(doc, server.arg("plain")); // 反序列化JSON请求
        if (error) {
            server.send(400, "application/json", "{\"error\":\"Invalid JSON\"}");
            return;
        }

        const char* device = doc["device"];
        const char* action = doc["action"];
        
        if (strcmp(device, "device1") == 0) {
            device1Status = (strcmp(action, "on") == 0);
            if (doc.containsKey("brightness")) {
                device1Brightness = doc["brightness"]; // 设置亮度
            }
        } else if (strcmp(device, "device2") == 0) {
            device2Status = (strcmp(action, "on") == 0);
            if (doc.containsKey("brightness")) {
                device2Brightness = doc["brightness"]; // 设置亮度
            }
        }

        // 返回当前状态
        handleStatus(); // 直接调用状态处理
    } else {
        server.send(400, "application/json", "{\"error\":\"No data\"}");
    }
}

void handleStatus() {
    StaticJsonDocument<300> doc;
    doc["device1"]["status"] = device1Status ? "on" : "off";
    doc["device1"]["brightness"] = device1Brightness;
    doc["device2"]["status"] = device2Status ? "on" : "off";
    doc["device2"]["brightness"] = device2Brightness;

    String response;
    serializeJson(doc, response); // 序列化JSON文档到字符串
    server.send(200, "application/json", response); // 返回JSON响应
}

要点解读:
亮度控制:允许用户通过JSON请求设置设备的亮度,增强了控制功能的灵活性。
多重状态管理:同时管理每个设备的状态和亮度,确保系统能够处理更复杂的请求。
结构化JSON响应:返回的JSON对象结构清晰,包含每个设备的状态和亮度,便于客户端直接使用。
有效的错误处理:对无效请求和缺失数据进行处理,确保系统的健壮性。
良好的扩展性:代码结构清晰,便于后续添加更多设备、参数或功能。

总结
以上示例展示了如何使用Arduino JSON库控制多个智能设备。关键要点包括:
Wi-Fi连接与HTTP服务器:通过ESP8266的Wi-Fi功能连接到网络并创建HTTP服务器,处理设备控制请求。
设备状态与亮度管理:使用变量管理设备的开关状态和亮度,增强了功能的灵活性。
JSON解析与响应:通过POST请求接收JSON数据,解析并响应设备状态,确保数据交换的有效性。
清晰的输出:返回的JSON格式便于客户端解析和使用,提供友好的用户体验。
扩展性强:代码结构简洁明了,适合扩展更多设备或功能,易于维护。

注意,以上案例只是为了拓展思路,仅供参考。它们可能有错误、不适用或者无法编译。您的硬件平台、使用场景和Arduino版本可能影响使用方法的选择。实际编程时,您要根据自己的硬件配置、使用场景和具体需求进行调整,并多次实际测试。您还要正确连接硬件,了解所用传感器和设备的规范和特性。涉及硬件操作的代码,您要在使用前确认引脚和电平等参数的正确性和安全性。

在这里插入图片描述

转载请注明出处或者链接地址:https://www.qianduange.cn//article/22424.html
标签
评论
发布的文章

如何修改电脑mac地址?

2025-03-03 13:03:33

C 数组:深入解析与应用

2025-03-03 13:03:28

大家推荐的文章
会员中心 联系我 留言建议 回顶部
复制成功!