Funzione IF non funzionante

Ciao a tutti, volevo sapere perchè viene eseguito tutto lo sketch anche se la variabile non assume il valore per la quale dovrebbe eseguire if. In poche parole esegue tutti gli IF anche se la variabile ha valore 0. Dove sta l’errore? Non riesco a capire :o

// 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

  int ostacolod = 0;
  int ostacolos = 0;
  int ostacolocentro = 0;
  int buio = 0;
  int manuale = 0; 

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); 
  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();
  
   // Partenza
  digitalWrite(LEDFUNZIONAMENTO, LOW);
  digitalWrite(LEDAUTOMATICO, LOW);
  digitalWrite(LEDMANUALE, HIGH);
  digitalWrite(MOTORED, HIGH);
  digitalWrite(MOTORES, HIGH);
  delay(50); // Anti-bouncing
  /*
  if (luce < 500)
  {
    digitalWrite(LEDBUIO, HIGH);
    Serial.println("Luce accesa");
    Serial.println("buio");
  }
  
    if (luce > 500)
  {
    digitalWrite(LEDBUIO, LOW);
    Serial.println("Luce spenta");
  }
  
 */
    if (ostacolocentro > 70)
  {
  Serial.println(ostacolocentro);
  digitalWrite(LEDFUNZIONAMENTO, LOW);
  digitalWrite(LEDAUTOMATICO, LOW);
  digitalWrite(LEDMANUALE, LOW);
  digitalWrite(MOTORED, LOW);
  digitalWrite(MOTORES, HIGH);
  delay(1000);
  delay(50); // Anti-bouncing
  }
    /* 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("Robot manuale");
  
  if (manuale = 2)
  {
    digitalWrite(LEDFUNZIONAMENTO, HIGH);
    digitalWrite(LEDMANUALE, HIGH);
    digitalWrite(LEDAUTOMATICO, LOW);
    digitalWrite(MOTORED, HIGH);
    digitalWrite(MOTORES, HIGH);
    Serial.println("Motori inseriti manualmente");
  }
  
  if (manuale = 3)
  {
    digitalWrite(LEDFUNZIONAMENTO, HIGH);
    digitalWrite(LEDMANUALE, HIGH);
    digitalWrite(LEDAUTOMATICO, LOW);
    digitalWrite(MOTORED, LOW);
    digitalWrite(MOTORES, LOW);
    Serial.println("Motori arrestati manualmente");
  }
  
    if (manuale = 4)
  {
    digitalWrite(LEDFUNZIONAMENTO, HIGH);
    digitalWrite(LEDMANUALE, HIGH);
    digitalWrite(LEDAUTOMATICO, LOW);
    digitalWrite(MOTORED, LOW);
    digitalWrite(MOTORES, HIGH);
    Serial.println("Il robot sta girando versa destra.");
  }
  
    if (manuale = 5)
  {
    digitalWrite(LEDFUNZIONAMENTO, HIGH);
    digitalWrite(LEDMANUALE, HIGH);
    digitalWrite(LEDAUTOMATICO, LOW);
    digitalWrite(MOTORED, HIGH);
    digitalWrite(MOTORES, LOW);
    Serial.println("Il robot sta girando versa sinistra.");
  }
  
      if (manuale = 6)
  {
    digitalWrite(LEDFUNZIONAMENTO, HIGH);
    digitalWrite(LEDMANUALE, HIGH);
    digitalWrite(LEDAUTOMATICO, LOW);
    digitalWrite(MOTORED, LOW);
    digitalWrite(MOTORES, LOW);
    Serial.println("Motori fermi");
  }
  
 
}
}

Dico la mia anche se forse sparo una mega ca**ata.... prova a mettere due uguale dentro la parentesi degli if

if (int pippo == 6) { int pluto = 0; }

porca miseria mi sa hai ragione O_O dopo provo

In C, = serve per assegnare, mentre == serve per comparare

hacker ;)

Avete ragione ragazzi è stata una bella svista :o

wtfpwned ! cmq è cosi in qualunque linguaggio di programmazione eh...