danielee73 Inviato 18 Ottobre 2014 Condividi Inviato 18 Ottobre 2014 Ciao a tutti, ho una scheda con 8 relè e vorrei provare a pilotarla con un solo tasto. Mi spiego meglio, vorrei utilizzalo per scambiare i vari relè. Es:spingo il tastino si eccita il primo relè, sipingo di nuovo, si spegne il primo e si eccita il secondo e così via fino a riniziare il ciclo. io ho provato con il primo ma non so come farlo spegnere e attivare il secondo. il programma base è quello tipico del led: const int rele=13; consr int tasto=7; int memoria=0; int stato=0; val=0; void setup(){ pinMode(rele, OUTPUT); pinMode(tasto, INPUT); void loop(){ val=digitalRead(tasto); if((val==HIGH)&&(memoria=LOW){ state=1-state; delay(10); } memoria=val; if (state==1){ digitalWrite(rele, HIHG); }else{ digitalWrite(rele, LOW); } } Link al commento Condividi su altri siti Altre opzioni di condivisione...
RyujiAndy Inviato 19 Ottobre 2014 Condividi Inviato 19 Ottobre 2014 Se posti lo schema elettrico di come hai collegato il tutto questa sera posso buttarti giù il programma Link al commento Condividi su altri siti Altre opzioni di condivisione...
SPIKE666 Inviato 19 Ottobre 2014 Condividi Inviato 19 Ottobre 2014 Secondo me se imposti 8 uscite indipendenti, e col pulsante vai ad incrementare una variabile, e questa variabile controllata da una serie di 8 if la cui affermazione positiva disabilita l'uscita precedente e attiva la successiva magari con un ritardo se ti va, risolvi con un programmino semplice semplice Link al commento Condividi su altri siti Altre opzioni di condivisione...
danielee73 Inviato 19 Ottobre 2014 Autore Condividi Inviato 19 Ottobre 2014 Secondo me se imposti 8 uscite indipendenti, e col pulsante vai ad incrementare una variabile, e questa variabile controllata da una serie di 8 if la cui affermazione positiva disabilita l'uscita precedente e attiva la successiva magari con un ritardo se ti va, risolvi con un programmino semplice semplice ciao grazie di avermi risposto. Siccome sono all'inizi con arduino come faccio a incrementare una variabile con il tasto? Link al commento Condividi su altri siti Altre opzioni di condivisione...
danielee73 Inviato 19 Ottobre 2014 Autore Condividi Inviato 19 Ottobre 2014 questo è link dello schema dei collegamenti. http://www.hobbyist.co.nz/?q=interfacing-relay-modules-to-arduino Link al commento Condividi su altri siti Altre opzioni di condivisione...
RyujiAndy Inviato 19 Ottobre 2014 Condividi Inviato 19 Ottobre 2014 Nello schema che mi hai linkato CI sono 4 relay e TU parli di 8, basta che sappia quali pin intendi utilizzare. Link al commento Condividi su altri siti Altre opzioni di condivisione...
danielee73 Inviato 21 Ottobre 2014 Autore Condividi Inviato 21 Ottobre 2014 Ciao, scusa dell'attesa ma ho poco tempo. Allora è vero quello che dici ma la scheda che ho è più o meno la stessa. Se il programma può funzionare su 4 relè può essere ampliato anche su 8. L'unico cosa che non so, e come fargli fare il ciclo con una variabile che conta fino a 8 e poi azzera per riniziare. ciao Link al commento Condividi su altri siti Altre opzioni di condivisione...
SPIKE666 Inviato 21 Ottobre 2014 Condividi Inviato 21 Ottobre 2014 Ciao, scusa dell'attesa ma ho poco tempo. Allora è vero quello che dici ma la scheda che ho è più o meno la stessa. Se il programma può funzionare su 4 relè può essere ampliato anche su 8. L'unico cosa che non so, e come fargli fare il ciclo con una variabile che conta fino a 8 e poi azzera per riniziare. ciao io farei cosi (sono un neofita non uccidetemi) #define puls 3 // assegnazione pin pulsante #define rele1 4 // assegnazione pin relè #define rele2 5 // assegnazione pin relè #define rele3 6 // assegnazione pin relè #define rele4 7 // assegnazione pin relè #define rele5 8 // assegnazione pin relè #define rele6 9 // assegnazione pin relè #define rele7 10 // assegnazione pin relè #define rele8 11 // assegnazione pin relè int i=0;//variabile controllo void setup() { pinMode(rele1, OUTPUT); //assegnata uscita relè pinMode(rele2, OUTPUT); //assegnata uscita relè pinMode(rele3, OUTPUT); //assegnata uscita relè pinMode(rele4, OUTPUT); //assegnata uscita relè pinMode(rele5, OUTPUT); //assegnata uscita relè pinMode(rele6, OUTPUT); //assegnata uscita relè pinMode(rele7, OUTPUT); //assegnata uscita relè pinMode(rele8, OUTPUT); //assegnata uscita relè pinMode(puls , INPUT); //assegna ingresso pulsante ora digitalWrite(puls, HIGH); //Abilita res. pull-up così da collegare il pulsante tra gnd e il pin 3 } void loop() { if (digitalRead(puls) == LOW) // Pulsante premuto { i++; delay (1000); //ritardo di un secondo puoi toglierlo se ti va } if(i==9) //limite cicli variabile { i=0; } //Abilitazione uscte if(i == 0) { digitalWrite(rele1, LOW); digitalWrite(rele2, LOW); digitalWrite(rele3, LOW); digitalWrite(rele4, LOW); digitalWrite(rele5, LOW); digitalWrite(rele6, LOW); digitalWrite(rele7, LOW); digitalWrite(rele8, LOW); } if(i == 1) { digitalWrite(rele1, HIGH); } if(i == 2) { digitalWrite(rele1, LOW); delay(1000); digitalWrite(rele2, HIGH); } if(i == 3) { digitalWrite(rele2, LOW); delay(1000); digitalWrite(rele3, HIGH); } if(i == 4) { digitalWrite(rele3, LOW); delay(1000); digitalWrite(rele4, HIGH); } if(i == 5) { digitalWrite(rele4, LOW); delay(1000); digitalWrite(rele5, HIGH); } if(i == 6) { digitalWrite(rele5, LOW); delay(1000); digitalWrite(rele6, HIGH); } if(i == 7) { digitalWrite(rele6, LOW); delay(1000); digitalWrite(rele7, HIGH); } if(i == 8) { digitalWrite(rele7, LOW); delay(1000); digitalWrite(rele8, HIGH); } } Link al commento Condividi su altri siti Altre opzioni di condivisione...
danielee73 Inviato 22 Ottobre 2014 Autore Condividi Inviato 22 Ottobre 2014 non preoccuparti, non ti uccido. Intanto grazie. Quando arrivo a casa lo provo. Ti faccio sapere. grazie. Link al commento Condividi su altri siti Altre opzioni di condivisione...
RyujiAndy Inviato 22 Ottobre 2014 Condividi Inviato 22 Ottobre 2014 eccoti lo sketch: int tasto = 2; // Pin Tasto int relay[] = {3, 4, 5, 6, 7, 8, 9, 10}; // Array pin Relays int statotasto = 0; // memoria provvisoria tasto int ultimostatotasto = 0; // vecchia memoria provvisoria tasto int relayattivo = 8; void setup() { pinMode(tasto, INPUT); // definisco ingresso pin tasto for (int a = 0; a < 8; a++) { // ciclo 8x pinMode(relay[a], OUTPUT); // definisco uscite relay } } void loop() { statotasto = digitalRead(tasto); // Leggo stato tasto if (statotasto == 1) ultimostatotasto = 1; // se il tasto è premuto gli lo assegno alla memoria if (statotasto == 0 && ultimostatotasto == 1) { // se la memoria è attiva e lo stato attuale è disattiv o allora ultimostatotasto = 0; // azzero la memoria relayattivo++; // incremento il relay attivo if (relayattivo > 8) relayattivo = 0; // se il relay attivo supera l'8 allrora lo riazzero } for (int a = 0; a < 8; a++) { // ciclo 8x if (a == relayattivo) { // se il ciclo è uguate al relay attivo digitalWrite(relay[a], HIGH); // attivo il relay } else { // altrimenti digitalWrite(relay[a], LOW); // distattivo il relay } } delay(50); } devi solo assegnare i pin esatti. P.S.: scusa il ritardo ma da quando insegno wiring ho un sacco da fare Link al commento Condividi su altri siti Altre opzioni di condivisione...
danielee73 Inviato 23 Ottobre 2014 Autore Condividi Inviato 23 Ottobre 2014 Buongiorno a tutti. Allora ho provato il programma di spike666 e devo dire che funziona bene, ho solo apportato alcune modifiche sui tempi perchè era troppo lento, ma ripeto va benissimo. Oggi se ho tempo voglio provare a caricare quello di Ryujiandy, che è molto breve e usa l'array per risolvere i cicli if. vi faccio sapere Link al commento Condividi su altri siti Altre opzioni di condivisione...
federico18 Inviato 7 Dicembre 2015 Condividi Inviato 7 Dicembre 2015 gradirei avere progetto e sketch di questo progetto.Mi sono iscritto 10 minuti fa e sono rimasto colpito.Colgo l'occasione per ringraziarvi per avermi accettato.Grazie Link al commento Condividi su altri siti Altre opzioni di condivisione...
Messaggi raccomandati
Crea un account o accedi per lasciare un commento
Devi essere un membro per lasciare un commento
Crea un account
Iscriviti per un nuovo account nella nostra community. È facile!
Registra un nuovo accountAccedi
Sei già registrato? Accedi qui.
Accedi Ora