verificare se c e massa pin arduino

ciao ragazzi ho un dubbio... allora ho un pulsante che come chiude a massa fa accendere una lampadina... ecco, io vorrei gestirla con arduino questa lampadina funzionante a 12 volt... pero adesso mi e venuto un dubbio... come faccio a verificare ad arduino che il conttato sia chiuso a massa e quindi far accendere la lampadina da arduino visto che anche se quando aperto in quei fili non scorrono 12 volt ma semplicemente non e un circuito aperto visto che il pulsante nn chiude a massa? non so se sono stato chiaro... in caso contrario lo rispiego... :slight_smile:

non so se sono stato chiaro...

Mica tanto

... se magari metti uno schemino, anche disegnato a mano ... è meglio :wink:

Guglielmo

Bhe intanto non farei giochini con 12V e i pin di arduino anche se lavori con le masse, usi un relè o un ULN2003A

E dai un'occhiata anche ai concetti di pull-up e pull-down.

ecco, come potete vedere nel file allegato io adesso ho questo:
lampanda sempre alimentata a 12 volt, ma la lampadina rimane spenta perche non presente la massa... quando ll interrutore chiude a massa la lampadina si accendera...

con arduino invece vorrei:
rilevare la presenza di massa o meno, quindi se l interruttore è chiuso o aperto e a seconda di questo eccittare un rele per far accendere la lampadina tramite arduino... pero il dubbio che mi sono posto è come fara a riconoscere l apertura o chiusura dell interrutore arduino se comunque anche quando l interrutor è aperto ( quindi circuito aperto, lampadina spenta perche massa non presente) n quei fili ci sono 0 volt anche se non e presente la massa?
sper di essere stato piu chiaro adesso.. :slight_smile:

scusate ma purtroppo non mi fa caricare l allegato..
comunque lo trovate a questo link...

Quello è uno diagramma a blocchi, non uno schema elettrico.

no vabbe e uno schema elettrico solo che non sapevo come rappresentare arduino la lampadina e i rele... comunque si capisce quello che voglio realizzare?

... non capisco ... ma non ti basta pilotare con Arduino un relè che chiude a massa la lampada e la accende ?

In questo modo tu da Arduino controlli il relè ed il relè controlla la lampada.

Guglielmo

FORSE ho capito cosa vuoi fare.

La lampadina la collegherai tramite un relè, quindi con l'Arduino piloterai il relè.

L'interruttore invece lo collegherai ad un ingresso di Arduino da una parte ed a GND dall'altra.
Quando l'interruttore è chiuso, l'ingresso al quale lo hai collegato sarà a GND quindi un digital read ti darà ZERO.
Fino a qui ci siamo.
Adesso ti chiedi: "ma quando l'interruttore è aperto, l'ingresso sarà collegato a nulla... come faccio a distinguere questo caso da quello in cui è chiuso e quindi l'ingresso è collegato a GND visto che in entrambi i casi avrei 0 volt?".
E' questo che ti chiedi?

Se ci siamo, allora la risposta è semplice... un ingresso non deve mai rimanere collegato "a niente" se vuoi avere delle letture affidabili. Non è vero che quando l'interruttore è aperto hai un collegamento a "zero volt" come quando è chiuso.
Per convincerti di questo, prova a collegare un interruttore ad un ingresso analogico da una parte ed a GND dall'altra e guarda cosa leggi.
Quando è chiuso leggi zero.
Quando è aperto guarda un po' cosa leggi.

La soluzione, dicevamo, è semplice.
Se vuoi usare un interruttore che chiude verso GND, allora l'ingresso lo devi collegare anche a +5 volt ma MAI DIRETTAMENTE altrimenti quando chiudi l'interruttore mandi direttamente i +5 V verso GND.
Si usa la cosiddetta resistenza di pull-up.
Quindi collega questo ingresso ad un resistore (usane uno da 10 kohm) e l'altro lato del resistore al + 5 V.
Collega l'ingresso anche all'interruttore, come abbiamo visto prima.
Quando l'interruttore è aperto, l'ingresso vedrà ora i + 5 V.
Quando lo chiudi, invece, l'ingresso sarà collegato direttamente a GND e vedrà 0.

Una volta che ti sei fatto convinto, potrai usare la comoda funzione di pullup interno di Arduino, ottenendo lo stesso effetto ma senza la necessità di collegare l'ingresso ai +5 V tramite il resistore esterno: tutto verrà fatto "internamente" e ti potrai limitare a collegare all'ingresso solo il tuo interruttore verso GND.
Basta impostare il pinMode come input pullup invece che come input.
Se vuoi usare l'ingresso 4, metti nel setup:

pinMode (4, INPUT_PULLUP);

paulus1969:
FORSE ho capito cosa vuoi fare.

La lampadina la collegherai tramite un relè, quindi con l'Arduino piloterai il relè.

L'interruttore invece lo collegherai ad un ingresso di Arduino da una parte ed a GND dall'altra.
Quando l'interruttore è chiuso, l'ingresso al quale lo hai collegato sarà a GND quindi un digital read ti darà ZERO.
Fino a qui ci siamo.
Adesso ti chiedi: "ma quando l'interruttore è aperto, l'ingresso sarà collegato a nulla... come faccio a distinguere questo caso da quello in cui è chiuso e quindi l'ingresso è collegato a GND visto che in entrambi i casi avrei 0 volt?".
E' questo che ti chiedi?

Se ci siamo, allora la risposta è semplice... un ingresso non deve mai rimanere collegato "a niente" se vuoi avere delle letture affidabili. Non è vero che quando l'interruttore è aperto hai un collegamento a "zero volt" come quando è chiuso.
Per convincerti di questo, prova a collegare un interruttore ad un ingresso analogico da una parte ed a GND dall'altra e guarda cosa leggi.
Quando è chiuso leggi zero.
Quando è aperto guarda un po' cosa leggi.

La soluzione, dicevamo, è semplice.
Se vuoi usare un interruttore che chiude verso GND, allora l'ingresso lo devi collegare anche a +5 volt ma MAI DIRETTAMENTE altrimenti quando chiudi l'interruttore mandi direttamente i +5 V verso GND.
Si usa la cosiddetta resistenza di pull-up.
Quindi collega questo ingresso ad un resistore (usane uno da 10 kohm) e l'altro lato del resistore al + 5 V.
Collega l'ingresso anche all'interruttore, come abbiamo visto prima.
Quando l'interruttore è aperto, l'ingresso vedrà ora i + 5 V.
Quando lo chiudi, invece, l'ingresso sarà collegato direttamente a GND e vedrà 0.

Una volta che ti sei fatto convinto, potrai usare la comoda funzione di pullup interno di Arduino, ottenendo lo stesso effetto ma senza la necessità di collegare l'ingresso ai +5 V tramite il resistore esterno: tutto verrà fatto "internamente" e ti potrai limitare a collegare all'ingresso solo il tuo interruttore verso GND.
Basta impostare il pinMode come input pullup invece che come input.
Se vuoi usare l'ingresso 4, metti nel setup:

pinMode (4, INPUT_PULLUP);

si, proprio questo volevo fare, grazie paulus di avermi capito... :slight_smile: comunque quindi mettendo arduino in funzione pullup ho bisogno di mettere solo una resistenza da 10k tra arduino e interrutore gnd? inoltre devo collegarlo ad un ingresso digitale e non analogico vero? ( cosi mi posso lasciare l analogico per qualche altro sensore)... inoltre per leggere se l interrutore è aperto o chiuso mi basta il semplice comando digital read?

Non serve resistenza se attivi il pullup interno. devi mettere il pulsante tra entarat digitale e massa.
Il relé lo devi pilotare tramite un transistore e mettere il diodo di protezione.

Ciao Uwe

Ti basta un semplice digital read.
1 = interruttore aperto
0 = interruttore chiuso

Comunque quelle prove con un ingresso analogico falle lo stesso, ti renderai conto in pratica di cosa vuol dire lasciare un ingresso collegato al nulla.