Boa tarde amigos
Estou fazendo um controlador de temperatura, com arduino, LM35 e 2 botões um para aumentar e outro diminuir o valor do setpoint para controlar uma saída.
Até aí blz, está funcionando o LM 35 da o valor da temperatura corretamente, os botões alteram o setpoint, a saída altera o valor quando o setpoint é atingido.
O único problema é que não consegui fazer com que tanto o valor de temperatura lida quanto o valor de setpoint ficar em decimais eles só aparecem n° inteiros 1,2 ,3,4 .....
E quando aumento o valor de setpoint acima de 10, quando vou diminuir esse valor ele diminui o n° de trás ex: 13,12,11,10 depois passa para 90, 80, 70 e não 09, 08,07.
Alguem pode me dar alguma instrução, eu agradeço.
Segue o sketch.
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
const int sensordetemperatura = A0;
int temperaturalida = 0.0;
const byte bttemperaturasetCima = 8;
const byte bttemperaturasetBaixo = 9;
int temperaturaset;
void setup() {
Serial.begin(9600);
lcd.begin(16, 2);
pinMode(7,OUTPUT);
digitalWrite(7,HIGH);
pinMode(bttemperaturasetCima, INPUT);
pinMode(bttemperaturasetBaixo, INPUT);
digitalWrite(bttemperaturasetCima, HIGH);
digitalWrite(bttemperaturasetBaixo, HIGH);
}
void loop(){
boolean isAjustado = false;
if (!digitalRead(bttemperaturasetCima))
{
temperaturaset++;
delay(150);
isAjustado = true;
}
else if (!digitalRead(bttemperaturasetBaixo))
{
if (temperaturaset > 0.0) temperaturaset--;
delay(150);
isAjustado = true;
}
temperaturalida = analogRead(sensordetemperatura);
temperaturalida = (500 * temperaturalida) / 1023;
lcd.setCursor(0, 0);
lcd.print("Temp.set:");
lcd.print(temperaturaset);
Serial.print("Temperatura:");
Serial.println(temperaturalida);
lcd.setCursor(0, 1);
lcd.print(temperaturalida);
lcd.print(" C Atual");
if(temperaturalida == 30)
digitalWrite(7,HIGH);
else
digitalWrite(7,LOW);
}
Tags:
Legal seu projetinho...Não sei como resolver seu primeiro problema mas o segundo tenho uma solução...
lcd.setCursor(0, 1);
lcd.print(" ");
Coloque estas duas linhas de comando logo após 'Serial.println(temperaturalida);'.Fazendo assim toda vez que for imprimir um novo valor ele apaga a parte do display onde estão os números do valor da temperatura lida.Lembro que fiz isto e resolveu meu problema, testa ai e ve se resolve o seu.Também não sei se esta é a melhor maneira de fazer e se mais alguem ai no lab ter outra forma de resolver postem ai...
Obrigado pela atenção rhaicmer braulio da costa, tentei fazer o que sugeriu mas não resolveu a minha questão.
Se tiver alguma outra idéia ou alguém do LDG tiver eu agradeço.
Valeu, abraço
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por