jhhh
let lugarID = 3 // Cambiar según ubicación (1=canchas, 2=baños, 3=cafetería)
let ultimoEnvio = 0
let intervaloEnvio = 2000
let conectado = false
let ultimoPong = 0
// Configurar radio
radio.setGroup(50)
radio.setTransmitPower(7)
// Escuchar respuesta PONG del receptor
radio.onReceivedString(function (receivedString) {
if (receivedString == "PONG") {
conectado = true
ultimoPong = input.runningTime()
basic.showIcon(IconNames.Yes)
}
})
// Enviar PING periódicamente para verificar conexión
basic.forever(function () {
let tiempoActual = input.runningTime()
// Verificar si seguimos conectados (si no recibimos PONG en 5 segundos)
if (tiempoActual - ultimoPong > 5000) {
conectado = false
basic.showIcon(IconNames.No)
}
// Enviar PING cada segundo
radio.sendString("PING")
basic.pause(1000)
// Solo enviar datos si hay conexión
if (conectado && tiempoActual - ultimoEnvio >= intervaloEnvio) {
let temp = input.temperature()
radio.sendNumber(lugarID * 1000 + temp)
ultimoEnvio = tiempoActual
// Mostrar temperatura por consola
serial.writeLine("Temperatura: " + temp)
if (temp < 27) {
pins.digitalWritePin(DigitalPin.P0, 1)
pins.digitalWritePin(DigitalPin.P1, 0)
serial.writeLine("🔵 P0 encendido (frío)")
} else if (temp > 33) {
pins.digitalWritePin(DigitalPin.P0, 0)
pins.digitalWritePin(DigitalPin.P1, 1)
serial.writeLine("🔴 P1 encendido (calor)")
}
// Mostrar ubicación
if (lugarID == 1) {
basic.showString("C") // Canchas
} else if (lugarID == 2) {
basic.showString("B") // Baños
} else if (lugarID == 3) {
basic.showString("F") // Cafetería
}
basic.showNumber(temp)
}
})
Comentarios
Publicar un comentario