Ping + Led Matrix Help

I have a project where in it has the same concept on a drop coin sensing, but here in my project I used ping sensor and led matrix, and my problem is that eg. if it doesn't sense anything it displays "NO OBJECT DETECTED" to the led matrix and then when it sense anything it displays some special characters before it displays "OBJECT DETECTED" and vice versa. How do I clear the data for it to not display some special characters before toggling to different displays? smiley-sad-blue smiley-roll-blue or should i use interrupt? smiley-sad-blue

Any suggestions? Thanks!!!

Here's the code

#include "CMAP.h"
//matrix declarations
  int d;
  unsigned char char_pointer;
  char Display_Ram[38];
  unsigned char mask;
  char LED_DATA1[]= "     NO OBJECT DETECTED   ~";
  char LED_DATA2[]= "     OBJECT DETECTED   ~";
  char count;	
  unsigned char shift_counter;
  
//ping declarations
  const  int trigger=4;
  const  int echo=3;
  float  distance;

#define INTEN 6500
 
const char CLK = 5; 
const char DAT = 6; 
const char STR = 7; 
const char K0 = A0; 
const char K1 = A1; 
const char K2 = A2; 
const char K3 = A3; 
const char K4 = 8; 
const char K5 = 9; 
const char K6 = 10; 
const char K7 = 11; 
 
void setup() {                
  pinMode(CLK, OUTPUT);     
  pinMode(DAT, OUTPUT);     
  pinMode(STR, OUTPUT);     
  pinMode(K0, OUTPUT);     
  pinMode(K1, OUTPUT);     
  pinMode(K2, OUTPUT);     
  pinMode(K3, OUTPUT);     
  pinMode(K4, OUTPUT);     
  pinMode(K5, OUTPUT);     
  pinMode(K6, OUTPUT);     
  pinMode(K7, OUTPUT);  
 
  digitalWrite(K0,HIGH);  
  digitalWrite(K1,HIGH);  
  digitalWrite(K2,HIGH);  
  digitalWrite(K3,HIGH);  
  digitalWrite(K4,HIGH);  
  digitalWrite(K5,HIGH);  
  digitalWrite(K6,HIGH);  
  digitalWrite(K7,HIGH);  
 
  for(d=0;d<32;d++)
  {
    clock();
  }
  strobe();
  d = 0;
  Serial.begin(9600);
  pinMode(trigger,OUTPUT);
  pinMode(echo,INPUT);
}
 
void loop(){
  ping();
}		

void ping(void){
  // Trigger US-100 to start measurement
  // Set up trigger
  digitalWrite(trigger,HIGH);
  delayMicroseconds(20);
  // Start Measurement
  digitalWrite(trigger,LOW);
  distance=pulseIn(echo,HIGH);
  distance=distance*0.0001657;
  if(distance >= 0.01 && distance <= 0.30){
  for(int x=0; x<=350;x++){
    Display();
    shift();
      }
  }
 else{
  for(int y=0; y<=5; y++){ 
   Display();
   shift();
       }
   }
}

void shift(void)
{
 int x;
 for(x=0; x<38; x++){
 Display_Ram[x] = Display_Ram[x+1];
 }
 
shift_counter++;
 if(shift_counter == 6){
 shift_counter = 0;
 if(distance >= 0.01 && distance <= 0.30){
   load2();}
 else{
   load1();}
 }
 
}
 
void Display(void)
{

  mask = 0x01;
  scan();
  digitalWrite(K7,LOW);
  for(d=0;d<INTEN;d++){}
  digitalWrite(K7,HIGH);
 
  mask = 0x02;
  scan();
  digitalWrite(K6,LOW);
  for(d=0;d<INTEN;d++){}
  digitalWrite(K6,HIGH);
 
  mask = 0x04;
  scan();
  digitalWrite(K5,LOW);
  for(d=0;d<INTEN;d++){}
  digitalWrite(K5,HIGH);
 
  mask = 0x08;
  scan();
  digitalWrite(K4,LOW);
  for(d=0;d<INTEN;d++){}
  digitalWrite(K4,HIGH);
 
  mask = 0x10;
  scan();
  digitalWrite(K3,LOW);
  for(d=0;d<INTEN;d++){}
  digitalWrite(K3,HIGH);
 
  mask = 0x20;
  scan();
  digitalWrite(K2,LOW);
  for(d=0;d<INTEN;d++){}
  digitalWrite(K2,HIGH);
 
  mask = 0x40;
  scan();
  digitalWrite(K1,LOW);
  for(d=0;d<INTEN;d++){}
  digitalWrite(K1,HIGH);
 
  mask = 0x80;
  scan();
  digitalWrite(K0,LOW);
  for(d=0;d<INTEN;d++){}
  digitalWrite(K0,HIGH);
  
}

void load1(void){
  char counter1;
  if(LED_DATA1[char_pointer+1] == '~')
    char_pointer = 0;
  for(counter1 = 0; counter1 < 5; counter1++){
    Display_Ram[32 + counter1] = character_data[(LED_DATA1[char_pointer] - 0x20)][counter1];
  }	
  Display_Ram[37] = 00;	
  char_pointer++;
}

void load2(void){
  char counter1;
  if(LED_DATA2[char_pointer+1] == '~')
     char_pointer = 0;
  for(counter1 = 0; counter1 < 5; counter1++){
    Display_Ram[32 + counter1] = character_data[(LED_DATA2[char_pointer] - 0x20)][counter1];
  }	
  Display_Ram[37] = 00;	
  char_pointer++;
}
 
void Clear_Display_Ram(void){
  unsigned char rcount;
  for(rcount = 0; rcount < 37; rcount++)
    Display_Ram[rcount] = 0xff;
}
 
void scan(void){
  for (count=32;count>(-1);count--){
    if ((Display_Ram[count] & mask) == mask)
      digitalWrite(DAT,LOW);
    else
      digitalWrite(DAT,HIGH);
    clock();
  }
  strobe();
}
 
void clock(void){
  digitalWrite(CLK,HIGH);			// clock hi
  digitalWrite(CLK,LOW);		        // clock low
}
 
void strobe(void){
  digitalWrite(STR,HIGH);			// strobe hi
  digitalWrite(STR,LOW);			// strobe low
}