Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed
Fork of VmRecorderV1dot1 by
VmRecorderV1dot1.cpp
- Committer:
- JuanManuelAmador
- Date:
- 2015-06-15
- Revision:
- 0:3d456b8ce449
- Child:
- 1:a3c9b672b8e2
File content as of revision 0:3d456b8ce449:
#include "mbed.h"
#include "MSCFileSystem.h"
#include "Configuracion.h"
#include "SistemaArchivos.h"
#include "FechaHora.h"
#include "SelecManager.h"
#include "ScreenManager.h"
#include "Portada.cpp"
#include "Menu.h"
#include "ListaSelec.h"
#include "IdiomaSelec.h"
#include "FormaSelec.h"
#include "VelAdquisicionSel.h"
#include "RestaurarValores.h"
#include "Mensaje.h"
#include "NuevoViaje.h"
#include "GuardarViaje.h"
#include "ArchivoGuardado.h"
#include "ViajesGuardados.h"
#include "Teclado.h"
#include "GuardarOtroNombre.h"
#include "OpcionesViaje.h"
#include "FechaHoraConf.h"
#include "AutoCalibracion.h"
//DEFINICIONES
#define ESPANOL 0
#define INGLES 1
/// PEN DRIVE ///
MSCFileSystem msc("usb");
/// MEMORIA FLASH LOCAL DE LA MBED ///
LocalFileSystem local("local"); // Create the local filesystem under the name "local"
Configuracion config = Configuracion();
SistemaArchivos SA = SistemaArchivos();
// Fecha y hora
FechaHora FH;
/********************************************
PANTALLAS
********************************************/
SPI spi( p5, NC, p7 ); // MOSI, MISO, CLK
DogMLCD dog( spi, p10, p8); // SPI, CS, A0
ScreenManager SC(&dog); // Screen Manager
SelecManager SM; // gestiona las pantallas que tienen elementos seleccionables
Portada portadaVm = Portada();
Screen* pportadaVm = &portadaVm;
Menu menu = Menu();
Screen* pmenu = &menu;
Seleccion* psmenu = &menu;
Teclado keyboard = Teclado();
Screen* pkeyboard = &keyboard;
Seleccion* pskeyboard = &keyboard;
ViajesGuardados listaViajes = ViajesGuardados("No existen viajes");
Screen* plistaViajes = &listaViajes;
Seleccion* pslistaViajes = &listaViajes;
ListaSelec configuracion = ListaSelec();
Screen* pconfiguracion = &configuracion;
Seleccion* psconfiguracion = &configuracion;
RestaurarValores restaurar = RestaurarValores("\250Est\240 seguro?");
Screen* prestaurar = &restaurar;
Seleccion* psrestaurar = &restaurar;
IdiomaSelec idioma = IdiomaSelec();
Screen* pidioma = &idioma;
Seleccion* psidioma = &idioma;
FormaSelec formaSelec = FormaSelec();
Screen* pformaSelec = &formaSelec;
Seleccion* psformaSelec = &formaSelec;
VelAdquisicionSel velAdquisionSel = VelAdquisicionSel();
Screen* pvelAdquisionSel = &velAdquisionSel;
Seleccion* psvelAdquisionSel = &velAdquisionSel;
NuevoViaje nuevoViaje = NuevoViaje("Adquiriendo datos", "Frecuencia: ", "OK para comenzar.", "OK para finalizar.", "Pulse atr\240s para cancelar.");
Screen* pnuevoViaje = &nuevoViaje;
Mensaje noUSB = Mensaje("menu", "Pulse OK para volver.");
Screen* pnoUSB = &noUSB;
GuardarOtroNombre guardadoCorrect = GuardarOtroNombre("menu", "Pulse OK para continuar.", "Espere por favor");
Screen* pguardadoCorrect = &guardadoCorrect;
GuardarViaje guardaViaje = GuardarViaje();
Screen* pguardaViaje = &guardaViaje;
Seleccion* psguardaViaje = &guardaViaje;
OpcionesViaje opcionesViaje = OpcionesViaje();
Screen* popcionesViaje = &opcionesViaje;
Seleccion* psopcionesViaje = &opcionesViaje;
ArchivoGuardado archivoGuardado = ArchivoGuardado("guardaViaje", "Pulse OK para continuar.", "Archivo guardado:", "Fecha:", "Hora:");
Screen* parchivoGuardado = &archivoGuardado;
Mensaje archivoBorrado = Mensaje("menu", "Pulse OK para continuar.");
Screen* parchivoBorrado = &archivoBorrado;
Mensaje nombreExistente = Mensaje("guardaViaje", "Pulse OK para volver.");
Screen* pnombreExistente = &nombreExistente;
FechaHoraConf fechaHoraConf = FechaHoraConf("Pulse las teclas arriba y", "abajo para cambiar los", "valores.", "Fecha:", "Hora:");
Screen* pfechaHoraConf = &fechaHoraConf;
Seleccion* psfechaHoraConf = &fechaHoraConf;
AutoCalibracion calibrando = AutoCalibracion();
Screen* pcalibrando = &calibrando;
// Inglés
Menu menuEN = Menu();
Screen* pmenuEN = &menuEN;
Seleccion* psmenuEN = &menuEN;
ViajesGuardados listaViajesEN = ViajesGuardados("No travels");
Screen* plistaViajesEN = &listaViajesEN;
Seleccion* pslistaViajesEN = &listaViajesEN;
ListaSelec configuracionEN = ListaSelec();
Screen* pconfiguracionEN = &configuracionEN;
Seleccion* psconfiguracionEN = &configuracionEN;
RestaurarValores restaurarEN = RestaurarValores("Are you sure?");
Screen* prestaurarEN = &restaurarEN;
Seleccion* psrestaurarEN = &restaurarEN;
IdiomaSelec idiomaEN = IdiomaSelec();
Screen* pidiomaEN = &idiomaEN;
Seleccion* psidiomaEN = &idiomaEN;
FormaSelec formaSelecEN = FormaSelec();
Screen* pformaSelecEN = &formaSelecEN;
Seleccion* psformaSelecEN = &formaSelecEN;
NuevoViaje nuevoViajeEN = NuevoViaje("Acquiring data", "Frecuency: ", "Press OK to start.", "Press OK to finish.", "Press back to cancel.");
Screen* pnuevoViajeEN = &nuevoViajeEN;
Mensaje noUSBEN = Mensaje("menu", "Press OK to back.");
Screen* pnoUSBEN = &noUSBEN;
GuardarOtroNombre guardadoCorrectEN = GuardarOtroNombre("menu", "Press OK to continue.", "Please wait");
Screen* pguardadoCorrectEN = &guardadoCorrectEN;
GuardarViaje guardaViajeEN = GuardarViaje();
Screen* pguardaViajeEN = &guardaViajeEN;
Seleccion* psguardaViajeEN = &guardaViajeEN;
OpcionesViaje opcionesViajeEN = OpcionesViaje();
Screen* popcionesViajeEN = &opcionesViajeEN;
Seleccion* psopcionesViajeEN = &opcionesViajeEN;
ArchivoGuardado archivoGuardadoEN = ArchivoGuardado("guardaViaje", "Press OK to continue.", "Saved file:", "date:", "Time:");
Screen* parchivoGuardadoEN = &archivoGuardadoEN;
Mensaje archivoBorradoEN = Mensaje("menu", "Press OK to continue.");
Screen* parchivoBorradoEN = &archivoBorradoEN;
Mensaje nombreExistenteEN = Mensaje("guardaViaje", "Press OK to back.");
Screen* pnombreExistenteEN = &nombreExistenteEN;
FechaHoraConf fechaHoraConfEN = FechaHoraConf("Press the up and down keys to change values.", "", "", "Date:", "Time:");
Screen* pfechaHoraConfEN = &fechaHoraConfEN;
Seleccion* psfechaHoraConfEN = &fechaHoraConfEN;
/********************************************/
/********************************************
BOTONES
********************************************/
DigitalIn boton1(p30);
DigitalIn boton2(p29);
DigitalIn boton3(p28);
DigitalIn boton4(p27);
DigitalIn boton5(p26);
DigitalIn boton6(p14);
/********************************************/
DigitalOut myled(LED2);
Timer t;
int main()
{
/********************************************
PANTALLAS
********************************************/
/******************* Se añaden las pantallas al ScreenManager ******************************/
// Portada inicial
SC.addScreen(pportadaVm, "portada", ESPANOL);
SC.addScreen(pportadaVm, "portada", INGLES);
// Menu principal
menu.addElement("Nuevo viaje", "viaje");
menu.addElement("Viajes guardados", "listadoViajes");
menu.addElement("Configuraci\242n", "configuracion");
menu.setSelect(0);
SC.addScreen(pmenu, "menu", ESPANOL);
SM.addScreen(psmenu);
menuEN.addElement("New ride", "viaje");
menuEN.addElement("Saved rides", "listadoViajes");
menuEN.addElement("Settings", "configuracion");
menuEN.setSelect(0);
SC.addScreen(pmenuEN, "menu", INGLES);
SM.addScreen(psmenuEN);
// Pantalla teclado
keyboard.setSelect(0);
SC.addScreen(pkeyboard, "teclado", ESPANOL); // El teclado es el mismo para todos los idiomas
SC.addScreen(pkeyboard, "teclado", INGLES);
SM.addScreen(pskeyboard);
// Pantalla de autocalibración
SC.addScreen(pcalibrando, "calibrate", ESPANOL); // La pantalla de calibración es la misma para todos los idiomas (el idioma se controla en el propio código de la pantalla)
SC.addScreen(pcalibrando, "calibrate", INGLES);
// Lista de viajes guardados
listaViajes.setBackScreen("menu");
SC.addScreen(plistaViajes, "listadoViajes", ESPANOL);
SM.addScreen(pslistaViajes);
listaViajesEN.setBackScreen("menu");
SC.addScreen(plistaViajesEN, "listadoViajes", INGLES);
SM.addScreen(pslistaViajesEN);
// Lista de configuración
configuracion.addElement("Velocidad de adquisici\242n", "velAdquisionSel");
configuracion.addElement("Idioma", "idioma");
configuracion.addElement("Visualizaci\242n", "formaSelec");
configuracion.addElement("Ajustar fecha y hora", "confFecha");
configuracion.addElement("Autocalibraci\242n", "calibrate");
configuracion.addElement("Valores de f\240brica", "restaurar");
configuracion.setBackScreen("menu");
SC.addScreen(pconfiguracion, "configuracion", 0);
SM.addScreen(psconfiguracion);
configuracionEN.addElement("Sample Rate", "velAdquisionSel");
configuracionEN.addElement("Languaje", "idioma");
configuracionEN.addElement("Visualization", "formaSelec");
configuracionEN.addElement("Set date and time", "confFecha");
configuracionEN.addElement("Autocalibration", "calibrate");
configuracionEN.addElement("Restore default settings", "restaurar");
configuracionEN.setBackScreen("menu");
SC.addScreen(pconfiguracionEN, "configuracion", 1);
SM.addScreen(psconfiguracionEN);
// Pantalla de restauración de datos de fábrica
restaurar.addElement("No restaurar", "configuracion");
restaurar.addElement("resturar", "configuracion");
restaurar.setBackScreen("configuracion");
SC.addScreen(prestaurar, "restaurar", 0);
SM.addScreen(psrestaurar);
restaurarEN.addElement("do not restore", "configuracion");
restaurarEN.addElement("restore", "configuracion");
restaurarEN.setBackScreen("configuracion");
SC.addScreen(prestaurarEN, "restaurar", 1);
SM.addScreen(psrestaurarEN);
// pantalla de selección de idioma
idioma.addElement("Espa\244ol", "configuracion");
idioma.addElement("Ingl\202s", "configuracion");
idioma.setBackScreen("configuracion");
SC.addScreen(pidioma, "idioma", 0);
SM.addScreen(psidioma);
idiomaEN.addElement("Spanish", "configuracion");
idiomaEN.addElement("English", "configuracion");
idiomaEN.setBackScreen("configuracion");
SC.addScreen(pidiomaEN, "idioma", 1);
SM.addScreen(psidiomaEN);
// Pantalla de selección de la forma de selección
formaSelec.addElement("Sombreado", "configuracion");
formaSelec.addElement("Encuadrado", "configuracion");
formaSelec.setBackScreen("configuracion");
SC.addScreen(pformaSelec, "formaSelec", 0);
SM.addScreen(psformaSelec);
formaSelecEN.addElement("Shading", "configuracion");
formaSelecEN.addElement("Framing", "configuracion");
formaSelecEN.setBackScreen("configuracion");
SC.addScreen(pformaSelecEN, "formaSelec", 1);
SM.addScreen(psformaSelecEN);
// Pantalla de selección de la velocidad de adquisición
velAdquisionSel.addElement("1000 Hz", "configuracion");
velAdquisionSel.addElement("320 Hz", "configuracion");
velAdquisionSel.setBackScreen("configuracion");
SC.addScreen(pvelAdquisionSel, "velAdquisionSel", ESPANOL);
SC.addScreen(pvelAdquisionSel, "velAdquisionSel", INGLES); // Como sólo se muestran valores y sus unidades no es necesaria esta pantalla en otros idiomas
SM.addScreen(psvelAdquisionSel);
// Pantalla de cambio de fecha y hora
fechaHoraConf.setSelect(0);
fechaHoraConf.setBackScreen("configuracion");
SC.addScreen(pfechaHoraConf, "confFecha", ESPANOL);
SM.addScreen(psfechaHoraConf);
fechaHoraConfEN.setSelect(0);
fechaHoraConfEN.setBackScreen("configuracion");
SC.addScreen(pfechaHoraConfEN, "confFecha", INGLES);
SM.addScreen(psfechaHoraConfEN);
// Pantalla de nuevo viaje
SC.addScreen(pnuevoViaje, "viaje", 0);
SC.addScreen(pnuevoViajeEN, "viaje", 1);
// Mensaje de USB lleno o desconectado
noUSB.addElement("USB desconectado");
noUSB.addElement("o lleno");
noUSB.setBackScreen("menu");
SC.addScreen(pnoUSB, "USBdesconectado", 0);
noUSBEN.addElement("USB disconected");
noUSBEN.addElement("or full");
noUSBEN.setBackScreen("menu");
SC.addScreen(pnoUSBEN, "USBdesconectado", 1);
// Archivo guardado correctamente (Mensaje)
guardadoCorrect.addElement("Archivo guardado");
guardadoCorrect.addElement("correctamente");
guardadoCorrect.setBackScreen("menu");
SC.addScreen(pguardadoCorrect, "fileSaved", ESPANOL);
guardadoCorrectEN.addElement("File saved");
guardadoCorrectEN.addElement("correctly");
guardadoCorrectEN.setBackScreen("menu");
SC.addScreen(pguardadoCorrectEN, "fileSaved", INGLES);
// Pantalla de guardado de viaje
guardaViaje.addElement("Volver al men\243", "menu");
//guardaViaje.addElement("Postprocesado", "menu");
guardaViaje.addElement("Cambiar nombre", "teclado");
guardaViaje.addElement("Borrar", "archivoBorrado");
guardaViaje.setSelect(0);
SC.addScreen(pguardaViaje, "guardaViaje", ESPANOL);
SM.addScreen(psguardaViaje);
guardaViajeEN.addElement("Back to menu", "menu");
//guardaViajeEN.addElement("Postprocessing", "menu");
guardaViajeEN.addElement("Rename", "teclado");
guardaViajeEN.addElement("Delete", "archivoBorrado");
guardaViajeEN.setSelect(0);
SC.addScreen(pguardaViajeEN, "guardaViaje", INGLES);
SM.addScreen(psguardaViajeEN);
// Pantalla de las opciones de un viaje cuando accedes a él mediante la lista de viajes
opcionesViaje.addElement("Cambiar nombre", "teclado");
opcionesViaje.addElement("Borrar", "listadoViajes");
opcionesViaje.setSelect(0);
opcionesViaje.setBackScreen("listadoViajes");
SC.addScreen(popcionesViaje, "rOptions", ESPANOL);
SM.addScreen(psopcionesViaje);
opcionesViajeEN.addElement("Rename", "teclado");
opcionesViajeEN.addElement("Delete", "listadoViajes");
opcionesViajeEN.setSelect(0);
opcionesViajeEN.setBackScreen("listadoViajes");
SC.addScreen(popcionesViajeEN, "rOptions", INGLES);
SM.addScreen(psopcionesViajeEN);
// Mensaje de archivo guardado
SC.addScreen(parchivoGuardado, "archivoGuardado", ESPANOL);
SC.addScreen(parchivoGuardadoEN, "archivoGuardado", INGLES);
// Mensaje de archivo borrado
archivoBorrado.addElement("Viaje borrado");
archivoBorrado.addElement("correctamente");
archivoBorrado.setBackScreen("menu");
SC.addScreen(parchivoBorrado, "archivoBorrado", ESPANOL);
archivoBorradoEN.addElement("Deleted file");
archivoBorradoEN.addElement("corretly");
archivoBorradoEN.setBackScreen("menu");
SC.addScreen(parchivoBorradoEN, "archivoBorrado", INGLES);
// Mensade de existencia de un viaje con el mismo nombre
nombreExistente.addElement("Ya existe un");
nombreExistente.addElement("viaje con el");
nombreExistente.addElement("nombre introducido.");
nombreExistente.setBackScreen("guardaViaje");
SC.addScreen(pnombreExistente, "alredyExist", ESPANOL);
nombreExistenteEN.addElement("Alredy exist a");
nombreExistenteEN.addElement("ride with the");
nombreExistenteEN.addElement("entered name");
nombreExistenteEN.setBackScreen("guardaViaje");
SC.addScreen(pnombreExistenteEN, "alredyExist", INGLES);
/****************************************/
/********************************************
CARGA DE LA CONFIGURACIÓN
********************************************/
char aux[16];
// Se selecciona el idioma
config.getIdioma(aux);
if(strcmp(aux, "spanish") == 0){
SC.selectGroup(0);
}else if(strcmp(aux, "english") == 0){
SC.selectGroup(1);
}
// Se selecciona el modo de selección
config.getFormaSeleccion(aux);
if(strcmp(aux, "shading") == 0){
SM.setInverterSelection();
}else if(strcmp(aux, "framing") == 0){
SM.setRectSelection();
}
/****************************************/
SC.initialize();
while(1){
SC.update();
}
}
