Montagem de set-point arduino


#1

ola galera estou tentando montar um sistema de controle de estufa junto com um controle de set point com dois butoes um inccrementa e outro decrementa o set point de temperatura !!! porem estou com o problema nesta parte ! de montar uma logica para armazenar o valor diminui e almentalo pelos botões segue o codigo!!!

#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include “DHT.h”

#define DHTPIN A1 // pino que estamos conectado
#define DHTTYPE DHT11 // DHT 11
DHT dht(DHTPIN, DHTTYPE);
const int aumenta = 2; // pino digital 2 conectado ao pushbutton
const int diminui = 3; // pini digital 7 conectado ao led
const int saida = 4;
int estado = 0; // variável que recebe o valor lido do pushbutton
int estado1 = 0;
int sp = 30; // variável que conta quantas vezes o pushbutton foi pressionado
int t = 0;

LiquidCrystal_I2C lcd(0x3F,2,1,0,4,5,6,7,3, POSITIVE);

void setup()
{
lcd.begin (16,2);
Serial.begin(9600);
delay(1000);//Aguarda 1 seg antes de acessar as informações do sensor
pinMode(aumenta, INPUT); // configura o pino conectado no pushbutton como entrada
pinMode(diminui, INPUT);
pinMode(saida, OUTPUT); // configura o pino conectado ao led como saída

}

void loop()
{int h = dht.readHumidity();
int t = dht.readTemperature();
if (isnan(t) || isnan(h))
{
Serial.println(“Failed to read from DHT”);
}
else
{
Serial.print(“Umidade: “);
Serial.print(h);
Serial.print(” %t”);
Serial.print(“Temperatura: “);
Serial.print(t);
Serial.println(” *C”);

lcd.setBacklight(HIGH);
lcd.setCursor(0, 0);
lcd.print(“UMIDADE:”); //Escreve no display o valor da temperatura
lcd.setCursor(10, 0);
lcd.print(h);
lcd.setCursor(13,0); //Posiciona o cursor na coluna 5, linha 1 do display
lcd.print("%"); //Escreve no display o valor da temperatura minima
lcd.setCursor(0, 1); //Posiciona o cursor na coluna 9, linha 1 do display
lcd.print(“TEMP:”); //Escreve no display o valor da temperatura maxima
lcd.setCursor(6, 1);
lcd.print(t);
lcd.setCursor(8, 1);
lcd.print(“C”);
lcd.setCursor(10, 1); //Posiciona o cursor na coluna 9, linha 1 do display
lcd.print(“SP:”); //Escreve no display o valor da temperatura maxima
lcd.setCursor(13, 1);
lcd.print(sp);
lcd.setCursor(15, 1);
lcd.print(“C”);

estado = digitalRead(aumenta); // armazena o sinal de subida
estado1 = digitalRead(diminui); // armazena o sinal de decida
Serial.print(aumenta);
if( estado == HIGH) // se pushbutton pressionado
{
sp = sp++; // contador acrescentar mais um exmp : contador + 1
}

if( estado1 == HIGH) // se o pushbutton for pressionado 10 vezes
{ sp = sp–; }

if( t < sp)
{ digitalWrite(saida, HIGH); }

else
{digitalWrite(saida, LOW); }

}}


#2

Tem que comparar se o botão ficar apertado p não dar pau…

estado == HIGH&& estado!=HIGH

Coso contrário o sw vai ficar incrementando até vc soltar o botão.