Proyecto «Display de 7 segmentos controlado con mando a distancia»

Bienvenido a un nuevo proyecto con Arduino, en este post aprenderás a como controlar un display o BCD de 7 segmentos mediante un mando a distancia, el cual enviará las señales a través de un módulo de infrarrojos, además, te mostraremos los diferentes materiales empleados en su construcción, su esquema de conexiones y finalmente te dejaremos el código para que puedas realizar este proyecto, el cual se puede aplicar a multitud de proyectos a control remoto.

 

Materiales necesarios para su construcción

En este apartado verás una breve explicación de los diferentes materiales que se van a utilizar para realizar este proyecto de un controlador a distancia para displays de 7 segmentos. Si estás interesado en realizar el proyecto, a continuación también te dejaremos los links a diferentes webs donde poder adquirir dichos materiales.

Placa de Arduino UNO: Es el cerebro de nuestro proyecto, encargada de controlar todos los procesos del mismo mediante el código que encontrarás más adelante.

Protoboard: Tabla con orificios (pines) la cual está conectada internamente y usaremos para realizar nuestras conexiones para el proyecto.

Cables con pines: Estos cables tienen unos pines (macho o hembra) los cuales nos permitirán hacer las conexiones entre los diferentes elementos ya mencionados.

Display de 7 segmentos: Se trata de un pequeño dispositivo con 7 segmentos que se iluminan de forma independiente pudiendo crear los diferentes números y letras de nuestro abecedario.

Mando a distancia: Se trata de un dispositivo que envía distintas señales infrarrojas en función del botón que hayamos pulsado.

Receptor infrarrojos: Como su nombre indica, es el encargado de recibir la señal enviada desde el mando para poder procesarla y actuar sobre el elemento que deseemos controlar.

Puedes encontrar más herramientas y materiales que puedas necesitar para tus proyectos AQUÍ.

Componentes necesarios para este proyecto:

  • Placa de arduino UNO ………………. Amazon / AliExpress
  • Display 7 segmentos ………………… Amazon / AliExpress
  • Cables macho-hembra ……………… Amazon / AliExpress
  • Protoboard ……………………………. Amazon / AliExpress
  • Mando a distancia……………………. Amazon / AliExpress

 

Video explicación del proyecto

Si lo que buscas es ver de una forma mucho más detallada como funciona el display de 7 segmentos junto a una pequeña explicación de las diferentes conexiones, así como una explicación del código, a continuación te dejamos un video donde se muestra de una forma mucho mas visual y fácil de comprender todo el proceso desde el inicio hasta el final. Y recuerda, si te gusta esta clase de contenido, no olvides SUSCRIBIRTE 😉

 

Esquema de conexiones Arduino para la construcción del display de 7 segmentos controlado a distancia

Para este proyecto no necesitarás una gran cantidad de conexiones pero es importante que las realices de forma correcta, es por eso que para realizar el montaje del display y el receptor infrarrojo te vamos a mostrar un esquema de conexiones  para este proyecto, con este esquema de conexiones es posible usar el código que puedes encontrar al final del post sin necesidad de hacer ninguna modificación.

 

Código de Arduino para la programación del display de 7 segmentos controlado con mando a distancia

A continuación se muestra el código de programación desarrollado específicamente para este proyecto.

Como se puede apreciar en dicho código, se ha usado una sentencia «case» para activar los diferentes segmentos que de forma conjunta generan los diferentes números.

Los pines empleados en el código son los mismos que puedes encontrar en el esquema de conexiones previamente mostrado.

Si quieres una explicación más detallada de las diferentes partes del código empleado para programar este proyecto con Arduino y de su funcionamiento, te recomiendo que te veas el video que te hemos dejado más arriba.

 

//Canal de YouTube -> RobotUNO
//Display de 7 segmentos controlado con MANDO A DISTANCIA

#include "IRremote.h"
#define a 2
#define b 3
#define c 4
#define d 5
#define e 6
#define f 7
#define g 8

int receiver = 11;
IRrecv irrecv(receiver);
decode_results results;

void translateIR(){
  switch(results.value){
  case 0xFF6897: Serial.println("0");
  digitalWrite(a, HIGH);
  digitalWrite(b, HIGH);
  digitalWrite(c, HIGH);
  digitalWrite(d, HIGH);
  digitalWrite(e, HIGH);
  digitalWrite(f, HIGH);
  digitalWrite(g, LOW);
  break;  
  case 0xFF30CF: Serial.println("1");
  digitalWrite(a, LOW);
  digitalWrite(b, HIGH);
  digitalWrite(c, HIGH);
  digitalWrite(d, LOW);
  digitalWrite(e, LOW);
  digitalWrite(f, LOW);
  digitalWrite(g, LOW);
  break;  
  case 0xFF18E7: Serial.println("2");
  digitalWrite(a, HIGH);
  digitalWrite(b, HIGH);
  digitalWrite(c, LOW);
  digitalWrite(d, HIGH);
  digitalWrite(e, HIGH);
  digitalWrite(f, LOW);
  digitalWrite(g, HIGH);
  break;  
  case 0xFF7A85: Serial.println("3");
  digitalWrite(a, HIGH);
  digitalWrite(b, HIGH);
  digitalWrite(c, HIGH);
  digitalWrite(d, HIGH);
  digitalWrite(e, LOW);
  digitalWrite(f, LOW);
  digitalWrite(g, HIGH);
  break;  
  case 0xFF10EF: Serial.println("4");
  digitalWrite(a, LOW);
  digitalWrite(b, HIGH);
  digitalWrite(c, HIGH);
  digitalWrite(d, LOW);
  digitalWrite(e, LOW);
  digitalWrite(f, HIGH);
  digitalWrite(g, HIGH);
  break;  
  case 0xFF38C7: Serial.println("5");
  digitalWrite(a, HIGH);
  digitalWrite(b, LOW);
  digitalWrite(c, HIGH);
  digitalWrite(d, HIGH);
  digitalWrite(e, LOW);
  digitalWrite(f, HIGH);
  digitalWrite(g, HIGH);
  break;  
  case 0xFF5AA5: Serial.println("6");
  digitalWrite(a, HIGH);
  digitalWrite(b, LOW);
  digitalWrite(c, HIGH);
  digitalWrite(d, HIGH);
  digitalWrite(e, HIGH);
  digitalWrite(f, HIGH);
  digitalWrite(g, HIGH);
  break;  
  case 0xFF42BD: Serial.println("7");
  digitalWrite(a, HIGH);
  digitalWrite(b, HIGH);
  digitalWrite(c, HIGH);
  digitalWrite(d, LOW);
  digitalWrite(e, LOW);
  digitalWrite(f, LOW);
  digitalWrite(g, LOW);
  break;  
  case 0xFF4AB5: Serial.println("8");
  digitalWrite(a, HIGH);
  digitalWrite(b, HIGH);
  digitalWrite(c, HIGH);
  digitalWrite(d, HIGH);
  digitalWrite(e, HIGH);
  digitalWrite(f, HIGH);
  digitalWrite(g, HIGH);
  break;
  case 0xFF52AD: Serial.println("9");
  digitalWrite(a, HIGH);
  digitalWrite(b, HIGH);
  digitalWrite(c, HIGH);
  digitalWrite(d, HIGH);
  digitalWrite(e, LOW);
  digitalWrite(f, HIGH);
  digitalWrite(g, HIGH);
  break;
  case 0xFFFFFFFF: Serial.println("ERROR");break;  
  default: 
    Serial.println("Otro botón");
  }
  delay(500);
}

void setup() {
  Serial.begin(9600);
  Serial.println("MANUALIDADES Y EXPERIMENTOS"); 
  irrecv.enableIRIn();
  for(int i=2 ; i<=8 ; i++){
    pinMode(i,OUTPUT);
  }
}

void loop(){
  if (irrecv.decode(&results)) 
  {
    translateIR(); 
    irrecv.resume();
  }  
}

 

Publicado en Otros proyectos.

Un comentario

Deja una respuesta

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