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
Diff: main.cpp
- Revision:
- 3:ab98286e7d09
- Parent:
- 2:e89eada3e6eb
diff -r e89eada3e6eb -r ab98286e7d09 main.cpp
--- a/main.cpp Sun Jun 21 02:48:32 2020 +0000
+++ b/main.cpp Sun Feb 27 20:54:12 2022 +0000
@@ -9,6 +9,7 @@
** Fecha/Hora : 18-12-2019, 11:48, # CodeGen: 0
** Descripción :
** Este proyecto muestra la configuración y uso de la Terminal Serial
+** utilizando las secuencias de ESCape
** This module contains user's application code.
** Componentes : Serial, etc .
** Configuraciones : Se puede seleccionar entre diferentes velocidades de
@@ -43,17 +44,21 @@
: Definiciones
:...............................................................................
*/
-#define on 0 // Estado para boton presionado
-#define off 1 // Estado para boton sin presionar
-#define hold 2 // Estado para boton mantenido
-#define release 3 // Estado para boton liberado
-#define FALSE 0 // Estado FALSO
-#define TRUE 1 // Estado VERDADERO
-#define Baud_Rate 115200 // Velocidad de Transmisión (Bauds)
- // Velocidades Permitidas:
- // 300, 600, 1200, 2400, 4800, 9600,
- // 14400, 19600, 28800, 38400, 57600
- // 115200, 230400
+#define LED_ON 0 // Estado para el Led Encendido
+#define LED_OFF 1 // Estado para el Led Apagado
+#define BUZZ_ON 1 // Estado para Buzzer Encendido
+#define BUZZ_OFF 0 // Estado para Buzzer Apagado
+#define ON 0 // Estado para boton presionado
+#define OFF 1 // Estado para boton sin presionar
+#define HOLD 2 // Estado para boton mantenido
+#define RELEASE 3 // Estado para boton liberado
+#define FALSE 0 // Estado FALSO
+#define TRUE 1 // Estado VERDADERO
+#define BAUD_RATE 115200 // Velocidad de Transmisión (Bauds)
+ // Velocidades Permitidas:
+ // 300, 600, 1200, 2400, 4800, 9600,
+ // 14400, 19600, 28800, 38400, 57600
+ // 115200, 230400
/*
+-------------------------------------------------------------------------------
| Configuración de Puertos
@@ -61,17 +66,20 @@
*/
// ***** Host PC Terminal Communication channels
-Serial terminal (PA_2, PA_3); // Tx, Rx - Terminal Serial (TTL Level) (Default Rate: 9600)
+Serial terminal (PA_2, PA_3); // Tx2, Rx2 - Terminal Serial (TTL Level) (Default Rate: 9600)
//Serial terminal(USBTX, USBRX,115200); // Tx, Rx, Baud Rate - Terminal Serial por USB @ 115,200 Bauds
-//Serial terminal(PA_9, PA_10); // Tx, Rx Using MAX3232 or BlueTooth
+//Serial terminal(PA_9, PA_10); // Tx, Rx Using MAX3232
+// ***** Bluetooth to Host Cell Phone Communication channels
+//Serial Bluetooth (PB_10, PB_11); // Inicializa la Comunicación Serial UART_3 sobre Bluetooth (Tx, Rx)
+//DigitalOut Key_pin (PB_1,HIGH); // Inicializa el KEY pin o STATE pin (AT Commnands)
/*
+-------------------------------------------------------------------------------
| Variables Globales de Usuario
+-------------------------------------------------------------------------------
*/
-uint8_t ch;
-uint16_t uni;
-uint16_t wchar;
+uint8_t v_ch;
+uint16_t v_uni;
+uint16_t v_wchar;
/*
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
| Definición de Funciones Prototipo y Rutinas de los Vectores de Interrupción
@@ -89,12 +97,11 @@
*/
int main()
{ // Inicialización de variables, puertos e interrupciones
- confSysClock(); // Configure system clock (72MHz HSE clock, 48MHz USB clock)
Setup();
-terminal.printf ("\tInstituto Politecnico Nacional\n\r");
+ terminal.printf ("\tInstituto Politecnico Nacional\n\r");
terminal.printf ("ESCUELA SUPERIOR DE INGENIERIA MECANICA Y ELECTRICA\n\r");
printf ("\vHola Mundo!\r");
- printf ("\v\t\vH\ne\nl\nl\no\n \nW\no\nr\nl\nd\n!\r");
+ printf ("\v\t\vH\ne\nl\nl\no\n \nW\no\nr\nl\nd\n!\r");
printf ("\n\nPresiona cualquier tecla para continuar...");
char opcion = terminal.getc();
@@ -110,17 +117,17 @@
printf ("\n\r Pulse cualquier tecla para continuar!\r");
opcion = terminal.getc();
terminal.putc(opcion);
- uint8_t attr;
- uint8_t bg;
- uint8_t fg;
+ uint8_t v_attr;
+ uint8_t v_bg;
+ uint8_t v_fg;
printf("\n\v\t\t\"ATRIBUTOS DE COLORES\"\r\n");
- for (attr=0;attr<2;attr++)
+ for (v_attr=0;v_attr<2;v_attr++)
{
- for (bg=30;bg<38;bg++)
+ for (v_bg=30;v_bg<38;v_bg++)
{
- for (fg=40;fg<48;fg++)
+ for (v_fg=40;v_fg<48;v_fg++)
{
- printf ("\e[%d;%d;%dm%d,%d,%d\e[0m ",attr,bg,fg,attr,bg,fg);
+ printf ("\e[%d;%d;%dm%d,%d,%d\e[0m ",v_attr,v_bg,v_fg,v_attr,v_bg,v_fg);
}
printf("\r\n");
}
@@ -134,27 +141,29 @@
printf("\r\n");
/* Imprime los caracteres ASCII */
- for (ch = 0; ch < UCHAR_MAX; ch++)
+ for (v_ch = 0; v_ch < UCHAR_MAX; v_ch++)
{
- /* ch == ASCII */
- printf("\e[1;37;42mHex:\e[1;33;42m %02X \e[1;37;46mASCII:\e[1;33;46m%3d \e[1;37;47mCaracter:\e[1;33;44m %c \033[0m\r\n", ch, ch, ch);
+ /* v_ch == ASCII */
+ printf("\e[1;37;42mHex:\e[1;33;42m %02X \e[1;37;46mASCII:\e[1;33;46m%3d \e[1;37;47mCaracter:\e[1;33;44m %c \033[0m\r\n", v_ch, v_ch, v_ch);
wait(0.5);
}
+
+ terminal.printf("\a\f\n\r"); //\e[033c
+
/* Imprime los caracteres Unicode */
-// wchar_t star = 0x2605;
+// v_wchar_t star = 0x2605;
// wprintf(L"%c\n", star);
/*
- for (uni = 0400; uni < 2000; uni++)
+ for (v_uni = 0400; v_uni < 2000; v_uni++)
{
- wprintf(L"%c\n", uni);
- for (ch = 0; ch < UCHAR_MAX; ch++)
- /* ch == Unicode */
-// printf("%c ==> \\%u\n\r", ch, ch);
-// printf ("\e[1;37;41mCaracter: %c Unicode %d ===> \e[1;33;41m\\%lc \033[0m\n\r",ch, uni, uni );
+ wprintf(L"%c\n", v_uni);
+ for (v_uni = 0; v_uni < UCHAR_MAX; v_uni++)
+ v_uni == Unicode;
+// printf("%c ==> \\%u\n\r", v_uni, v_uni);
+// printf ("\e[1;37;41mCaracter: %c Unicode %d ===> \e[1;33;41m\\%lc \033[0m\n\r",v_uni, v_uni, v_uni );
// wait(0.5);
// }
-
- terminal.printf("\a\f\n\r"); //\e[033c
+*/
}
}
/* END main */
@@ -175,18 +184,61 @@
// Las Funciones Prototipo van aquí !
void Setup()
{
- terminal.baud(Baud_Rate); // Se configura la velocidad de transmisión
+ confSysClock(); // Configure system clock (72MHz HSE clock, 48MHz USB clock)
+ terminal.baud(BAUD_RATE); // Se configura la velocidad de transmisión
terminal.printf("System is Wake Up!.\n\r"); // e inicia la comunicación serial.
-}
+} // con la Terminal (PC)
/* END routines */
-
+
/* END program */
-/*+-----------------------------------------------------------------------------
-*+ La documentación va aquí!:
-+-------------------------------------------------------------------------------
-| SECUENCIAS DE ESCAPE PARA LA TERMINAL SERIAL
+/*
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+********************************************************************************
+*+
+*+ D O C U M E N T A C I Ó N
+*+
+********************************************************************************
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+|
+| La documentación va aquí!:
+|
+|-------------------------------------------------------------------------------
+| IDENTIFICADORES
+|-------------------------------------------------------------------------------
+|
+| prefijo signifcado uso
+| v_ variable (var) v_nombre_variable
+| c_ constante (const) c_nombre_constante
+| i_ indice (index) i_nombre_indice
+| p_ apuntador (pointer) p_nombre_apuntador
+| l_ etiqueta (label) l_nombre_etiqueta
+| f_ función (function) f_nombre_funcion
+|
+|-------------------------------------------------------------------------------
+| CONEXIÓN A LA TERMINAL SERIAL
+|-------------------------------------------------------------------------------
+|
+| Los Transeptores recomedados para se pueden conectar a los siguientes pines
+| de las UART's que posee la Bluepill por medio del siguiente conexionado.
+|
+| UART1 UART2 UART3 CABLE CP2102 PL2303 CH340G FT232RL
+| PA_9 PA_2 PB_10 Tx ------> Rx 3 2 2 3
+| PA_10 PA_3 PB_11 Rx <------ Tx 4 3 3 2
+| 3V ------ 3V 5 5 4 1
+| GND ------ GND 2 1 1 4
+|
+|-------------------------------------------------------------------------------
+|
+................................................................................
+:
+: S E C U E N C I A S D E E S C A P E
+:
+................................................................................
+|
+|
+| SECUENCIAS DE ESCAPE EN "C" PARA LA TERMINAL SERIAL
|
| SECUENCIA VALOR DESCRIPCIÓN
|
@@ -224,6 +276,9 @@
| – \e[start-ANSI-code\e]
| – \e[end-ANSI-code\e]
|
+|
+| SECUENCIAS DE ESCAPE PARA MODIFICAR LOS COLORES DE LA TERMINAL SERIAL
+|
| tipo de secuencia de color:
|
| 3/4 bit
@@ -231,98 +286,115 @@
| 24 bits
|
| Antes de sumergirte en estos colores, debes conocer 4 modos con estos códigos:
-| 1. modo de color
+|
+| 1. modo de color (lighting)
|
-| Modifica el estilo del color NO el texto. Por ejemplo, haz que el color sea más claro o más oscuro.
+| Modifica el estilo del color, NO el texto.
+| Por ejemplo, haz que el color sea más claro o más oscuro.
|
| 0 reinicio
| 1; Más ligero de lo normal
| 2; más oscuro de lo normal
|
| Este modo no es compatible ampliamente. Es totalmente compatible con Gnome-Terminal.
+|
| 2. modo de texto
|
| Este modo es para modificar el estilo del texto NO el color.
|
-| 3; itálico
-| 4; subrayar
-| 5; parpadeando (lento)
-| 6; parpadeando (rápido)
-| 7; marcha atrás
-| 8; esconder
-| 9; tachar
+| 3; itálico
+| 4; subrayar
+| 5; parpadeando (lento)
+| 6; parpadeando (rápido)
+| 7; marcha atrás
+| 8; esconder
+| 9; tachar
|
| y son casi compatibles.
| Por ejemplo, KDE-Konsole admite 5; pero Gnome-Terminal no lo hace y
| Gnome es compatible con 8; pero KDE no.
-| 3. modo de primer plano
+|
+| 3. modo de primer plano (Foreground)
|
| Este modo es para colorear el primer plano.
-| 4. modo de fondo
+|
+| 4. modo de fondo (Background)
|
| Este modo es para colorear el fondo.
|
-ECMA-48 Pone modo Gráfico
- La secuencia ECMA-48 SGR ESC [ <parámetros> m establece los atributos de
- la pantalla. Se pueden poner varios atributos en la misma secuencia.
-
- par resultado
- 0 restablece todos los atributos a sus valores predeterminados
- 1 pone negrillas
- 2 pone medio brillo (simulado con color en una pantalla a color)
- 4 pone subrayado (simulado con color en una pantalla a color)
- (los colores para simular disminución o subrayado se ponen con
- ESC ] ...)
- 5 pone intermitencia
- 7 pone vídeo inverso
- 10 restaura asociación seleccionada, indicador de control de
- pantalla y cambia el indicador meta
- 11 selecciona no asociación, pone indicador de control de
- pantalla, restaura indicador de cambio meta
- 12 selecciona no asociación, pone indicador de control de
- pantalla, pone indicador de cambio meta (que hace que el bit
- más alto de un byte cambie antes de que se haga la traducción
- de la tabla de asociación.)
- 21 pone intensidad normal (esto no es compatible con ECMA-48)
-
- 22 pone intensidad normal
- 24 quita subrayado
- 25 quita intermitencia
- 27 quita vídeo inverso
- 30 pone negro
- 31 pone rojo
- 32 pone verde
- 33 pone marrón
- 34 pone azul
- 35 pone rosa
- 36 pone celeste
- 37 pone blanco
- 38 pone subrayado, color predeterminado
- 39 quita subrayado, pone color predeterminado
- 40 pone negro de fondo
- 41 pone rojo de fondo
- 42 pone verde de fondo
- 43 pone marrón de fondo
- 44 pone azul de fondo
- 45 pone rosa de fondo
- 46 pone celeste de fondo
- 47 pone blanco de fondo
- 49 pone el color de fondo predeterminado
-
+|
+| SECUENCIAS DE ESCAPE ECMA-48
+|
+| ECMA-48 Pone modo Gráfico
+| La secuencia ECMA-48 SGR ESC [ <parámetros> m establece los atributos de
+| la pantalla. Se pueden poner varios atributos en la misma secuencia.
+|
+| param Resultado
+| 0 restablece todos los atributos a sus valores predeterminados
+| 1 pone negrillas
+| 2 pone medio brillo (simulado con color en una pantalla a color)
+| 4 pone subrayado (simulado con color en una pantalla a color)
+| (los colores para simular disminución o subrayado se ponen con
+| ESC ] ...)
+| 5 pone intermitencia
+| 7 pone vídeo inverso
+| 10 restaura asociación seleccionada, indicador de control de
+| pantalla y cambia el indicador meta
+| 11 selecciona no asociación, pone indicador de control de
+| pantalla, restaura indicador de cambio meta
+| 12 selecciona no asociación, pone indicador de control de
+| pantalla, pone indicador de cambio meta (que hace que el bit
+| más alto de un byte cambie antes de que se haga la traducción
+| de la tabla de asociación.)
+| 21 pone intensidad normal (esto no es compatible con ECMA-48)
+|
+| 22 pone intensidad normal
+| 24 quita subrayado
+| 25 quita intermitencia
+| 27 quita vídeo inverso
+| 30 pone negro
+| 31 pone rojo
+| 32 pone verde
+| 33 pone marrón
+| 34 pone azul
+| 35 pone rosa
+| 36 pone celeste
+| 37 pone blanco
+| 38 pone subrayado, color predeterminado
+| 39 quita subrayado, pone color predeterminado
+| 40 pone negro de fondo
+| 41 pone rojo de fondo
+| 42 pone verde de fondo
+| 43 pone marrón de fondo
+| 44 pone azul de fondo
+| 45 pone rosa de fondo
+| 46 pone celeste de fondo
+| 47 pone blanco de fondo
+| 49 pone el color de fondo predeterminado
+|
| Tambien consultar:
| https://en.wikipedia.org/wiki/ANSI_escape_code
| https://es.wikipedia.org/wiki/C%C3%B3digo_escape_ANSI
| http://www.braun-home.net/michael/info/misc/VT100_commands.htm
| https://www.enmimaquinafunciona.com/pregunta/170760/secuencias-de-escape-terminales-en-la-pantalla-gnu
| http://softwarelivre.org/terceiro/blog/a-visual-cheat-sheet-for-ansi-color-codes
-+--------------------------------------------------------------------------------
+| https://unicode-table.com/es/alphabets/spanish/
++-------------------------------------------------------------------------------
+|
+| EJERCICIO
+|
+| 1.- Crear la función:
+| void Caratula() y
+| 2.- Utilizando printf y las secuencias de escape, crear una Carátula de
+| presentación con los datos personales y escolares para ser ejecutada al
+| inicio del programa.
|
| EXAMEN
|
-| 1.- Utilizando printf y las secuencias de escape, crear una Carátula de
-| prentación con los datos personales y escolares.
+| 1.- Crear la Rutina para desplegar los caracteres UNICODE correspondientes
+| al idioma Español
|
-+--------------------------------------------------------------------------------
++-------------------------------------------------------------------------------
|
| T H E A N T U L I U S T E A M
| Research, Development, Systems Equipment, Support & Spare Parts I n c.