O sensor que passou do limite
Este é o código de verdade da irrigação inteligente: um ESP32 lê um sensor capacitivo de umidade do solo e mostra a porcentagem num painel. O número do sensor cai quando a terra molha. Calcule o que o ESP32 guarda em cada variável.
Como o sensor é lido
int SECO = 3300, MOLHADO = 1400; // calibração
void ler() {
int bruto = analogRead(PINO_SOLO); // 0 a 4095
int pct = map(bruto, SECO, MOLHADO, 0, 100);
umidade = constrain(pct, 0, 100); // vai para o painel
}
O map() do Arduino/ESP32 faz a conta com números inteiros:
long map(long x, long in_min, long in_max, long out_min, long out_max) {
return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;
}
- Leitura A:
bruto = 2350. Quanto valepct? - Leitura B: o vaso ficou no sol e
bruto = 3500. Quanto valepct? - Ainda na leitura B, quanto vale
umidade(o que o painel mostra)?
Sua resposta
Dicas
- Substitua na fórmula:
xé o bruto,in_miné o SECO (3300),in_maxé o MOLHADO (1400),out_miné 0 eout_maxé 100. Repare quein_maxé menor quein_min. - Na divisão entre inteiros em C, a parte decimal é jogada fora, rumo ao zero: 7 / 2 dá 3 e −7 / 2 dá −3 (não −4).
constrain(valor, 0, 100)devolve 0 se o valor for menor que 0, 100 se for maior que 100, e o próprio valor no resto.
Explicação
A regra de três que não trava sozinha
Para ir além
Monte a irrigação completa (sensor, relé, bomba e painel no celular) com o guia Irrigação inteligente. Para começar no ESP32 do zero, o curso Robótica do Zero ao Expert vai do primeiro LED ao robô com sensores.