Problema con sensore HC-SR04 ad ultrasuoni, codice.

salve ragazzi ho un problema che mi sta facendo impazzire, riguardante un malfunzionamento di non so cosa nel momento in cui scollego l’arduino dal pc.
Il codice è il seguente:

int TRIG = 38;
int ECHO = 36;
long durata;
long distanza;

void setup(){
  #define debug
  #ifdef debug
     while(!Serial);
  #endif
  
  Serial.begin(9600);
  pinMode(38, OUTPUT);
  pinMode(36, INPUT);  
  pinMode(53, OUTPUT);
}

void loop() {
   digitalWrite(TRIG, LOW);
   delayMicroseconds(10);
   digitalWrite(TRIG, HIGH);
   delayMicroseconds(2);
   digitalWrite(TRIG, LOW);
   
   
   durata = pulseIn(ECHO, HIGH);
   distanza = durata / 58.2;
   Serial.println("la distanza in cm e':...");
   Serial.println(distanza);
   delay(500);
   
   if (distanza < 15) {
      Serial.println("Ostacolo!!");
      digitalWrite(53, HIGH);     
   } else { digitalWrite(53, LOW); }
   
}

Quando la distanza rilevata dal sensore è minore di 15 centimetri, un led sul pin 53 si accede, altrimenti rimane spento, il problema è che quando scollego l’arduino, il led rimane comunque acceso!! Ho fatto anche dei test con i motori, in quel caso, l’arduino segue solo l’istruzione “Vai indietro quando la distanza è inore di 15” e non accelera mai in avanti!

Qualcuno mi potrebbe spiegare qual è il problema?
Grazie

  1. Questo ? while(!Serial);
    E' un pezzo di codice necessario SOLO sulla Arduino Leonardo. Parli di pin 53 quindi penso hai una Arduino Mega.
    Con quel pezzo di codice rimane in attesa di input da seriale (usb).

  2. Arduino scollegato da PC, quindi come lo alimenti ?

Quattro batterie in serie da 1,5V alimentano i motori (la shield) e una da 9V alimenta la scheda Arduino, comunque ho provato a rimuoere quel rigo di codice, ma il problema persiste...dopo che staco il cavo USB il LED rimane sempre acceso :confused: qualche idea?

Quale shield ? L'ultrasonico come è collegato (a shield ?) ?
Cambierà poco ma perchè non hai usato la libreria NewPing per il sensore ultrasuoni ?
Nella pagina qui leggo per la libreria: http://playground.arduino.cc/Code/NewPing
"Doesn't use pulseIn, which is slow and gives incorrect results with some ultrasonic sensor models."