Meu sensor não esta fazendo a leitura do solo?

Olá pessoal, tenho um problema onde o meu sensor de umidade de solo não está fazendo a leitura inicial onde tem a função de dizer se o solo está seco ou úmido, estou usando as portas A0, GND e VCC, A0 no Arduino e os demais na protoboard. Só que estou em duvida no meu código

segue o código do sensor

void loop()
{
  //Le o valor do pino A0 do sensor
  ValorAnalogIn = analogRead(sensor); //Leitura do Valor Analógico do Sensor

  UmidPercent = map(ValorAnalogIn, 1023, 0, 0, 100); //Mapeando o valor entre 0 e 100
  umidade = 100 - UmidPercent;

  if ( (umidade > (ValorAnterior) + 1) || (umidade < (ValorAnterior) - 1))
  {

    if (umidade < 60 && BaixaUmid == 0)
    {
      BaixaUmid = 1;
      AltaUmid = 0;
      MensUmidBaixa();
    }

    if (umidade >= 60 && AltaUmid == 0)
    {
      AltaUmid = 1;
      BaixaUmid = 0;
      MensUmidNormal();
    }

    ValorAnterior = umidade;
  }

Ola @renatofeer
seu sketch está incompleto, faltam definições de variáveis e a função setup().

RV mineirin

Ola,

Esse código parece ser o mesmo da thread anterior . Coloco em baixo para referência.

As funcões analogRead() e map() devolvem um valor do tipo int. No entanto, estás a usar variáveis do tipo byte para receber os valores. Um int tem 16 bits, um byte tem 8 bits, o valor de um int nao cabe num byte.

Durante os cálculos também é boa ideia usar variáveis com tamanho suficiente para não ocorrer o overflow.

Ao colocares uma questão, para facilitar a ajuda, coloca o output do erro que estás a obter, indicando os valores que esperavas obter :wink: .

#include <SoftwareSerial.h>

SoftwareSerial chip(10, 11);

String SeuNumero = "+55920000000"; //Digite seu celular com +55, o DDD da sua cidade e o seu numero com o 9 na frente

#define sensor A0

bool BaixaUmid = 0, AltaUmid = 0;

byte UmidPercent = 0, umidade = 0, ValorAnterior = 0;

int ValorAnalogIn = 0;

void setup() {
  Serial.begin(9600);
  Serial.println("Inicializando Sistema...");
  delay(5000);
  chip.begin(9600);
  delay(1000);

  pinMode(sensor, INPUT); //Configura o Pino do Sensor como Entrada

  ValorAnterior = analogRead(sensor); //Captura um primeiro valor de referencia inicial para a variavel ValorAnterior
}

void loop() {
  //Le o valor do pino A0 do sensor
  ValorAnalogIn = analogRead(sensor); //Leitura do Valor Analógico do Sensor

  UmidPercent = map(ValorAnalogIn, 1023, 0, 0, 100); //Mapeando o valor entre 0 e 100
  umidade = 100 - UmidPercent;

  if ((umidade > (ValorAnterior) + 1) || (umidade < (ValorAnterior) - 1)) {

    if (umidade < 60 && BaixaUmid == 0) {
      BaixaUmid = 1;
      AltaUmid = 0;
      MensUmidBaixa();
    }

    if (umidade >= 60 && AltaUmid == 0) {
      AltaUmid = 1;
      BaixaUmid = 0;
      MensUmidNormal();
    }

    ValorAnterior = umidade;
  }

}

void MensUmidBaixa() {//Funcao para enviar mensagem de alerta Umidade Baixa

  chip.println("AT+CMGF=1\r\n");
  delay(1000);
  chip.println("AT+CMGS=\"+5592000000\"\r\n");
  delay(1000);
  String SMS = "Baixa Umidade";
  chip.println(SMS);
  delay(100);
  chip.println((char) 26);
  delay(1000);
}

void MensUmidNormal() { //Funcao para enviar mensagem de alerta Umidade Normal

  chip.println("AT+CMGF=1\r\n");
  delay(1000);
  chip.println("AT+CMGS=\"+559200000\"\r\n");
  delay(1000);
  String SMS = "Umidade Normal";
  chip.println(SMS);
  delay(100);
  chip.println((char) 26);
  delay(1000);
}

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.