errore analogRead... Impossibile!

Ciao a tutti, Sto scrivendo il codice per un robottino comandato tramite Wi-Fi e autonomo, peccato che mi dia errore la compilazione nella riga "analogRead" e non capisco perchè!! Qui è postato il codice... L'errore è:

 In function 'void loop()':
error: 'ostacolod' was not declared in this scope

Da cosa dipende?

// Modello a due motori e tre sensori di ostacoli
// Utilizza una funzione random per scegliere se girare a destra o sinistra

#define MOTORED 3
#define MOTORES 2
#define LEDFUNZIONAMENTO 4
#define LEDMANUALE 5
#define LEDAUTOMATICO 6
#define LEDBUIO 7

void setup()
{
  
  pinMode(MOTORED, OUTPUT);
  pinMode(MOTORES, OUTPUT);
  pinMode(LEDFUNZIONAMENTO, OUTPUT); //Led verde
  pinMode(LEDMANUALE, OUTPUT); // Led giallo
  pinMode(LEDAUTOMATICO, OUTPUT); // Led rosso
  pinMode(LEDBUIO, OUTPUT);
  
  int ostacolod = 0;
  int ostacolos = 0;
  int ostacolocentro = 0;
  int buio = 0;
  int manuale = 0; 
  Serial.begin(9600);
  
}

void loop()
{
  
  ostacolod = analogRead(0);
  ostacolos = analogRead(1);
  ostacolocentro = analogRead(2);
  buio = analogRead(3);
  
   // controlla se deve essere autonomo
   // o essere controllato tramite Wi-Fi
  manuale = Serial.read();
  
   
  if (manuale = 0) // Se il robot usa il suo cervello
  {
  digitalWrite(LEDFUNZIONAMENTO, HIGH);
  digitalWrite(LEDAUTOMATICO, HIGH);
  digitalWrite(LEDMANUALE, LOW);
  digitalWrite(MOTORED, HIGH);
  digitalWrite(MOTORES, HIGH);
  Serial.println("Modalita' automatica attivata");
  delay(50); // Anti-bouncing
  
    if (ostacolocentro > 70)
  {
  digitalWrite(LEDFUNZIONAMENTO, HIGH);
  digitalWrite(LEDAUTOMATICO, HIGH);
  digitalWrite(LEDMANUALE, LOW);
  digitalWrite(MOTORED, LOW);
  digitalWrite(MOTORES, HIGH);
  delay(1000);
  }
    /* Per ora non serve perchè ho un solo sensore posto davanti al robot 
  if (ostacolod > 70)
  {
  digitalWrite(LEDFUNZIONAMENTO, HIGH);
  digitalWrite(LEDAUTOMATICO, HIGH);
  digitalWrite(LEDMANUALE, LOW);
  digitalWrite(MOTORED, HIGH);
  digitalWrite(MOTORES, LOW);
  delay(1000);
  }
  
  if (ostacolos > 70)
  {
  digitalWrite(LEDFUNZIONAMENTO, HIGH);
  digitalWrite(LEDAUTOMATICO, HIGH);
  digitalWrite(LEDMANUALE, LOW);
  digitalWrite(MOTORED, LOW);
  digitalWrite(MOTORES, HIGH);
  delay(1000);
  }
  
  if ((ostacolod > 70) && (ostacolos > 70))
  {
  digitalWrite(LEDFUNZIONAMENTO, HIGH);
  digitalWrite(LEDAUTOMATICO, HIGH);
  digitalWrite(LEDMANUALE, LOW);
    randomSeed(analogRead(5));
    rand = long random(0, 2);  
    if (rand = 0)
    {
    digitalWrite(MOTORED, LOW);
    digitalWrite(MOTORES, HIGH);
    delay(1000);
    }
    if (rand = 1)
    {
    digitalWrite(MOTORED, HIGH);
    digitalWrite(MOTORES, LOW);
    delay(1000);
    }
  } */
  }

if (manuale = 1) //Se il robot è controllato dall'esterno
{
  Serial.println("Controllo manuale inserito, attendere la conferma");
  digitalWrite(MOTORED, LOW);
  digitalWrite(MOTORES, LOW);
  digitalWrite(LEDBUIO, LOW);
  digitalWrite(LEDFUNZIONAMENTO, HIGH);
  digitalWrite(LEDMANUALE, HIGH);
  digitalWrite(LEDAUTOMATICO, LOW);
  Serial.println("Motori arrestati. Adesso e' possibile controllare il robot manualmente");
  
}

  if (manuale = avanti)
  {
    digitalWrite(LEDFUNZIONAMENTO, HIGH);
    digitalWrite(LEDMANUALE, HIGH);
    digitalWrite(LEDAUTOMATICO, LOW);
    digitalWrite(MOTORED, HIGH);
    digitalWrite(MOTORES, HIGH);
    Serial.println("Motori inseriti manualmente");
  }
  
  if (manuale = fermo)
  {
    digitalWrite(LEDFUNZIONAMENTO, HIGH);
    digitalWrite(LEDMANUALE, HIGH);
    digitalWrite(LEDAUTOMATICO, LOW);
    digitalWrite(MOTORED, LOW);
    digitalWrite(MOTORES, LOW);
    Serial.println("Motori arrestati manualmente");
  }
  
    if (manuale = destra)
  {
    digitalWrite(LEDFUNZIONAMENTO, HIGH);
    digitalWrite(LEDMANUALE, HIGH);
    digitalWrite(LEDAUTOMATICO, LOW);
    digitalWrite(MOTORED, LOW);
    digitalWrite(MOTORES, HIGH);
    Serial.println("Il robot sta girando versa destra. Per fermarlo inserire il comando 'fermo' ");
  }
  
    if (manuale = sinistra)
  {
    digitalWrite(LEDFUNZIONAMENTO, HIGH);
    digitalWrite(LEDMANUALE, HIGH);
    digitalWrite(LEDAUTOMATICO, LOW);
    digitalWrite(MOTORED, HIGH);
    digitalWrite(MOTORES, LOW);
    Serial.println("MIl robot sta girando versa sinistra. Per fermarlo inserire il comando 'fermo'");
  }

Forse manca un “}” alla fine?
Visto così mi sembra che non trovi la fine della funzione .

Quante ne hai alla fine ?
1 o 2.
Magari il copia e incolla non ha preso tutto il codice.

Porca miseria è vero, mancava una graffa! ;D
Grazie mille :slight_smile:

felice di esserti stato utile :smiley: