range valore tra 2 variabili

Ciao a tutti ragazzi, ho un problema che mi affligge da 2 giorni e ho già provato a fare ricerche su internet ma non ho trovato nulla.
Praticamente ho 2 fotoresistenze (foto e foto1) con corrispettivi valori variabili (val e val1) e devo comandare 2 led (led e led1).
Devo far si che se val>val1 mi si accenda led, se invece val1>val mi si accenda il led1 e se uno è acceso l'altro non può accendersi, quindi non devo avere entrambi i led accesi
In più se ho val=val1 entrambi i led mi si devono spegnere. Il problema è che non riuscirò mai ad avere i valori perfettamente uguali per vari fattori quindi l'uguaglianza devo farla in un range (100) dalla differenza dei 2 valori quindi |val-val1|<100.
In esempio pratico se R1=470 e R2=630 mi si accende led1 perchè R2 è maggiore, se invece ho R1=640 e R2=570 non si accende nessun led perchè la differenza è minore di 100.
Ho provato ad impostare il programma ma non funziona la seconda parte cioè quella di spegnere entrambi i led con la differenza minore di 100, potete aiutarmi perfavore?
Qua metto lo sketch che ho utilizzato

int foto = 0;
int foto1 = 1;
int led = 8;
int led1 = 5;
int val = 0;
int val1 = 0;
void setup() {
  pinMode(led , OUTPUT);
  pinMode(led1 , OUTPUT);
}

void loop() {
   val = analogRead(foto);
   val1 = analogRead(foto1);
   if(abs(val-val1)<100)      
   digitalWrite(led && led1,LOW);
   else{
    if(val>val1){
    digitalWrite(led,HIGH);
    digitalWrite(led1,LOW);
    }
    if(val1>val){
    digitalWrite(led1,HIGH);
    digitalWrite(led,LOW);
   }
}
}

Un semplice programma in 3 if() dovrebbe essere sufficiente. Basterebbe tradurre quello che ha scritto lei da Italiano ad Arduiniano. Se val>val1 allora spegni il led indesiderato ed accendi quello richiesto. Se val1>val spegni il led indesiderato ed accendi quello richiesto. Se va!==val spegni entrambi i led.
Il sistema è sicuro, se stai attento a quello che scrivi, in quanto non vi è alcuna limitazione hardwere che entrambi i led si accendano

>AndreAndre: il codice va racchiuso nei tag CODE (REGOLAMENTO, punto 7) che, in fase di edit, ti inserisce il bottone </> ... primo a sinistra e NON nei tag per le tabelle TABLE.

Ho corretto il tuo post ... guarda come così la prossima volta non sbagli :slight_smile:

Guglielmo

digitalWrite(led && led1,LOW);

non credo che digitalWrite accetti 2 pin collegati con un AND...
fai 2 digitalWrite

giusto per la cronaca...la digitalWrite() funziona così :

void digitalWrite(uint8_t pin, uint8_t val)
{
	uint8_t timer = digitalPinToTimer(pin);
	uint8_t bit = digitalPinToBitMask(pin);
	uint8_t port = digitalPinToPort(pin);
	volatile uint8_t *out;

	if (port == NOT_A_PIN) return;

	// If the pin that support PWM output, we need to turn it off
	// before doing a digital write.
	if (timer != NOT_ON_TIMER) turnOffPWM(timer);

	out = portOutputRegister(port);

	uint8_t oldSREG = SREG;
	cli();

	if (val == LOW) {
		*out &= ~bit;
	} else {
		*out |= bit;
	}

	SREG = oldSREG;
}

quindi un solo PIN alla volta