Newest version of Wheelchair Logic
Dependencies: MPU6050 SparkfunAnalogJoystick
Revision 10:c036607dbf6e, committed 2021-11-05
- Comitter:
- erodrz
- Date:
- Fri Nov 05 00:26:15 2021 +0000
- Parent:
- 9:4a1c40f8b2d7
- Commit message:
- WheelchairLogicv5
Changed in this revision
23-WheelchairLogicv5-test-version.lib | Show diff for this revision Revisions of this file |
main.cpp | Show annotated file Show diff for this revision Revisions of this file |
--- a/23-WheelchairLogicv5-test-version.lib Thu Nov 04 20:02:56 2021 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1 +0,0 @@ -https://os.mbed.com/users/thevic16/code/20-WheelchairLogicv4/#418ff0ef9463
--- a/main.cpp Thu Nov 04 20:02:56 2021 +0000 +++ b/main.cpp Fri Nov 05 00:26:15 2021 +0000 @@ -16,9 +16,11 @@ Thread Thread3; // Tercer hilo para sensor de proximidad. Thread Thread4; // Cuarto hilo para sensor de proximidad. Thread Thread5; // Hilo para manejar el joystick. -Thread Thread6; // Hilo para manejar los comandos de voz recibidos por la Raspberry PI. -Thread Thread7; // Hilo para manejar la selección de modo de la silla. -Thread Thread8; // Hilo para manejar la detección de caídas y movimientos bruscos. +Thread Thread6; // Hilo para manejar la recepcion de caracteres. +Thread Thread7; // Hilo para manejar la condicion de parada de los comandos de voz. +Thread Thread8; // Hilo para manejar los comandos de voz recibidos por la Raspberry PI. +Thread Thread9; // Hilo para manejar la selección de modo de la silla. +Thread Thread10; // Hilo para manejar la detección de caídas y movimientos bruscos. // Variables globales de distancias en el entorno de la silla de ruedas. int Distance1 = 0; // Distancia adelante de la silla. @@ -33,12 +35,17 @@ DigitalIn modo3(D10); // Modo por comandos de voz. DigitalIn modo4(D11); // Modo por rutas autónomas -//Variables modos globales -int Modo1 =0; -int Modo2 =0; -int Modo3 =0; -int Modo4 =0; +// Variables modos globales. +int Modo1 = 0; +int Modo2 = 0; +int Modo3 = 0; +int Modo4 = 0; +// Variables de orientación de movimiento de la silla. (Para saber a dónde se mueve la silla en cada momento.) +int Orientacion_Adelante = 0; +int Orientacion_Atras = 0; +int Orientacion_Izquierda = 0; +int Orientacion_Derecha = 0; // Interfaz serial para comunicación con la Raspberry PI. Serial PC(USBTX,USBRX); // Por aquí se reciben caracteres que el miprocesador interpreta para ejecutar una acción, como los comandos de voz o alguna alerta. @@ -55,6 +62,9 @@ // Objeto manejador del sensor acelerómetro y giroscopio. MPU6050 MPUsensor(PB_11,PB_10); +//Variable global para los comandos de voz recibidos desde la raspberry PI. +char c; + // Función para reproducir un sonido del buzzer cuando se detecta un movimiento brusco. void Reproducir_Buzzer_Caidas() { @@ -76,8 +86,8 @@ { while(1) { - float Acelerometro[3]; // Acelerometro[0] = X, Acelerometro[1] = Y, Acelerometro[2] = Z - MPUsensor.getAccelero(Acelerometro); // Obtener lectura del sensor + float Acelerometro[3]; // Acelerometro[0] = X, Acelerometro[1] = Y, Acelerometro[2] = Z. + MPUsensor.getAccelero(Acelerometro); // Obtener lectura del sensor. if(Acelerometro[0] >= 3) { //printf("Sensor de aceleracion: Movimiento brusco a la derecha.\n\r"); @@ -85,8 +95,8 @@ //printf("Acelerometro en y: %f \n\r",Acelerometro[1]); //printf("Acelerometro en z: %f \n\r",Acelerometro[2]); - PC.printf("Fall Event \n"); - Reproducir_Buzzer_Caidas(); + PC.printf("Fall Event \n"); // Evento de caída detectado. + Reproducir_Buzzer_Caidas(); // Reproducir sonido de aviso. } if(Acelerometro[0] <= -3) { @@ -95,8 +105,8 @@ //printf("Acelerometro en y: %f \n\r",Acelerometro[1]); //printf("Acelerometro en z: %f \n\r",Acelerometro[2]); - PC.printf("Fall Event \n"); - Reproducir_Buzzer_Caidas(); + PC.printf("Fall Event \n"); // Evento de caída detectado. + Reproducir_Buzzer_Caidas(); // Reproducir sonido de aviso. } if(Acelerometro[1] >= 1) @@ -106,8 +116,8 @@ //printf("Acelerometro en y: %f \n\r",Acelerometro[1]); //printf("Acelerometro en z: %f \n\r",Acelerometro[2]); - PC.printf("Fall Event \n"); - Reproducir_Buzzer_Caidas(); + PC.printf("Fall Event \n"); // Evento de caída detectado. + Reproducir_Buzzer_Caidas(); // Reproducir sonido de aviso. } if(Acelerometro[1] <= -6) @@ -117,8 +127,8 @@ //printf("Acelerometro en y: %f \n\r",Acelerometro[1]); //printf("Acelerometro en z: %f \n\r",Acelerometro[2]); - PC.printf("Fall Event \n"); - Reproducir_Buzzer_Caidas(); + PC.printf("Fall Event \n"); // Evento de caída detectado. + Reproducir_Buzzer_Caidas(); // Reproducir sonido de aviso. } if(Acelerometro[2] <= -8) { @@ -127,11 +137,11 @@ //printf("Acelerometro en y: %f \n\r",Acelerometro[1]); //printf("Acelerometro en z: %f \n\r",Acelerometro[2]); - PC.printf("Fall Event \n"); - Reproducir_Buzzer_Caidas(); + PC.printf("Fall Event \n"); // Evento de caída detectado. + Reproducir_Buzzer_Caidas(); // Reproducir sonido de aviso. } - thread_sleep_for(200); + thread_sleep_for(200); // Delay. } } @@ -141,97 +151,122 @@ Timer BuzzTime; BuzzTime.reset(); BuzzTime.start(); - while(BuzzTime.read_us() < 1000000) // Ejecutar sonido del buzzer por 3 segundos. + while(BuzzTime.read_us() < 1000000) // Ejecutar sonido del buzzer por 1 segundo. { Buzzer.period(1.0/Nota_A4); // Configurando el período, que es equivalente a frecuencia (veces que se reproducirá el tono por segundo). - Buzzer.write(0.5); - thread_sleep_for(200); + Buzzer.write(0.5); // Duty cycle. + thread_sleep_for(200); // Delay. } + // Deteniendo el buzzer. Buzzer.write(0); BuzzTime.stop(); } -// Función para limpiar caracteres presentes en el buffer de la interfaz serial. -void LimpiarSerialBuffer() -{ - char char1 = 0; - while(PC.readable()) - { - char1 = PC.getc(); - } - return; -} - -// Función para moder la silla hacia adelante. +// Función para mover la silla hacia adelante. void Mover_Hacia_Adelante(int Tiempo) { Direccion1 = 0; // En dirección de las manecillas del reloj. Direccion2 = 0; // En dirección de las manecillas del reloj. PWM_Velocidad1.period(0.0003f); // Declaramos el período. - PWM_Velocidad1.write(0.6f); // %15 del duty cicle. + PWM_Velocidad1.write(0.6f); // Duty cycle. PWM_Velocidad2.period(0.0003f); // Declaramos el período. - PWM_Velocidad2.write(0.6f); // %15 del duty cicle. + PWM_Velocidad2.write(0.6f); // Duty cycle. thread_sleep_for(Tiempo); PWM_Velocidad1.write(0.0f); PWM_Velocidad2.write(0.0f); + + Orientacion_Adelante = 0; + Orientacion_Atras = 0; + Orientacion_Izquierda = 0; + Orientacion_Derecha = 0; } -// Función para moder la silla hacia atrás. +// Función para mover la silla hacia atrás. void Mover_Hacia_Atras(int Tiempo) { Direccion1 = 1; // En dirección contraria a las manecillas del reloj. Direccion2 = 1; // En dirección contraria a las manecillas del reloj. PWM_Velocidad1.period(0.0003f); // Declaramos el período. - PWM_Velocidad1.write(0.6f); // %15 del duty cicle. + PWM_Velocidad1.write(0.6f); // Duty cycle. PWM_Velocidad2.period(0.0003f); // Declaramos el período. - PWM_Velocidad2.write(0.6f); // %15 del duty cicle. + PWM_Velocidad2.write(0.6f); // Duty cycle. thread_sleep_for(Tiempo); PWM_Velocidad1.write(0.0f); PWM_Velocidad2.write(0.0f); + + Orientacion_Adelante = 0; + Orientacion_Atras = 0; + Orientacion_Izquierda = 0; + Orientacion_Derecha = 0; } -// Función para moder la silla hacia la izquierda. +// Función para mover la silla hacia la izquierda. void Mover_Hacia_Izquierda(int Tiempo) { Direccion1 = 0; // En dirección contraria a las manecillas del reloj. Direccion2 = 1; // En dirección de las manecillas del reloj. PWM_Velocidad1.period(0.0003f); // Declaramos el período. - PWM_Velocidad1.write(0.6f); // %25 del duty cicle. + PWM_Velocidad1.write(0.6f); // Duty cycle. PWM_Velocidad2.period(0.0003f); // Declaramos el período. - PWM_Velocidad2.write(0.6f); // %15 del duty cicle. + PWM_Velocidad2.write(0.6f); // Duty cycle. thread_sleep_for(Tiempo); PWM_Velocidad1.write(0.0f); PWM_Velocidad2.write(0.0f); + + Orientacion_Adelante = 0; + Orientacion_Atras = 0; + Orientacion_Izquierda = 0; + Orientacion_Derecha = 0; } -// Función para moder la silla hacia la derecha. +// Función para mover la silla hacia la derecha. void Mover_Hacia_Derecha(int Tiempo) { Direccion1 = 1; // En dirección de las manecillas del reloj. Direccion2 = 0; // En dirección contraria a las manecillas del reloj. PWM_Velocidad1.period(0.0003f); // Declaramos el período. - PWM_Velocidad1.write(0.6f); // %15 del duty cicle. + PWM_Velocidad1.write(0.6f); // Duty cycle. PWM_Velocidad2.period(0.0003f); // Declaramos el período. - PWM_Velocidad2.write(0.6f); // %25 del duty cicle. + PWM_Velocidad2.write(0.6f); // Duty cycle. - thread_sleep_for(Tiempo); + thread_sleep_for(Tiempo); PWM_Velocidad1.write(0.0f); PWM_Velocidad2.write(0.0f); + + Orientacion_Adelante = 0; + Orientacion_Atras = 0; + Orientacion_Izquierda = 0; + Orientacion_Derecha = 0; +} + +// Función para detener la silla. +void Detener(int Tiempo) +{ + PWM_Velocidad1.write(0.0f); // Duty cicle. + PWM_Velocidad2.write(0.0f); // Duty cicle. + + printf(" Deteniendo silla. \n\r"); + thread_sleep_for(Tiempo); + + Orientacion_Adelante = 0; + Orientacion_Atras = 0; + Orientacion_Izquierda = 0; + Orientacion_Derecha = 0; } // Función para leer el sensor de proximidad 1. ADELANTE @@ -249,7 +284,7 @@ }; Sonar.stop(); Correccion = Sonar.read_us(); - printf("Sensor de proximidad 1: El retardo aproximado del temporizador de sobrecarga del software es %d uS\n\r",Correccion); + printf(" Sensor de proximidad 1: El retardo aproximado del temporizador de sobrecarga del software es %d uS\n\r",Correccion); while(1) { Trigger = 1; @@ -267,12 +302,16 @@ }; Sonar.stop(); Distance1 = (Sonar.read_us()-Correccion)/58.0; - //printf("Sensor de proximidad 1 (Adelante): %d cm \n\r",Distance1); + if(Distance1 < DistanceLimit && Orientacion_Adelante == 1) + { + Detener(1000); + printf(" Sensor de proximidad 1 (Adelante): %d cm \n\r",Distance1); + } thread_sleep_for(1000); } } -// Función para leer el sensor de proximidad 2. //ATRAS +// Función para leer el sensor de proximidad 2. // ATRÁS void Thread2_HCSR04() { DigitalOut Trigger(D2); @@ -287,7 +326,7 @@ }; Sonar.stop(); Correccion = Sonar.read_us(); - printf("Sensor de proximidad 2: El retardo aproximado del temporizador de sobrecarga del software es %d uS\n\r",Correccion); + printf(" Sensor de proximidad 2: El retardo aproximado del temporizador de sobrecarga del software es %d uS\n\r",Correccion); while(1) { Trigger = 1; @@ -305,12 +344,17 @@ }; Sonar.stop(); Distance2 = (Sonar.read_us()-Correccion)/58.0; - //printf("Sensor de proximidad 2 (Atras): %d cm \n\r",Distance2); + + if(Distance2 < DistanceLimit && Orientacion_Atras == 1) + { + Detener(1000); + printf(" Sensor de proximidad 2 (Atras): %d cm \n\r",Distance2); + } thread_sleep_for(1000); } } -// Función para leer el sensor de proximidad 3. //IZQUIERDA +// Función para leer el sensor de proximidad 3. // IZQUIERDA void Thread3_HCSR04() { DigitalOut Trigger(D4); @@ -325,7 +369,7 @@ }; Sonar.stop(); Correccion = Sonar.read_us(); - printf("Sensor de proximidad 3: El retardo aproximado del temporizador de sobrecarga del software es %d uS\n\r",Correccion); + printf(" Sensor de proximidad 3: El retardo aproximado del temporizador de sobrecarga del software es %d uS\n\r",Correccion); while(1) { Trigger = 1; @@ -343,12 +387,16 @@ }; Sonar.stop(); Distance3 = (Sonar.read_us()-Correccion)/58.0; - //printf("Sensor de proximidad 3 (Izquierda): %d cm \n\r",Distance3); + if(Distance3 < DistanceLimit && Orientacion_Izquierda == 1) + { + Detener(1000); + printf(" Sensor de proximidad 3 (Izquierda): %d cm \n\r",Distance3); + } thread_sleep_for(1000); } } -// Función para leer el sensor de proximidad 4. //DERECHA +// Función para leer el sensor de proximidad 4. // DERECHA void Thread4_HCSR04() { DigitalOut Trigger(D6); @@ -363,7 +411,7 @@ }; Sonar.stop(); Correccion = Sonar.read_us(); - printf("Sensor de proximidad 4: El retardo aproximado del temporizador de sobrecarga del software es %d uS\n\r",Correccion); + printf(" Sensor de proximidad 4: El retardo aproximado del temporizador de sobrecarga del software es %d uS\n\r",Correccion); while(1) { Trigger = 1; @@ -381,7 +429,11 @@ }; Sonar.stop(); Distance4 = (Sonar.read_us()-Correccion)/58.0; - //printf("Sensor de proximidad 4 (Derecha): %d cm \n\r",Distance4); + if(Distance4 < DistanceLimit && Orientacion_Derecha == 1) + { + Detener(1000); + printf(" Sensor de proximidad 4 (Derecha): %d cm \n\r",Distance4); + } thread_sleep_for(1000); } } @@ -407,164 +459,213 @@ { if(Distance2 > DistanceLimit) { - printf("Comandos del joystick: Hacia atras. \r \n"); - printf("Distancia medida por sensor atras:%d cm \r \n",Distance2); - Mover_Hacia_Atras(3000); + Orientacion_Atras = 1; + printf(" Comandos del joystick: Hacia atras. \r \n"); + printf(" Distancia medida por sensor atras: %d cm \r \n",Distance2); + Mover_Hacia_Atras(2000); } else { - printf("Comandos del joystick: Obstaculo hacia atras. \r \n"); - printf("Distancia medida por sensor atras:%d cm \r \n",Distance2); + printf(" Comandos del joystick: Obstaculo hacia atras. \r \n"); + printf(" Distancia medida por sensor atras: %d cm \r \n",Distance2); + Detener(1000); //Reproducir_Buzzer_Proximidad(); } - //thread_sleep_for(500); } if(X >= -0.70f && X <= 0.70f && Y <= -0.90f && Y >= -1.00f) { if(Distance1 > DistanceLimit) { - printf("Comandos del joystick: Hacia adelante. \r \n"); - printf("Distancia medida por sensor adelante:%d cm \r \n",Distance1); - Mover_Hacia_Adelante(3000); + Orientacion_Adelante = 1; + printf(" Comandos del joystick: Hacia adelante. \r \n"); + printf(" Distancia medida por sensor adelante: %d cm \r \n",Distance1); + Mover_Hacia_Adelante(2000); } else { - printf("Comandos del joystick: Obstaculo hacia adelante. \r \n"); - printf("Distancia medida por sensor adelante:%d cm \r \n",Distance1); + printf(" Comandos del joystick: Obstaculo hacia adelante. \r \n"); + printf(" Distancia medida por sensor adelante: %d cm \r \n",Distance1); + Detener(1000); //Reproducir_Buzzer_Proximidad(); } - //thread_sleep_for(500); } if(Y >= -0.70f && Y <= 0.70f && X <= -0.90f && X >= -1.00f) { if(Distance4 > DistanceLimit) { - printf("Comandos del joystick: Hacia la derecha. \r \n"); - printf("Distancia medida por sensor derecha:%d cm \r \n",Distance4); - Mover_Hacia_Derecha(3000); + Orientacion_Derecha = 1; + printf(" Comandos del joystick: Hacia la derecha. \r \n"); + printf(" Distancia medida por sensor derecha: %d cm \r \n",Distance4); + Mover_Hacia_Derecha(2000); } else { - printf("Comandos del joystick: Obstaculo hacia la derecha. \r \n"); - printf("Distancia medida por sensor derecha:%d cm \r \n",Distance4); + printf(" Comandos del joystick: Obstaculo hacia la derecha. \r \n"); + printf(" Distancia medida por sensor derecha: %d cm \r \n",Distance4); + Detener(1000); //Reproducir_Buzzer_Proximidad(); } - //thread_sleep_for(500); } if(Y >= -0.70f && Y <= 0.70f && X >= 0.90f && X <= 1.00f) { if(Distance3 > DistanceLimit) { - printf("Comandos del joystick: Hacia la izquierda. \r \n"); - printf("Distancia medida por sensor izquierda:%d cm \r \n",Distance3); - Mover_Hacia_Izquierda(3000); + Orientacion_Izquierda = 1; + printf(" Comandos del joystick: Hacia la izquierda. \r \n"); + printf(" Distancia medida por sensor izquierda: %d cm \r \n",Distance3); + Mover_Hacia_Izquierda(2000); } else { - printf("Comandos del joystick: Obstaculo hacia la izquierda. \r \n"); - printf("Distancia medida por sensor izquierda:%d cm \r \n",Distance3); + printf(" Comandos del joystick: Obstaculo hacia la izquierda. \r \n"); + printf(" Distancia medida por sensor izquierda: %d cm \r \n",Distance3); + Detener(1000); //Reproducir_Buzzer_Proximidad(); } - //thread_sleep_for(500); } thread_sleep_for(5); } } } + +void Thread6_RecepcionCaracteresComandovoz() +{ + + while(1) + { + while(PC.readable()) { // Para saber si hay algo que recibir en el puerto serial. + c = PC.getc(); + printf(" Datos recibidos: %c \r\n",c); + } + + } +} + +void Thread7_ParadaComandoVoz() +{ + + while(1) + { + if(c == 'x') + { + if(!Modo1 && !Modo2 && Modo3 && !Modo4) + { + printf(" Comandos de voz: Detenerse. \r \n"); + Detener(1000); + c = ' '; + } + } + } +} + + // Función para leer datos del serial con caracteres de comandos de voz y ejecutar instrucciones. -void Thread6_ComandosVoz() +void Thread8_ComandosVoz() { + int Tiempo_Lineal = 60000; + int Tiempo_Lateral = 3000; + while(1) { if(!Modo1 && !Modo2 && Modo3 && !Modo4) { - //LimpiarSerialBuffer(); //Si activamos esto el .readable no funciona. - char c; - - while(PC.readable()) { // Para saber si hay algo que recibir en el puerto serial. - c = PC.getc(); - printf("Datos recibidos: %c \r\n",c); - } if(c == 'w') { - printf("Distance1 - %d \r \n",Distance1); + printf(" Distance1 - %d cm \r \n",Distance1); if(Distance1 > DistanceLimit) { - printf(" Comandos de voz: Hacia adelante. \r \n"); - Mover_Hacia_Adelante(3000); + Orientacion_Adelante = 1; + printf(" Comandos de voz: Hacia adelante. \r \n"); + + Mover_Hacia_Adelante(Tiempo_Lineal); + thread_sleep_for(200); } else { - printf("Comandos de voz: Obstaculo! No se puede ir hacia adelante. \r \n"); - Reproducir_Buzzer_Proximidad(); + printf(" Comandos de voz: Obstaculo! No se puede ir hacia adelante. \r \n"); + Detener(1000); + //Reproducir_Buzzer_Proximidad(); } - //thread_sleep_for(1000); + c = ' '; } if(c == 's') { - printf("Distance2 - %d \r \n",Distance2); + printf(" Distance2 - %d cm \r \n",Distance2); if(Distance2 > DistanceLimit) { - printf(" Comandos de voz: Hacia atras. \r \n"); - Mover_Hacia_Atras(3000); + Orientacion_Atras = 1; + printf(" Comandos de voz: Hacia atras. \r \n"); + + Mover_Hacia_Atras(Tiempo_Lineal); + thread_sleep_for(200); } else { - printf("Comandos de voz: Obstaculo! No se puede ir hacia atras. \r \n"); - Reproducir_Buzzer_Proximidad(); + printf(" Comandos de voz: Obstaculo! No se puede ir hacia atras. \r \n"); + Detener(1000); + //Reproducir_Buzzer_Proximidad(); } - + c = ' '; } if(c == 'a') { - printf("Distance3 - %d \r \n",Distance3); + printf(" Distance3 - %d cm \r \n",Distance3); if(Distance3 > DistanceLimit) { - printf(" Comandos de voz: Hacia la izquierda. \r \n"); - Mover_Hacia_Izquierda(3000); + Orientacion_Izquierda = 1; + printf(" Comandos de voz: Hacia la izquierda. \r \n"); + + Mover_Hacia_Izquierda(Tiempo_Lateral); + thread_sleep_for(200); } else { - printf("Comandos de voz: Obstaculo! No se puede ir hacia la izquierda. \r \n"); + printf(" Comandos de voz: Obstaculo! No se puede ir hacia la izquierda. \r \n"); + Detener(1000); //Reproducir_Buzzer_Proximidad(); } - + c = ' '; } if(c == 'd') { - printf("Distance4 - %d \r \n",Distance4); + printf(" Distance4 - %d cm \r \n",Distance4); if(Distance4 > DistanceLimit) { - printf(" Comandos de voz: Hacia la derecha. \r \n"); - Mover_Hacia_Derecha(3000); + Orientacion_Derecha = 1; + printf(" Comandos de voz: Hacia la derecha. \r \n"); + + Mover_Hacia_Derecha(Tiempo_Lateral); + thread_sleep_for(200); } else { - printf("Comandos de voz: Obstaculo! No se puede ir hacia la derecha. \r \n"); + printf(" Comandos de voz: Obstaculo! No se puede ir hacia la derecha. \r \n"); + Detener(1000); //Reproducir_Buzzer_Proximidad(); } - //thread_sleep_for(1000); + c = ' '; } - c = ' '; - thread_sleep_for(50); } } } + + + + // Función para seleccionar el modo de operación de la silla. -void Thread7_IndicarModo() +void Thread9_IndicarModo() { bool EstadoModo1 = false; bool EstadoModo2 = false; bool EstadoModo3 = false; bool EstadoModo4 = false; - - + while(true) { @@ -592,11 +693,10 @@ } else { Modo4 = 0; } - - + if(Modo1 && !Modo2 && !Modo3 && !Modo4 && !EstadoModo1) { - printf("Operando: Modo manual. \r \n"); + printf(" Operando: Modo manual. \r \n"); EstadoModo1 = true; EstadoModo2 = false; EstadoModo3 = false; @@ -604,7 +704,7 @@ } if(!Modo1 && Modo2 && !Modo3 && !Modo4 && !EstadoModo2) { - printf("Operando: Modo de comandos de joystick. \r \n"); + printf(" Operando: Modo de comandos de joystick. \r \n"); EstadoModo1 = false; EstadoModo2 = true; EstadoModo3 = false; @@ -612,7 +712,7 @@ } if(!Modo1 && !Modo2 && Modo3 && !Modo4 && !EstadoModo3) { - printf("Operando: Modo de comandos de voz. \r \n"); + printf(" Operando: Modo de comandos de voz. \r \n"); EstadoModo1 = false; EstadoModo2 = false; EstadoModo3 = true; @@ -620,15 +720,12 @@ } if(!Modo1 && !Modo2 && !Modo3 && Modo4 && !EstadoModo4) { - printf("Operando: Modo de rutas autonomas. \r \n"); + printf(" Operando: Modo de rutas autonomas. \r \n"); EstadoModo1 = false; EstadoModo2 = false; EstadoModo3 = false; EstadoModo4 = true; } - - - //thread_sleep_for(1000); } } @@ -643,12 +740,23 @@ thread_sleep_for(200); Thread4.start(Thread4_HCSR04); thread_sleep_for(200); - Thread7.start(Thread7_IndicarModo); + + Thread6.start(Thread6_RecepcionCaracteresComandovoz); + thread_sleep_for(200); + + Thread7.start(Thread7_ParadaComandoVoz); + thread_sleep_for(200); + + + Thread9.start(Thread9_IndicarModo); thread_sleep_for(200); Thread5.start(Thread5_Joystick); thread_sleep_for(200); - Thread6.start(Thread6_ComandosVoz); + Thread8.start(Thread8_ComandosVoz); thread_sleep_for(200); + + + //Thread8.start(Thread8_MPU6050); //thread_sleep_for(200); }