Condizioni per Controllare due uscite con 2 ingressi

Ciao a tutti ragazzi! Ho un piccolo problemino, essendo io un neofita in questo ambiente. Avrei la necessità di controllare due uscite del mio arduino a seconda degli stati di 2 ingressi, Sostanzialmente al verificarsi di determinate condizioni in ingresso, le uscite dovrebbero cambiare stato. Le condizioni sono: se IN1 e IN2 high, out 1 e out2 low se IN1 o IN2 low, out 2 high e out 1 low se IN1 e IN2 low, out 1 high e out 2 low Una volta capito questo, andando le uscite a comandare dei piccoli relè, vorrei sapere se secondo voi esiste un modo di testare il funzionamento degli stessi tramite qualcosa tipo un ciclo di verifica ogni "x" tempo. Tipo che ogni ora arduino mi comanda un piccolo terzo relè che mi apre i due di sopra e verifica che effettivamente lo stato cambi...onde evitare di ritrovarmi con i relè impastati su una posizione solo perchè guasti...

Ringrazio anticipatamente tutti voi per l'aiuto che date ai neofiti come me!! :) :) :)

Nessuno mi può aiutare??

=( =(

Scusa @Pieleo ma io sinceramente non ho capito la domanda. O forse sono 2 domande? Il programma per controllare le 2 uscite a seconda dei due ingressi l'hai fatto ? Sono solo una serie di if:

int val1,val2;
const byte IN1=8;
const byte IN2=9;
const byte OUT1=10;
const byte OUT2=11

void setup()
{ pinMode(IN1,INPUT);
  pinMode(IN2,INPUT);
  pinMode(OUT1,OUTPUT);
  pinMode(OUT2,OUTPUT);
}

void loop() {
val1=digitalRead(IN1);
val2=digitalRead(IN2);
if(val1== HIGH && val2==HIGH)  //se IN1 e IN2 high, out 1 e out2 low
{ digitalWrite(OUT1,HIGH);
  digitalWrite(OUT2,HIGH);  
}
else if(val1== LOW && val2==LOW)   //se IN1 e IN2 low, out 1 high e out 2 low
{ digitalWrite(OUT1,LOW);
  digitalWrite(OUT2,LOW);  
}
else   // restanti casi   -> se IN1 o IN2 low, out 2 high e out 1 low
{ digitalWrite(OUT1,LOW);
  digitalWrite(OUT2,HIGH);  
}
}

La domanda successiva sul test e il terzo rele non l'ho capita proprio.

Ciao nid,

grazie tante per l'interessamento. Ho letto un po qua e la sul forum che per far rispettare quelle condizioni effettivamente basterebbero gli if...else e stavo leggendo anche qualcosa sullo switch case. Il problema è che non avendo mai programmato nulla se non far accendere o spegnere un led, per me, questo problema sembra insormontabile :D Tornando alle domande, effettivamente quella del controllo è un po contorta...provo subito il tuo sketch e se riesco a far andare qualcosa, cerco di riproporre la doomanda in maniera più chiara...

ti ringrazio tantissimo per l'aiuto!!

Ti consiglio allora di cercare con google questo pdf free della prof. Marsella.
Cerca “tiziana marsella programmare arduino”

GRAZIE!! La prima parte di progetto grazie a voi va alla grande.
Per concludere , e per chiarire la precedente domanda nn forse abbastanza chiara, avrei bisogno che arduino si comporti cosi:
ogni “x” tempo dovrebbe mettere in pausa il loop ke sta eseguendo per “y” tempo e eseguire un altro controllo su un’altro ingresso. La mia idea era: ogni 60minuti non considerare più la parte di programma precedente, porta l’out3 (che ho aggiunto dopo e che è durante il loop fissa su HIGH) su LOW e verifica che In1 e in2 siano low. Se in1 e in2 sono low, riprendi il ciclo senza considerare la seconda parte di programma.Se in1 e/o in 2 sono high, porta out 2 HIGH.

E’ un bel casino…o è solo la mia inesperienza a farmelo sembrar tale??

GRAZIE A TUTTI!!!

Devi usare la millis() e contare quel tuo tempo (60 minuti). Leggi un pò di info su questa istruzione usata assieme ad una variabile che farà da contatore. Un grosso if ti farà eseguire o la parte già vista oppure la parte del "test" sulla terza uscita.