Paso 2: (codeTime);
He incluido también el bosquejo en una descarga. Cuando el código es coppied y pega en y ible tiende a cosas de dispersión alrededor.
He comentado el código mejor que saber cómo, pero si algo no correcto o podría ser limpiado para arriba por favor deja un comentario.
/*
25 de octubre de 2012
Basado en un proyecto de DJ Mentzik.
Mejorado y modificado por WWC.
Los documentos pueden encontrarse en
Utilizar y modificar según sea necesario.
Para alambre de la pantalla LCD a tu Arduino, conexión de los siguientes pines:
LCD Pin 6 a pin digital 12
LCD Pin 4 a pin digital 11
LCD Pin 11 al pin digital 5
LCD Pin 12 al pin digital 4
LCD 13 de Pin a pin digital 3
LCD 14 de Pin a pin digital 2
Además, un pote de 10K a + 5V y GND del alambre, con su limpiador (salida) para LCD pantallas pin VO (pin3).
*/
#include < LiquidCrystal.h > / / incluye la biblioteca de controladores de LCD
declarar variables
flotador tempC = 0; Variable para mantener la temperatura Celsius (floating para la precisión de decimales)
flotador tempf = 0; variable para la celebración de Fareghneit temp
int tempPin = 0; Declarar la entrada analógica a 0 (A0) de la placa Arduino.
flotador de muestras [8]; Matriz para 8 muestras para el cálculo de temperatura media
maxi de flotador = 0, mini = 100; Variables de temperatura máxima y mínima con valores iniciales. LM35 en configuración simple solo mide temperatura superior a 0.
int i;
LiquidCrystal lcd (12, 11, 5, 4, 3, 2); inicializar la biblioteca con los números de los pines de interfaz
void setup()
{
Serial.Begin(9600); Abre el puerto serie, establece la tarifa de datos a 9600 bps
LCD.Begin (16, 2); Fijar número la pantalla del LCD de filas y columnas:
lcd.setCursor (2, 0); Establecer LCD posición del cursor (columna, fila)
LCD.Print («Waynes World"); Imprimir texto en LCD
lcd.setCursor (3, 1); Establecer LCD posición del cursor (columna, fila)
LCD.Print("Thermometer"); Imprimir texto en LCD
Delay(5000); esperar 500ms / retardo para leer texto
LCD.Clear(); borrar pantalla LCD / / borrar la pantalla
lcd.setCursor (2, 0); Establecer LCD posición del cursor (columna, fila)
LCD.Print ("LCD aparece"); Imprimir texto en LCD
lcd.setCursor (1, 1); Establecer LCD posición del cursor (columna, fila)
LCD.Print ("temperatura media"); Imprimir texto en LCD
Delay(5000); Retardo para leer texto
LCD.Clear(); LCD Clear
}
void loop()
{
Serial.println(""); Línea en blanco para espacio en el monitor serial
Serial.println ("que busca en un proyecto construido por WWC."); Imprimir texto a monitor Serial
Serial.Print ("Feal libre de uso y modife según sea necesario.");
Serial.println(""); Línea en blanco para espacio en el monitor serial
Serial.Print ("datos LM35:"); Imprimir texto a monitor Serial
Serial.println(analogRead(tempPin)); Muestra en el monitor serial el valor muestreado antes de conversión a la verdadera lectura de la temperatura
Inicio de cálculos para el lazo.
para (i = 0; i < = 7; i ++) {/ / obtiene 8 muestras de la temperatura
muestras [i] = (4.4 * analogRead(tempPin) * 100.0) / 1024.0; matemáticas de conversión de LM35 muestra legible resultado temperatura y tiendas a la matriz de muestras.
5V es el voltios de alimentación del LM35. Cambiar el appropriatelly tener la medida correcta. Mi caso es 4.4Volts.
Si accionado del USB utiliza valor 4.4v a 4.6v. Si la energía es 7v < a Arduino luego use 4.9v a 5.1v
La tensión es fundamental para una lectura precisa
Serial.println(samples[i]); Imprimir muestras [i] para monitor sertiual
(Nota de LCD: línea 1 es la segunda fila, ya que cuenta comienza con 0):
lcd.setCursor (0, 0); Establecer LCD posición del cursor (columna 0, fila 0)
LCD.Print ("Temp actual es:"); Imprimir texto en LCD
lcd.setCursor (1, 1); Establecer LCD posición del cursor (columna 1, fila 1)
LCD.Print ("grados Celsius"); Imprimir texto en LCD
lcd.setCursor (12, 1); Establecer LCD posición del cursor (columna 12, fila 1)
LCD.Print(samples[i]); impresión actual muestra temperatura LCD
tempC = tempC + muestras [i]; hacer la adición para temperatura media
Delay(800); esperar 800ms
} // END of FOR loop
Serial.println(""); Línea en blanco para espacio en el monitor serial
Serial.println(""); Línea en blanco para espacio en el monitor serial
tempC = tempC/8.0; calcula el averare de 8 muestras en Celcius
tempf = (tempC * 9) / 5 + 32; convierte Fahrenheit
if(tempC > Maxi) {maxi = tempC;} temperatura máx.
if(tempC < mini) {mini = tempC;} temperatura mínima set
Enviar resultados a Monitor Serial
Serial.println ("nueva medida:");
Serial.Print ("temperatura media en grados Celsius es"); Imprimir texto a monitor Serial
Serial.println (tempC); //send los datos al ordenador / / enviar los datos a la computadora
Serial.Print ("temperatura media en Farenait es"); Imprimir texto a monitor Serial
Serial.println (tempf); //send los datos al ordenador / / enviar los datos a la computadora
Serial.Print ("MAX Temperature en grados"); Imprimir texto a monitor Serial
Serial.println (maxi); //send los datos al ordenador / / enviar los datos a la computadora
Serial.Print ("MIN temperatura en Celcius es"); Imprimir texto a monitor Serial
Serial.println (mini); //send los datos al ordenador / / enviar los datos a la computadora
Enviar resultados a LCD.
lcd.setCursor (0, 1); Establecer LCD posición del cursor (columna 0, línea 1)
LCD.Print ("Fahrenheit"); Imprimir texto en LCD
lcd.setCursor (12, 1); Establecer LCD posición del cursor (columna 12, línea 1)
LCD.Print(tempf); Enviar los datos a la LCD
Delay(6000); Esperar 3 segundos para mostrar el Fahrenheit temp y 3 segundos para mostrar los resultados a la LCD de la pantalla antes de comenzar el bucle otra vez = 6 segundos.
tempC = 0; TempC se establece en 0 para que los cálculos pueden realizarse otra vez
}