Sensore colore aiuto!

Ho un problema il codice funziona, rileva i 3 colori solamente che quando non voglio rilevare il colore (ad esempio lo lascio appoggiato sul tavolo) mi rileva solitamente il rosso è possibile negare ciò? sono abbastanza scarso nella programmazione avrei bisogno di una mano

const int outputEnabled = 2; 
const int s0 = 3; 
const int s1 = 4;
const int s2 = 5;
const int s3 = 6;
const int nLED = 7; // Leds Illuminazione sensore
const int out = 8; // TCS230 sensore colore output

// variabili colori
int Rosso = 0;
int Verde = 0;
int Blu = 0;

void setup() {
pinMode(outputEnabled, OUTPUT);
pinMode(s0, OUTPUT);
pinMode(s1, OUTPUT);
pinMode(s2, OUTPUT);
pinMode(s3, OUTPUT);
pinMode(nLED, OUTPUT);
pinMode(out, INPUT);
Serial.begin(9600);


digitalWrite(outputEnabled, LOW);
digitalWrite(s0, HIGH);
digitalWrite(s1, HIGH);
digitalWrite(nLED, LOW);
}

void loop() {
color();
Serial.print("Rosso ");
Serial.print(Rosso, DEC);
Serial.print(" ");
Serial.print("Giallo ");
Serial.print(Verde, DEC);
Serial.print(" ");
Serial.print("Blu ");
Serial.print(Blu, DEC);
Serial.println();

if (Rosso < Blu && Rosso < Verde)
Serial.println("Il colore rilevato e' Rosso");
Serial.print(" ");
else if (Blu < Rosso && Blu < Verde) 
Serial.println("Il colore rilevato e' Blu");
Serial.print(" ");
else if Serial.println("Il colore rilevato e' Verde");
Serial.print(" ");
delay(3000);
}

void color() {
digitalWrite(nLED,1);
digitalWrite(s2, LOW);
digitalWrite(s3, LOW);

Rosso = pulseIn(out, digitalRead(out) == HIGH ? LOW : HIGH);
digitalWrite(s3, HIGH);

Blu = pulseIn(out, digitalRead(out) == HIGH ? LOW : HIGH);
digitalWrite(s2, HIGH);

Verde = pulseIn(out, digitalRead(out) == HIGH ? LOW : HIGH);
digitalWrite(nLED,0);
}

sei sicuro che sia quello il codice funzionante?
mancano le parentesi graffe dell'if...

certo che funziona se è solo un istruzione non sono indispensabili

zZocks:
se è solo un istruzione non sono indispensabili

vero, ma a me sembra siano 2...

if (Rosso < Blu && Rosso < Verde)
1)  Serial.println("Il colore rilevato e' Rosso");
2)  Serial.print(" ");
else if (Blu < Rosso && Blu < Verde)
1)  Serial.println("Il colore rilevato e' Blu");
2)  Serial.print(" ");
else if Serial.println("Il colore rilevato e' Verde");
Serial.print(" ");

senza considerare che l'ultimo if ha poco senso.

compilando a me da errore perché senza le graffe trova un else senza il relativo if.

Ehm ... un sensore di colore e' come un qualsiasi altro sensore di luce, continua a leggere ... se non sei tu nel tuo sketch a dire al micro quando leggere e quando no (ad esempio con un pulsante, se premuto leggi, se non premuto ignora), il sensore non e' che sa da solo quando deve leggere e quando no, e lo stesso per lo sketch ... :wink: