核心上限

This commit is contained in:
2025-09-20 16:57:16 +08:00
parent 71e8bd7532
commit 991c673630
7 changed files with 1456 additions and 47 deletions

83
ir_control.h Normal file
View File

@@ -0,0 +1,83 @@
#ifndef IR_CONTROL_H
#define IR_CONTROL_H
#include <Arduino.h>
// 红外信号结构体
struct IRSignal {
unsigned int* data; // 原始信号数据数组(微秒)
int length; // 信号长度
bool isValid; // 信号是否有效
};
// 配置参数
#define IR_RECEIVE_PIN 18
#define IR_SEND_PIN 19
#define MAX_SIGNAL_LENGTH 1000
#define RECEIVE_TIMEOUT_US 1000000 // 1秒接收超时
#define SIGNAL_END_TIMEOUT_US 50000 // 50ms信号结束判断
/**
* 初始化红外控制模块
* 设置引脚模式和初始状态
*/
void initIRControl();
/**
* 检查是否有红外信号开始
* @return bool 是否检测到红外信号开始
* - true: 检测到信号开始(低电平)
* - false: 没有检测到信号
*/
bool checkIRSignalStart();
/**
* 接收红外信号
* @return IRSignal 包含原始红外信号数据的结构体
* - data: 指向信号数据数组的指针
* - length: 信号数据长度
* - isValid: 是否成功接收到有效信号
*
* 注意:调用者需要在使用完毕后调用 freeIRSignal() 释放内存
*/
IRSignal receiveIRSignal();
/**
* 发送红外信号
* @param signal 要发送的红外信号结构体
* @return bool 发送是否成功
* - true: 发送成功
* - false: 发送失败(信号无效或为空)
*/
bool sendIRSignal(const IRSignal& signal);
/**
* 释放IRSignal结构体中分配的内存
* @param signal 要释放的信号结构体
*/
void freeIRSignal(IRSignal& signal);
/**
* 复制红外信号
* @param source 源信号
* @return IRSignal 复制的信号
*
* 注意:调用者需要在使用完毕后调用 freeIRSignal() 释放内存
*/
IRSignal copyIRSignal(const IRSignal& source);
/**
* 打印红外信号数据(用于调试)
* @param signal 要打印的信号
* @param maxPrint 最大打印数量0表示打印全部
*/
void printIRSignal(const IRSignal& signal, int maxPrint = 20);
/**
* 验证红外信号是否有效
* @param signal 要验证的信号
* @return bool 信号是否有效
*/
bool isValidIRSignal(const IRSignal& signal);
#endif // IR_CONTROL_H