In the received RAW codes, the width of the modulated pulses is less than the expected value. And the width of the spaces is bigger than expected.

Cited from the [documentation][1]:

> Depending on the type of IR receiver hardware you are using, the
> length of a mark pulse is over reported and the length of a space is
> underreported.
> 
> Based on tests performed by Ken Shirriff who wrote the
> original IRremote library upon which this library is based, the length
> of a received mark is about 100µs too long and space is 100µs too
> short. IRLib1.x used that value however my own experience is that 50µs
> is a better value so that is the default for IRLib2.
>
> You can change that value based on your own experiences by changing the value for
> example…
> 
>  `myReceiver.markExcess= 75;`

Please find this value experimentally (try at first 100). To do this, change the receiver's sketch:
<!-- language-all: lang-cpp -->

    ...
    void setup() {
      gotOne=false; gotNew=false;
      codeProtocol=UNKNOWN; 
      codeValue=0; 
      Serial.begin(9600);
      delay(2000);while(!Serial);//delay for Leonardo
      Serial.println(F("Send a code from your remote and we will record it."));
      Serial.println(F("Type any character and press enter. We will send the recorded code."));
      Serial.println(F("Type 'r' special repeat sequence."));
      myReceiver.enableIRIn(); // Start the receiver
      myReceiver.markExcess= 100; // by default is 50
    }
    ...


And please increase the delay time in transmitter sketch (to avoid codes overlapping) :

    ...
    for (int i = 0; i < 3; i++){ 
      irsend.sendNEC(0xFF6897, 32); 
      delay(200); 
      j = j + 1; 
    }
    ...

  [1]: https://github.com/cyborg5/IRLib2/blob/master/IRLib2/manuals/IRLibReference.pdf