Sensor hc-sr04 y display con arduino mega

Buenas noches gente, tengo varios problemas, les voy a pasar el codigo junto con el esquema de conexion del proyecto. El proyecto que estoy haciendo, se llama "control de nivel de tanque de agua" y quice implementar Arduino en él.

#include <LiquidCrystal.h> // Se incluye la libreria LiquidCrystal
LiquidCrystal lcd(12,11,5,4,3,2);  // Crea un Objeto LC. Parametros: (rs, enable, d4, d5, d6, d7).
int echo = 9;  
int trigger = 8;
float distancia,tiempo; //Declaramos variable flotante "distancia y tiempo".

void setup()
{
  Serial.begin(9600);
  lcd.begin(16,2); //Determina sus dimensiones (ancho y alto) del display.
  lcd.setCursor(2,0); //Colocamos el cursor en la Columna Columna 3, fila 0.
  lcd.print("Proyecto S.C.");
  lcd.setCursor(6,1); //Colocamos el numero "2019" en la columna 6, fila 1
  lcd.print ("2018");
  delay (3000);
  lcd.clear();
   lcd.setCursor(5,0); //Colocamos el cursor en la Columna Columna 3, fila 0.
  lcd.print("Mauro");
  lcd.setCursor(3,1);
  lcd.print ("Montenegro");
  delay (3000);
  lcd.clear();
  lcd.setCursor(2,0); //Colocamos el cursor en la columna 2, fila 0
  lcd.print("Iniciando!..");
  lcd.setCursor(6,1);
  lcd.print ("3");
  delay (1000); // delay de 1 segundo
  lcd.setCursor(6,1);
  lcd.print ("2");
  delay (1000);
  lcd.setCursor(6,1);
  lcd.print ("1");
  delay (1000);
  lcd.clear();
  pinMode(trigger,OUTPUT);
  pinMode(echo,INPUT);  
}

void loop()
{
  digitalWrite(trigger,LOW); //Escritura digital, ponemos a 0 el pin Trigger
  delayMicroseconds(4);      //Para tener un disparo limpio o el vio de una onda sonica limpia
  digitalWrite(trigger,HIGH);
  delayMicroseconds(10);
  digitalWrite(trigger,LOW); 
  tiempo=pulseIn(echo,HIGH);
  distancia=(tiempo/2)/29.2;
  Serial.print(distancia); // Imprimimos la distancia en cm
  Serial.print("cm"); 
  Serial.println();
  delay(400);
  
  lcd.setCursor(0,1); //Colocamos el cursor en linea 0, columna 1
  lcd.print("     ");
  lcd.print(distancia); 

  if (distancia>=40 && distancia <=400){ //Que se encienda el LED verde si el sensor
  analogWrite (13,200);                  //toma una distancia que se considera estable
  analogWrite (6,0);                    //entre 40cm y 400cm
  analogWrite (7,0);
  lcd.setCursor(0,0);
  lcd.print ("Distancia normal");
}

if (distancia>=20 && distancia <=40){ //Que se encienda el LED amarillo si el sensor
  analogWrite (6,200);                //toma una distancia que considera anormal
  analogWrite (7,0);                  //entre 20 y 40 cm
  analogWrite (13,0);
  lcd.setCursor(0,0);
  lcd.print ("Distancia dudosa");
  }
if (distancia>=5 && distancia <=20){ // Que se encienda el LED rojo si el sensor 

  analogWrite (7,200);     // toma una distancia que se considera en alerta entre 5cm y 20cm
  analogWrite (10,255);   //Cuando el LED rojo detecte la distancia del agua muy cerca          
  delay (100);            // que se active el buzzer
  analogWrite(10,0);
  delay (100);
  analogWrite (6,0);
  analogWrite(13,0); 
  lcd.setCursor(3,0);
  lcd.print ("ALERTA!!!");
}
}

La foto de nombre "error1" me pasa cuando tengo un tiempo prolongado conectado al arduino a 5v de la notebook o cuando lo tengo conectado a 9v con una bateria.. Tengo que darle al boton reset para que se normalice todo..

La segunda foto me pasa que como son 3 niveles que yo les puse que en 40 cm y 400 cm me prenda el led verde y diga en el display "Distancia normal".. el segundo led amarillo me prenda en una distancia de entre 20 cm y 40 cm y diga "distancia dudosa", y aca es el problema, el led rojo de entre 5cm y 20cm al decir "Alerta!" se me superpone con la palabra "Distancia dudosa", como puedo hacer para que no pase eso?

Hola, no creo que sea el problema de superposicion que tienes, pero tal vez si, bueno es que lo primero que vi es que si se da una distancia=20 o 40 entra en dos 'if' al mismo tiempo deberias sacarle el = a uno de ellos. Saludos.