Come collegare deviatore a leva?

ragazzi ho questo deviatore a leva…non sò come collegarlo ad arduino con i 3 piedini… mi aiutate per piacere?
Mi serve per attivare/disattivare un blocco di codice… esempio + banale…led acceso/spento.grazie

deviatore.jpg

È sempre collegato il centrale con uno dei pin esterni. Ciao Uwe [EDIT] spiego meglio; a secondo della posizione della levetta é collegato il centrale con uno dei due pin esterni. Spostando la lega cambia il pin collegato col centrale.[/EDIT]

il pin centrale lo colleghi ad un pin di arduino e uno degli altri due lo attacchi al gnd. Poi, nel setup() ci scrivi questo codice:

void setup() {
  pinMode(#, INPUT); //Al posto di # ci metti il numero del pin
  digitalWrite(#, HIGH);
  ...
  ...
}

Con quel codice abiliti un resistore interno al microcontrollore che porta il potenziale del pin a 5V nel caso in cui l'interruttore sia aperto. Quando invece si chiude il potenziale va a 0V.

http://it.wikipedia.org/wiki/Deviatore http://it.wikipedia.org/wiki/Resistenza_pull-up

Un'alternativa è di collegare un estremo del deviatore a 5V, l'altro a GND e il centrale al pin di arduino. Con questo metodo puoi togliere la funzione digitalWrite dal codice scritto sopra.

Grazie ragazzi e per conoscore lo stato dell interrutore? High e Low?? Sui pin Analogici? per esempio se spostato su On deve svolgere l'operazione A altrimenti se su OFF l operazione B. grazie

Ho modificato il post precedente, c'ho messo un'alternativa di collegamento.

Per la seconda domanda ti consiglio di leggerti questi link, poi se hai ancora dubbi chiedi pure:

http://arduino.cc/en/Reference/DigitalRead http://arduino.cc/en/Reference/If http://arduino.cc/en/Reference/Else

Un esempio potrebbe essere questo:

if (digitalRead(#)) //Se lo stato logico del pin # è alto {
  //esegui operazioni A
}
else { //Altrimenti
  //esegui operazioni B
}

Il blocco else lo puoi anche togliere, dipende da cosa devi fare.

I pin di ingresso analogico, oltre che poter essere utilizzati come normali pin, sono anche in grado di convertirti il valore di tensione che gli applichi in un numero compreso fra 0 e 1023. Per la tua applicazione non servono.

Infine se vuoi approfondire il C++ dai un'occhiata a questo link: http://programmazione.html.it/guide/leggi/34/guida-c/

Puoi usare un pin digitale usando l'istruzione digitalRead; metti inoltre una resistenza di pulldown su quel pin in modo che quando il deviatore è aperto non ti segna valori errati.

@Janos: occhio, se setti il pin come input perchè poi usi digitalWrite su quel pin?

grazie gentilissimi e disponibili come sempre ;) siete la mia salvezza ;)

Per attivare il pull-up...

If the pin is configured as an INPUT, writing a HIGH value with digitalWrite() will enable an internal 20K pullup resistor (see the tutorial on digital pins). Writing LOW will disable the pullup. The pullup resistor is enough to light an LED dimly, so if LEDs appear to work, but very dimly, this is a likely cause. The remedy is to set the pin to an output with the pinMode() function.

Ni niente... XD

M'era sfuggita sta cosa, vabbè.... figuremm...... :) C'è sempre qualcosa da imparare

ragazzi, anch'io dovrei fare praticamente la stessa cosa, ovvero usare un deviatore a leva, per fare in modo che arduino esegua una parte di codice, piuttosto che un'altra. ma non ho capito bene le due soluzioni proposte da janos... in pratica quando la leva mette in contatto i 5v con il pin, con digitalRead() leggo HIG e posso far partire il codice, giusto? mentre se la leva apre il contatto tra 5V e pin, allora leggo LOW?

ma da qualche parte avevo letto che non è bene collegare direttamente un pin ai 5v... però sicuramente non ho capito la faccenda!