Estoy tratando de utilizar un selector rotativo como el que adjunto a continuación.
He conectado los interruptores del selector de la siguiente manera a mi Arduino:
Contacto 3 del selector a 5v Arduino.
Contacto 4 del selector a pin 3 de Arduino.
Contacto 3 del selector a 5v Arduino.
Contacto 4 del selector a pin 4 de Arduino.
El programa de control son simplemente un par de condicionales en que leo el estado de los pines y determino en que posición está el selector.
Mi problema reside en:
Cuando cambio de posición mi selector me devuelve el resultado esperado pero en ocasiones puntuales me devuelve como si ambos pines (el 4 y el 3) estuvieran recibiendo tensión, lo cual es falso..
No se si lo que estoy tratando de hacer es correcto y si me habré explicado lo suficientemente bien para darme a entender.. En todo caso soy principiante en el tema electrónico y mis conocimientos son aún limitados en este campo.
Cuando estas poniendo a nivel alto la entrada digital a través del selector (5V), tu arduino se entera perfectamente, pero cuando el selector cambia en que estado se queda tu entrada??? 0V?? 5V??
Para que tu arduino detecte que la entrada pasa a 0V tienes que poner una resistencia Pull_DOWN conectada desde la entrada digital a 0V. Prueba con una resistencia de 10K.
Pásate por este link que te lo explica mucho mejor.
Entiendo lo que me propones, anteriormente he usado resistencias en botones específicos para proyectos con Arduino. Para montar el PULL DOWN tal y como propone el artículo no sé como extrapolarlo al selector en cuestión, ya que la conexión a GND no sé como hacerla...
En el selector nada.
Tal y como lo tienes y añades una resistencia de 10K desde la entrada digital a GND.
Has leído el link???
Pon un esquema de tu montaje
Hi,
Para mi la solucion correcta es declarar el pin de entrada como pinMode(pin, PULL_UP) y conectas un lado del switche al pin del arduino y el otro lado del switche a ground. Otra cosa es de anadirle un condensador de .1 uf en parallelo a los contactos para evitar el ruino que se produce cuando cierras/abres el switche. Si no quires usar el pullup interno del arduino entonces anadale una resistencia de 10K con un lado conectada a los +5 voltios del arduino y el otro lado conectalo a pin del contacto que va conectado al arduino.
Primero de todo gracias por vuestra atención y ayuda y sobretodo por compartir vuestro conocimiento conmigo.
Sereno, si leí el artículo que compartiste pero no sabía muy bien como hacer el montaje que allí proponían con el selector.. ya que en ningún momento usaba el GND.
Entonces, he leído los consejos que ha compartido tauro0221 y los he puesto a la práctica. Para ser más exacto el de declararel pin como un INPUT_PULLUP y conectar a GND uno de los bornes del interruptor y el otro al pin digital.
Quiero hacer algunas pruebas más pero creo que diste con la solución tauro0221!
Mañana confirmaré si definitivamente era lo que estaba buscando y os lo haré saber..
Hi,
No te olvides de anadirle el condesador de .1uf en paralelo al los contactos para eliminar lo que se conce como "contact bouncing" o ruido producido por los contactos cuando se cierran y se abren.
He estado haciendo pruebas y parece ser que diste en el clavo!
Funciona exactamente como necesitaba y gracias al artículo que compartió Sereno y a tu explicación clara para el montaje he entendido y aprendido el "por que" del montaje hecho que a mi parecer es lo más importante.
Gracias por vuestra ayuda.
No se si procederá ponerlo en este mismo hilo pero dispongo de otro componente que desearía probar con Arduino... se trata del siguiente:
No consigo encontrar información de como conectarlo como interruptor simple... He hecho algunas pruebas sirviéndome de la información que compartisteis para el selector pero algo debo estar haciendo mal...
Tienes un tester o multímetro? Si cuando pruebas con el tester/multímetro en continuidad ves que el interruptor cambia de continuidad a no continuidad entonces ya lo tienes, luego es repetir lo anterior.