- 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 28: Micro SD
Actividad 28

Registro de eventos con Micro SD
Imagina que estás programando un sistema que registra el accionamiento de la puerta de garaje de una comunidad de vecinos, como en la Actividad 27. En esta ocasión, simularemos la apertura de la puerta con un pulsador y guardaremos un mensaje cada vez que el pulsador se accione. Llevaremos la cuenta de las veces que la puerta se ha abierto en un archivo que llamaremos "Registro.txt" dentro de la Tarjeta Micro SD. Además, vamos a mostrar la cuenta de aperturas en el Display 7 segmentos para verificar que el archivo tiene el número correcto cuando revisemos el archivo de la tarjeta en un ordenador.

Pista 1 (Bloques): Escribir en la Tarjeta Micro SD
Recuerda que, la extensión de MentorBit para mBlock, incluye el siguiente bloque con el que podemos
controlar la Tarjeta Micro SD:

Ten en cuenta que, el nombre del archivo que quieras manejar dentro de la Tarjeta Micro SD, debe llevar
la extensión del mismo en el propio nombre (por ejemplo, "Prueba.txt"). Además, debes indicar la
ubicación del archivo dentro de la Tarjeta, por ejemplo, normalmente ubicaremos el archivo nada más
abrir la Micro SD, por lo que el nombre completo del archivo sería "/Prueba.txt".
controlar la Tarjeta Micro SD:

Ten en cuenta que, el nombre del archivo que quieras manejar dentro de la Tarjeta Micro SD, debe llevar
la extensión del mismo en el propio nombre (por ejemplo, "Prueba.txt"). Además, debes indicar la
ubicación del archivo dentro de la Tarjeta, por ejemplo, normalmente ubicaremos el archivo nada más
abrir la Micro SD, por lo que el nombre completo del archivo sería "/Prueba.txt".
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:
#include <MentorBitDataLogger.h>
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 de la Tarjeta Micro SD
miMentorBitDataLogger.inicializarSD();
Recuerda que, para utilizar la Tarjeta Micro SD, primero debes inicializarla utilizando la siguiente función:
miMentorBitDataLogger.inicializarSD();
Pista 3 (C/C++): Escribir en un archivo en la Tarjeta Micro SD
Recuerda que, para escribir es un archivo dentro de la Tarjeta Micro SD, puedes utilizar la siguiente
función:
miMentorBitDataLogger.escribirEnArchivo(ARCHIVO, MENSAJE);
Donde ARCHIVO es el nombre del archivo (con la extensión, por ejemplo "Prueba.txt") en el que queremos escribir el MENSAJE entregado a la función. Ten en cuenta que el nombre del archivo no puede ser de más de ocho caracteres, mientras la extensión no puede ser de más de tres.
función:
miMentorBitDataLogger.escribirEnArchivo(ARCHIVO, MENSAJE);
Donde ARCHIVO es el nombre del archivo (con la extensión, por ejemplo "Prueba.txt") en el que queremos escribir el MENSAJE entregado a la función. Ten en cuenta que el nombre del archivo no puede ser de más de ocho caracteres, mientras la extensión no puede ser de más de tres.
Pista 4 (C/C++): Comprobar que la Tarjeta Micro SD se ha abierto correctamente
Ten en cuenta que, siempre que inicializamos una Tarjeta Micro SD, debemos comprobar que se ha
hecho correctamente, ya que puede fallar por varios factores, como un nombre de archivo inválido o
una Tarjeta en mal estado. Para hacer esta comprobación, podemos inicializar la Tarjeta Micro SD
utilizando el siguiente fragmento de código, que se aprovecha de que la función inicializarSD devuelve
un booleano, en función de si se ha podido, o no, iniciar la Tarjeta:
if(miDataLogger.inicializarSD()) {
// Tarjeta Micro SD iniciada correctamente
} else {
// Algo fue mal con la Tarjeta Micro SD
}
Solución (C/C++)
#include <MentorBit.h>
#include <MentorBitDisplay.h>
#include <MentorBitDataLogger.h>
// Declaración de instancia de las clases
MentorBit miMentorBit;
MentorBitDisplay miDisplay;
MentorBitDataLogger miDataLogger;
// Variable con la cuenta de aperturas
int aperturas = 0;
// Nombre del archivo en la tarjeta SD
String archivo = "Registro.txt";
// Variable para verificar si la tarjeta SD está insertada
bool sdInsertada = true; // Al principio asumimos que la SD está insertada
// Inicialización del sketch
void setup() {
// Inicializamos la comunicación serie para depuración
Serial.begin(9600);
// Inicializamos el display de 7 segmentos
miDisplay.inicializarDisplay();
// Inicializamos el pulsador
pinMode(miMentorBit.PULSADOR_PULLDOWN_DIGITAL, INPUT);
// Comprobamos que la tarjeta Micro SD se inicialice correctamente
sdInsertada = miDataLogger.inicializarSD();
if (sdInsertada) {
// Guardamos un primer mensaje distintivo al comienzo del registro
miDataLogger.escribirEnArchivo(archivo, "---- Registro de aperturas ----");
} else {
// Si no se puede inicializar la tarjeta SD, mostramos el mensaje de error en el display
miDisplay.imprimir("Error SD");
}
// Imprimir mensaje de inicio
Serial.println("Sistema iniciado. Contador de aperturas: 0");
}
// Bucle principal del sketch
void loop() {
// Comprobamos si la tarjeta SD está presente
bool sdPresente = miDataLogger.inicializarSD();
// Si la tarjeta SD se ha quitado durante la ejecución
if (sdPresente != sdInsertada) {
if (sdPresente) {
// La tarjeta SD ha sido insertada nuevamente
miDisplay.imprimir(aperturas); // Muestra el número de aperturas en el display
miDataLogger.escribirEnArchivo(archivo, "---- Registro de aperturas ----"); // Reabre el archivo
sdInsertada = true; // Actualizamos el estado de la tarjeta SD
Serial.println("Tarjeta SD insertada.");
} else {
// La tarjeta SD ha sido retirada
miDisplay.imprimir("Error SD"); // Muestra un mensaje de error en el display
sdInsertada = false; // Actualizamos el estado de la tarjeta SD
Serial.println("Tarjeta SD retirada.");
}
}
// Leemos el estado del pulsador
int estadoPulsador = digitalRead(miMentorBit.PULSADOR_PULLDOWN_DIGITAL);
// Si el pulsador es presionado (estado HIGH)
if (estadoPulsador == HIGH) {
// Aumentamos en 1 el número de aperturas
aperturas++;
// Actualizamos la cuenta en el Display de 7 segmentos
miDisplay.imprimir(aperturas);
// Si la tarjeta SD está presente, guardamos el número de aperturas en el archivo de la tarjeta SD
if (sdInsertada) {
String mensaje = String(aperturas) + " aperturas de la puerta.";
if (miDataLogger.escribirEnArchivo(archivo, mensaje)) {
// Si se escribe correctamente en el archivo, imprimimos en el monitor serie
Serial.println(mensaje);
}
}
// Esperamos un poco antes de volver a leer el pulsador (para evitar múltiples lecturas rápidas)
delay(300);
}
}
La solución sin utilizar nuestra librería no está disponible actualmente.
| Vistas | |
|---|---|
| 10 | Número de vistas |
| 10 | 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.

