IRremote декодировать сигнал из EEPROM
- Войдите на сайт для отправки комментариев
Втр, 24/12/2019 - 18:09
Всем привет!
Использую библиотеку для ИК ESP8226irremote.
Через IRrecive получаю и декодирую ИК сигнал, который в HEX пишется в EEPROM.
Кроме всего прочего необходимо выводить на OLED инфу в виде декодированного протокола и команды сигнала.
С этим легко справляется функция dump(decode_results *results).
Код:
void dump(decode_results *results) {
if (results->decode_type == UNKNOWN) {
Serial.print("Unknown encoding: ");
} else if (results->decode_type == NEC) {
Serial.print("Decoded NEC: ");}
serialPrintUint64(results->value, 16);
Serial.print(results->bits, DEC);
}
loop () {
if (irrecv.decode(&results)) {
dump(&results);
irrecv.resume();
}
Но она читает сигнал для декодирования с ИК приемника.
Мне же, для отображения, необходимо декодировать ранее записанный сигнал из EEPROM.
И вот что то ни как не могу понять, как этой функции dump(decode_results *results) скормить считанные данные из EEPROM.get(1,value) ??
Да Вам по ходу эта функция и не нужна, если сохраненные данные точно соответствуют формату. Вам value надо в функцию serialPrintUint64 скармливать.
А если надо обязательно в dump, то надо смотреть как Вы сохраняли данные в ЕЕПРОМ, и видеть что такое тип decode_results.
Но скорее всего так должно работать:
тип данных data = 0;// такой же как у value, который Вы сохраняли
EEPROM.get(1, data);
serialPrintUint64(data,16);
..."надо понимать что вы делаете"...
Да все просто вот полный код:
#include <Arduino.h> #include <IRremoteESP8266.h> #include <IRrecv.h> #include <IRutils.h> uint16_t RECV_PIN = 13; IRrecv irrecv(RECV_PIN); decode_results results; void setup() { Serial.begin(115200); irrecv.enableIRIn(); }}
void loop() { IKwrite (); if (irrecv.decode(&results)) {
dump(&results);
Serial.println("DEPRECATED: Please use IRrecvDumpV2.ino instead!");
irrecv.resume(); // Receive the next value
}
}
у Вас код ф-ции dump то один, то другой. Я не понимаю чего Вы хотите.
вот это
voiddump(decode_results *results) {означает, что в функцию Вам надо передать адрес экземпляра типа decode_results. То есть Вам не достаточно просто считать из ЕЕПРОМ value, вам надо создать объект типа decode_results, а его члену value присвоить значение из EEPROM, и тогда передавать адрес этого объекта в функцию. Либо же переписать функцию dump.