Skip to content

Instantly share code, notes, and snippets.

@esmarr58
Created November 25, 2017 04:03
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save esmarr58/a58cc156843a19aafe57cdfb4ad89c99 to your computer and use it in GitHub Desktop.
Save esmarr58/a58cc156843a19aafe57cdfb4ad89c99 to your computer and use it in GitHub Desktop.
int lecturaADC = 0;
double voltajeLM35 = 0.0;
double TemperaturaLM35 = 0.0;
double Referencia = 25.5;
void setup() {
pinMode(12,OUTPUT); //Salida a Alarma, aun sin uso
Serial.begin(9600);
}
void loop() {
/*
* #1
Lectura del canal 0 del ADC,
recordando que el ADC de Arduino
es de 10 Bits, el resultado se guardara
en una variable int (16 bits).
*/
lecturaADC = analogRead(A0);
/*
* Se imprime el valor despues del siguiente texto.
*/
Serial.print("El valor binario de salida en el sensor es: ");
Serial.println(lecturaADC);
/*
* Convertir el valor binario a un voltaje que se guardara
* en una variable del programa, dado que la variable lecturaADC
* es entera, la operación lecturaADC/1023 regresará un valor entero.
* La opción (a) funciona de esta forma, lo cual sería un error,
* esto porque el resultado que imprimiria seria 0.0.
* Para evitar este problema, se hace un "casting" a la variable entera.
* Esta casting hará que el compilador considere a la operación,
* como si fuera una variable double. La opción (b) considera este caso.
*/
//Opcion (a)
// voltajeLM35 = (lecturaADC/1023)*5;
//Opcion (b)
voltajeLM35 = ((double)lecturaADC/1023)*5;
Serial.print("El valor en voltaje de salida en el sensor es: ");
Serial.println(voltajeLM35,4); //Imprime la variable double con 4 decimales
TemperaturaLM35 = voltajeLM35/0.01;
Serial.print("El valor en temperatura de salida en el sensor es: ");
Serial.print(TemperaturaLM35,2); //Imprime la variable double con 2 decimales
Serial.println(" °C");
/*
* La alarma se activara si el valor de la temperatura supera al valor de la referencia
*/
if(TemperaturaLM35 > Referencia) {
digitalWrite(12,HIGH);
Serial.println("Se activo la alarma");
}
else {
digitalWrite(12,LOW);
}
/*
* Retardo de 3 segundos entre medicion.
*/
delay(3000);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment