Hola muy buenas, estoy buscando ayuda para un proyecto de Arduino que usa un modulo bluetooth y se maneja con una aplicación. La cual tiene 3 modos de riego, estoy teniendo problemas a la hora de almacenar los datos o que se ejecuten los diferentes modos de riego. Necesito por favor si alguien me puede orientar o mostrarme mejores métodos para el código y/o aplicación.
Este es el código. La conexión bluetooth funciona bien, el intercambio de datos funciona. Pero cuando envío el porcentaje de humedad que necesito para el "modo x humedad" no se guarda o simplemente no funciona como esperaría.
Cuando recibo "A" desde la aplicación prende la bomba en el modo manual.
Cuando recibo "B" desde la aplicación apaga la bomba en el modo manual.
Cuando recibo "H" desde la aplicación seguido a ese carácter se envía un entero para el modo por humedad, para que trabaje cuando baje de ese porcentaje se prenda la bomba o se apague. Estoy atento a cualquier respuesta!
Desde ya muchas gracias y ofrezco disculpas si este no es el lugar correcto para hacer este tipo de consultas.
Moderador:
Por favor, lee las Normas del foro
Edita tu título, usa uno que no tenga justamente lo que se considera un título inútil.
Ver en las normas punto 5.
5. Piensa un título y descriptivo
Trata de resumir tu problema con un título inteligente, útil e informativo.
Un título útil salta a la vista de las personas que podrían conocer la respuesta. Los títulos inútiles son los que deberías evitar.
Ejemplos de títulos inútiles que deberías evitar:
• ERROR EN CODIGO, AYDUA URGENTE
• Problema al programar
• Tengo un error
• Error
• Tendré problemas?
• Novato en apuros
• POR FAVOR NECESITO AYUDA RAPIDO!!!!
Lo primero es que no usas SoftwareSerial, estas usando el Serial hardware disponible en tu arduino.
No comparto la manera de leer los datos, pero parcialmente te ha funcionado.
Veré como corregirlo si no me ganan.
Cuando usas esto
Serial.print(porcentaje);
Donde esperas verlo en la App o en el monitor Serie? Por lo visto en la App.
En medio de tu código tienes cosas como
delay(1000);
Eso hace posible que pierdas datos.
Tienes todo muy caótico. Lees algo y luego vuelves a leer.
El modo correcto es usar Serial.available() leer todos el dato y luego usando un switch case derivar a lo que se necesita y no repitir códgio como haces, vuelves a leer el adc en el canal A0 una y otra vez.
Esto por ejemplo es redundante
if (valorbluetoothchar == 'B') {
valorbluetoothchar = 'B';
}
Si el valor recibido es B asignar B, para que? ya esta!! ya lo hiciste al leerlo.
hola muy buenas noches, primero quiero agradecerte por toda esta ayuda que me estas dando, y segundo estuve probando el código que me diste y no logro que funcione, probé cambiar los pines de "mySerial" de 3,4 y de 2,3 y después invirtiendo lo cables, no conseguí que me muestre las variables del sensor de humedad en la pantalla de la aplicación. A todo esto me puse a buscar mejores métodos para que se ejecute el programa. Viendo tutoriales llegue a esto. Este codigo funciona 100% con la aplicación. Hace todo su trabajo, ya que en el modo humead cuando se desconecta el bluetooth la idea es que siga funcionando con el porcentaje de humedad que se le carga. Te agradezco un montón!
voy a robar ideas de tu código para implementarlas en el mío buenas noches!