Galera como posso colocar os botões independentes do Delay? Do jeito que esta o código esta funcionando mais o botão só diminui a temperatura de 5 em 5 segundos, tipo ela começa em 29 mais quero que vá para 26 tenho que ficar pressionando o botão por 15 segundos. A cada 5 segundos (Delay) é que diminui um grau. Como resolvo isso. Sei que se diminuir o Delay tipo para 100 resolve mais quero verificar a temperatura de 5 em cinco minutos.
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 13);
int ledPin = 9; //led pino 9
int buttonPin = 6; //botão pino 6
int buttonPin1 = 10; // botão pino 6
int analogPin = A5; //LM35 ligado no pino analógico 5
int valAnalog ;
int temperatura ;
int ventilador = 7; // ventilador ligado por relé no pino 7
int cortinna = 8; // por enquanto um led
int buttonState = 0;
int tempreg = 29; // constante da temperatura
void setup()
{
lcd.begin(16, 2);
pinMode(buttonPin, INPUT);
pinMode(buttonPin1, INPUT);
pinMode(ledPin, OUTPUT);
pinMode(ventilador, OUTPUT);
pinMode(cortinna, OUTPUT);
Serial.begin(9600);
}
void loop()
{
valAnalog = analogRead(analogPin);
temperatura= ( 5 * valAnalog * 100) / 1024 ;
buttonState = digitalRead(buttonPin);
if (buttonState == HIGH) {
tempreg++;
}
buttonState = digitalRead(buttonPin1);
if (buttonState == HIGH) {
tempreg--;
}
lcd.setCursor(0, 0);
lcd.print("Ta.");
lcd.setCursor(3, 0);
lcd.print(temperatura);
lcd.setCursor(5, 0);
lcd.print("C");
lcd.setCursor(8, 0);
lcd.print("Tr.");
lcd.setCursor(11, 0);
lcd.print(tempreg);
lcd.setCursor(13, 0);
lcd.print("C");
if (temperatura >= tempreg)
{
digitalWrite(ventilador, HIGH);
lcd.setCursor(0, 1);
lcd.print("V. ON");
}
else
{
digitalWrite(ventilador, LOW);
lcd.setCursor(0, 1);
lcd.print("V. OFF");
}
if (temperatura < tempreg)
{
digitalWrite(cortinna, HIGH);
lcd.setCursor(8, 1);
lcd.print("A. ON");
}
else
{
digitalWrite(cortinna, LOW);
lcd.setCursor(8, 1);
lcd.print("A. OFF");
}
Serial.println(temperatura) ;
delay(5000) ;
piscaLed() ;
lcd.clear();
}
void piscaLed() {
digitalWrite(ledPin, HIGH);
delay(50) ;
digitalWrite(ledPin, LOW);
}
Tags:
No arduino, dá uma olhada nos exemplos que já vem nele: Blink without Delay
Assim vc resolve o problema.
Abraços!
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por