OLED problem display String

Hello, I hope anyone can help me with this.
I have this code:

#include <Wire.h>
#include <SPI.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

#define OLED_RESET 4
Adafruit_SSD1306 display(OLED_RESET);

#define NUMFLAKES 10
#define XPOS 0
#define YPOS 1
#define DELTAY 2

#if (SSD1306_LCDHEIGHT != 64)
#error(“Height incorrect, please fix Adafruit_SSD1306.h!”);
#endif
char mensaje[80];
char caracter;
byte indice=0;
void setup() {
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
Wire.begin(0x70);
Wire.onReceive(recibe);
display.clearDisplay();
display.display();
}

void loop() {
delay(2000);
display.setTextSize(2);
display.setTextColor(WHITE);
display.setCursor(1, 0);
display.clearDisplay();
display.println(mensaje);
display.display();
while(caracter==0x13)
{
display.clearDisplay();
display.setTextSize(2);
display.setTextColor(WHITE);
display.setCursor(1, 30);
display.clearDisplay();
display.println(“LIMPIO”);
display.display();
}
}

void recibe() {
if(Wire.available())
{
caracter= Wire.read();
mensaje[indice]=caracter;
indice++;
mensaje[indice]=’\0’;

}
}

And I get this on the Display

https://1drv.ms/u/s!AtGdxSk1TMKJsi06ZkWDkUC0xJod

It should display the String “INICIANDO”
Print a character and one does not
The string is sent via PIC microcontroller, and I’m pretty sure is sending the string ok.

Thank you for your help.

alex3030:
I'm pretty sure is sending the string ok.

Why be "pretty sure" when you can be absolutely sure? Add a Serial.println() and run the sketch with the Arduino IDE's Serial Monitor running.
https://www.arduino.cc/reference/en/language/functions/communication/serial/println/

[quote author=alex3030 link=msg=4123400 date=1554322167

char mensaje[80];
char caracter;
byte indice=0;

[/quote]
Although it's not mentioned in the Wire library's documentation, my understanding is that your recibe() is called from an ISR (interrupt service routine), and thus any global variables you modify in that function must be declared volatile, which you have not done with your mensaje, caracter, or indice:

Hi
I am receiving characters from unknown microcontroller to arduino and want to showing on an oled. 13 different character receiving, when showing on oled i am seeing the data but not showing as a whole 13 character, just one character then oled clear then seeing next character so on and changing in every loop, i want to see complete 13 characters and then clearing an oled.

Start by printing the received data to the Arduino IDE's Serial Monitor, using Serial.println(). The OLED is adding extra complexity to the troubleshooting process.