Saltar al contenido

Salidas Digitales en Arduino

En esta entrada comenzaremos a entender el funcionamiento de nuestro Arduino y programaremos nuestro primer ejemplo. Y para eso vamos a aprender que es y como usar las salidas digitales en Arduino y al final de este post podrás descargar totalmente gratis el código de implementación de las salidas digitales.

Que son Salidas Digitales en Arduino

Primero, vamos a recordar que una salida digital es una señal binaria, esto quiere decir que toma únicamente 2 valores. Y esos valores en el mundo de los microcontroladores o de electrónica digital son 0V (GND) y 5V.

Estos dos valores los conoceremos como:

  • 0 – Cero Lógico – Falso – 0V
  • 1 – Uno Lógico – Verdadero – 5V

Sin embargo, algunos modelos de ARDUINO y Microcontroladores en general operan a 3.3V (en lugar de 5V), tales como las placas basadas en procesadores ARM (Arduino Due) o como el Arduino Nano o Mini.

Como vimos en el post de Introducción Pasado (Click aqui para ver la Introducción a Arduino) todos los pines del puerto I/O (Input – Output) pueden configurarse para ser Salidas Digitales en Arduino, y es justamente lo que vamos a hacer hoy.

Pines Digitales Arduino Uno

Los puertos digitales del Arduino UNO van desde el PIN 0 hasta el PIN 13, como lo vemos en esta figura:

Pinout Arduino

La única recomendación es que si usas los PINES 0 y 1 como salidas o entradas digitales, deberás desconectar el circuito que estes haciendo en el momento de hacer la programación del Arduino, ya que estos dos pines también son usado para la comunicación con el computador, por lo tanto si se usan como entradas o salidas digitales debe desconectarse antes el circuito para que permita ser programado.

Para que Sirven las Salidas Digitales

Con las salidas digitales Arduino Mega, Uno, Leonardo o el que sea, podremos interactuar con el mundo fisico de miles de formas, porque como yá lo vimos, podemos mandar una señal de dos estados (1 o 0) es decir, prender o apagar.

Entonces con esto podremos encender y apagar luces, leds, motores, relés, actuadores, etc.

Intensidad de una Salida Digital

El voltaje de salida digital de Arduino Uno, Mega o cualquier otro que trabaje a 5V de alimentación es exactamente ese mismo valor de alimentación (5V).

La intensidad o corriente máxima que puede entregar un pin de salida digital en arduino es de 40mA, pero como valor recomendado se establece que sea a 20 mA, donde la suma de todas las potencias en un solo puerto debe ser inferior a los 300 mA.

Declarar Pines de Salida en Arduino

Vamos a ver que para poder declarar un pin de salida en Arduino es muy fácil, e incluso la misma función nos va a servir para poder declarar las entradas digitales de Arduino. O sea es una función que sirve para las entradas y salidas Arduino.

Para programar una salida digital, debemos hacerlo dentro de la función «void setup» y vamos a utilizar la siguiente instrucción

pinMode(PIN Digital,OUTPUT);

Donde dice «Pin Digital» debemos sustituirlo por el PIN del Arduino que nosotros queremos que sea una salida.

Quizas te interese algunos productos de Arduino en Amazon a un mu buen precio.

Ejemplo

Vamos a suponer que queremos configurar el PIN 5 del Arduino como Salida. Debemos utilizar la instrucción pinMode dentro del void setup de la siguiente forma:

void setup() {
    pinMode(5,OUTPUT); //Configura el PIN 5 como SALIDA DIGITAL
}

Otra forma de programar la Salida Digital de Arduino es declarando un Nombre para el PIN, en este caso el PIN 5. 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_5 = 5; //Bautizo el PIN 5 con el nombre "Terminal_5"
void setup() {
    pinMode(Terminal_5,OUTPUT); //Configura el PIN 5 como SALIDA DIGITAL
}

Vemos que antes del SETUP, en la zona de Declaraciones, hemos declarado una variable de tipo «byte» llamada «Terminal_5» y le hemos asignado el valor de 5. Con eso podemos utilizar ese nombre en cualquier parte del programa que necesitemos alguna cosa del PIN 5. Note que muchos tutoriales de Arduino colocan «int» en lugar de «byte», cualquira de los dos tipos de Variable Sirven. En el caso de nombrar pines del Arduino es más que suficiente utilizar el tipo «byte» que almacena valores enteros de 0 a 255.

Utilizar las Salidas Digitales en Arduino

Una vez hemos configurado los pines que queremos establecer como salidas, es hora de utilizar estas salidas, para eso vamos a utilizar una segunda función, la cual deberemos llamar dentro del «void loop»

void loop() {
    digitalWrite(Pin de Salida,HIGH); //Energiza la SALIDA DIGITAL (5V)
    digitalWrite(Pin de Salida,LOW);  //DesEnergiza la SALIDA DIGITAL (0V)
}

Aqui la variable «Pin de Salida» la sustituimos por el pin del Arduino que queramos energizar (5V) o desenergizar (0V). En otras palabras estamos escribiendo en la salida digital del arduino si queremos que se active o desactive, encienda o apague.

Ejemplo

Vamos a suponer que queremos activar salida digital de Arduino en el PIN 5. Debemos utilizar la instrucción digitalWrite dentro del void loop usando cualquiera de las siguientes formas:

void loop() {
    digitalWrite(5,HIGH); //Activa o Energiza el PIN 5
}
byte Terminal_5 = 5; //Bautizo el PIN 5 con el nombre "Terminal_5"
void loop() {
    digitalWrite(Terminal_5,HIGH); //Activa o Energiza el PIN 5
}
byte Terminal_5 = 5; //Bautizo el PIN 5 con el nombre "Terminal_5"
void loop() {
    digitalWrite(Terminal_5,1); //Activa o Energiza el PIN 5
}
void loop() {
    digitalWrite(5,1); //Activa o Energiza el PIN 5
}

Note que podemos Usar directamente el 5 dentro de la función, o podemos bautizar el PIN y usarlo. Note también que la palabra «HIGH» que significa alta o Activar salida digital Arduino, usted también puede sustituirla por el numero «1» que es exactamente lo mismo.

Ahora para Desactivar o Desenergizar el PIN 5 hacemos exactamente lo mismo de las instrucciones anteriores, solo que en lugar de Colocar «HIGH» colocamos «LOW» o si lo deseas puedes colocar «0» (cero), desactivar salida digital arduino.

Salidas Digitales en Arduino UNO – Ejemplo

Vamos a Hacer una secuencia Ritmica de LEDs con el Arduino, para entrenar lo aprendido en este POST y pongamos en práctica la configuración de las salidas digitales del Arduino.

El esquematico en la Board de la Secuencia de Luces con Arduino es:

Secuencia de LEDS con ARDUINO

En este programa vamos a Utilizar 8 LEDs, 8 Resistencias para hacer nuestra secuencia ritmica de LEDs con ARDUINO, el objetivo aqui será colocar los PINES desde el 2 hasta el 9 como SALIDAS. Y hacer una secuencia usando las dos funciones que vimos aqui: pinMode y digitalWrite.

Lista de Materiales

  • Cualquier Placa de ARDUINO
  • 8 leds de cualquier color
  • 8 Resistencias de 220ohms para los leds
  • 1 Protoboard
  • Cables de conexión

Código y Simulación

El Programa de ARDUINO de este ejemplo puedes descargarlo a Continuación. Para ver el código basta solo con compartir el contenido de este post con cualquiera de los siguientes 3 botones, de esa forma ayudas a este sitio web a que continue aportando más contenido de calidad y totalmente gratuito.

Pudes ver la simulación de este circuito en Tinkercad si lo deseas Dando CLICK AQUÍ y seleccionando el proyecto de Salidas Digitales con Arduino. Debes tener una cuenta en tinkercad para poder ver los esquemas.

[sociallocker id=948]

//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;

int i; //Variable del Contador del FOR
long vel=100; //Velocidad de las Luces

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);
  }
}

void loop() {
  // put your main code here, to run repeatedly:
 //Enciende los LED de Izquierda a Derecha
  for(i=led1;i<=led8;i++){
    digitalWrite(i,HIGH); //Enciende el LED
    delay(vel);           //Retardo (Espera el valor de vel)
  }

  //Apaga los LED de Derecha a Izquierda
  for(i=9;i>=2;i--){
    digitalWrite(i,LOW); //Apaga el LED
    delay(vel);          //Retardo (Espera el valor de vel)
  }

  //Enciende los dos LEDs del Medio
  digitalWrite(led4,1);
  digitalWrite(led5,1);
  delay(1000);     //Retardo de 1000ms (1 segundo)

  //Enciende los LEDs desde el MEDIO hacia los LADOS
  for(i=6;i<=8;i++){
    digitalWrite(i,LOW);
    digitalWrite(i+1,HIGH);
    digitalWrite(11-i,LOW);
    digitalWrite(10-i,HIGH);
    delay(vel*2);  //Espera el Doble del valor de vel
  }
  
}

[/sociallocker]

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.

Entradas relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Comentarios (21)

Sergio espero estes muy bien, me han gustado bastante los videos, pero tengo un problema, descargue el codigo para programar al arduino y solo un bombillo encendia bien, 3 apenas se iluminaban y el resto nisiquiera encendian. al momento de ensallar el arduino estubo bien y encendio el led en el puerto 13, pero esta secuencia que descarguer presento estos problemas, sera que mi arduino esta malo, y si es asi que puedo hacer para comprobarlo. gracias por la atencion

Responder

Verifica que los LEDs no esten invertidos porque estos tienen polaridad. Si los conectas al revés ellos no van a encender. El positivo es el pin más largo.

Responder

Me presento soy Javier de Argentina y no podia creer que en el primer intento
saliera andando la secuencia de leds .
Mil gracias y de verdad exelente las explicaciones comence el curso arduino y la verdad muy bien explicado y facil de entender me compre el kit porque me gusta la electronica y no sabia para donde ir.
Una vez mas gracias y seguire al pie de la letra su curso y proyectos
Abrazo desde Argentina …

Responder

Gracias Javier, espero las demás entradas del curso también te sean de utilidad. Éxitos!!

Responder

MUY DIDACTICO TODO EL PROCESO DE SU ENSEÑANZA, MUCHAS GRACIAS POR COMPARTIR . SUS CONOCIMIENTOS

Responder

Gracias Abel. Que bueno que te ha sido de utilidad. Éxitos!!

Responder

Señor Sergio Buenos días, estoy encantado con sus vídeos es un canal muy interesante ya que nos ayuda muchísimo a entender lo que es la programación de microcontroladores y lo mas interesante al gratin
De todo corazón le agradezco su dedicación y tiempo para hacer toda esta clase de vídeos
tan maravillosos que el señor le bendiga grande mente y siga así subiendo vídeos

Responder

Hola Cristo, muchas gracias por tu mensaje, que bueno que te han gustado los contenidos y que le puedas sacar el mayor provecho. Saludos y mucho éxitos!

Responder

Hola, gracias por tu aporte! Me gusta la manera en la que haces los programas y lo que mas me gusta es que funcionan. Había visto otros cursos de Arduino desde cero pero me frustraba porque los programas no me funcionaban.
(seria porque mis sensores y placa son genéricos).
No había usado antes el «byte» y me ahorraste muchas líneas de código con el uso de «for».

Responder

Muchas gracias Diego, me alegra que te esté sirviendo el curso. Mis placas también son genéricas, lo importante es que la programación esté bien estructurada. Saludos y muchos éxitos.

Responder

Hola, en la parte del video donde se prueba con el pin 2 si se prende, a mi no me prende me puedes ayudar porfa. Estoy recien empezando con arduino y creo que tus cursos me sirven mucho

Responder

Matias, debes corroborar que el circuito esté buen implementado. Una opción que puedes hacer, es cambiar el pin2 por el pin13, y ver si el propio led que está en la placa del arduino prende y apaga, de esa forma corroborarías que el problema pueda estar en la conexión de los componentes en la protoboard.

Responder

yo no entendí como armar la protoboard. no tengo ninguna noción de electrónica tampoco 🙁
alguien podría ayudarme a saber:
de que valores son los resistores ? deben ser de 100 ohm cada uno para cada led??

y en que nodos de la protoboard va cada terminal de los leds y los resistores ?

Gracias

Responder

Sergio:
En el ejemplo «Utilizar las salidas digitales del Arduino» dice «void setup», cuando debe decir «void loop».
¡Exelentes videos!

Responder

Gracias Ignacio por tu observación. Saludos.

Responder

Hola, disculpa la molestia , me aparece error en libreria.
El Sketch usa 1204 bytes (3%) del espacio de almacenamiento de programa. El máximo es 32256 bytes.
Las variables Globales usan 11 bytes (0%) de la memoria dinámica, dejando 2037 bytes para las variables locales. El máximo es 2048 bytes.
Librería inválida encontrada en C:\Users\owner\Documents\Arduino\libraries\salidas_digitales_prueba: No encontrado archivos de encabezado (.h) en C:\Users\owner\Documents\Arduino\libraries\salidas_digitales_prueba
Librería inválida encontrada en C:\Users\owner\Documents\Arduino\libraries\sketch_jun28b: No encontrado archivos de encabezado (.h) en C:\Users\owner\Documents\Arduino\libraries\sketch_jun28

Responder

A mi me pone lo mismo y no me deja ejecutar el programa

Responder

Todos los cursos que publicas son realmente muy interesantes y ayudan mucho. me gustaría establecer alguna forma de coordinación para poder hacer llegar tus aportes a una comunidad mas amplia . Soy de Perú y como profesor de dos universidades nacionales y publicas de mi país ( Universidad Nacional de Ingeniería y Universidad Nacional Mayor de San Marcos) me gustaría saber tu opinión al respecto.
Saludos

Responder

Claro profesor Juan Francisco, que tipo de coordinación tiene usted en mente? o como puedo participar del proyecto que tiene en mente? Le dejo el link con mi sección de contacto (Click Aquí) Saludos y feliz dia.

Responder

Estimado Sergio: Deseo desarrollar un generador de señales de tres fases (trifásico), es decir, de tres salidas X,Y,Z con control de frecuencias desde cero hasta 3000 Hertz. Es posible desarrollarlo con Arduino (¿Con cual de los modelos?) o sería mejor con un PIC o un AT mega? Además en versión avanzada desearía adicionarle un LCD de muy bajo consumo, donde aparezca la frecuencia o RPM de un motorcito de tres fases. Es posible? Gracias

Responder

Hola Alfonso, un arduino MEGA podria servirte para tal fin, por tener mayor numero de puertos. Igual creo que con un Arduino UNO también te daria para hacerlo.

Responder