Dubbio su resistenze per deviatore

Ciao a tutti,
qualcuno sa dirmi se questo circuito va bene oppure servono delle resistenze (io ho un semplice deviatore a levetta a tre posizioni, ON OFF ON)?
In rete ho visto che qualcuno le mette e qualcun'altro no, vorrei sapere anche il vostro parere.

Grazie
Leo

in se stesso il circuito andrebbe bene, soffrirebbe di rimbalzo, ma tutti i deviatori e i pulsanti lo fanno
ma prevedi sempre e comunque delle resistenze in serie di limitazione della corrente, che se per caso ti scappa un filo e fai corto almeno non ti bruci il pin di arduino (o il regolatore)
poi devi prevedere anche delle resistenza di pull-down o pull-down se non usi gli input pull-up

Ok, grazie mille! Per ora credo che lascerò così com'è perchè dovrei stravolgere il circuito che ho già saldato. Avevo chiesto questo perchè leggendo lo stato del pin accadeva che nella posizione OFF entrambi i pin erano 0, quando spostavo in posizione ON1 un solo pin era 1, mentre in posizione ON2 avevo entrmbi i pin a 1. Controllando con il tester l'ultimo caso non doveva essere così, ma un solo pin a 1 e l'altro a 0.
Pensavo fosse dovuto all'assenza di resistenze, potrebbe essere così? O è dovuto ad altro?

Leo

ad altro, ma sei sicuro delle posizioni?
o del deviatore?

Guarda, il deviatore dovrebbe essere questo o molto simile.
Quindi credo che se sposto la levetta da una parte mi chiude il circuito tra il pin centrale e uno laterale, viceversa se lo metto dall'altra parte, se lo metto in mezzo mi rimane tutto aperto. Giusto?

Leo

ciao

il deviatore funziona come hai descritto ...

un dubbio non è che nel codice di lettura che hai scritto magari salvi lo stato di ON1 e non lo azzeri ... :slight_smile:

se posti il codice (con gli appositi tag </>) magari gli diamo un'occhiata assieme :slight_smile:

MD

Eccolo

void setup(){
pinMode(9, INPUT);
pinMode(10, INPUT);
Serial.begin(9600);
}
void loop(){
Serial.print("posizioneA");
Serial.println(digitalRead(9));
Serial.print("posizioneB");
Serial.println(digitalRead(10));
delay(500);
}

Leo

e sul monitor seriale cosa leggi?

MD

piccolo EDIT:

sicuramente avrai dei problemi ... perchè quando il deviatore chiude sul pin 9, sul pin 8 non c'è più una tensione di riferimento....

allora il senza modificare troppo il circuito dichiarerei gli INPUT così :

pinMode(9, INPUT_PULLUP);
pinMode(8, INPUT_PULLUP);

e il centrale del tuo deviatore lo colleghi a GND e non più a 5 V...
servirebbe una resistenza dal centrale a GND... però devo essere sincero... quando non ho voglia non la metto... ma il buonsenso dice il contrario.... perciò vedi se riesci ad inserire anche la resistenza per limitare la corrente ...

il resto del programma lo lasci così com'è.

ovvio che le letture saranno al contrario.. ovvero 1 quando il circuito è aperto e 0 quando è chiuso.

fammi sapere se hai risolto :slight_smile:

MD

Sono necessari delle resistenze pullup o pulldown senó il circuito non funziona in modo affidabile. Se colleghi il comune del interruttore a massa servono dei Pullup (esterni o interni), mentre se lo colleghi a +5V servono Pulldown esterni.
Ciao Uwe