Azionamento di 4 motori

Salve ho bisogno di una mano, devo utilizzare arduino per far cambiare colori alla mia stampante 3d, ho fatto in modo in 4 coordinate diverse di mettere dei pulsanti per azionare, ad ognuno di quelli volevo azionare un motore diverso, adesso un mio amico è riuscito a programmare i relè per poter attivare il segnale per ogni motore solo che mi rimane un problema, io il segnale di 12v voglio che vada verso un solo motore per volta, quindi selezionare un pulsante per l’attivazione del motore corrispondente mi deve non mandare il segnale su gli altri tre motori rimanenti, come posso fare?

#define BUTTON1 13 // Assegna pin13 a BUTTON1
#define BUTTON2 11 // Assegna pin11 a BUTTON2
#define BUTTON3 9 // Assegna pin9 a BUTTON
#define BUTTON4 7 // Assegna pin7 a ON4 button
#define L1 A0 // Assegna pinA0 a L1
#define L2 A1 // Assegna pinA1 a L2
#define L3 A2 // Assegna pinA2 a L3
#define L4 A3 // Assegna pinA3 a L4

// variabili per mantenere lo stato dei motori e dei pulsanti
int valButton1 = LOW;
int valButton2 = LOW;
int valButton3 = LOW;
int valButton4 = LOW;
int valMotore1 = LOW;
int valMotore2 = LOW;
int valMotore3 = LOW;
int valMotore4 = LOW;

void setup () {
pinMode (BUTTON1, INPUT); // Assegna i BUTTON come INGRESSI
pinMode (BUTTON2, INPUT);
pinMode (BUTTON3, INPUT);
pinMode (BUTTON4, INPUT);
pinMode (L1, OUTPUT); // Assegna L1, L2, L3, L4 come USCITE
pinMode (L2, OUTPUT);
pinMode (L3, OUTPUT);
pinMode (L4, OUTPUT);
}

void loop() {
/*
val_button1 = digitalRead(ON1); // legge il valore dell’input e lo conserva
val_button2 = digitalRead(ON2); // legge il valore dell’input e lo conserva
val_button3 = digitalRead(ON3); // legge il valore dell’input e lo conserva
val_button4 = digitalRead(ON4); // legge il valore dell’input e lo conserva
*/
/MOTORE 1/
int button1 = digitalRead(BUTTON1);
if (button1 == HIGH && valButton1 == LOW) { // controlla che il pulsante sia premuto (HIGH) e che precedentemente fosse LOW
valMotore1 = !valMotore1; // cambia stato motore
}
digitalWrite(L1, valMotore1); // scrive stato motore
valButton1 = button1; // fissa stato pulsante su variabile globale
/MOTORE 2/
int button2 = digitalRead(BUTTON2);
if (button2 == HIGH && valButton2 == LOW) { // controlla che il pulsante sia premuto (HIGH) e che precedentemente fosse LOW
valMotore2 = !valMotore2; // cambia stato motore
}
digitalWrite(L2, valMotore2); // scrive stato motore
valButton2 = button2; // fissa stato pulsante su variabile globale
/MOTORE 3/
int button3 = digitalRead(BUTTON3);
if (button3 == HIGH && valButton3 == LOW) { // controlla che il pulsante sia premuto (HIGH) e che precedentemente fosse LOW
valMotore3 = !valMotore3; // cambia stato motore
}
digitalWrite(L3, valMotore3); // scrive stato motore
valButton3 = button3; // fissa stato pulsante su variabile globale
/MOTORE 4/
int button4 = digitalRead(BUTTON4);
if (button4 == HIGH && valButton4 == LOW) { // controlla che il pulsante sia premuto (HIGH) e che precedentemente fosse LOW
valMotore4 = !valMotore4; // cambia stato motore
}
digitalWrite(L4, valMotore4); // scrive stato motore
valButton4 = button4; // fissa stato pulsante su variabile globale

/*
if (val_button1 == HIGH) { // controlla che l’input sia HIGH (pulsante premuto)
stato_motore1 = !stato_motore1;
}
if (stato_motore1 == 1) { // e cambia lo stato del motore
digitalWrite(L1, HIGH); // accende il motore
}
else {
digitalWrite(L1, LOW); //spegne il motore
}

if (val_button2 == HIGH) {
stato_motore2 = !stato_motore2;
}
if (stato_motore2 == 1) {
digitalWrite(L2, HIGH); // accende il motore
}
else {
digitalWrite(L2, LOW); //spegne il motore
}

if (val_button3 == HIGH) {
stato_motore3 = !stato_motore3;
}
if (stato_motore3 == 1) {
digitalWrite(L3, HIGH); // accende il motore
}
else {
digitalWrite(L3, LOW); //spegne il motore
}

if (val_button4 == HIGH) {
stato_motore4 = !stato_motore4;
}
if (stato_motore4 == 1) {
digitalWrite(L4, HIGH); // accende il motore
}
else {
digitalWrite(L4, LOW); //spegne il motore
}
*/
}

Buonasera e benvenuto :slight_smile: ,
essendo il tuo primo post nella sezione Italiana del forum, nel rispetto del regolamento di detta sezione (… punto 13, primo capoverso), ti chiedo cortesemente di presentarti IN QUESTO THREAD (spiegando bene quali conoscenze hai di elettronica e di programmazione … possibilmente evitando di scrivere solo una riga di saluto) e di leggere con molta attenzione tutto il su citato REGOLAMENTO

… poi, in conformità al suddetto regolamento, punto 7, devi editare il tuo post qui sopra (quindi NON scrivendo un nuovo post, ma utilizzando il bottone More → Modify che si trova in basso a destra del tuo post) e racchiudere il codice all’interno dei tag CODE (… sono quelli che in edit inserisce il bottone con icona fatta così: </>, tutto a sinistra).

In pratica, tutto il tuo codice dovrà trovarsi racchiuso tra due tag: [code] _il _tuo_ codice_ [/code] così da non venire interpretato e non dare adito alla formazione di caratteri indesiderati o cattiva formattazione del testo. Grazie.

Guglielmo

P.S.: Ti ricordo che, purtroppo, fino a quando non sarà fatta la presentazione nell’apposito thread e sistemato il codice come da regolamento, nessuno ti potrà rispondere, quindi ti consiglio di fare il tutto al più presto. :wink: