- 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 27: RTC
Actividad 27

Registro de eventos con RTC
Imagina que estás programando un sistema que registra el accionamiento de la puerta de garaje de una comunidad de vecinos. Así, simularemos la apertura de la puerta con un pulsador, y mostraremos la hora en tiempo real en la pantalla LCD. Para registrar las aperturas, imprimiremos en la pantalla OLED el último accionamiento de la puerta.

Pista 1 (Bloques): Configuración del RTC
Recuerda que, la extensión de MentorBit para mBlock (si no la has descargado, puedes hacerlo desde
el apartado Descripción de mBlock), incluye el siguiente bloque con el que podemos configurar el
el apartado Descripción de mBlock), incluye el siguiente bloque con el que podemos configurar el
RTC:


Pista 2 (Bloques): Obtención de fecha y hora del RTC
Recuerda que la extensión de MentorBit para mBlock incluye el siguiente bloque con el que podemos
controlar el RTC:

controlar el RTC:

Pista 3 (Bloques): Retardos y configuración del display
Recuerda que, al actualizar constantemente el contenido de las pantallas, puede darse que no se aprecie
con claridad. Por ello, podemos configurar un pequeño retardo, el cual nos permita actualizarlo con una
menor frecuencia.

Ten en cuenta que, al utilizar retardos, el funcionamiento de los pulsadores y dispositivos del sistema
puede verse afectado debido a la coincidencia de los tiempos de ejecución, lo que podría incluso
colapsar el programa completo. Por esta razón, se recomienda utilizar retardos pequeños para reducir
este efecto.
con claridad. Por ello, podemos configurar un pequeño retardo, el cual nos permita actualizarlo con una
menor frecuencia.

Ten en cuenta que, al utilizar retardos, el funcionamiento de los pulsadores y dispositivos del sistema
puede verse afectado debido a la coincidencia de los tiempos de ejecución, lo que podría incluso
colapsar el programa completo. Por esta razón, se recomienda utilizar retardos pequeños para reducir
este efecto.
Pista 1 (C/C++): Incluir librería del Data Logger
Recuerda que, para incluir una librería previamente instalada en nuestro programa, debemos utilizar
la sentencia siguiente:
En nuestro ejemplo incluiremos la librería MentorBitDataLogger, que facilita el uso del Reloj en Tiempo Real
con MentorBit.
la sentencia siguiente:
#include <MentorBitDataLogger.h>
En nuestro ejemplo incluiremos la librería MentorBitDataLogger, que facilita el uso del Reloj en Tiempo Real
con MentorBit.
Pista 2 (C/C++): Inicialización y configuración del RTC
Recuerda que, para utilizar el RTC, primero debes inicializarlo y configurar la hora actual del mismo,
con el fin de disponer de una fecha y hora actualizadas. Esto se consigue con las siguientes líneas:
miMentorBitDataLogger.inicializarRTC();
Fíjate que, la función ajustarHoraRTC, puede invocarse de dos maneras diferentes. La primera (sin
con el fin de disponer de una fecha y hora actualizadas. Esto se consigue con las siguientes líneas:
miMentorBitDataLogger.inicializarRTC();
miMentorBitDataLogger.ajustarHoraRTC();
miMentorBitDataLogger.ajustarHoraRTC(AÑO, MES, DIA, HORA, MINUTO, SEGUNDO);
miMentorBitDataLogger.ajustarHoraRTC(AÑO, MES, DIA, HORA, MINUTO, SEGUNDO);
Fíjate que, la función ajustarHoraRTC, puede invocarse de dos maneras diferentes. La primera (sin
argumentos), configura el reloj con la fecha y hora del ordenador en el momento en que el código se
sube al microcontrolador. En la segunda forma, podemos pasar como argumento cualquiera de los
parámetros que se indican, en el mismo orden, para configurar el reloj con dichos datos.
Pista 3 (C/C++): Obtención de la hora del RTC
Recuerda que, para obtener la hora actual registrada en el RTC, puedes utilizar la siguiente función:
miMentorBitDataLogger.obtenerHoraRTC();
Esta función devuelve una cadena de carácteres (String) con el siguiente formato:
AÑO-MES-DIA
HORA:MIN:SEG.
Esta función devuelve una cadena de carácteres (String) con el siguiente formato:
AÑO-MES-DIA
HORA:MIN:SEG.
Solución (C/C++)
#include <MentorBit.h>
#include <MentorBitPantallas.h>
#include <MentorBitDataLogger.h>
// Declaración de instancia de la clase
MentorBit miMentorBit;
MentorBitPantallas misPantallas;
MentorBitDataLogger miDataLogger;
// Inicialización del sketch
void setup() {
// Inicializamos y configuramos la pantalla LCD
misPantallas.inicializarLCD();
misPantallas.lcd.backlight();
misPantallas.lcd.clear();
// Mostramos un mensaje inicial por la LCD
misPantallas.lcd.setCursor(3, 0);
misPantallas.lcd.print("Registro de");
misPantallas.lcd.setCursor(3, 1);
misPantallas.lcd.print("eventos");
// Inicializamos y configuramos la pantalla OLED
misPantallas.inicializarOLED();
misPantallas.oled.setTextColor(SSD1306_WHITE);
misPantallas.oled.setTextSize(1);
// Mostramos un mensaje inicial por la OLED
misPantallas.oled.setCursor(0, 0);
misPantallas.oled.println("Registros");
misPantallas.oled.display();
// Inicalizamos el RTC
miDataLogger.inicializarRTC();
// Configuramos el RTC con la fecha y la hora del PC
miDataLogger.ajustarHoraRTC();
// Esperamos un poco antes de empezar
delay(2000);
}
// Bucle principal del sketch
void loop() {
// Obtenemos la fecha y hora del RTC
String fecha_hora_actual = miDataLogger.obtenerHoraRTC();
// Separamos la fecha del resto de la cadena
String fecha_actual = fecha_hora_actual.substring(0, 10);
// Separamos la hora del resto de la cadena
String hora_actual = fecha_hora_actual.substring(11);
// Comprobamos que se ha accionado el pulsador
if(digitalRead(miMentorBit.PULSADOR_PULLDOWN_DIGITAL) == HIGH) {
// Vaciamos la pantalla OLED
misPantallas.oled.clearDisplay();
// Imprimimos el mensaje por defecto
misPantallas.oled.setCursor(0, 0);
misPantallas.oled.println("Registros");
// Imprimimos la hora actual
misPantallas.oled.setCursor(20, 32);
misPantallas.oled.println(hora_actual);
// Actualizamos nuestra OLED
misPantallas.oled.display();
}
// Limpiamos la pantalla LCD
misPantallas.lcd.clear();
// Imprimimos en la primera línea la fecha actual
misPantallas.lcd.setCursor(3, 0);
misPantallas.lcd.print(fecha_actual);
// Imprimimos en la primera línea la hora actual
misPantallas.lcd.setCursor(4, 1);
misPantallas.lcd.print(hora_actual);
// Esperamos un poco antes de continuar
delay(200);
}
Puedes descargar la solución sin utilizar nuestra librería en el siguiente icono:| Vistas | |
|---|---|
| 15 | Número de vistas |
| 15 | 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.
