Oggi ho ripreso le strisce di led acquistate nell’ultima fiera dell’elettronica di Busto Arsizio per realizzare un’altro tipo di semaforo, quello che darà il via alle tue competizioni automobilistiche.
Potrai simulare le vere gare di formula 1 con questo semaforo, e potresti ampliare l’uso di arduino per controllare le false partenze o il miglior giro, questi sono solo alcune delle idee che potresti sviluppare per la tua pista di automobili.
Occorrente
- 1 arduino ( Duemilanove/uno/mega/mini )
- 3 led rossi
- 1 led verde
- 1 resistenza da 470Ω
- 1 resistenza da 330Ω
- 1 pulsante
Assembla la parte elettronica
Segui questo schema per collegare la parte elettronica:
tutti i led hanno il catodo comune che attraversa la resistenza di protezione da 470Ω prima di congiungersi al polo negativo (GND) di arduino.
Il pulsante ga un polo connesso al positivo (+5v) di arduino e l’altro al polo negativo attraverso una resistenza di 330Ω, a quest’ultimo polo è anche collegato il pin A5, ingresso analogico 5 di arduino, che utilizzerai per dare lo start al semaforo.
Lo sketch
ecco cosa devi caricare su Arduino:
/* * Semaforo per autopiste F1 * * Autore: Mauro Alfieri * Tw: @mauroalfieri * Web: www.mauroalfieri.it */ int pinLed[] = {5,4,3,2}; int time_between_led = 1000; int time_all_on = 2000; int pulsante = A5; void setup() { for ( int i=0; i<4; i++) { pinMode( pinLed[i],OUTPUT); digitalWrite( pinLed[i],LOW ); } pinMode( pulsante,INPUT); } void loop() { if ( analogRead( pulsante ) > 1000) { for ( int i=0; i<4; i++) { digitalWrite( pinLed[i],HIGH ); delay( time_between_led ); } delay( time_all_on ); } for ( int i=0; i<4; i++) { digitalWrite( pinLed[i],LOW ); } }
non è complesso, te lo spiego linea per linea come in tutti i miei tutorial perchè tu possa comprenderlo facilmente ed eseguire tutte le modifiche che ritieni opportune:
linea 09: definisci un array di tipo integer con i pin a cui hai collegato i led, se invece di 4 pin ne usi 5 ricordati di aggiungerlo a questo array;
linea 11: imposta il tempo ( in millisecondi ) che deve trascorrere tra l’accensione di un led ed il successivo;
linea 12: imposta il tempo ( in millisecondi ) che deve trascorrere dal momanto che tutti i led sono accesi ed il momento in cui tutti si spengono;
linea 14: definisci a quale pin analogico hai collegato il pulsante, in questo esempio A5;
linea 17: esegui un ciclo di tipo for all’interno del quale inizializzi le attività previste per i 4 pin a cui sono connessi i led nella fase di setup();
linea 18: imposta la modalità di funzionamento di ciascun pin, pinMode( pin,mode ), ad OUTPUT, indiche ad arduino di utilizzare come output i pin 2,3,4,5;
linea 19: imposta l’uscita di ciascun pin a LOW ( 0v ) in modo che tutti i pin siano spenti in questa fase;
linea 21: imposta il pin A5 come INPUT ossia indica ad arduino di attendersi su questo pin un segnale in input;
linea 25: ci sono due istruzioni annidate, partendo dal centro la funzione analogRead( pin ), legge il valore dal pin analogico A5, l’istruzione if confronta questo valore con 1000, in pratica l’ingresso A5, come tutti gli ingressi di Arduino varia da 0 a 1023, 0 quando è collegato a massa (GND) e 1023 quando è collegato ai +5v, in questa configurazione quando premi il pulsante porti il pin arduino A5 ad essere connesso al positivo (+5v) e quindi leggi il valore 1023, quindi la condizione if restituisce vero, si dice che è verificata, quando premi il pulsante.
linea 26: esegui un ciclo for come quello presentato alla linea 17, questa volta il ciclo viene eseguito solo se hai premuto il pulsante, vedi riga 25;
linea 27: accendi il led corrispndente alla posizione i della patrice pinLed inviando HIGH ( 255 ) sul pin corrispondente;
linea 28: attendi il tempo impostato alla linea 11, quello di attesa tra l’accensione di un led ed il successivo;
linea 30: attendi il tempo impostato alla linea 12, in questa fase sei fuori dal ciclo for per cui tutti i led sono stati accesi e devi attendere il tempo impostato prima di spegnerli tutti, tempo che ti occorre per la partenza delle auto;
linee 32-34: sono linee oltre il controllo if sul pulsante, arduino le esegue ad ongi loop() e la loro funzione ha il solo scopo di mantenere i led spenti, in fondo la gara si sta svolgendo 🙂
Ed ecco il video:
Pronti, in posizione, rombo dei motori ……. e………VIA !!!
Buona competizione.
23 commenti
Vai al modulo dei commenti
Salve
Volendo fare lo stesso circuito ma con dei relè a 220V ?
Autore
Ciao Danilo, dovrai modificare la parte elettronica e qualche riga nello sketch, io ti consiglio la relè shield venduta da robot-domestici che io uso nella centralina di irrigazione ha già i 4 relè a 220v di cui hai bisogno.
Ciao Mauro
Avevo pensato anche io alla relè shield con 4 relè.
Perdonami l’ignoranza …..ma come faccio a far funzionare il tutto ?Devo alimentare un semaforo per un kartodromo vicino casa con la stessa tempistica di quello postato nel filmato solo che a 220 v .
Ti sarei infinitamente grato se tu potessi aiutarmi a realizzare questa automazione.
Grazie
Autore
Ciao Danilo,
io posso fornirti suggerimenti se qualcosa non ti è chiaro e fornisco corsi on-line e articoli gratuiti su arduino che puoi leggere e dai quali puoi prendere mille spunti e idee.
Cosa differente sono i progetti su commissione, in cui sono io a realizzare quello che ti occorre.
Hai ragione Mauro …questo è un impegno che ho preso io ed è giusto che ci dia la testa io. Sarà la scusa buona per imparare una cosa nuova . Intanto aspetto che mi arrivi il kit e cerco di mettere in piedi il sistema anche con l’aiuto dei tuoi tutorial e vediamo che ne esce fuori.
Grazie per la disponibilità
Autore
Ottimo approccio Danilo, ribadisco che se qualcosa dei tutorial non ti é chiaro io sono a disposizione.
Ho risolto …un piccola modifica allo sketch ed ho collegato il modulo a 4 relè sull’arduino uno .
Funziona alla perfezione , l'unica cosa non cosa inventarmi per il pulsante visto che non posso lasciare quello piccino da basetta. Te cosa mi consigli ?
Autore
Ciao Danilo,
benissimo. Se ti va di condividere il progetto puoi inviarmi alla casella info del blog le foto, la descrizione e lo sketch che hai realizzato.
Per il pulsante ti basta un qualsiasi pulsante N/A ( normalmente aperto ) puoi scegliere tra i migliaia di pulsanti di questo tipo tipo disponibili sui siti di materiale elettronico ed elettrico.
Ok appena metto in funzione il tutto ti invio il progetto
Autore
Grazie Danilo
Intanto ecco lo sketch
:: codice rimosso in automatico ::
Autore
Ciao Danilo,
se desideri condividere il tuo codice ed il tuo lavoro ti invito a inviarmi foto, video, descrizione e codice alla casella info del blog.
Grazie per la voglia di condividere
salve Danilo volevo sapere se hai ultimato il progetto dovrei realizzare anche io un semaforo per kartodromo
salve
anchio sarei interessato allo schema o sketch per comandare un semafoto usando i relè
grazie
Autore
Ciao Mauro,
puoi utilizzare schema e sketch presentato in questo articolo sostituendo al posto dei led degli optoisolatori che a loro volta controllino dei relay.
ciao Mauro e grazie per la risposta
ho appena provato a sostituire i led con un modulo da 4 relay
diciamo che funziona, ma al contrario
mi spiego, appena lo alimento tutti i relay ti attivano e nel momento che premo il pulsante, uno ad uno si spengono (in pratica l’uscita dei relay devo invertire da NO a NC) ma credo che si rovinano restando sempre attivati
cosa devo cambiare per fare si che si attivano slo mentre premo il pulsante
grazie ancora
Autore
Ciao Mauro,
dovrai invertire il comando impartito ai led, se leggi lo sketch è spiegato ogni riga cosa fa e puoi imparare rapidamente a fare le modifiche che ti occorrono.
ciao Mauro
sono ritornato ora dopo mesi sul progetto del semaforo con i relay.
non ho capito bene cosa devo cambiare, sicuramente una cavolata, ma non trovo l’inghippo.
grazie
Autore
Ciao Mauro,
hai letto lo sketch ? lo hai capito ?
mi può aiutare grazie
Autore
Ciao Mauro,
non comprendo come poterti aiutare oltre a quello che ti ho scritto più volte.
Ddevi solo invertire il comando che impartisci ai relay, se non ricordo male, dopo mesi.
Finalmente un bel sito per chi come me è alle prime armi con Arduino !!
Grazie Davvero !!
Autore
Grazie Demis !!!