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); 

}

 

 

Exibições: 206

Responder esta

Respostas a este tópico

No arduino, dá uma olhada nos exemplos que já vem nele: Blink without Delay

Assim vc resolve o problema.

Abraços!

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço