Contenido del curso

Actividad 24

 

Ejercicio display 7 segmentos con MAX7219

Esta actividad consiste en realizar la misma actividad que la vista en la actividad 23 pero utilizando el circuito integrado MAX 7219. Recuerde que la actividad 23 consiste en mostrar por un display de 7 segmentos el número almacenado en una variable. Para modificar la variable, se dispondrá de un botón. Si se pulsa el botón, se debe incrementar el valor de la variable en uno. Si el valor de la cuenta sube del numero 9999 se debe continuar en el número 0. A continuación se muestra el circuito que se debe utilizar. 

    Nota importante

Utilizando el MAX7219 como driver del display 7 segmentos, en recomendable utilizar una librería que facilite la programación. Nosotros hemos utilizado LedControl de Eberhard Fahle.



// Incluimos la libreria necesaria
#include "LedControl.h"

// Se definen los pines de los botones
#define bot_pos 2
#define bot_val 3
#define CS_7SEG 11
#define MOSI 10
#define CLK 13

// Se crea el objeto del 7 segmentos
  // Pin 11 => SS
  // Pin 11 => MOSI
  // Pin 13 => CLK
LedControl SEG_7 = LedControl(MOSI, CLK, CS_7SEG, 0);

// Se crean variables de valor y posición
int pos = 0;
int val = 0;
int a = 0;

void setup() {
  // Encender display 7 segmentos
  SEG_7.shutdown(0, false);
  // Seleccionar intensidad del display 7 segmentos
  SEG_7.setIntensity(0, 8);
  // Borrar todos los digitos del display
  SEG_7.clearDisplay(0);
}
void loop() {
  // Si se pulsa el boton de cambiar de posición
  if(digitalRead(bot_pos)==HIGH){
    // Bloquear hasta dejar de pulsar el boton
    while(digitalRead(bot_pos)==HIGH){}
    pos++;  // Incrementar valor de posición
    a = 1;  // Cambiar valor display
  }
  // Si se pulsa el boton de cambiar de valor
  if(digitalRead(bot_val)==HIGH){
    // Bloquear hasta dejar de pulsar el boton
    while(digitalRead(bot_val)==HIGH){}
    val++;  // Incrementar valor del digito
    a = 1;  // Cambiar valor display
  }
  // Si el valor de posición alcanza 4
  if(pos>=4){
    pos = 0;  // Reiniciar valor de posición
  }
  // Si el valor del digito supera 9
  if(val>=10){
    val = 0;  // Reiniciar valor del dígito
  }
  // Si se ha pulsado un botón
  if(a=1){
    // Borrar display
    SEG_7.clearDisplay(0);
    // Mostrar nuevo dígito
    SEG_7.setDigit(0,pos,val,false);
    // Cambiar valor de variable a
    a = 0;
  }
}

Actualmente no está disponible la solución a la actividad en Bloques.
Vistas
11 Número de vistas
11 Vistas de miembros
0 Vistas públicas
Acciones
0 Gustos
0 No me gusta
0 Comentarios
Compartir en redes sociales
Compartir enlace
Compartir por correo

Por favor iniciar sesión para compartir esto webpage por correo.