Proyecto ciencia ecobots sistema de deteccion de riego Samuel ordoñez, andrea mena, sofia achinte, Dayana cifuentes, gabriela yela, luciana gutierrez

 

 FERIA DE LA CIENCIA 

 CODIGO BLOQUES Y JAVASCRIPT


ESCRITO

function showOnOLED (soilPct: number, levelPct: number, airQuality: string, dustVal: number) {
    OLED.clear()
    // Línea 1
    OLED.writeStringNewLine("Humedad: " + Math.round(soilPct) + "%")
    // Línea 2
    OLED.writeStringNewLine("Nivel: " + Math.round(levelPct) + "%")
    // Línea 3
    OLED.writeStringNewLine("Polvo: " + dustVal)
    // Línea 4 (Calidad del aire en español)
    OLED.writeStringNewLine("Calidad Aire: " + airQuality)
}
// Mapea la lectura analógica de la tierra (0=Húmedo, 1023=Seco) a porcentaje.
function analogToSoilPercent (reading: number) {
    // Mapeo inverso: 0 (Mojado) -> 100%, 1023 (Seco) -> 0%
    pct = Math.map(reading, 010231000)
    return Math.constrain(pct, 0100)
}
// Clasifica la calidad del aire basándose en el valor ADC del sensor de polvo.
// El resultado se presenta en español.
function classifyAir (dustVal: number) {
    // Clasificaciones:
    if (dustVal <= 200) {
        return "Buena"
    } else if (dustVal <= 400) {
        return "Regular"
    } else {
        return "Mala"
    }
}
let levelPct = 0
let soilPct = 0
let airQuality = ""
let dustVal = 0
let levelVal = 0
let soilVal = 0
let pct = 0
// --- CONFIGURACIÓN DE PINES ---
// Humedad Capacitiva
let SOIL_PIN = AnalogPin.P3
// Nivel de Agua
let LEVEL_PIN = AnalogPin.P1
// Sensor de Polvo (Vout Analógica)
let DUST_PIN = AnalogPin.P2
// Relé
let PUMP_PIN = DigitalPin.P8
// --- UMBRALES DE RIEGO Y CLASIFICACIÓN (¡DEBES CALIBRAR ESTOS VALORES!) ---
let soilDryThreshold = 600
let waterLowThreshold = 400
let pumpDurationMs = 5000
// --- INICIALIZACIÓN ---
OLED.init(12864)
OLED.clear()
// Apaga la bomba al inicio
pins.digitalWritePin(PUMP_PIN0)
// Apaga la bomba al inicio
// --- BUCLE PRINCIPAL (Ejecutándose Continuamente) ---
basic.forever(function () {
    // 1. Lectura de Sensores
    soilVal = pins.analogReadPin(SOIL_PIN)
    levelVal = pins.analogReadPin(LEVEL_PIN)
    dustVal = pins.analogReadPin(DUST_PIN)
    // 2. Procesamiento
    airQuality = classifyAir(dustVal)
    soilPct = analogToSoilPercent(soilVal)
    // Mapeo de nivel a porcentaje
    levelPct = Math.map(levelVal, 010230100)
    levelPct = Math.constrain(levelPct, 0100)
    // 3. Mostrar Resultados en OLED
    showOnOLED(soilPct, levelPct, airQuality, dustVal)
    // 4. Lógica de Riego (CONDICIONAL)
    if (soilVal > soilDryThreshold && levelVal > waterLowThreshold) {
        // Activa el relé
        pins.digitalWritePin(PUMP_PIN1)
        basic.pause(pumpDurationMs)
        // Desactiva el relé
        pins.digitalWritePin(PUMP_PIN0)
    }
    // Espera 1 segundo
    basic.pause(1000)
})

 LINK DISEÑO DEL CIRCUITO 3D FERIA DE LA CIENCIA

https://www.tinkercad.com/things/3wXQu8n68NP-proyecto-feria-?sharecode=DL3DqY6KRlaGjnZrYr61hI_9XQ7WQ0rdkBy-t4vCYPk

 LINK BITACORAS FERIA DE LA CIENCIA