Led non funzionante

Ecco il terzo post in neanche mezz'ora ;D

Allora, ho il seguente codice da me codato:

// 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();
  
   
  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 = 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. Per fermarlo inserire il comando 'fermo' ");
  }
  
    if (manuale = 5)
  {
    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'");
  }
}

Ma il led chiamato LEDFUNZIONAMENTO non vuol accendersi!!!! Come mai? L'ho anche sostituito, i fili sono ben inseriti, ma niente!!! Eppure è OUTPUT e va in HIGH quando necessario (cioè sempre, perchè mi deve indicare che il robot è acceso).

Metti la istruzione

digitalWrite(LEDFUNZIONAMENTO, HIGH);

come ultima del setup.
Se non si accende o il LED è rotto oppure l'hai montato al contrario.

PS: per gli scatti dei motori... con questo codice è normale :slight_smile:
Devi usare la funzione millis() vs delay()
Leggi questi tre articoli

Allora, ho risolto i due problemi

Il led si accendo se invece di HIGH metto LOW :-? ho provato a metterlo al contrario, ma niente, funziona solo se metto LOW, cosa assurda!!

Per quanto riguarda il motore dipendeva dal fatto che mi inviava ogni volta il Serial.Print e quindi rallentava tutto, ora funziona, ma ci sono altre cose che non mi quadrano, ma per questo apro stasera o dopo un altro post per non andare OT.