Pines Digitales en Arduino

Resumen: En esta entrada conoceremos como Arduino se comunica con el mundo f铆sico a trav茅s de los pines digitales, tanto para enviar se帽ales como para recibirlas. Veremos que son las se帽ales digitales y c贸mo se configuran estos pines mediante c贸digo para que funcionen como entradas o salidas.

En la mayor铆a de nuestros proyectos con Arduino necesitaremos interactuar con 芦el mundo real禄para saber por ejemplo si una luz est谩 encendida o apagada, si una barrera est谩 abierta o cerrada, si un usuario ha pulsado un bot贸n, etc. Tambi茅n podr铆amos necesitar nosotros encender una luz, activar una alarma o abrir una puerta. Este tipo de se帽ales que recibimos o enviamos podr铆amos decir que son a 芦todo o nada禄, es decir, que las 煤nicas opciones posibles son Si o No, Verdadero o Falso.

Qu茅 es una se帽al digital?

Para este tipo de casos donde s贸lo tenemos 2 estados posibles usaremos las se帽ales digitales, que son un tipo de se帽al el茅ctrica discreta y binaria, representada por 2 amplitudes, por ejemplo 0V y +5V.

Se帽ales Discretas: Decimos que una se帽al es discreta cuando s贸lo puede tomar alguno de los valores establecidos, (que en el caso de Arduino son聽0V y +5V, o 0 y 1), no pudiendo tomar valores intermedios.

 

Representaci贸n de se帽al digital con ondas cuadradas

Podemos ver en la im谩gen anterior una se帽al digital donde la informaci贸n se transmite con un sistema de c贸digos binarios (los n煤meros 0 y 1) y su formato es de聽ondas cuadradas:

Una se帽al digital es una variaci贸n de voltaje (o de corriente) entre un valor negativo -Vcc y un valor positivo +Vcc sin pasar por valores intermedios, teniendo s贸lo 2 estados posibles: el valor m谩s bajo o LOW y el valor m谩s alto o HIGH.

El valor m谩s alto o HIGH lo asociamos con 1 o TRUE.
El valor m谩s bajo o LOW lo asociamos con 0 o FALSE.

Conexi贸n de Pines Digitales en Arduino

Arduino tiene pines que trabajan con se帽ales digitales y son de entrada y salida, por eso se les llama pines I/O digitales. Podemos usar los pines digitales como entradas para recibir informaci贸n de un sensor o como salidas para encender una luz, pero no podemos usarlos como entrada y salida al mismo tiempo, por eso debemos definir en el c贸digo el uso que le daremos.

Podemos encontrar 14 pines digitales en una placa Arduino Uno. Son f谩cilmente reconocibles, del 0 al 13 en la placa de circuito.

pines digitales arduino uno

Lectura/Escritura en pines digitales

Utilizaremos los pines digitales para leer datos de algunos componentes (sensores) y escribir datos en otros componentes (actuadores).

Un pin digital s贸lo puede tener 2 estados: BAJO o ALTO. Puedes considerarlos como pines binarios.

LOW significa que el voltaje en el pin es 0V. HIGH significa Vcc, que en el caso de Arduino Uno son 5V.

Antes de poder utilizar un pin digital, es necesario configurar su modo. Un pin digital puede estar en modo INPUT o modo OUTPUT. Cuando est谩 en modo INPUT, se utiliza para leer datos. Cuando est茅 en modo OUTPUT, se utiliza como salida para escribir datos.

Despu茅s de haber establecido un modo para el pin – normalmente en la funci贸n setup() del programa Arduino con pinMode() – podremos leer/escribir el estado del pin con digitalRead()/digitalWrite().

Si has puesto el pin en modo INPUT, entonces puedes leer su estado, que ser谩 HIGH o LOW.

Al leer el estado, cualquier voltaje aplicado al pin inferior a 0.8V ser谩 considerado como BAJO, y cualquier voltaje superior a 2V ser谩 considerado como ALTO. Por lo tanto, vuelvo a insistir en que debes conectar correctamente todas las masas de tu circuito, 隆o de lo contrario el Arduino Uno no ser谩 capaz de leer una informaci贸n valiosa! Si no obtienes datos fiables y estables, comprueba siempre primero la conexi贸n a tierra, es muy probable que el problema venga de ah铆.

Ejemplos de c贸digo fuente para configurar los pines digitales en Arduino

Para configurar un pin digital en Arduino, puedes utilizar la funci贸n pinMode. Esta funci贸n toma dos argumentos: el n煤mero del pin y el modo en el que se va a configurar el pin. El modo puede ser INPUT para configurar el pin como una entrada o OUTPUT para configurar el pin como una salida.

A continuaci贸n, te muestro un ejemplo de c贸mo usar la funci贸n pinMode para configurar el pin digital 13 como una salida:

void setup() {
  // Configura el pin digital 13 como salida
  pinMode(13, OUTPUT);
}

void loop() {
  // El c贸digo en este bucle se ejecutar谩 de manera repetida
}

Una vez configurado el pin, puedes utilizar la funci贸n digitalWrite para escribir un valor l贸gico (HIGH o LOW) en el pin. Por ejemplo, para encender un LED conectado al pin 13, puedes utilizar el siguiente c贸digo:

digitalWrite(13, HIGH); // Enciende el LED
delay(1000); // Espera un segundo
digitalWrite(13, LOW); // Apaga el LED
delay(1000); // Espera otro segundo

PWM

Algunos de los pines digitales se pueden utilizar para programar un PWM.

Un PWM (Pulse Width Modulation) es b谩sicamente una forma de obtener un voltaje espec铆fico (ej: 4.1V) con s贸lo estados ALTO/BAJO (5V/0V). El PWM crea un pulso que funciona a una frecuencia determinada – 500Hz para Arduino Uno. Luego, un par谩metro de ciclo de trabajo dir谩 qu茅 porcentaje de cada pulso est谩 en estado ALTO o BAJO.

El cambio frecuente de los estados ALTO/BAJO produce una salida de tensi贸n media. Por ejemplo, con un ciclo de trabajo del 50% (50% del tiempo en ALTO, 50% del tiempo en BAJO), la tensi贸n de salida ser铆a de 2,5V.

Por supuesto, esta explicaci贸n est谩 muy simplificada, pero es todo lo que necesitas saber para empezar con el PWM de Arduino.

S贸lo se puede usar el PWM en los pines digitales que tienen un 芦~禄 al lado de su n煤mero. Los pines de Arduino Uno compatibles con PWM son los pines 3, 5, 6, 9, 10 y 11. As铆 que tienes 6 pines donde puedes crear un PWM, usando la funci贸n analogWrite().

Esto puede ser muy 煤til para controlar algunos actuadores que requieren un ajuste fino de voltaje, y no s贸lo se encienden o se apagan.

Si tomamos el ejemplo de un LED, puedes utilizar la funci贸n analogWrite() para modificar el brillo del LED.

Pines de interrupci贸n

Existe otra funcionalidad disponible para los pines digitales. Puedes utilizar algunos de ellos como pines de interrupci贸n en tu programa Arduino.

Para Arduino Uno, la elecci贸n de estos pines es bastante limitada. S贸lo los pines digitales 2 y 3 se pueden utilizar como pines de interrupci贸n.

C贸mo funcionan los pines de interrupci贸n

Cuando creas un programa Arduino, tienes que saber que tu c贸digo se ejecuta l铆nea a l铆nea, sin posibilidad de multihilo.

Supongamos que conectas un pulsador a un pin de interrupci贸n (隆y a masa!). En tu programa Arduino, puedes adjuntar una funci贸n espec铆fica para que se active cada vez que pulses el bot贸n. As铆, en lugar de tener que leer continuamente el estado del bot贸n, puedes utilizar directamente el comportamiento de la interrupci贸n para lanzar tu funci贸n. Aprende m谩s sobre interrupciones de Arduino.

Otros art铆culos relacionados de聽nuestro Curso Arduino聽que pueden interesarte: