Commutatore 6 posizioni

tonioB:
Dovrei dare diverse impostazioni ad un mio circuito con il nano.
Come è meglio collegare il commutatore ?
Avevo pensato di usare più uscite digitali ma per metterle a 0 tutte tranne una ocme posso fare? va bene anche il contrario ovviamente.

Parli di "commutatore" quindi di un input verso Arduino, poi di "uscite digitali" per cui i termini generano un poco di confusione... :wink:

Se parliamo di un commutatore a 6 posizioni e tu vuoi leggere in quale posizione si trova, puoi usare 6 ingressi digitali come ti è stato consigliato, ma la cosa secondo me più semplice/efficace è usare un partitore resistivo ed UN ingresso ANALOGICO. Niente "uscite digitali" :wink: ma in questo caso sono ingressi.

Io per un mio progetto relativo ad un pannello per Flight Simulator ho realizzato un circuitino semplice per leggere lo stato di alcuni commutatori, in questo caso a 4 posizioni ma il concetto si può estendere anche a 6 (non consiglierei di più). Lo schema nel mio caso è questo:

Quindi nel codice ho creato una funzione che mi converte il valore letto dal pin ("cur") nel valore corrispondente alla posizione del commutatore (per me da 0 a 3):

int Analog2Rotary(int cur) {
    if (cur < 200)  // Posizione 0 (GND)
      return 0;
    else if (cur < 500)  // Posizione 1 (OFF)
      return 1;
    else if (cur < 900)  // Posizione 2 (CONT)
      return 2;
    else  // Posizione 3 (FLT)
      return 3;
}

Tu devi solo espandere il partitore aggiungendo 2 resistenze e cambiando quindi i valori delle if() aggiungendo due nuovi casi e restituire quindi un intero tra 0 e 5.