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

Exibições: 1981

Responder esta

Respostas a este tópico

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

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço