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);
}