Autor Tema: activar un Rele con un modulo Bluetooth HC-05  (Leído 461 veces)

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

Desconectado planeta9999

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3153
    • Pinballsp
Re:activar un Rele con un modulo Bluetooth HC-05
« Respuesta #15 en: 16 de Julio de 2018, 10:44:48 »
 
Prueba con este código. Mi única duda es si lo que se lee con el Serial.read() se puede tratar directamente por su código ASCII, creo que si, de lo contrario habría que hacer una pequeña modificación.

Otra cosa, si no usas el terminal serie de Arduino (Herramientas > Monitor Serie), para tareas de Debug visualizando variables, puedes eliminar todas las lineas Serial.print, Serial.println, y te quedará un fuente más limpio.


Código: C
  1. //****************************************************
  2. //****************************************************
  3. //******** Test control relé por puerto serie ********
  4. //****************************************************
  5. //****************************************************
  6.  
  7. byte rele[5] = {4, 5, 6, 7, 8};
  8. byte estado_rele[5] = {0, 0, 0, 0, 0};
  9.  
  10. //****************************************************
  11. //******** Configuración *****************************
  12. //****************************************************
  13.  
  14. void setup()
  15. {
  16.   Serial.begin(9600); // Puerto serie 9600 bps
  17.  
  18.   // Inicializa Relés
  19.   for (byte zz = 0; zz < 5; zz++)
  20.   {
  21.     pinMode(rele[zz], OUTPUT); // Configura puerto como salida
  22.     digitalWrite(rele[zz], 0); // Desactiva relé
  23.   }
  24. }
  25.  
  26. //****************************************************
  27. //******** Programa principal ************************
  28. //****************************************************
  29.  
  30. void loop()
  31. {
  32.   while (Serial.available()>0)
  33.   {
  34.     char num_rele = Serial.read() - 49; // Numero relé recibido, 1=ASCII 49.
  35.     if (num_rele<0 || num_rele>4) break;
  36.     if (estado_rele[num_rele] == 0)
  37.         {
  38.           digitalWrite(rele[num_rele], 1); // Activa relé
  39.           Serial.print("Relé "); Serial.print(num_rele+1); Serial.println(" Activado.");
  40.           estado_rele[num_rele] = 1;
  41.         }
  42.     else
  43.         {
  44.           digitalWrite(rele[num_rele], 0); // Desactiva relé
  45.           Serial.print("Relé "); Serial.print(num_rele+1); Serial.println(" Desactivado.");
  46.           estado_rele[num_rele] = 0;
  47.         }
  48.    }
  49. }
  50.  
  51. //****************************************************
  52. //****************************************************
  53. //****************************************************
« Última modificación: 16 de Julio de 2018, 11:48:53 por planeta9999 »

Desconectado planeta9999

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3153
    • Pinballsp
Re:activar un Rele con un modulo Bluetooth HC-05
« Respuesta #16 en: 16 de Julio de 2018, 13:28:17 »
 
Otra forma de limpiar un poco el código es usar la función serialEvent() de Arduino, esta se ejecuta automáticamente en el loop() cada que vez que se recibén datos por el puerto serie. Al final la función loop() queda vacía, y en la rutina de proceso de datos del puerto serie te ahorras un bucle while.

Código: C
  1. //****************************************************
  2. //****************************************************
  3. //******** Test control relé por puerto serie ********
  4. //****************************************************
  5. //****************************************************
  6.  
  7. byte rele[5] = {4, 5, 6, 7, 8};
  8. byte estado_rele[5] = {0, 0, 0, 0, 0};
  9.  
  10. //****************************************************
  11. //******** Configuración *****************************
  12. //****************************************************
  13.  
  14. void setup()
  15. {
  16.   Serial.begin(9600); // Puerto serie 9600 bps
  17.  
  18.   // Inicializa Relés
  19.   for (byte zz = 0; zz < 5; zz++)
  20.   {
  21.     pinMode(rele[zz], OUTPUT); // Configura puerto como salida
  22.     digitalWrite(rele[zz], 0); // Desactiva relé
  23.   }
  24. }
  25.  
  26. //****************************************************
  27. //******** Programa principal ************************
  28. //****************************************************
  29.  
  30. void loop()
  31. {
  32.  
  33. }
  34.  
  35. //****************************************************
  36. //******** Recepción datos puerto Serie **************
  37. //****************************************************
  38.  
  39. void serialEvent()
  40. {
  41.     char num_rele = Serial.read() - 49; // Numero relé recibido, 1=ASCII 49.
  42.     if (num_rele<0 || num_rele>4) return;
  43.     if (estado_rele[num_rele] == 0)
  44.         {
  45.           digitalWrite(rele[num_rele], 1); // Activa relé
  46.           Serial.print("Relé "); Serial.print(num_rele+1); Serial.println(" Activado.");
  47.           estado_rele[num_rele] = 1;
  48.         }
  49.     else
  50.         {
  51.           digitalWrite(rele[num_rele], 0); // Desactiva relé
  52.           Serial.print("Relé "); Serial.print(num_rele+1); Serial.println(" Desactivado.");
  53.           estado_rele[num_rele] = 0;
  54.         }
  55. }
  56.  
  57. //****************************************************
  58. //****************************************************
  59. //****************************************************
« Última modificación: 16 de Julio de 2018, 13:32:06 por planeta9999 »

Desconectado stk500

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4823
Re:activar un Rele con un modulo Bluetooth HC-05
« Respuesta #17 en: 16 de Julio de 2018, 14:47:12 »
Joer macho  mejor de ahi no lo haria yo nunca,, muchas gracias Planeta por tu gran esfuerzos  ((:-)) ((:-))
aqui subo fotos con mi Aplicacion y funcionando ya!




ahora estoy liado con un PWM que me mueve los dos motores!!

el acabado vendran Fotos y Videos

Muchas gracias Planeta
Saludos