Salve a tutti e grazie in anticipo, vorrei sottoporvi un mio problema di come integrare ulteriori altri 5 pulsanti con altrettante 10 uscite digitali, per questo sistema ho utilizzato un Arduino UNO, faccio una premessa l'elettrovalvola da me usata ha due terminali e necessita di un impulso di 12 volt per aprirsi (impulso minimo di 20 ms) e di un impulso di -12 Volt per chiudersi.
Ho scritto questo codice e mi funziona solo per un comando relativo al PULSANTE1 ed i Led1 e Led2, ma come implemento il resto del codice mi funziona tutto sballato.
Premetto che le due uscite dei led vanno in realtà a comandare due ingressi di un ponte ad H per comandare l'elettrovalvola.
La condizione dovrebbe essere questa;
se P1 è = 0 accendi led1 per 2", se P1 è = 1 accendi led2 per 2".
Ecco il mio codice:
/*
elettrovalvola comandata con un impulso di 1 secondo +12vdc apre
elettrovalvola comandata con un impulso di un secondo invertendo la polarità -12vdc
Le uscite sono collegate in forma on temporizzato e off temporizzato, questo per evitare di alimentare
continuamente l'elettrovalvola.
INGRESSI
A0 = Ingresso comando Valvola 1
A1 = Ingresso comando Valvola 2
A2 = Ingresso comando Valvola 3
A3 = Ingresso comando Valvola 4
A5 = Ingresso comando Valvola 5
USCITE
Pin 2 = OUT VALVOLA 1 ON
Pin 3 = OUT VALVOLA 1 OFF
Pin 4 = OUT VALVOLA 2 ON
Pin 5 = OUT VALVOLA 2 OFF
Pin 6 = OUT VALVOLA 3 ON
Pin 7 = OUT VALVOLA 3 OFF
Pin 8 = OUT VALVOLA 4 ON
Pin 9 = OUT VALVOLA 4 OFF
Pin 10 = OUT VALVOLA 5 ON
Pin 11 = OUT VALVOLA 6 OFF
******************************************************************************
*/
int led1 = 2;
int led2 = 3;
int led3 = 4;
int led4 = 5;
int led5 = 6;
int led6 = 7;
int led7 = 8;
int led8 = 9;
int led9 = 10;
int led10 = 11;
int pinp = 14; //Indirizzo A0
int pinp1 = 15; //Indirizzo A1
int pinp2 = 16; //Indirizzo A2
int pinp3 = 17; //Indirizzo A3
int pinp4 = 18; //Indirizzo A4
int pinp5 = 19; //Indirizzo A5
int statop = 0;
int statop2 = 1;
// Attiva elettrovalvola con inpulso di 2 sec. e ritorna a riposo mentre l'elettrovalvola è in funzione con flusso d'acqua attivato
void setup() {
pinMode (led1, OUTPUT);
pinMode (led2, OUTPUT);
pinMode (led3, OUTPUT);
pinMode (led4, OUTPUT);
pinMode (led5, OUTPUT);
pinMode (led6, OUTPUT);
pinMode (led7, OUTPUT);
pinMode (led8, OUTPUT);
pinMode (led9, OUTPUT);
pinMode (led10, OUTPUT);
pinMode (pinp, INPUT); //Indirizzo A0
pinMode (pinp1, INPUT); //Indirizzo A1
pinMode (pinp2, INPUT); //Indirizzo A2
pinMode (pinp3, INPUT); //Indirizzo A3
pinMode (pinp4, INPUT); //Indirizzo A4
pinMode (pinp5, INPUT); //Indirizzo A5
pinMode(A0, INPUT_PULLUP);
pinMode(A1, INPUT_PULLUP);
pinMode(A2, INPUT_PULLUP);
pinMode(A3, INPUT_PULLUP);
pinMode(A4, INPUT_PULLUP);
pinMode(A5, INPUT_PULLUP);
}
void loop() {
statop = digitalRead (pinp);
if (statop == statop2 ) {
digitalWrite (led1, LOW);
delay(2000);
}
else {
digitalWrite (led1, HIGH);
}
statop2 = digitalRead (pinp);
if (statop2 == statop) {
digitalWrite (led2, LOW);
delay(2000);
}
else {
digitalWrite (led2, HIGH);
}
}