- Portada
- Fundamentos de MentorBit
- Alimentación de circuitos y dispositivos
-
Programación y ejercicios básicos
-
Introducción
-
Driver necesario para programar la placa
-
Descripción de mBlock
-
Descripción de IDE Arduino
-
Estructura de un programa
-
Variables
-
Tipos de datos
-
Operadores
-
Sintaxis
-
Principales Bloques
-
Principales funciones C/C++
-
Monitor Serial
-
Actividad 1: Mi primer programa
-
Estructuras de control
-
Actividad 2: Bucle for
-
Actividad 3: Bucle while
-
Actividad 4: Condicional if y else
-
Actividad 5: Sentencia Switch
-
Arrays
-
Actividad 6: Los Arrays
-
Recibir por Serie
-
Actividad 7: Recepción por bus serial
-
Funciones
-
Funciones en Bloques
-
Funciones en C/C++
-
Actividad 8: Mis primeras funciones
-
Clases en C/C++
-
Actividad 9: Mi primera Clase
-
Actividad 10: Mi propia Calculadora
-
-
Programación y ejercicios con hardware
-
Introducción a MentorBit
-
LEDs
-
Actividad 11: LEDs de colores
-
El LED RGB
-
Actividad 12: LED RGB
-
El pulsador
-
Actividad 13: Pulsador en Pull Down
-
Actividad 14: Pulsador en Pull Up
-
El Potenciómetro
-
Actividad 15: Potenciómetro
-
El Zumbador
-
Actividad 16: Zumbador Pasivo
-
La Fotorresistencia
-
Actividad 17: LDR
-
Sensor de temperatura DS18B20
-
Actividad 18: DS18B20
-
El Servomotor
-
Actividad 19: Servomotor
-
Motores Corriente Continua
-
Puente en H
-
Actividad 20: Motor DC
-
Introducción a Motores paso a paso
-
Actividad 21: Motor paso a paso
-
Displays 7 Segmentos
-
Actividad 22: Display 7 Segmentos
-
Pantallas LCD
-
Actividad 23: Pantalla LCD
-
Actividad 24: Pantalla LCD
-
Pantallas OLED
-
Actividad 25: Pantalla OLED
-
Actividad 26: Pantalla OLED
-
Reloj en Tiempo Real (RTC)
-
Actividad 27: RTC
-
Tarjeta micro SD
-
Actividad 28: Micro SD
-
Actividad 29: Micro SD & RTC
-
Actividad 30: Micro SD & RTC
-
Puertos para Módulos MentorBit
-
Puertos de Comunicaciones
-
Puertos Genéricos
-
- Problemas Adicionales
- Proyectos Finales
Actividad 22: Display 7 Segmentos
Actividad 22

Temporizador ajustable
En esta Actividad utilizaremos un display de 7 segmentos de cuatro dígitos para crear un temporizador digital. Debemos programar el MentorBit para que muestre un conteo regresivo en el display, comenzando desde un tiempo que podremos modificar con dos pulsadores (uno para subir la cuenta y otro para bajarla). Al presionar un tercer botón, el temporizador iniciará la cuenta, actualizando el display en tiempo real hasta llegar a cero. Además, se incorporará una alarma sonora que se activará al terminar la cuenta y un cuarto pulsador con el que podremos reiniciar el temporizador.

Pista 1 (Bloques): Imprimir valores por el Display 7 Segmentos
Recuerda que la extensión de MentorBit para mBlock incluye el siguiente bloque con el que podemos
controlar el display 7 segmentos:

controlar el display 7 segmentos:

Pista 1 (C/C++): Incluir librería del Display 7 Segmentos
Recuerda que para incluir una librería previamente instalada en nuestro programa, debemos utilizar
la sentencia siguiente:
En nuestro ejemplo incluiremos la librería MentorBitDisplay, que facilita el uso del display 7 segmentos
del MentorBit.
la sentencia siguiente:
#include <MentorBitDisplay.h>
En nuestro ejemplo incluiremos la librería MentorBitDisplay, que facilita el uso del display 7 segmentos
del MentorBit.
Pista 2 (C/C++): Conexiones del Display 7 Segmentos
La librería MentorBitDisplay no otorga acceso directo a las conexiones del Display 7 Segmentos, ya que
éste se controla mediante un driver manejado por protocolo I2C.
éste se controla mediante un driver manejado por protocolo I2C.
Pista 3 (C/C++): Inicializar el Display 7 Segmentos
Recuerda que la librería de MentorBitDisplay da acceso a la siguiente función específica que inicializa
el Display 7 Segmentos:
el Display 7 Segmentos:
miMentorBitDisplay.inicializarDisplay();
Pista 4 (C/C++): Imprimir valores por el Display 7 Segmentos
Recuerda que la librería de MentorBitDisplay da acceso a la siguiente función específica que permite
controlar directamente el Display 7 Segmentos:
controlar directamente el Display 7 Segmentos:
miMentorBitDisplay.imprimir(valor);
Donde valor es un dato que queremos imprimir en el display. Este valor puede ser un carácter, una
cadena, o String, o un valor numérico.
Donde valor es un dato que queremos imprimir en el display. Este valor puede ser un carácter, una
cadena, o String, o un valor numérico.
Solución (C/C++)
#include <MentorBit.h>
#include <MentorBitDisplay.h>
// Declaración de instancia de las clases
MentorBit miMentorBit;
MentorBitDisplay miDisplay;
// Variable para controlar el flujo del programa
bool cuenta_en_marcha = false;
// Variable para guardar el valor de la cuenta
// Como guardamos un tiempo, será número decimal
float cuenta = 0;
// Inicialización del sketch
void setup() {
// Inicializamos el Display 7 Segmentos
miDisplay.inicializarDisplay();
miDisplay.imprimir(cuenta);
// Configuramos por defecto el Zumbador apagado
noTone(miMentorBit.ZUMBADOR);
}
// Bucle principal del sketch
void loop() {
// Comprobamos que se pulsa el botón para aumentar la cuenta del temporizador
if(!cuenta_en_marcha && (digitalRead(miMentorBit.PULSADOR_PULLDOWN_DIGITAL) == HIGH)) {
cuenta++; // Aumentamos en 1 la cuenta
miDisplay.imprimir(cuenta); // Mostramos el nuevo valor
delay(250); // Esperamos un poco antes de continuar
// Comprobamos que se pulsa el botón para disminuir la cuenta del temporizador
} else if(!cuenta_en_marcha && (digitalRead(miMentorBit.PULSADOR_PULLDOWN_ANALOGICO) == HIGH)) {
// Comprobamos que la cuenta tiene al menos un valor que disminuir
if(cuenta > 0) {
cuenta--; // Disminuimos en 1 la cuenta
miDisplay.imprimir(cuenta); // Mostramos el nuevo valor
delay(250); // Esperamos un poco antes de continuar
}
}
// Comprobamos que se quiere iniciar la temporización
if(!cuenta_en_marcha && (digitalRead(miMentorBit.PULSADOR_PULLUP_DIGITAL) == LOW)) {
cuenta_en_marcha = true;
}
// Comprobamos que estamos contando el tiempo
if(cuenta_en_marcha) {
// Comprobamos que la cuenta no haya llegado a cero
if(cuenta > 0) {
delay(10); // Esperamos un tiempo pequeño (10 milisegundos)
cuenta -= 0.01; // Restamos el mismo tiempo esperado a la cuenta
} else {
tone(miMentorBit.ZUMBADOR, 5000, 100); // Generamos un tono de final de cuenta
cuenta = 0.00; // Ponemos la cuenta en cero
cuenta_en_marcha = false; // Ponemos la marca indicando que detuvimos la cuenta
}
miDisplay.imprimir(cuenta); // Imprimimos el valor actual de la cuenta
}
// Comprobamos que estamos contando y se acciona la parada de la temporización
if(cuenta_en_marcha && (digitalRead(miMentorBit.PULSADOR_PULLUP_ANALOGICO) == LOW)) {
cuenta_en_marcha = false; // Paramos de contar el tiempo
cuenta = 0.00; // Reiniciamos el tiempo a cero
miDisplay.imprimir(cuenta); // Imprimimos el valor actual de la cuenta
}
}
La solución sin utilizar nuestra librería no está disponible actualmente.
| Vistas | |
|---|---|
| 18 | Número de vistas |
| 18 | Vistas de miembros |
| 0 | Vistas públicas |
| Acciones | |
|---|---|
| 0 | Gustos |
| 0 | No me gusta |
| 0 | Comentarios |
Compartir por correo
Por favor iniciar sesión para compartir esto webpage por correo.
