Está en la página 1de 4

Termostato

para acuario





#include <LiquidCrystal.h>
LiquidCrystal lcd ();
// Declaramos la librería para el LCD y los pins por donde le va a llegar la
información
int sensorPin = A0;
int rele = 7;
float centi (){ //Función para leer el dato analógico y convertirlo a digital:
int dato;
dato=analogRead(A0);
float c = (500.0 * dato/1023)-50;
//Esta fórmula sale de la relación del sensor con los grados. Explicación:
/* El sensor de temperatura TMP36 responde a variaciones de 10 mV por cada
garado centígrado pero comienza a -50ºC.
Si el sensor detecta 1ºC en la salida del sensor obtendríamos
(50+1)*10mV=510mV. Otro ejemolo: 26,4ºC = (50+26,4)*10=764mV = 0.764 V.
Tenemos que el convertidor analógico-digital es de 10 bits, los valores variarán
entre 0 y 1023.
entonces Vout=(5V*Dato)/1023 siendo (0 < Dato < 1023) y para ajustar la escala
de grados centígrados: Vout = ((5V*Dato)*100)/1023-50
*/
return (c);

}

float kelvin (float cent) {
float k;
k=cent+273.15;
return (k);
}
//En esta función declaramos un parámetro (le llamamos cent) y nos servirá para
sumarle 273.15 lo que declararemos en esos paréntesis del parámetro.

void setup (){
//Definimos el LCD con dimensión 2x16 y escribimos los caracteres fijos (loa que
no van a cambiar) y como deben posicionarse :
lcd.begin(16,2);
lcd.print ("C= K="); //Ponemos espacios (6) para dejar sitio a los valores (el C
está en la posición 0, o=en la posición 1, 6 espacios,K,=,...)
lcd.setCursor (0,1); //Ponemos el cursor en la posición = de la fila 1 (abajo)
lcd.print ("Temperatura");//Imprimimos las caracteres: Temperatura
pinMode (rele,OUTPUT);//Declaramos el pin rele (pin7) como SALIDA
}
//Hasta aquí definimos que queremso que salga impreso fijo por la pantalla y la
posición.
void loop(){
float Centigrados = centi (); //Declaramos una variable que almacena la función
centi ()
float Kelvin = kelvin (Centigrados); //Declaramos una variable que almacena los
valores de la función kelvin con el parámetro del valor de la variable Centigrados
lcd.setCursor(2,0);
lcd.print (Centigrados);
lcd.setCursor (10,0);
lcd.print (Kelvin);
delay(200);

//Por último, usamos la parte activa del bucle para que constantemente recalcule
los datos para cada variación.
if (Centigrados <24){
digitalWrite(rele,HIGH);

}else {
digitalWrite(rele,LOW);
}
delay (400);

}



Esto es lo que dice “EL FULANO” en el tutorial

Agora temos que preparar o código no IDE de Arduino e temos que ter en
conta os seguintes aspectos importantes:

• Temos que incluir a librería do LCD (#include <LiquidCrystal.h>) que


nos facilitará moito o uso da pantalla LCD e declamos os pins de
comunicación coa pantalla ( LiquidCrystal lcd(12, 11, 5, 4, 3, 2);)
• Declararemos as variables que precisamos, por exemplo
: int sensorPin = A0;

• Implementamos as funcións que precisamos, por exemplo :


o float centi( ...){ .... } // Declaramos a función centi que
almacenará datos con decimais (float).
o float kelvin( ...){ .... }
• no void setup, teremos que:
o lcd.begin(16,2); // Iniciamos a LCD con dimensions 2x16
o lcd.print("C= K="); // Imprimimos os caracteres e os
espazos precisos
o lcd.setCursor(0,1); // Poñemos o cursor na posición que
precisemos ,neste caso, na posición 0 da fila 1 (abaixo)
o pinMode (rele,OUTPUT); // Declaramos o pin rele (pin7)
coma SAIDA
• no void loop{}, teremos que:
o lcd.print(Centigrados); // imprimir o valor da variable da
temperatura en ºC (Centigrados), neste caso.
o Utilizaremos o valores da variable Centigrados para tomar
decicións sobre o relé, usando a función if:

if (Centigrados<24) {
digitalWrite(rele,HIGH);
} else {
digitalWrite(rele,LOW);
}

Podes copiar o código na seguinte imaxe, recorda que non é necesario


copiar todas as explicacións (liñas despois de // ou parágrafos entre /* e */):


Estos son los MENSAJES DE ERROR que da el código al ponerlo a funcionar

Arduino:1.8.12 (Mac OS X), Tarjeta:"Arduino Uno"

/Users/Antonio/Desktop/Curso
Arduino/Termostato_acuario_1/Termostato_acuario_1.ino: In function 'void
setup()':
Termostato_acuario_1:30:7: error: request for member 'begin' in 'lcd', which is of
non-class type 'LiquidCrystal()'
lcd.begin(16,2);
^~~~~
Termostato_acuario_1:31:9: error: request for member 'print' in 'lcd', which is of
non-class type 'LiquidCrystal()'
lcd.print ("C= K="); //Ponemos espacios (6) para dejar sitio a los valores (el C
está en la posición 0, o=en la posición 1, 6 espacios,K,=,...)
^~~~~
Termostato_acuario_1:32:5: error: request for member 'setCursor' in 'lcd', which is
of non-class type 'LiquidCrystal()'
lcd.setCursor (0,1); //Ponemos el cursor en la posición = de la fila 1 (abajo)
^~~~~~~~~
Termostato_acuario_1:33:7: error: request for member 'print' in 'lcd', which is of
non-class type 'LiquidCrystal()'
lcd.print ("Temperatura");//Imprimimos las caracteres: Temperatura
^~~~~
/Users/Antonio/Desktop/Curso
Arduino/Termostato_acuario_1/Termostato_acuario_1.ino: In function 'void
loop()':
Termostato_acuario_1:40:7: error: request for member 'setCursor' in 'lcd', which is
of non-class type 'LiquidCrystal()'
lcd.setCursor(2,0);
^~~~~~~~~
Termostato_acuario_1:41:7: error: request for member 'print' in 'lcd', which is of
non-class type 'LiquidCrystal()'
lcd.print (Centigrados);
^~~~~
Termostato_acuario_1:42:7: error: request for member 'setCursor' in 'lcd', which is
of non-class type 'LiquidCrystal()'
lcd.setCursor (10,0);
^~~~~~~~~
Termostato_acuario_1:43:7: error: request for member 'print' in 'lcd', which is of
non-class type 'LiquidCrystal()'
lcd.print (Kelvin);
^~~~~
exit status 1
request for member 'begin' in 'lcd', which is of non-class type 'LiquidCrystal()'

Este informe podría contener más información con
"Mostrar salida detallada durante la compilación"
opción habilitada en Archivo -> Preferencias.

También podría gustarte