En el dia de hoy vas a aprender a Usar las ENTRADAS DIGITALES en ARDUINO y vas a entender de diferentes formas, como puedes programarlas usando el Arduino IDE.
También podrás ver como acoplar los voltajes para conectar señales a los pines digitales del arduino y asi evitar que quemes tu placa y al final de este post vas a encontrar un código ejemplo de implementación para que lo reproduzcas en tu casa.
Antes que nada si todavia no has visto todo el contenido de nuestro maravilloso curso de ARDUINO aquí te dejo el link para que lo veas: 👉 CURSO GRATUITO DE ARDUINO
También te puedes suscribir al canal de YouTube si deseas seguir aprendiendo más de estos temas.
Entradas Digitales de Arduino
Las entradas digitales en Arduino son una característica clave de esta popular tarjeta de desarrollo. En el siguiente video, mostramos el contenido referente a las entradas digitales en arduino:
¿Qué es una Entrada Digital o un Pin Digital en Arduino?
Una entrada digital es un pin en el Arduino que puede leer valores binarios, es decir, valores de 0 o 1. Las entradas digitales en arduino son los pines en los cuales podemos conectar sensores o dispositivos que detecten algún cambio o una variación del mundo real.
Al igual como lo habíamos visto en la entrada anterior de Salidas Digitales en Arduino, en las entradas digitales de arduino vamos a recibir una señal digital, que esta compuesto de dos valores 0V (GND) y 5V, que como ya lo dijimos puede ser nombrados como:
- 0V – Falso – Cero Lógico – LOW
- 5V (3.3V) – Verdadero – Uno Lógico – HIGH
Sin embargo, en el mundo real cuando una entrada digital hace la lectura de una señal, esta lo hace a través de un umbral de referencia de 2.5V aproximadamente, donde si el valor leido por la entrada digital de arduino es superior a ese umbral, arduino lo considera como HIGH y si es inferior lo considera como LOW.
Suscríbete a este sitio WEB para estar enterado de las nuevas entradas!
Pines Digitales de Arduino UNO
Como ejemplo vamos a ver donde se ubican los pines digitales de arduino uno como ilustración, pero esto es aplicable para cualquier otra placa de arduino que poseas:
De la imagen de ejemplo anterior podemos notar que los pines digitales en el Arduino Uno son numerados de 0 a 13 y pueden ser utilizados para recibir señales digitales de diferentes sensores y dispositivos externos.
Como fue detallado en la introducción a Arduino, la placa Arduino Uno tiene un total de 14 pines digitales, y también cuenta con 6 pines analógicos. Además, es importante tener en cuenta que el Arduino Uno tiene un voltaje de entrada de 5V. Es importante definir los pines en Arduino antes de utilizarlos, especificando si son entradas o salidas.
Es importante entender qué es un pin digital y cómo funciona para poder utilizarlo de manera eficiente en un proyecto. Por eso vamos a detallarlo a continuación.
Conexiones de una Entrada Digital en Arduino
La tensión que pueden recibir las entradas digitales es de 5V (para la mayoría de los arduinos) y hay excepciones de algunos arduinos que trabajan a 3.3V como el Mini o el Nano. Entonces asegúrate primero en conocer cual es el voltaje de tensión de tu placa de arduino.
NUCA vayas a entregar un voltaje mayor al de alimentación (5V o 3.3V) porque vas a quemar tu placa.
Si por alguna razón, la señal que deseas conectar a tu arduino es mayor a 5 V debes hacer algún circuito para disminuir el valor de tensión que le está entrando al Arduino. Un circuito practico es hacer un divisor de voltaje con dos resistencias.
Donde el voltaje de salida () va a depender de los valores de resistencia y el valor de alimentación de entrada.
Supongamos que quieres medir una señal de 12V proveniente de algún relé, entonces deberás calcular el divisor de voltaje, suponiendo una de las resistencias. Si suponemos que la Resistencia 1 es de 10 KiloOhms (R1=10K) entonces para obtener 5 voltios a la salida del divisor de voltaje, deberemos despejar de la ecuación la resistencia 2 para saber su valor.
Entonces para garantizar un voltaje de 5V necesitamos una resistencia de 7.14K, solo que como esa resistencia no es comercial, debemos tomar una resistencia menor y próxima a 7.14K, en este caso tomamos la resistencia comercial de 6.8K que nos da un voltaje dentro del umbral de las entradas digitales del arduino.
No utilices este circuito para voltajes de corriente alternada o para voltajes superiores a 35VDC. En el caso de usar algún sensor en la entrada de Digital, es bueno llevar en consideración la impedancia del sensor.
Veamos como seria el esquemático en caso de tener un pulsador, que está conectado a 12VDC
Quizas te interese algunos productos de Arduino en Amazon a un mu buen precio.
Como Configurar las Entradas Digitales de Arduino
Para configurar las entradas digitales de Arduino vamos a utilizar el mismo comando visto en la entrada anterior dentro de void setup, conocido como pinMode.
pinMode(PIN Digital,INPUT);
Donde dice «Pin Digital» debemos sustituirlo por el PIN del Arduino que nosotros queremos que sea una ENTRADA.
Ejemplo
Vamos a suponer que queremos configurar el PIN 3 del Arduino como Entrada. Debemos utilizar la instrucción pinMode dentro del void setup de la siguiente forma:
void setup() { pinMode(3,INPUT); //Configura el PIN 3 como ENTRADA DIGITAL }
Otra forma de programar la Entrada Digital de Arduino es declarando un Nombre para el PIN, en este caso el PIN 3. Es decir podemos bautizar nuestro PIN con el nombre que nosotros queramos, veamos como se hace:
pinMode dentro del void setup de la siguiente forma:
byte Terminal_3 = 3; //Bautizo el PIN 3 con el nombre "Terminal_3" void setup() { pinMode(Terminal_3,INPUT); //Configura el PIN 3 como ENTRADA DIGITAL }
Lectura de ENTRADAS Digitales en Arduino
Una vez hemos configurado los pines que queremos establecer como entradas, es hora de utilizar estas entradas, para realizar la lectura de entradas digitales en arduino vamos a utilizar una segunda función, la cual deberemos llamar dentro del «void loop».
Como leer entradas digitales en arduino
La función digitalRead() en Arduino es esencial para leer los valores de una entrada digital. Esta función devuelve el valor de un pin específico, ya sea 0 o 1, y puede ser utilizada en una variedad de proyectos para determinar el estado de un dispositivo o sensor. Es importante declarar los pines en Arduino antes de utilizarlos, especificando si son entradas o salidas.
Para leer un pin digital o una entrada digital en arduino procedemos a utilizar la siguiente instrucción:
Estado = digitalRead(PIN_DIGITAL);
Donde Estado se almacena un 0 o 1 (TRUE o FALSE) dependiendo de la lectura realizada en el pin digital del arduino.
Un ejemplo de la utilización de la lectura del pin digital de arduino puede ser visto a continuación:
byte valor=0; //Variable que recibe el dato leido en la entrada byte Terminal_3 = 3; //Bautizo el PIN 3 con el nombre "Terminal_3" void loop() { valor = digitalRead(Terminal_3); }
Aqui la variable utilizamos el nombre del PIN 3 «Terminal_3» y una variable llamada valor, que va a almacenar el uno lógico (5V) o el cero lógico (0V) que el arduino está leyendo desde la entrada digital.
Como regla general, todos los pines digitales del arduino UNO o cualquier otro arduino vienen configurados por defecto como entradas.
Sin embargo, las entradas digitales, generalmente las usamos en condicionales para saber si algún evento ha ocurrido. Por lo tanto es bastante común usar el digitalRead dentro de condicionales como el IF. Sabemos que un IF es una instrucción en programación que pregunta si esta sucediendo algún evento.
Supongamos que tenemos conectado un BOTON en la entrada digital 7 del Arduino.
Si queremos preguntar si el botón esta pulsado o no, podemos hacerlo directamente dentro de la instrucción IF.
if(digitalRead(7)){ }
dentro de las llaves «{}» va el programa que deseemos que el arduino haga al momento de que el botón fue pulsado.
En esa instrucción, si el botón no es pulsado, la función digitalRead va entregar para el if un cero logico o un falso «if(0)» y asi no se ejecuta lo que hay dentro de las llaves.
Cuando el botón es pulsado, la función digitalRead va entregar para el if un uno logico o un verdadero «if(1)» y asi se ejecuta lo que hay dentro de las llaves.
if(!digitalRead(7)){ }
También es posible invertir este orden si agregamos al comienzo del digitalRead el simbolo de negación «!»
Leer varias entradas digitales en Arduino
No importa el numero de entradas que desees leer con tu arduino, vas a utilizar la instrucción readWrite para leerlas todas:
byte v1=0; //valor 1 byte v2=0; //valor 2 byte v3=0; //valor 3 byte v4=0; //valor 4 void loop() { v1 = digitalRead(2); //Lee la entrada del PIN 2 y lo guarda en v1 v2 = digitalRead(3); //Lee la entrada del PIN 3 y lo guarda en v2 v3 = digitalRead(4); //Lee la entrada del PIN 4 y lo guarda en v3 v4 = digitalRead(5); //Lee la entrada del PIN 5 y lo guarda en v4 }
Tambien podrías pensar en guardar los datos en un vector para leer varias entradas digitales en arduino. En este ejemplo seria un vector de 4 posiciones que se llame valvec (Valor en Vector).
Recuerda que para capturar los valores debes llamar la posición del vector donde se encuentra el dato. En este caso el primer dato esta en la posición cero del vector, el segundo dato en la posición uno del vector, el tercer dato en la posición dos del vector y el cuarto dato en la posición tres del vector.
La forma más compacta de leer varias entradas digitales en arduino es usando un ciclo FOR como se muestra a continuación:
byte valvec[4]; //Vector de 4 posiciones void loop() { for(int i=0;i<=3;i++){ valvec[i]=digitalRead(i+2); //Lee la entrada desde el pin2 hasta el pin 5 y lo guarda en un vector } }
Ejemplo de Entradas Digitales
Vamos a tomar el ejemplo de la secuencia de leds con arduino visto en la entrada anterior y vamos a adicionarle 2 pulsadores (botones) para practicar con las entradas digitales de arduino.
La secuencia de leds va a encender hacia la derecha y cuando pulse el pulsador del PIN 11, la secuencia de leds cambia de dirección hacia la izquierda, y si pulsa el pulsador del PIN 10, la secuencia de leds nuevamente cambia de dirección hacia la derecha.
Recordemos que en este curso estamos usando el Arduino UNO, pero si tu tienes cualquier otro Arduino, también puedes hacerlo sin ningún problema, esa es una facilidad que nos da Arduino.
Si todavía no sabes cuales son los pines digitales de arduino uno, dale un vistazo a este post: Puertos digitales Arduino Uno
Lista de Materiales
- Cualquier Placa de ARDUINO
- 8 leds de cualquier color
- 10 Resistencias de 220ohms para los leds
- 2 pulsadores
- 1 Protoboard
- Cables de conexión
Código y Simulación
Pudes ver la simulación de este circuito en Tinkercad si lo deseas Dando CLICK AQUÍ. Debes tener una cuenta en tinkercad para poder ver los esquemas.
el código de implementación puedes descargarlo a continuación
//Delcaración de Los Pines de los LED byte led1=2; byte led2=3; byte led3=4; byte led4=5; byte led5=6; byte led6=7; byte led7=8; byte led8=9; byte Pizq=10; //Pulzador Izquierda byte Pder=11; //Pulzador Derecha int i; //Variable del Contador del FOR long vel=40; //Velocidad de las Luces byte valor=1; //Almacena el dato de los pulsadores void setup() { // put your setup code here, to run once: //Configura los 8 Pines digitales como SALIDAS for(i=led1;i<=led8;i++){ pinMode(i,OUTPUT); } // Configura los PINES 10 y 11 Como Entradas pinMode(Pizq,INPUT); pinMode(Pder,INPUT); } void loop() { //Si "valor" es Cero gire a la DERECHA if(valor==0){ //Enciende los LED de Izquierda a Derecha for(i=led1;i<=led8+3;i++){ if(i<=led8){ digitalWrite(i,HIGH); //Enciende el LED } if(i>led3){ digitalWrite(i-3,LOW); //Apaga el LED } delay(vel); //Retardo (Espera el valor de vel) //Lee los dos pulsadores if(digitalRead(Pizq)){ valor=1;i=led8+3; //Cambia el valor y sale del FOR } if(digitalRead(Pder)){ valor=0;i=led8+3; //Cambia el valor y sale del FOR } } } //Si "valor" es uno gire a la IZQUIERDA if(valor==1){ //Enciende los LED de Izquierda a Derecha for(i=led8;i>=led1-3;i--){ if(i>=led1){ digitalWrite(i,HIGH); //Enciende el LED } if(i<led6){ digitalWrite(i+3,LOW); //Apaga el LED } delay(vel); //Retardo (Espera el valor de vel) //Lee los dos pulsadores if(digitalRead(Pizq)){ valor=1;i=led1-3; //Cambia el valor y sale del FOR } if(digitalRead(Pder)){ valor=0;i=led1-3; //Cambia el valor y sale del FOR } } } }
Eso es todo por la entrada del dia de hoy, espero les haya gustado y hayan aprendido algo nuevo. Si te ha servido el contenido de esta entrada, de los videos y los códigos de implementación y deseas apoyar mi trabajo invitandome a un café super barato, puedes hacerlo en el siguiente link:
👉 Invitar a Sergio a un Café ☕️
Que esten muy bien, nos vemos en la siguiente entrada.
Mi nombre es Sergio Andres Castaño Giraldo, y en este sitio web voy a compartir una de las cosas que mas me gusta en la vida y es sobre la Ingeniería de Control y Automatización. El sitio web estará en constante crecimiento, voy a ir publicando material sobre el asunto desde temas básicos hasta temas un poco más complejos. Suscríbete al sitio web, dale me gusta a la página en Facebook y únete al canal de youtube. Espero de corazón que la información que comparto en este sitio, te pueda ser de utilidad. Y nuevamente te doy las gracias y la bienvenida a control automático educación.