Pic
shadow

Uno de los problemas que pueden surgir a la hora de llevar a cabo un proyecto con Arduino es quedarnos sin pines libres. Podemos utilizar placas mayores, con más pines, pero a veces no merece la pena para lo que queremos hacer o se escapa de nuestro presupuesto. Vamos a ver una forma de reducir el numero de pines necesarios para leer botones. Concretamente en este ejemplo vamos a leer once botones con un sólo pin de Arduino.

El pin que utilizaremos será una entrada analógica de Arduino, lo que vamos a hacer es montar un circuito en el que la salida de los botones no estará directamente conectada a Arduino, sino que pasará primero por una resistencia, esta resistencia será distinta en cada uno de los botones, de esa forma sólo tendremos que leer el valor de la entrada para saber a que botón corresponde.

  • Protoboard Ampliar
    Esquema Ampliar

Las resistencias que están en vertical sirven para estabilizar la lectura del botón y son de 10KOhm, las horizontales pueden ser de cualquier valor, siempre y cuando sean todas distintas.

Se podría calcular matemáticamente el valor que va a llegar a la placa de Arduino dependiendo de la resistencia del botón pulsado, pero lo más sencillo es crear un pequeño programa cómo este y anotarnos los valores según vamos pulsando botones. Después esos valores serán los que utilicemos en nuestro diseño.

	void setup() {
	//iniciamos la conexión por serial, a 9600 baudios
	Serial.begin(9600); 	
	}

	void loop() {
		Serial.print('El valor del boton es:'); 
		Serial.println(analogRead(A0)); 
	}
	

A partir de aquí, las posibilidades son muchas, y sobre todo ahorrando pines de Arduino para emplearlos en otras funciones.