Estoy haciendo un proyecto en el que necesito que cuando se termina una cuenta atrás en el Arduino, mande un mensaje a través del modulo hc-06. No se programar y estoy utilizando Chat gpt para generar el código.
Todo funciona aparentemente bien, pero al teléfono no le llega el mensaje que necesito. Al teléfono solo llegan mensajes que ponen: ^@.
#include <SoftwareSerial.h>
// Pines
const int pinA5 = A5; // Pin analógico A5 como entrada digital
const int pin8 = 8; // Pin digital 8 para salida
const int piezo = 7; // Buzzer en pin 7
// Bluetooth (HC-06)
SoftwareSerial bluetooth(10, 11); // RX, TX
// Variables de tiempo
unsigned long tiempoInicio = 0;
unsigned long tiempoCuentaAtras = 10000; // 10 segundos
bool cuentaIniciada = false;
bool estadoPinA5 = false;
void setup() {
pinMode(pinA5, INPUT);
pinMode(pin8, OUTPUT);
pinMode(piezo, OUTPUT);
digitalWrite(pin8, LOW); // Asegura que la salida esté apagada
Serial.begin(9600); // Para monitoreo desde el PC
bluetooth.begin(9600); // Comunicación con HC-06
Serial.println("Sistema iniciado.");
}
void loop() {
int valorPinA5 = digitalRead(pinA5);
// Si recibe señal en A5, reinicia la cuenta
if (valorPinA5 == HIGH && !estadoPinA5) {
tiempoInicio = millis();
cuentaIniciada = true;
estadoPinA5 = true;
digitalWrite(pin8, LOW);
tone(piezo, 261, 100); // Sonido breve al iniciar
Serial.println("Cuenta atrás reiniciada");
bluetooth.println("Cuenta atrás iniciada.");
}
// Si A5 está en LOW, permite iniciar de nuevo
if (valorPinA5 == LOW) {
estadoPinA5 = false;
digitalWrite(pin8, LOW);
}
// Verifica si la cuenta está activa
if (cuentaIniciada) {
unsigned long tiempoRestante = tiempoCuentaAtras - (millis() - tiempoInicio);
if (tiempoRestante <= 0) {
digitalWrite(pin8, HIGH); // Enciende la salida
tone(piezo, 330, 500); // Sonido al finalizar
Serial.println("Cuenta atrás terminada, pin 8 encendido.");
bluetooth.println("¡Cuenta atrás finalizada!");
cuentaIniciada = false;
}
}
}