上传文件至 红外
This commit is contained in:
51
红外/irre.h
Normal file
51
红外/irre.h
Normal file
@@ -0,0 +1,51 @@
|
||||
#ifndef IRRE_H
|
||||
#define IRRE_H
|
||||
|
||||
#include <Arduino.h>
|
||||
#include <SD.h>
|
||||
#include <IRremote.h>
|
||||
|
||||
#pragma pack(push, 1)
|
||||
typedef struct {
|
||||
uint32_t protocol;
|
||||
uint32_t bits;
|
||||
struct {
|
||||
uint8_t year;
|
||||
uint8_t month;
|
||||
uint8_t day;
|
||||
uint8_t hour;
|
||||
uint8_t minute;
|
||||
uint8_t second;
|
||||
} timestamp;
|
||||
} BinHeader;
|
||||
#pragma pack(pop)
|
||||
|
||||
class IRController {
|
||||
public:
|
||||
static bool initializeSD(uint8_t csPin = 5);
|
||||
static bool loadConfig(const char* path, BinHeader* header, uint16_t* rawData);
|
||||
static void sendIRSignal(uint16_t* rawData, size_t length, uint8_t irPin = 4);
|
||||
};
|
||||
|
||||
bool IRController::initializeSD(uint8_t csPin) {
|
||||
if(!SD.begin(csPin)) return false;
|
||||
return SD.exists("/ir_config.bin");
|
||||
}
|
||||
|
||||
bool IRController::loadConfig(const char* path, BinHeader* header, uint16_t* rawData) {
|
||||
File file = SD.open(path);
|
||||
if(!file) return false;
|
||||
|
||||
file.read((byte*)header, sizeof(BinHeader));
|
||||
size_t dataSize = (header->bits + 15) / 16 * 2;
|
||||
file.read((byte*)rawData, dataSize);
|
||||
file.close();
|
||||
return true;
|
||||
}
|
||||
|
||||
void IRController::sendIRSignal(uint16_t* rawData, size_t length, uint8_t irPin) {
|
||||
IrSender.sendRaw(rawData, length, 38, false);
|
||||
delay(100);
|
||||
}
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user