Having tough time grasping IR codes read

Attempting to read IR codes my Fujitsu AR-RCF1U remote uses for a range of temperatures, different air and fan settings.

Using File->Exanples->IRremote->ReceiveDemo

/*
 * ReceiveDemo.cpp
 *
 * Demonstrates receiving IR codes with the IRremote library and the use of the Arduino tone() function with this library.
 * If debug button is pressed (pin connected to ground) a long output is generated.
 *
 *  This file is part of Arduino-IRremote https://github.com/Arduino-IRremote/Arduino-IRremote.
 *
 ************************************************************************************
 * MIT License
 *
 * Copyright (c) 2020-2022 Armin Joachimsmeyer
 *
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 * of this software and associated documentation files (the "Software"), to deal
 * in the Software without restriction, including without limitation the rights
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 * copies of the Software, and to permit persons to whom the Software is furnished
 * to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be included in all
 * copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
 * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
 * PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
 * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
 * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE
 * OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 *
 ************************************************************************************
 */

#include <Arduino.h>

/*
 * Specify which protocol(s) should be used for decoding.
 * If no protocol is defined, all protocols (except Bang&Olufsen) are active.
 * This must be done before the #include <IRremote.hpp>
 */
//#define DECODE_LG
//#define DECODE_NEC
//#define DECODE_DISTANCE
// etc. see IRremote.hpp
//

#if !defined(RAW_BUFFER_LENGTH)
#  if RAMEND <= 0x4FF || (defined(RAMSIZE) && RAMSIZE < 0x4FF)
#define RAW_BUFFER_LENGTH  130  // 750 (600 if we have only 2k RAM) is the value for air condition remotes. Default is 112 if DECODE_MAGIQUEST is enabled, otherwise 100.
#define EXCLUDE_EXOTIC_PROTOCOLS // saves around 650 bytes program memory if all other protocols are active
#define EXCLUDE_UNIVERSAL_PROTOCOLS // Saves up to 1000 bytes program memory.
#  elif RAMEND <= 0x8FF || (defined(RAMSIZE) && RAMSIZE < 0x8FF)
#define RAW_BUFFER_LENGTH  600  // 750 (600 if we have only 2k RAM) is the value for air condition remotes. Default is 112 if DECODE_MAGIQUEST is enabled, otherwise 100.
#  else
#define RAW_BUFFER_LENGTH  750  // 750 (600 if we have only 2k RAM) is the value for air condition remotes. Default is 112 if DECODE_MAGIQUEST is enabled, otherwise 100.
#  endif
#endif

//#define NO_LED_FEEDBACK_CODE // saves 92 bytes program memory
//#define EXCLUDE_UNIVERSAL_PROTOCOLS // Saves up to 1000 bytes program memory.
//#define EXCLUDE_EXOTIC_PROTOCOLS // saves around 650 bytes program memory if all other protocols are active

// MARK_EXCESS_MICROS is subtracted from all marks and added to all spaces before decoding,
// to compensate for the signal forming of different IR receiver modules.
//#define MARK_EXCESS_MICROS    20 // 20 is recommended for the cheap VS1838 modules

//#define RECORD_GAP_MICROS 12000 // Activate it for some LG air conditioner protocols

//#define DEBUG // Activate this for lots of lovely debug output from the decoders.

#include "PinDefinitionsAndMore.h" // Define macros for input and output pin etc.
#include <IRremote.hpp>

#if defined(APPLICATION_PIN)
#define DEBUG_BUTTON_PIN    APPLICATION_PIN // if low, print timing for each received data set
#else
#define DEBUG_BUTTON_PIN   6
#endif

void setup() {
#if FLASHEND >= 0x3FFF  // For 16k flash or more, like ATtiny1604. Code does not fit in program memory of ATtiny85 etc.
    pinMode(DEBUG_BUTTON_PIN, INPUT_PULLUP);
#endif

    Serial.begin(115200);
#if defined(__AVR_ATmega32U4__) || defined(SERIAL_PORT_USBVIRTUAL) || defined(SERIAL_USB) /*stm32duino*/|| defined(USBCON) /*STM32_stm32*/|| defined(SERIALUSB_PID) || defined(ARDUINO_attiny3217)
    delay(4000); // To be able to connect Serial monitor after reset or power up and before first print out. Do not wait for an attached Serial Monitor!
#endif
// Just to know which program is running on my Arduino
    Serial.println(F("START " __FILE__ " from " __DATE__ "\r\nUsing library version " VERSION_IRREMOTE));

// In case the interrupt driver crashes on setup, give a clue
// to the user what's going on.
    Serial.println(F("Enabling IRin..."));

    // Start the receiver and if not 3. parameter specified, take LED_BUILTIN pin from the internal boards definition as default feedback LED
    IrReceiver.begin(IR_RECEIVE_PIN, ENABLE_LED_FEEDBACK);

    Serial.print(F("Ready to receive IR signals of protocols: "));
    printActiveIRProtocols(&Serial);
    Serial.println(F("at pin " STR(IR_RECEIVE_PIN)));

#if FLASHEND >= 0x3FFF  // For 16k flash or more, like ATtiny1604. Code does not fit in program memory of ATtiny85 etc.
    Serial.print(F("Debug button pin is "));
    Serial.println(DEBUG_BUTTON_PIN);

    // infos for receive
    Serial.print(RECORD_GAP_MICROS);
    Serial.println(F(" us is the (minimum) gap, after which the start of a new IR packet is assumed"));
    Serial.print(MARK_EXCESS_MICROS);
    Serial.println(F(" us are subtracted from all marks and added to all spaces for decoding"));
#endif

}

void loop() {
    /*
     * Check if received data is available and if yes, try to decode it.
     * Decoded result is in the IrReceiver.decodedIRData structure.
     *
     * E.g. command is in IrReceiver.decodedIRData.command
     * address is in command is in IrReceiver.decodedIRData.address
     * and up to 32 bit raw data in IrReceiver.decodedIRData.decodedRawData
     */
    if (IrReceiver.decode()) {
        Serial.println();
#if FLASHEND >= 0x3FFF  // For 16k flash or more, like ATtiny1604
        if (IrReceiver.decodedIRData.flags & IRDATA_FLAGS_WAS_OVERFLOW) {
            Serial.println(F("Overflow detected"));
            Serial.println(F("Try to increase the \"RAW_BUFFER_LENGTH\" value of " STR(RAW_BUFFER_LENGTH) " in " __FILE__));
            // see also https://github.com/Arduino-IRremote/Arduino-IRremote#compile-options--macros-for-this-library
#  if !defined(ESP8266) && !defined(NRF5)
            /*
             * do double beep
             */
#    if !defined(ESP32)
            IrReceiver.stop(); // ESP32 uses another timer for tone()
#    endif
            tone(TONE_PIN, 1100, 10);
            delay(50);
            tone(TONE_PIN, 1100, 10);
            delay(50);
#    if !defined(ESP32)
            IrReceiver.start(100000); // to compensate for 100 ms stop of receiver. This enables a correct gap measurement.
#    endif
#  endif

        } else {
            // Print a short summary of received data
            IrReceiver.printIRResultShort(&Serial);
            IrReceiver.printIRSendUsage(&Serial);

            if (IrReceiver.decodedIRData.protocol == UNKNOWN || digitalRead(DEBUG_BUTTON_PIN) == LOW) {
                // We have an unknown protocol, print more info
                IrReceiver.printIRResultRawFormatted(&Serial, true);
            }
        }

        // tone on esp8266 works once, then it disables the successful IrReceiver.start() / timerConfigForReceive().
#  if !defined(ESP8266) && !defined(NRF5)
        if (IrReceiver.decodedIRData.protocol != UNKNOWN && digitalRead(DEBUG_BUTTON_PIN) != LOW) {
            /*
             * If no debug mode or a valid protocol was received, play tone, wait and restore IR timer.
             * Otherwise do not play a tone to get exact gap time between transmissions and not running into repeat frames while wait for tone to end.
             * This will give the next CheckForRecordGapsMicros() call a chance to eventually propose a change of the current RECORD_GAP_MICROS value.
             */
#    if !defined(ESP32)
            IrReceiver.stop(); // ESP32 uses another timer for tone()
#    endif
            tone(TONE_PIN, 2200, 8);
#    if !defined(ESP32)
            delay(8);
            IrReceiver.start(8000); // to compensate for 8 ms stop of receiver. This enables a correct gap measurement.
#    endif
        }
#  endif
#else
        // Print a minimal summary of received data
        IrReceiver.printIRResultMinimal(&Serial);
#endif // FLASHEND

        /*
         * !!!Important!!! Enable receiving of the next value,
         * since receiving has stopped after the end of the current received data packet.
         */
        IrReceiver.resume();

        /*
         * Finally check the received data and perform actions according to the received address and commands
         */
        if (IrReceiver.decodedIRData.address == 0) {
            if (IrReceiver.decodedIRData.command == 0x10) {
                // do something
            } else if (IrReceiver.decodedIRData.command == 0x11) {
                // do something else
            }
        }
    } // if (IrReceiver.decode())

    /*
     * Your code here
     * For all users of the FastLed library, use this code for strip.show() to improve receiving performance (which is still not 100%):
     * if (IrReceiver.isIdle()) {
     *     strip.show();
     * }
     */

}

The idea was to record all the codes for different temperatures in a range, then noticed after changing the air settings from Auto, Cool, & Heat, different codes were given for previously recorded temperatures. My thought, "ok, maybe the remote gives a unique code depending on the different settings", then I tested setting the temperature back and forth before 76 & 78 and noticed getting different codes just with that.

Pressing Buttons
[Stop]

Protocol=PulseDistance Raw-Data=0xFD0210 56 bits LSB first
Send with:
    uint32_t tRawData[]={0x10006314, 0xFD0210};
    IrSender.sendPulseDistanceWidthFromArray(38, 3200, 1650, 400, 1200, 400, 400, &tRawData[0], 56, PROTOCOL_IS_LSB_FIRST, <millisofRepeatPeriod>, <numberOfRepeats>);

[Start] 76° (Mode: Auto Fan:Auto)

Protocol=UNKNOWN Hash=0x3B96FBE1 130 bits (incl. gap and start) received
rawData[260]: 
 -3276750
 +3200,-1650
 + 400,- 400 + 400,- 400 + 400,-1200 + 400,- 400
 + 400,-1250 + 350,- 400 + 400,- 400 + 400,- 450
 + 400,-1200 + 400,-1200 + 400,- 400 + 400,- 400
 + 400,- 400 + 400,-1250 + 350,-1250 + 350,- 450
 + 400,- 450 + 350,- 400 + 400,- 400 + 400,- 450
 + 350,- 400 + 400,- 400 + 400,- 400 + 400,- 450
 + 350,- 450 + 350,- 450 + 400,- 350 + 450,- 400
 + 400,-1200 + 400,- 400 + 400,- 350 + 450,- 400
 + 400,- 400 + 400,- 400 + 400,- 450 + 350,- 450
 + 400,-1200 + 400,- 400 + 400,- 400 + 400,- 400
 + 400,- 400 + 400,-1200 + 450,-1200 + 350,-1250
 + 350,-1250 + 400,-1200 + 400,-1200 + 450,-1200
 + 350,-1250 + 400,- 400 + 400,- 400 + 400,-1200
 + 400,- 400 + 400,- 400 + 400,- 400 + 400,- 450
 + 350,- 450 + 400,- 400 + 350,- 450 + 350,- 450
 + 350,-1250 + 400,-1250 + 350,- 400 + 400,- 450
 + 350,-1250 + 350,- 450 + 350,- 450 + 350,- 450
 + 350,- 450 + 400,- 400 + 400,- 450 + 350,-1200
 + 400,- 400 + 400,- 450 + 350,- 450 + 350,- 450
 + 350,- 450 + 350,- 450 + 350,- 450 + 350,- 500
 + 350,- 400 + 400,- 450 + 350,- 450 + 350,- 450
 + 350,- 450 + 350,- 400 + 400,- 450 + 350,- 450
 + 350,- 450 + 350,- 450 + 350,- 450 + 400,- 400
 + 400,- 450 + 350,- 450 + 350,- 450 + 350,- 400
 + 450,- 350 + 400,- 450 + 350,- 450 + 400,- 400
 + 400,- 400 + 350,- 450 + 400,- 400 + 350,- 500
 + 350,- 450 + 350,- 450 + 350,- 450 + 350,- 450
 + 350,- 450 + 350,- 450 + 400,- 400 + 350,- 450
 + 350,- 450 + 400,- 400 + 350,- 450 + 400,- 400
 + 400,- 400 + 400,-1250 + 350,- 450 + 350,- 450
 + 400,-1200 + 350,-1250 + 400,-1200 + 400,-1200
 + 400,- 450 + 350,-1200 + 400,- 450 + 350,- 450
 + 350
Sum: 129900

[:arrow_down_small:] Going from 78° to 76° (Mode: Auto Fan:Auto)

Protocol=UNKNOWN Hash=0x6E99D73 130 bits (incl. gap and start) received
rawData[260]: 
 -3276750
 +3250,-1600
 + 400,- 400 + 400,- 350 + 450,-1200 + 400,- 400
 + 400,-1250 + 350,- 400 + 400,- 450 + 350,- 450
 + 400,-1200 + 400,-1200 + 400,- 400 + 400,- 400
 + 400,- 350 + 450,-1250 + 350,-1250 + 350,- 450
 + 400,- 400 + 400,- 400 + 400,- 400 + 400,- 350
 + 450,- 400 + 400,- 450 + 350,- 400 + 450,- 400
 + 350,- 450 + 400,- 350 + 400,- 450 + 400,- 400
 + 400,-1200 + 400,- 400 + 400,- 450 + 350,- 450
 + 350,- 450 + 350,- 450 + 350,- 450 + 350,- 450
 + 400,-1200 + 400,- 400 + 400,- 450 + 350,- 450
 + 350,- 450 + 350,-1250 + 350,-1250 + 350,-1250
 + 400,-1200 + 400,-1200 + 400,-1200 + 400,-1250
 + 350,-1250 + 400,- 400 + 400,- 450 + 350,-1200
 + 400,- 450 + 350,- 400 + 450,- 350 + 400,- 450
 + 350,- 450 + 350,- 450 + 400,- 400 + 350,- 450
 + 400,-1200 + 400,-1250 + 350,- 400 + 400,- 450
 + 350,- 450 + 400,- 400 + 400,- 400 + 350,- 450
 + 400,- 400 + 400,- 400 + 400,- 400 + 400,-1200
 + 400,- 450 + 400,- 400 + 400,- 400 + 350,- 450
 + 350,- 450 + 350,- 450 + 400,- 400 + 350,- 450
 + 400,- 400 + 400,- 450 + 350,- 450 + 350,- 450
 + 350,- 450 + 350,- 450 + 350,- 450 + 350,- 450
 + 350,- 450 + 350,- 450 + 350,- 450 + 400,- 400
 + 400,- 400 + 400,- 450 + 350,- 450 + 350,- 450
 + 350,- 450 + 350,- 450 + 350,- 450 + 350,- 450
 + 350,- 450 + 350,- 450 + 350,- 450 + 350,- 450
 + 400,- 450 + 350,- 450 + 350,- 450 + 350,- 450
 + 350,- 450 + 350,- 450 + 350,- 450 + 400,- 400
 + 350,- 450 + 350,- 450 + 350,- 450 + 350,- 450
 + 400,- 400 + 400,-1200 + 400,- 400 + 400,- 400
 + 400,- 450 + 350,- 450 + 350,- 450 + 400,- 400
 + 400,-1200 + 350,-1300 + 350,- 450 + 350,- 450
 + 350
Sum: 126700

[:arrow_up_small:] Going from 74° to 76° (Mode: Auto Fan:Auto)

Protocol=UNKNOWN Hash=0xBB2129E3 130 bits (incl. gap and start) received
rawData[260]: 
 -1656250
 +3150,-1650
 + 400,- 400 + 400,- 400 + 400,-1200 + 400,- 350
 + 450,-1250 + 350,- 450 + 350,- 450 + 350,- 450
 + 400,-1200 + 400,-1200 + 400,- 400 + 400,- 400
 + 400,- 450 + 350,-1250 + 400,-1200 + 400,- 450
 + 350,- 400 + 400,- 400 + 400,- 450 + 350,- 400
 + 400,- 450 + 350,- 450 + 350,- 450 + 350,- 450
 + 350,- 450 + 400,- 400 + 400,- 400 + 400,- 450
 + 350,-1200 + 400,- 450 + 350,- 450 + 350,- 400
 + 400,- 450 + 400,- 350 + 400,- 450 + 350,- 450
 + 350,-1250 + 400,- 450 + 350,- 450 + 350,- 400
 + 400,- 450 + 350,-1250 + 350,-1250 + 350,-1250
 + 400,-1250 + 350,-1200 + 400,-1250 + 350,-1250
 + 350,-1250 + 400,- 450 + 350,- 450 + 350,-1200
 + 400,- 400 + 400,- 450 + 400,- 400 + 350,- 450
 + 400,- 400 + 400,- 400 + 350,- 450 + 400,- 400
 + 400,-1200 + 400,-1200 + 400,- 450 + 350,- 450
 + 400,- 400 + 350,- 450 + 350,- 450 + 350,- 450
 + 400,- 400 + 400,- 400 + 400,- 450 + 350,-1250
 + 350,- 450 + 350,- 450 + 350,- 450 + 350,- 450
 + 400,- 400 + 350,- 450 + 400,- 400 + 350,- 500
 + 350,- 450 + 350,- 450 + 350,- 450 + 350,- 450
 + 350,- 450 + 400,- 400 + 350,- 450 + 350,- 450
 + 350,- 450 + 400,- 400 + 400,- 400 + 400,- 400
 + 400,- 450 + 350,- 450 + 350,- 450 + 350,- 450
 + 350,- 450 + 350,- 450 + 400,- 400 + 350,- 450
 + 400,- 400 + 350,- 450 + 400,- 400 + 350,- 500
 + 350,- 450 + 350,- 450 + 350,- 450 + 350,- 400
 + 400,- 450 + 350,- 450 + 350,- 450 + 400,- 400
 + 350,- 450 + 350,- 450 + 400,- 400 + 400,- 400
 + 400,- 450 + 350,-1250 + 350,- 450 + 350,- 450
 + 350,- 450 + 400,- 400 + 350,- 450 + 350,- 450
 + 350,-1250 + 400,-1250 + 350,- 450 + 350,- 450
 + 350
Sum: 126650

After doing the previous, went back to 74° to 76°[:arrow_up_small:] (Mode: Auto Fan:Auto)

Protocol=UNKNOWN Hash=0x9AD11B87 130 bits (incl. gap and start) received
rawData[260]: 
 -1804450
 +3200,-1650
 + 350,- 400 + 450,- 350 + 400,-1250 + 350,- 450
 + 350,-1250 + 400,- 400 + 400,- 400 + 400,- 400
 + 400,-1250 + 400,-1200 + 350,- 450 + 350,- 450
 + 400,- 350 + 450,-1200 + 400,-1200 + 400,- 450
 + 400,- 350 + 400,- 450 + 350,- 450 + 400,- 400
 + 400,- 400 + 400,- 400 + 350,- 450 + 400,- 400
 + 400,- 450 + 350,- 400 + 400,- 400 + 400,- 450
 + 350,-1250 + 350,- 450 + 350,- 450 + 400,- 400
 + 400,- 450 + 350,- 400 + 400,- 400 + 400,- 400
 + 400,-1200 + 400,- 400 + 400,- 450 + 350,- 450
 + 350,- 450 + 350,-1250 + 400,-1200 + 400,-1200
 + 400,-1250 + 400,-1200 + 350,-1250 + 350,-1250
 + 400,-1200 + 450,- 400 + 350,- 450 + 350,-1250
 + 400,- 400 + 350,- 450 + 350,- 450 + 400,- 450
 + 350,- 400 + 400,- 450 + 350,- 450 + 350,- 450
 + 350,-1250 + 400,-1200 + 350,- 450 + 350,- 500
 + 350,- 450 + 350,- 450 + 350,- 450 + 350,- 450
 + 350,- 450 + 350,- 450 + 350,- 450 + 400,-1200
 + 350,- 450 + 350,- 450 + 400,- 400 + 400,- 450
 + 350,- 450 + 350,- 450 + 350,- 450 + 350,- 450
 + 350,- 450 + 350,- 450 + 350,- 450 + 350,- 450
 + 350,- 450 + 350,- 450 + 350,- 450 + 400,- 450
 + 350,- 450 + 350,- 450 + 350,- 450 + 350,- 450
 + 350,- 450 + 350,- 450 + 350,- 450 + 350,- 450
 + 350,- 450 + 350,- 450 + 400,- 400 + 400,- 450
 + 350,- 450 + 350,- 450 + 350,- 450 + 350,- 450
 + 350,- 450 + 350,- 450 + 350,- 450 + 400,- 400
 + 400,- 400 + 400,- 400 + 350,- 450 + 400,- 450
 + 350,- 450 + 350,- 450 + 350,- 450 + 350,- 450
 + 350,- 450 + 350,-1250 + 350,- 450 + 350,- 450
 + 400,- 400 + 400,- 450 + 350,- 450 + 350,- 450
 + 350,-1250 + 350,-1250 + 350,- 450 + 400,- 400
 + 350
Sum: 126650

What's going on, what am I missing, doing wrong, or not grasping?

I would start by converting the raw data to data bits.

It looks like the + values are all close together (300 to 500) so they can be ignored. The - values are either in the 300 to 500 range or about 1200. I would count anything below 1000 as '0' and everything about 1000 to be '1'.

This will reduce the values to, for example:

0010
1000
1100
0110
0000
0000
0000
1000
0000
1000
0111
1111
1001
0000
0000
1100
0000
0001
0000
0000
0000
0000
0000
0000
0000
0000
0000
0000
0000
0100
0000
1100

Then you can reduce those groups of 4 bits to hexadecimal:
28C60008087F900C010000000000040C

That will make it much easier to compare messages. Perhaps there is a sequence number that causes each message to be different.

The codes for an air conditioner remote control are much more complicated than those for a TV or audio system, for example. When a remote sends a code to an air conditioner, it contains EVERYTHING - hot/cold mode, set temperature, fan power, etc. There are separate groups of bits that are for each thing and usually have a few bits to check the integrity of the data - a checksum.

Hi @realseth, and greetings to the others who helped in this post

Did it work for you with your off/on example?

Protocol=PulseDistance Raw-Data=0xFD0210 56 bits LSB first
Send with:
    uint32_t tRawData[]={0x10006314, 0xFD0210};
    IrSender.sendPulseDistanceWidthFromArray(38, 3200, 1650, 400, 1200, 400, 400, &tRawData[0], 56, PROTOCOL_IS_LSB_FIRST, <millisofRepeatPeriod>, <numberOfRepeats>);

I too have an air conditioner that I need to turn on or off, but in my case I get 3 messages like this

- ReceiveDemo


Protocol=PulseDistance Raw-Data=0x2 35 bits LSB first
Enviar con:
    uint32_t tRawData[]={0x5062BD5A, 0x2};
    IrSender.sendPulseDistanceWidthFromArray(38, 8900, 4450, 650, 1650, 650, 550, &tRawData[0], 35, PROTOCOL_IS_LSB_FIRST, SEND_STOP_BIT, <millisofRepeatPeriod>, <numberOfRepeats>);

Protocol=PulseDistance Raw-Data=0x2 35 bits LSB first
Enviar con:
    uint32_t tRawData[]={0x6062BD5A, 0x2};
    IrSender.sendPulseDistanceWidthFromArray(38, 8900, 4450, 650, 1650, 650, 550, &tRawData[0], 35, PROTOCOL_IS_LSB_FIRST, SEND_STOP_BIT, <millisofRepeatPeriod>, <numberOfRepeats>);

Protocol=PulseDistance Raw-Data=0x2 35 bits LSB first
Enviar con:
    uint32_t tRawData[]={0xA0000000, 0x2};
    IrSender.sendPulseDistanceWidthFromArray(38, 8900, 4450, 650, 1650, 650, 550, &tRawData[0], 35, PROTOCOL_IS_LSB_FIRST, SEND_STOP_BIT, <millisofRepeatPeriod>, <numberOfRepeats>);

and I can't get it in any way and I don't know why, I am using the SimpleSender example

 */
uint32_t tRawData[]={0x5062BD5A, 0x2};
uint32_t tRawData1[]={0x6062BD5A, 0x2};
uint32_t tRawData2[]={0xA0000000, 0x2};
int entrada = 0;

void loop() {
  
  if (Serial.available() > 0) {

    input = Serial.read();
    
    if (input == '1') {
      IrSender.sendPulseDistanceWidthFromArray(38, 8900, 4450, 650, 1650, 650, 550, &tRawData[0], 35, PROTOCOL_IS_LSB_FIRST, SEND_STOP_BIT, 0, 0);
      IrSender.sendPulseDistanceWidthFromArray(38, 8900, 4450, 650, 1650, 650, 550, &tRawData1[0], 35, PROTOCOL_IS_LSB_FIRST, SEND_STOP_BIT, 0, 0);
      IrSender.sendPulseDistanceWidthFromArray(38, 8900, 4450, 650, 1650, 650, 550, &tRawData2[0], 35, PROTOCOL_IS_LSB_FIRST, SEND_STOP_BIT, 0, 0);

    }    

  }

    delay(1000); // el retardo debe ser superior a 5 ms (RECORD_GAP_MICROS), de lo contrario el receptor lo ve como una señal larga
}

very interesting my friend

I would like to apply that to my example, but I still don't understand it very well.

With IRrecvDump

#include <IRremote.h>
#include <SPI.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x27,20,4);  // set the LCD address to 0x27 for a 16 chars and 2 line display

int recvPin = 3;
IRrecv irrecv(recvPin);

void setup()
{
  Serial.begin(9600);   // Status message will be sent to PC at 9600 baud
  irrecv.enableIRIn();  // Start the receiver
  lcd.init();                      // initialize the lcd 

  lcd.backlight();
  lcd.setCursor(3,0);
  lcd.print("Hello, world!");
  lcd.setCursor(0,2);
  lcd.print("Waiting 4 IR signal");
}

void loop()
{
  decode_results  results;        // Somewhere to store the results

  if (irrecv.decode(&results)) 
  { 
    dumpInfo(&results);         // Output the results
    dumpRaw(&results);        // Output the results in RAW format
    dumpCode(&results);      // Output the results as source code
    Serial.println("");               // Blank line between entries
    irrecv.resume();                // Prepare for the next value
  }
  delay(100);
}

void ircode(decode_results *results)
{
    lcd.setCursor(0, 2);                                        // 
    lcd.print("Code: ");
    
  // Panasonic has an Address
  if (results->decode_type == PANASONIC)
  {
    Serial.print(results->address, HEX);
    Serial.print(":");

    lcd.print(results->address, HEX);
    lcd.print(":");
  }

  // Print Code
  Serial.print(results->value, HEX);
  lcd.print(results->value, HEX);

}

void encoding(decode_results *results)
{
  switch (results->decode_type) 
  {
    default:
    case UNKNOWN:      Serial.print("UNKNOWN");         lcd.setCursor(0, 1);  lcd.print("Encoding: UNKNOWN");       break;
    case NEC:          Serial.print("NEC");             lcd.setCursor(0, 1);  lcd.print("Encoding: NEC");           break;
    case SONY:         Serial.print("SONY");            lcd.setCursor(0, 1);  lcd.print("Encoding: SONY");          break;
    case RC5:          Serial.print("RC5");             lcd.setCursor(0, 1);  lcd.print("Encoding: RC5");           break;
    case RC6:          Serial.print("RC6");             lcd.setCursor(0, 1);  lcd.print("Encoding: RC6");           break;
//    case DISH:         Serial.print("DISH");          break ;
    case SHARP:        Serial.print("SHARP");           lcd.setCursor(0, 1);  lcd.print("Encoding: SHARP");         break;
    case JVC:          Serial.print("JVC");             lcd.setCursor(0, 1);  lcd.print("Encoding: JVC");           break;
//    case SANYO:        Serial.print("SANYO");         break ;
//    case MITSUBISHI:   Serial.print("MITSUBISHI");    break ;
    case SAMSUNG:      Serial.print("SAMSUNG");         lcd.setCursor(0, 1);  lcd.print("Encoding: SAMSUNG");       break;
    case LG:           Serial.print("LG");              lcd.setCursor(0, 1);  lcd.print("Encoding: LG");            break;
    case WHYNTER:      Serial.print("WHYNTER");         lcd.setCursor(0, 1);  lcd.print("Encoding: WHYHTER");       break;
//    case AIWA_RC_T501: Serial.print("AIWA_RC_T501");  break ;
    case PANASONIC:    Serial.print("PANASONIC");       lcd.setCursor(0, 1);  lcd.print("Encoding: PANASONIC");     break;
    case DENON:        Serial.print("Denon");           lcd.setCursor(0, 1);  lcd.print("Encoding: Denon");         break;
  }
}

void dumpInfo(decode_results *results)
{
  // Check if the buffer overflowed
  if (results->overflow)
  {
    Serial.println("IR code too long. Edit IRremoteInt.h and increase RAWBUF");
    return;
  }

  // Show Encoding standard
  Serial.print("Encoding  : ");
  encoding(results);
  Serial.println("");

  lcd.clear();
  lcd.setCursor(3, 0);                                        // 
  lcd.print("IR Signal Read");

  // Show Code & length
  Serial.print("Code      : ");
  ircode(results);
  Serial.print(" (");
  Serial.print(results->bits, DEC);
  Serial.println(" bits)");
}

void dumpRaw(decode_results *results)
{
  // Print Raw data
  Serial.print("Timing[");
  Serial.print(results->rawlen-1, DEC);
  Serial.println("]: ");

  lcd.setCursor(0, 3);                                        // 
  lcd.print("Timing: ");
  lcd.print(results->rawlen-1, DEC);

  for (int i = 1;  i < results->rawlen;  i++)
  {
    unsigned long  x = results->rawbuf[i] * USECPERTICK;
    if (!(i & 1))
    { // even
      Serial.print("-");
      if (x < 1000)  Serial.print(" ") ;
      if (x < 100)   Serial.print(" ") ;
      Serial.print(x, DEC);
    }
   else
   {  // odd
      Serial.print("     ");
      Serial.print("+");
      if (x < 1000)  Serial.print(" ") ;
      if (x < 100)   Serial.print(" ") ;
      Serial.print(x, DEC);
      if (i < results->rawlen-1) Serial.print(", "); //',' not needed for last one
    }
    if (!(i % 8))  Serial.println("");
  }
  Serial.println("");                    // Newline
}

void dumpCode(decode_results *results)
{
  // Start declaration
  Serial.print("unsigned int  ");          // variable type
  Serial.print("rawData[");                // array name
  Serial.print(results->rawlen - 1, DEC);  // array size
  Serial.print("] = {");                   // Start declaration

  // Dump data
  for (int i = 1;  i < results->rawlen;  i++)
  {
    Serial.print(results->rawbuf[i] * USECPERTICK, DEC);
    if ( i < results->rawlen-1 ) Serial.print(","); // ',' not needed on last one
    if (!(i & 1))  Serial.print(" ");
  }
  // End declaration
  Serial.print("};");  // 

  // Comment
  Serial.print("  // ");
  encoding(results);
  Serial.print(" ");
  ircode(results);

  // Newline
  Serial.println("");

  // Now dump "known" codes
  if (results->decode_type != UNKNOWN) 
  {
    // Some protocols have an address
    if (results->decode_type == PANASONIC)
    {
      Serial.print("unsigned int  addr = 0x");
      Serial.print(results->address, HEX);
      Serial.println(";");
    }

    // All protocols have data
    Serial.print("unsigned int  data = 0x");
    Serial.print(results->value, HEX);
    Serial.println(";");
  }
}

Serial output is:
Power On Auto[Mode: Auto|Cool|Dry|Fan|Heat] 72 Auto[Fan: Auto|High|Med|Low|Quiet]

Encoding  : PANASONIC
Code      : 2002:60008087 (48 bits)
Timing[111]: 
     +3200, -1600     + 450, - 350     + 450, - 350     + 450, -1200
     + 400, - 350     + 450, -1200     + 400, - 400     + 400, - 350
     + 450, - 400     + 400, -1200     + 450, -1150     + 450, - 350
     + 450, - 350     + 450, - 350     + 450, -1200     + 400, -1200
     + 400, - 400     + 400, - 400     + 400, - 400     + 400, - 400
     + 400, - 400     + 400, - 400     + 400, - 400     + 400, - 400
     + 400, - 400     + 400, - 400     + 450, - 350     + 450, - 400
     + 400, - 400     + 400, -1200     + 400, - 400     + 400, - 400
     + 400, - 400     + 400, - 400     + 400, - 400     + 400, - 400
     + 400, - 400     + 400, -1200     + 450, - 350     + 450, - 350
     + 450, - 400     + 400, - 400     + 400, -1200     + 400, -1200
     + 400, -1200     + 400, -1200     + 400, -1200     + 450, -1150
     + 450, -1200     + 400, -1200     + 400, - 400     + 400, - 400
     + 400, -1200     + 400, - 400     + 400, - 400     + 400
unsigned int  rawData[111] = {3200,1600, 450,350, 450,350, 450,1200, 400,350, 450,1200, 400,400, 400,350, 450,400, 400,1200, 450,1150, 450,350, 450,350, 450,350, 450,1200, 400,1200, 400,400, 400,400, 400,400, 400,400, 400,400, 400,400, 400,400, 400,400, 400,400, 400,400, 450,350, 450,400, 400,400, 400,1200, 400,400, 400,400, 400,400, 400,400, 400,400, 400,400, 400,400, 400,1200, 450,350, 450,350, 450,400, 400,400, 400,1200, 400,1200, 400,1200, 400,1200, 400,1200, 450,1150, 450,1200, 400,1200, 400,400, 400,400, 400,1200, 400,400, 400,400, 400};  // PANASONIC 2002:60008087
unsigned int  addr = 0x2002;
unsigned int  data = 0x60008087;

Power Off

Encoding  : PANASONIC
Code      : 2002:60008084 (48 bits)
Timing[111]: 
     +3200, -1600     + 450, - 350     + 450, - 350     + 450, -1150
     + 450, - 350     + 450, -1200     + 400, - 350     + 450, - 350
     + 450, - 350     + 450, -1200     + 400, -1200     + 450, - 300
     + 500, - 350     + 450, - 350     + 450, -1150     + 450, -1200
     + 400, - 350     + 450, - 350     + 450, - 350     + 450, - 400
     + 400, - 400     + 400, - 400     + 450, - 300     + 450, - 400
     + 400, - 400     + 450, - 350     + 450, - 350     + 450, - 350
     + 450, - 350     + 450, -1200     + 400, - 300     + 500, - 400
     + 400, - 400     + 400, - 400     + 400, - 400     + 400, - 400
     + 400, - 400     + 400, -1200     + 400, - 350     + 450, - 400
     + 450, - 350     + 450, - 350     + 450, -1200     + 400, - 400
     + 400, - 400     + 400, - 400     + 400, - 400     + 400, - 400
     + 400, - 400     + 400, -1200     + 400, - 400     + 400, -1200
     + 450, -1150     + 450, -1200     + 400, -1200     + 400
unsigned int  rawData[111] = {3200,1600, 450,350, 450,350, 450,1150, 450,350, 450,1200, 400,350, 450,350, 450,350, 450,1200, 400,1200, 450,300, 500,350, 450,350, 450,1150, 450,1200, 400,350, 450,350, 450,350, 450,400, 400,400, 400,400, 450,300, 450,400, 400,400, 450,350, 450,350, 450,350, 450,350, 450,1200, 400,300, 500,400, 400,400, 400,400, 400,400, 400,400, 400,400, 400,1200, 400,350, 450,400, 450,350, 450,350, 450,1200, 400,400, 400,400, 400,400, 400,400, 400,400, 400,400, 400,1200, 400,400, 400,1200, 450,1150, 450,1200, 400,1200, 400};  // PANASONIC 2002:60008084
unsigned int  addr = 0x2002;
unsigned int  data = 0x60008084;

Auto[Mode: Auto|Cool|Dry|Fan|Heat] 74 Auto[Fan: Auto|High|Med|Low|Quiet]

Encoding  : PANASONIC
Code      : 2002:60008087 (48 bits)
Timing[111]: 
     +3200, -1650     + 400, - 400     + 400, - 400     + 400, -1200
     + 400, - 400     + 400, -1200     + 400, - 400     + 400, - 400
     + 400, - 450     + 350, -1250     + 350, -1250     + 400, - 400
     + 400, - 400     + 400, - 350     + 450, -1200     + 400, -1200
     + 400, - 400     + 400, - 400     + 400, - 400     + 400, - 400
     + 400, - 400     + 400, - 450     + 350, - 400     + 400, - 450
     + 400, - 400     + 400, - 400     + 400, - 400     + 400, - 400
     + 400, - 400     + 400, -1200     + 400, - 400     + 400, - 400
     + 400, - 400     + 400, - 400     + 400, - 400     + 400, - 450
     + 350, - 450     + 350, -1250     + 350, - 450     + 400, - 400
     + 400, - 400     + 400, - 400     + 400, -1200     + 400, -1200
     + 450, -1200     + 350, -1250     + 350, -1250     + 400, -1200
     + 400, -1200     + 400, -1200     + 450, - 350     + 400, - 400
     + 400, -1250     + 400, - 400     + 350, - 450     + 350
unsigned int  rawData[111] = {3200,1650, 400,400, 400,400, 400,1200, 400,400, 400,1200, 400,400, 400,400, 400,450, 350,1250, 350,1250, 400,400, 400,400, 400,350, 450,1200, 400,1200, 400,400, 400,400, 400,400, 400,400, 400,400, 400,450, 350,400, 400,450, 400,400, 400,400, 400,400, 400,400, 400,400, 400,1200, 400,400, 400,400, 400,400, 400,400, 400,400, 400,450, 350,450, 350,1250, 350,450, 400,400, 400,400, 400,400, 400,1200, 400,1200, 450,1200, 350,1250, 350,1250, 400,1200, 400,1200, 400,1200, 450,350, 400,400, 400,1250, 400,400, 350,450, 350};  // PANASONIC 2002:60008087
unsigned int  addr = 0x2002;
unsigned int  data = 0x60008087;

Would these be reduced to the following

Power On Auto[Mode: Auto|Cool|Dry|Fan|Heat] 72 Auto[Fan: Auto|High|Med|Low|Quiet]

1001
0100
0110
0011
0000
0000
0000
0100
0000
0100
0011
1111
1100
100(0?)

HEX: 94630004043FC8

Power Off

1001
0100
0110
0011
0000
0000
0000
0100
0000
0100
0010
0000
0101
111(0?)

HEX: 9463000404205E

Auto[Mode: Auto|Cool|Dry|Fan|Heat] 74 Auto[Fan: Auto|High|Med|Low|Quiet]

1001
0100
0110
0011
0000
0000
0000
0100
0000
0100
0011
1111
1100
100?

HEX: 94630004043FC8

Why do the 72° and 74° come out the same?

I wish I had an answer for you.

When using that 94630004043FC8 to transmit from Uno R3

// Fujitsu AR-RCF1U
#include <IRLibAll.h>
//#include <IRremote.h>

IRsend mySender;

const int buttonOnPin = 7;      // Pin for On @ Auto 72 Auto button
const int buttonOffPin = 8;     // Pin for Off button
const int pinSendIR = 3;        // choose any pin to send IR signals
int buttonState = 0;            // variable for reading the pushbutton status

uint16_t address = 0x2002;      // Given from IRrecvDump with original remote
//
//Power Off
uint32_t powerOff = 0x60008084; // Original 33F10136 - Also came up 60008084 
//Provided by IRrecvDump
unsigned int  rawOff[111] = {3200,1600, 450,350, 450,350, 450,1150, 450,350, 450,1200, 400,350, 450,350, 450,350, 450,1200, 400,1200, 450,300, 500,350, 450,350, 450,1150, 450,1200, 400,350, 450,350, 450,350, 450,400, 400,400, 400,400, 450,300, 450,400, 400,400, 450,350, 450,350, 450,350, 450,350, 450,1200, 400,300, 500,400, 400,400, 400,400, 400,400, 400,400, 400,400, 400,1200, 400,350, 450,400, 450,350, 450,350, 450,1200, 400,400, 400,400, 400,400, 400,400, 400,400, 400,400, 400,1200, 400,400, 400,1200, 450,1150, 450,1200, 400,1200, 400};  // PANASONIC 2002:60008084

//Power On Auto[Mode: Cool|Dry|Fan|Heat] 72 Auto[Fan: High|Med|Low|Quiet]
uint32_t powerOn = 0x60008087;  // Original FC2D425F - Also came up 60008087
//Provided by IRrecvDump
unsigned int  rawOn[111] = {3200,1600, 450,350, 450,350, 450,1200, 400,350, 450,1200, 400,400, 400,350, 450,400, 400,1200, 450,1150, 450,350, 450,350, 450,350, 450,1200, 400,1200, 400,400, 400,400, 400,400, 400,400, 400,400, 400,400, 400,400, 400,400, 400,400, 400,400, 450,350, 450,400, 400,400, 400,1200, 400,400, 400,400, 400,400, 400,400, 400,400, 400,400, 400,400, 400,1200, 450,350, 450,350, 450,400, 400,400, 400,1200, 400,1200, 400,1200, 400,1200, 400,1200, 450,1150, 450,1200, 400,1200, 400,400, 400,400, 400,1200, 400,400, 400,400, 400};  // PANASONIC 2002:60008087 

void setup() 
{
  Serial.begin(115200);
  pinMode(buttonOnPin, INPUT);
  pinMode(buttonOffPin, INPUT);
}

void loop() 
{
//  buttonState = digitalRead(buttonPin);
//  if (buttonState == HIGH) 
  if(digitalRead(buttonOnPin) == HIGH)
  {
    mySender.send(address, rawOn, 8);         // IRLibAll.h
//    mySender.sendPanasonic(address,powerOn);  // IRremote.h
    Serial.println("On");
    while(buttonState == HIGH) 
    {
      buttonState = digitalRead(buttonOnPin);
      delay(200);
    }
  }  
  if(digitalRead(buttonOffPin) == HIGH)
  {
    mySender.send(address, rawOff, 8);         // IRLibAll.h
//    mySender.sendPanasonic(address,powerOff);  // IRremote.h   
    Serial.println("Off");
    while(buttonState == HIGH) 
    {
      buttonState = digitalRead(buttonOffPin);
      delay(200);
    }
  }  
}

Receiver Code on a separate Uno R3

#include <IRremote.h>
#include <SPI.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x27,20,4);  // set the LCD address to 0x27 for a 16 chars and 2 line display

int recvPin = 3;
IRrecv irrecv(recvPin);

void setup()
{
  Serial.begin(9600);   // Status message will be sent to PC at 9600 baud
  irrecv.enableIRIn();  // Start the receiver
  lcd.init();                      // initialize the lcd 

  lcd.backlight();
  lcd.setCursor(3,0);
  lcd.print("Hello, world!");
  lcd.setCursor(0,2);
  lcd.print("Waiting 4 IR signal");
}

void loop()
{
  decode_results  results;        // Somewhere to store the results

  if (irrecv.decode(&results)) 
  { 
    dumpInfo(&results);         // Output the results
    dumpRaw(&results);        // Output the results in RAW format
    dumpCode(&results);      // Output the results as source code
    Serial.println("");               // Blank line between entries
    irrecv.resume();                // Prepare for the next value
  }
  delay(100);
}

void ircode(decode_results *results)
{
    lcd.setCursor(0, 2);                                        // 
    lcd.print("Code: ");
    
  // Panasonic has an Address
  if (results->decode_type == PANASONIC)
  {
    Serial.print(results->address, HEX);
    Serial.print(":");

    lcd.print(results->address, HEX);
    lcd.print(":");
  }

  // Print Code
  Serial.print(results->value, HEX);
  lcd.print(results->value, HEX);

}

void encoding(decode_results *results)
{
  switch (results->decode_type) 
  {
    default:
    case UNKNOWN:      Serial.print("UNKNOWN");         lcd.setCursor(0, 1);  lcd.print("Encoding: UNKNOWN");       break;
    case NEC:          Serial.print("NEC");             lcd.setCursor(0, 1);  lcd.print("Encoding: NEC");           break;
    case SONY:         Serial.print("SONY");            lcd.setCursor(0, 1);  lcd.print("Encoding: SONY");          break;
    case RC5:          Serial.print("RC5");             lcd.setCursor(0, 1);  lcd.print("Encoding: RC5");           break;
    case RC6:          Serial.print("RC6");             lcd.setCursor(0, 1);  lcd.print("Encoding: RC6");           break;
//    case DISH:         Serial.print("DISH");          break ;
    case SHARP:        Serial.print("SHARP");           lcd.setCursor(0, 1);  lcd.print("Encoding: SHARP");         break;
    case JVC:          Serial.print("JVC");             lcd.setCursor(0, 1);  lcd.print("Encoding: JVC");           break;
//    case SANYO:        Serial.print("SANYO");         break ;
//    case MITSUBISHI:   Serial.print("MITSUBISHI");    break ;
    case SAMSUNG:      Serial.print("SAMSUNG");         lcd.setCursor(0, 1);  lcd.print("Encoding: SAMSUNG");       break;
    case LG:           Serial.print("LG");              lcd.setCursor(0, 1);  lcd.print("Encoding: LG");            break;
    case WHYNTER:      Serial.print("WHYNTER");         lcd.setCursor(0, 1);  lcd.print("Encoding: WHYHTER");       break;
//    case AIWA_RC_T501: Serial.print("AIWA_RC_T501");  break ;
    case PANASONIC:    Serial.print("PANASONIC");       lcd.setCursor(0, 1);  lcd.print("Encoding: PANASONIC");     break;
    case DENON:        Serial.print("Denon");           lcd.setCursor(0, 1);  lcd.print("Encoding: Denon");         break;
  }
}

void dumpInfo(decode_results *results)
{
  // Check if the buffer overflowed
  if (results->overflow)
  {
    Serial.println("IR code too long. Edit IRremoteInt.h and increase RAWBUF");
    return;
  }

  // Show Encoding standard
  Serial.print("Encoding  : ");
  encoding(results);
  Serial.println("");

  lcd.clear();
  lcd.setCursor(3, 0);                                        // 
  lcd.print("IR Signal Read");

  // Show Code & length
  Serial.print("Code      : ");
  ircode(results);
  Serial.print(" (");
  Serial.print(results->bits, DEC);
  Serial.println(" bits)");
}

void dumpRaw(decode_results *results)
{
  // Print Raw data
  Serial.print("Timing[");
  Serial.print(results->rawlen-1, DEC);
  Serial.println("]: ");

  lcd.setCursor(0, 3);                                        // 
  lcd.print("Timing: ");
  lcd.print(results->rawlen-1, DEC);

  for (int i = 1;  i < results->rawlen;  i++)
  {
    unsigned long  x = results->rawbuf[i] * USECPERTICK;
    if (!(i & 1))
    { // even
      Serial.print("-");
      if (x < 1000)  Serial.print(" ") ;
      if (x < 100)   Serial.print(" ") ;
      Serial.print(x, DEC);
    }
   else
   {  // odd
      Serial.print("     ");
      Serial.print("+");
      if (x < 1000)  Serial.print(" ") ;
      if (x < 100)   Serial.print(" ") ;
      Serial.print(x, DEC);
      if (i < results->rawlen-1) Serial.print(", "); //',' not needed for last one
    }
    if (!(i % 8))  Serial.println("");
  }
  Serial.println("");                    // Newline
}

void dumpCode(decode_results *results)
{
  // Start declaration
  Serial.print("unsigned int  ");          // variable type
  Serial.print("rawData[");                // array name
  Serial.print(results->rawlen - 1, DEC);  // array size
  Serial.print("] = {");                   // Start declaration

  // Dump data
  for (int i = 1;  i < results->rawlen;  i++)
  {
    Serial.print(results->rawbuf[i] * USECPERTICK, DEC);
    if ( i < results->rawlen-1 ) Serial.print(","); // ',' not needed on last one
    if (!(i & 1))  Serial.print(" ");
  }
  // End declaration
  Serial.print("};");  // 

  // Comment
  Serial.print("  // ");
  encoding(results);
  Serial.print(" ");
  ircode(results);

  // Newline
  Serial.println("");

  // Now dump "known" codes
  if (results->decode_type != UNKNOWN) 
  {
    // Some protocols have an address
    if (results->decode_type == PANASONIC)
    {
      Serial.print("unsigned int  addr = 0x");
      Serial.print(results->address, HEX);
      Serial.println(";");
    }

    // All protocols have data
    Serial.print("unsigned int  data = 0x");
    Serial.print(results->value, HEX);
    Serial.println(";");
  }
}

The receiver displays

Encoding: UNKNOWN
Code: 8DE81CF6
Timing: 17