con un pulsante comandare 2 pin

ciao, vi chiedo un aiuto! :-* :’(

sto cercando di fare una centralina per rabboccare i sottovasi delle piante carnovore.
ho fatto questo semplice Sketch

#include <Wire.h>

const int relePompa = 8;

const int Puls1 = 10; // Collegamento pulsante 1
const int Puls2 = 11; // Collegamento pulsante 2

const int releValvola1 = 3;   // Collegamento RELE1
const int releValvola2 = 5;   // Collegamento RELE2

unsigned long tempo1;
unsigned long tempo2;

void setup() {
 
 
  pinMode(releValvola1, OUTPUT);     // Impostazione PIN uscita
  pinMode(releValvola2, OUTPUT);     // Impostazione PIN uscita
  pinMode(relePompa, OUTPUT);     // Impostazione PIN uscita
  pinMode(Puls1, INPUT);     // Impostazione PIN ingresso
  pinMode(Puls2, INPUT);     // Impostazione PIN ingresso

}

void loop() {
  if (digitalRead(Puls1) == LOW) // Pulsante 1 premuto
  {
     if ((releValvola1) && (millis()>=tempo1))
  digitalWrite(releValvola1, HIGH);  // Accensione rele 1
 
  
  }
  else
  {
  digitalWrite(releValvola1, LOW);
 tempo1=millis() + 3000;

  }
  /*****************pulsante2*****/
    if (digitalRead(Puls2) == LOW) // Pulsante 1 premuto
  {
     if ((releValvola2) && (millis()>=tempo2))
  digitalWrite(releValvola2, HIGH);  // Accensione rele 1
 
  
  }
  else
  {
  digitalWrite(releValvola2, LOW);
 tempo2=millis() + 3000;

  }
}

io dovrei aggiungere la voce “relePompa” ad ogli pulsante. se la metto solo sul pulsante 1 Esempio:

 if (digitalRead(Puls1) == LOW) 
  {
     
  digitalWrite(releValvola1, HIGH); 
 digitalWrite(relePompa, HIGH);
  
  }
  else
  {
  digitalWrite(releValvola1, LOW);
 digitalWrite(relePompa, LOW);

  }

Tutto ok Ma se la inserisco anche nel pulsanre 2 va insieme il pin relePompa. Come devo Fare?
secondo probrema :-[
come si fa a mettere sia il pin “releValvola1, relePompa” sella funzione millis di “tempo1”

Spero che si capisca :’(

devi contare gli impulsi dati da quel pulsante da 0 fino a 3 che azzera il contatore

poi usa un debounce che non hai messo ed è importante

se non sai cosè

se hai bisogno di temporizzare l'accensione

Grazie per avermi risposto!
Mettiamo caso che ci sono 5 sottovasi vuoti
il relè pompa deve rimanere ecitato fin quando i relè delle valvole non finiscono (l'interruttore a galleggiante si apre)
non posso contare gli impulsi. sbaglio?

Tu hai detto

con un pulsante comandare 2 pin

Hai specificato che su questi 2 pin ci sono 2 pompe, non vedo come potresti azionare 2 apparati distinti con 1 pulsante solo senza contare il numero delle pigiate su questo bottone.

usando un contatore di impulsi purtroppo si accenderà per un attimo anche la pompa non voluta, un altra soluzione più elegante e più complessa è pigiare il pulsante n volte entro 5 secondi

es:

pigio una volta, il sistema aspetta per 5 secondi, se non ci sono altri input aziona la pompa 1
pigio 2 volte, il sistema aspetta per 5 secondi, se non ci sono altri input aziona la pompa 2

il tempo che questa pompa deve stare accesa lo sai tu

Altrimenti metti 2 linee distinte e ti levi dai guai

mi sono spiegato male Scusa.
ci sono 5 interruttori di livello (per comodità li ho chiamati pulsanti) ogni interruttore di livello comanda una elettrovalvola. Quando il galleggiante si chiude deve accendere relè elettrovalvola e rele pompa.
La pompa è una ci sono 5 elettovalvole che distribuiscono l'acqua dove serve.

Ok capito, in realtà per tutto questo processo arduino non serve (se non gestisci anche orari, temperature, umidità, ecc ecc), lasciando tutto alimentato manca solo un presostato a valle della pompa che la aziona appena si apre una delle 5 elettrovalvole e la spegne appena c'è pressione ovvero quando i galleggianti hanno chiuso tutte le elettrovalvole.

Tu vuoi riportare tutto dentro arduino?

  • i galleggianti dentro 5 input?
  • le valvole dentro 5 output?
  • la pompa dentro 1 output?

crea una variabile booleana che controlla i galleggianti con un OR.... boolean gallegg
un IF indipendente che controlla gallegg se TRUE tiene accesa la pompa altrimenti spegnila

ora non ti resta che sapere quale elettrovalvola aprire
e lo fai con 5 IF

oppure

loop()
boolean gall_1 = digitalRead(Puls1); //se gall_1 è chiuso sarà TRUE altrimenti FALSE
boolean gall_2 = digitalRead(Puls2);
boolean gall_3 = digitalRead(Puls3);
boolean gall_4 = digitalRead(Puls4);
boolean gall_5 = digitalRead(Puls5);

// basta che un galleggiante sia chiuso per accendere la pompa acqua indifferentemente dallo stato delle elettrovalvole
if(gall_1 || gall_2 || gall_3 || gall_4 || gall_5) pompa HIGH else LOW

// dico quale elettrovalvola deve aprirsi o chiudersi copiando lo stato del galleggiante
digitalwrite (elettrovalvola_1, gall_1);
digitalwrite (elettrovalvola_2, gall_2);
digitalwrite (elettrovalvola_3, gall_3);
digitalwrite (elettrovalvola_4, gall_4);
digitalwrite (elettrovalvola_5, gall_5);

il problema che avevi prima era la pompa che si spegneva quando incontrava negli IF un elettrovalvola chiusa

così dovrebbe funzionare

ciao

Grazzie mille!!! Se riesco domani lo provo!!! Si sarebbe stato tutto più semplice con 4 relè senza arduino...... Però piano piano volevo aggiungere, temporizzatore, gradi e umidità. Per ora sto usando un temporizzatore esterno.
la pompa è una pompa a membrana (quella per i camper) a già un presostato che interviene a 3 bar, però preferisco spegnerla con un relè. Grazie ancora!!

Mi puoi aiutare perpiacere :-[ :-[ non riesco proprio ad inserier il relè pompa insieme a rele1, rele2, e rele3.

#include <Wire.h>
const int pompa = 8;  // rele pompa
const int Puls1 = 9; // Collegamento pulsante 1
const int Puls2 = 10; // Collegamento pulsante 2
const int Puls3 = 11; // Collegamento pulsante 2
const int RELE1 = 3;   // Collegamento RELE1
const int RELE2 = 4;   // Collegamento RELE2
const int RELE3 = 5;   // Collegamento RELE2

void setup() {
 

  pinMode(RELE1, OUTPUT);     // Impostazione PIN uscita
  pinMode(RELE2, OUTPUT);     // Impostazione PIN uscita
  pinMode(RELE3, OUTPUT);     // Impostazione PIN uscita
  pinMode(pompa, OUTPUT);     // Impostazione PIN uscita
  pinMode(Puls1, INPUT);     // Impostazione PIN ingresso
  pinMode(Puls2, INPUT);     // Impostazione PIN ingresso
  pinMode(Puls3, INPUT);     // Impostazione PIN ingresso

  digitalWrite(Puls1, HIGH); // Abilità res. pull-up
  digitalWrite(Puls2, HIGH); // Abilità res. pull-up
  digitalWrite(Puls3, HIGH); // Abilità res. pull-up
  digitalWrite(pompa, HIGH); // Abilità res. pull-up
  }

  void loop() {
  
  if (digitalRead(Puls1) == LOW) // Pulsante 1 premuto
  { 
  digitalWrite(RELE1, HIGH);  // Accensione rele 1 e relePompa
  }
  else
  {
  digitalWrite(RELE1, LOW);
  }
  if (digitalRead(Puls2) == LOW) // Pulsante 2 premuto
  {
  digitalWrite(RELE2, HIGH);  // Accensione rele 2 e relePompa
  }
  else
  {
  digitalWrite(RELE2, LOW);
  }
  if (digitalRead(Puls3) == LOW) // Pulsante 3 premuto
  {
  digitalWrite(RELE3, HIGH);  // Accensione rele 3 e relePompa
  }
  else
  {
  digitalWrite(RELE3, LOW);
  }
}