[Tutorial Arduino] Entradas/Salidas digitales

[singlepic id=745 w=320 h=240 float=center]

En el tutorial anterior describimos brevemente cual era la función de las entradas/salidas digitales, en este tutorial nos adentraremos en detalle de su funcionamiento y lo aplicaremos con un pequeño circuito, en el cual prenderemos leds dependiendo del estado de los pulsadores, para este circuito es necesario el siguiente material:

  • Arduino
  • Protoboard
  • 3 pulsadores (pushButton)
  • 3 leds (en mi caso usare un led RGB)
  • 3 resistencias 220 ohm
  • 3 resistencias 10 Kohm
  • cable

Comúnmente cuando se desea leer un pulsador desde una entrada digital se coloca una resistencia pull-up o pull-down, esto es para mantener siempre un estado lógico ya sea alto o bajo, con una resistencia pull-up en la entrada de Arduino siempre tendremos un estado lógico alto, en cambio con una pull-down tendremos un valor bajo. En caso de no utilizar estas resistencias y la entrada no esta conectada a algo el valor de entrada puede ser aleatorio teniendo un HIGH o LOW. La configuración de estas resistencias es la siguiente:

[singlepic id=744 w=320 h=240 float=center]
Recuerda que los pines digitales son los que se encuentran marcados en la placa con los números del 0 al 13, ademas los pines analógicos pueden ser usados como pines digitales usando los números 14 (entrada analógica número 0) hasta 19 (entrada analógica número 5).

En cuanto a la programación veremos 3 funciones clave para el manejo de los pines digitales:

pinMode(int pin,modo): Nos permite configurar un pin digital en modo entrada o salida, recibe 2 parámetros, el primero es el numero del pin a configurar y el segundo es el modo que queremos, los modos permitidos son INPUT (entrada) y OUTPUT (salida).

digitalRead(int pin):  Lee el valor de una entrada digital, la función regresa HIGH cuando en la entrada tenemos un estado lógico alto y LOW cuando tenemos un valor bajo, podemos usar el valor regresado para guardarlo en una variable o usarlo directamente en una condición. El único parámetro de entrada es el pin a leer.

digitalWrite(int pin, valor): Escribe en un pin de salida, si el valor es HIGH tendremos a la salida de ese pin un estado lógico alto (5V), si el valor es LOW tendremos a la salida un estado lógico bajo (0V). Sus parámetros son el numero de pin a modificar y el valor que tomara.

Para este caso usaremos resistencia de pull down, para que al presionar el boton tengamos un nivel alto a la entrada. Tenemos el diseño del circuito propuesto hecho en fritzing, el codigo fuente y un video con la desmotracion del ejemplo.

[singlepic id=743 w=320 h=240 float=center]

[code language=c]
//Pines donde se conectan los botones
const int boton1 =13 ;
const int boton2 =12 ;
const int boton3 =11 ;

//Pines donde se conectan los leds
const int led1 = 5;
const int led2 = 4;
const int led3 = 3;

void setup() {
//Inicializamos los pines de leds como salidas
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);

//Inicializamos los pines de botones como entradas
pinMode(boton1, INPUT);
pinMode(boton2, INPUT);
pinMode(boton3, INPUT);

}

void loop(){
//Comprobamos estado del boton1
if (digitalRead(boton1)) {
digitalWrite(led1, HIGH);
}
else {
digitalWrite(led1, LOW);
}

//Comprobamos estado del boton2
if (digitalRead(boton2)) {
digitalWrite(led2, HIGH);
}
else {
digitalWrite(led2, LOW);
}

//Comprobamos estado del boton3
if (digitalRead(boton3)) {
digitalWrite(led3, HIGH);
}
else {
digitalWrite(led3, LOW);
}
}
[/code]

Realmente es un ejemplo bastante basico, pero tiene el suficiente contenido para entender la funcion de estos pines digitales. En proximos tutoriales veremos algo un poco mas interactivo.

Adrian MB

Me gusta la electrónica, programación y todo lo relacionado. Ing. en Mecatronica de la UPIITA del IPN y estudiante de Diseño Industrial en la UAM. @adrianmtzb http://adrianmb.mx

También te podría gustar...

  • También se pueden usar los pull-ups internos, simplemente mandando un alto al pin en el setup, así se ahorra uno muchas resistencias.

    Muy buenos tutoriales, gracias por compartirlos.

    • Claro, solo hay que tener en cuenta que en el pin 13 tenemos un led conectado directo en la placa, por lo que en ese pin se debe usar la resistencia externa 😉

  • MARKUS

    en una crtica constructiva creo que vas algo lento respecto a los tutos y la info… solo digo no es ofensa…