Autor Tema: Codigo PIC con rs232 y ultrasonido.  (Leído 2132 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Jose D Silva

  • PIC10
  • *
  • Mensajes: 1
Codigo PIC con rs232 y ultrasonido.
« en: 17 de Septiembre de 2018, 17:02:56 »

Buenos dias, he estado escribiendo un codigo C en ccs compiler, que inicia un arranque estrella-delta a traves de un xbee, como proyecto para una presentacion, pero el instructor ha decidido que incluya una medida de seguridad que sea por ultrasonido. He incluido el codigo para el ultrasonido pero no logro que funcione de forma continua sino que se bloquea cuando el usuario a iniciado el funcionamiento.  El instructor es reacio a ayudarme y la verdad solo necesito una pequeña guia. Por favor alguna indicación.

Desconectado planeta9999

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3520
    • Pinballsp
Re:Codigo PIC con rs232 y ultrasonido.
« Respuesta #1 en: 17 de Septiembre de 2018, 18:14:38 »
 
Ese case con ese while(true) para la lectura del teclado, están mal planteados.

Aparte de que no es nada bueno, para que el programa se entienda, anidar tantas cosas, mucho mejor trocear y crear funciones. También conviene identar mejor.

Si todo lo que tienes en los dos while anidados superiores, se tiene que ejecutar para cada lectura del teclado, entonces el while(true) sobra. No creo que el break del default: te saque del while(true),  pruébalo con un debug.

Modifica tu fuente así, y prueba. Al menos ahora cada vez que pulses un comando distinto, te responderá, otra cosa es que la lógica del resto del programa esté bien planteada (que yo creo que no).

Código: C++
  1. while (true)
  2.       {
  3.         teclado = getc();
  4.         switch (teclado)
  5.         {
  6.         case 'p':
  7.           sentido = 'p';
  8.           parar();
  9.           delay_ms(500);
  10.           puts(" control de motor");
  11.           puts(" (p) Parar el motor");
  12.           output_low(pin_b5);
  13.           output_low(pin_b4);
  14.           delay_us(500);
  15.           delay_us(500);
  16.           break;
  17.         case 'i':
  18.           encendido();
  19.           sentido = 'i';
  20.           estrella();
  21.           puts(" control de motor");
  22.           puts(" Motor en estrella");
  23.           output_high(pin_b5);
  24.           delay_ms(500);
  25.           delay_ms(2500);
  26.           delta();
  27.           sentido = 'd';
  28.           puts(" control de motor");
  29.           puts(" Motor al maximo de sus funciones");
  30.           break;
  31.         default:
  32.           mensaje();
  33.           break;
  34.         }
  35.       }
« Última modificación: 17 de Septiembre de 2018, 18:17:15 por planeta9999 »


 

anything