Proyecto de Logger de datos (5 / 5 paso)

Paso 5: El código

Que es el último paso. El código debe leer el Sensor de temperatura la célula fotoeléctrica mostrar los valores en la pantalla y guardarlos en la tarjeta SD. Hay algunos códigos de averías que podrían mostrar en el terminal de serie si algo está mal. Cuando la temperatura es más caliente la luz trasera debe rojo, cuando la habitación es más brillante la luz trasera debe girar a la azul, si es caliente y brillante debe ser púrpura. Frío y oscuro deben ser negro.

El código es muy desordenado, que lo dejé un montón de líneas de notas en caso de que quiero volver a agregarlos. Se ve mucho mejor entonces la imagen.

Copie el código siguiente en un bosquejo para utilizar

incluir el código de biblioteca:
#include < LiquidCrystal.h >
#include < SD.h >
#include < Wire.h >
#include "RTClib.h"

const int chipSelect = 10;
Archivo de datos de archivo;
Archivo de registro de archivo;

inicializar la biblioteca con los números de los pines de interfaz
LiquidCrystal lcd (7, 8, 9, 4, 2, 6);

TMP36 Variables de Pin
int temperaturePin = 0; el pin analógico pin de Vout (sentido) de TMP36 está conectado a la resolución es de 10 mV / grado centígrado (500 mV compensación) para temperaturas negativas una opción

Fotorresistencia Pin
Apagado de int = 1; el pin analógico que la fotorresistencia está conectado a la fotorresistencia no está calibrado para todas las unidades así que esto es simplemente un valor raw sensor (luz relativa)

LED para sensor de luz
int lcdRed = 3;   el pin del LED está conectado a
int lcdBlue = 5;   el pin del LED está conectado a

RTC_DS1307 RTC; definir el objeto de reloj en tiempo Real

//========================================================

void setup() {}
fijar número la pantalla del LCD de filas y columnas:
LCD.Begin(16,2);
Serial.Begin(9600);  Iniciar la conexión en serie con la copmuter
para ver el resultado Abra el monitor serial
último botón debajo de la barra de archivo (se parece a una caja con una antena
pinMode (lcdRed, entrada); establece el pin led para entrada
pinMode (lcdBlue, entrada); establece el pin led para entrada

Wire.Begin();
RTC.begin();
//----------------------------------------
if (!. {RTC.isrunning())}
Serial.println ("RTC no corre!");
línea establece el RTC en la fecha y hora que este sketch fue compilado
RTC.adjust (DateTime (__DATE__, __TIME__));
}
//-------------------------------

Serial.Print ("tarjeta INICIALIZACION SD...");
Asegúrese que el pasador seleccione predeterminado chip es
de salida, incluso si no lo usas:
pinMode (SS, salida);

a ver si la tarjeta está presente y puede ser inicializada:
if (!. {SD.begin(chipSelect))}
Serial.println ("tarjeta de fallido, o no presente");
no hacer nada más:
mientras (1);
}
Serial.println ("tarjeta de inicializado.");

Abra el archivo que vamos a iniciar sesión!
archivo de datos = SD.open ("datalog.txt", FILE_WRITE);
Si (! dataFile) {}
Serial.println ("error al abrir datalog.txt");
Esperar para siempre ya que no podemos escribir datos
mientras (1);
//  }
//-----------------
crear un nuevo archivo
char nombre [] = "LOGGER00. CSV";
para (uint8_t i = 0; i < 100; i ++) {}
nombre de archivo [6] = i / 10 + '0';
nombre de archivo [7] = i % 10 + '0';
if (!. {SD.exists(filename))}
sólo abrir un archivo nuevo si no existe
logfile = SD.open (filename, FILE_WRITE);
rotura;  dejar el lazo!
}
}

Serial.Print ("registro:");
Serial.println(FileName);
logfile.println(",,,Willy,reen");
logfile.println ("registro de fichero de datos");
logfile.println("Date,Temp(F),Light");
}

//=========================================================

void loop() {}

Float temperatura = getVoltage(temperaturePin);  obtener el voltaje del sensor de temperatura
temperatura = ((temperature-.5) * 100) * 1.8 + 32;          conversión de 10 mv por grado ingenio 500 mV offset
a grados ((volatge - 500mV) veces 100)
Serial.println(Temperature);                     el resultado de la impresión
Delay(500);                                     espera un segundo

//------------------------
int lightLevel = analogRead(lightPin); Leer la
lightLevel = mapa (lightLevel, 0, 0, 900, 150);  ajustar el valor de 0 a 900 para abarcar de 0 a 255
lightLevel = restringir (lightLevel, 0, 150);   Asegúrese de que el valor está después 0 y 255
//////
int tempLevel = analogRead (temperaturePin) * 100; Leer la
tempLevel = mapa (tempLevel, 66, 82, 0, 150);  ajustar el valor de 0 a 900 para abarcar de 0 a 255
tempLevel = restringir (tempLevel, 0, 150);   Asegúrese de que el valor está después 0 y 255
analogWrite (lcdBlue, lightLevel);  escribir el valor
analogWrite (lcdRed, tempLevel);  escribir el valor
//-----------------------------------------------------------

Cadena dataString = "";

fecha hora materia---

//-------------------------------------------------------
logfile.println("");

Fecha y hora = ahora RTC.now();
tiempo de registro
logfile.Print(Now.unixtime()); segundos desde el 01/01/1970
logfile.Print (",");
logfile.Print('"');
logfile.Print(Now.Year(), DEC);
logfile.Print("/");
logfile.Print(Now.month(), DEC);
logfile.Print("/");
logfile.Print(Now.Day(), DEC);
logfile.Print("");
logfile.Print(Now.hour(), DEC);
logfile.Print(":");
logfile.Print(Now.minute(), DEC);
logfile.Print(":");
logfile.Print(Now.Second(), DEC);
logfile.Print('"');
logfile.Print(",");
//
logfile.Print(Temperature);
logfile.Print(",");
logfile.Print(lightLevel);
Delay(500);

//----------------
/*
leer sensores y añadir a la cadena:
para (int analogPin = 0; analogPin < 2; analogPin ++) {}
sensor int = analogRead(analogPin);
dataString += String(sensor);
Si (analogPin < 1) {}
dataString += ",";
}
}
*/
dataFile.println(dataString);
logfile.println(dataString);
Serial.println(dataString);
dataFile.flush();
logfile.Flush();

//-----------------------------------------------------------
establecer el cursor a (0,0):
lcd.setCursor (0, 0);
impresión de 0 a 9:
para (int thisChar = 0; thisChar < 10; thisChar ++) {}
LCD.Print(Temperature);
LCD.Print(myString);
lcd.setCursor (0, 1);
LCD.Print(lightLevel);

lcd.setCursor (8, 0);
LCD.Print("Temp");   Mostrar la temperatura en la pantalla lcd
lcd.setCursor (8, 1);
LCD.Print("Light");   luz de la pantalla en la pantalla lcd


Delay(500);

luz de fondo lcd---
lightLevel = restringir (lightLevel, 0, 255); //make seguro de la
valor es después
0 y 255

}


//------------------------------------------------------------


establecer el cursor a (16.1):
lcd.setCursor (16, 1);
configurar la pantalla para desplazarse automáticamente:
LCD.AutoScroll();
impresión de 0 a 9:
para (int thisChar = 0; thisChar < 10; thisChar ++) {}
LCD.Print(thisChar);
Delay(500);
//  }
desactivar desplazamiento automático
lcd.noAutoscroll();

borrar la pantalla para el siguiente bucle:
LCD.Clear();
//}

//==========================================================
Float getVoltage(int pin) {}
volver (analogRead(pin) *. 004882814); conversión de una gama digital de 0 a 1023
0 a 5 voltios (cada 1 es igual a la lectura ~ 5 milivoltios
}

Artículos Relacionados

Doble voltaje Arduino de Logger de datos genérico

Doble voltaje Arduino de Logger de datos genérico

yo he estado luchando con la construcción de un 'genérico' registrador 'minimalista' Arduino hace bastante tiempo. Cuando digo 'genéricos' no quiero construir un sensor particular, más bien desea utilizar una variedad de ellos - solos o en combinació
Registrador de datos geo: Arduino + GPS + SD + acelerómetro para registrar, sello de tiempo y datos del sensor geo-tag

Registrador de datos geo: Arduino + GPS + SD + acelerómetro para registrar, sello de tiempo y datos del sensor geo-tag

versiones17 de octubre de 2013: he publicado una guía sobre el uso de tu teléfono Android para llevar a cabo una tarea similar al aprovechar tu Android dispositivo de construido en GPS y sensores.06 de febrero de 2013: Aparece en GeoAwesomeness http:
Auto de Arduino proyecto jardín de riego

Auto de Arduino proyecto jardín de riego

Lo que tu mirando por encima es mi proyecto en su ' caja. Me puse a resolver un problema al iniciar este proyecto, que fue doble. Uno era familiarizarme con algunos de los fundamentos del entorno de Arduino y el otro era mi jardín regado automáticame
Cómo grabar datos con el uso de datos GPS/IMU (con sistema Android)

Cómo grabar datos con el uso de datos GPS/IMU (con sistema Android)

El siguiente conjunto de instrucciones proporciona asesoramiento sobre cómo configurar y recoger datos mediante la aplicación de 'Sensorstream IMU + GPS' desarrollada por Axel Lorenz. Esta aplicación específica puede utilizarse para recopilar datos b
Malos datos: Waterjet grabado Datasets

Malos datos: Waterjet grabado Datasets

"Malos datos" están una serie de doce visualizaciones de datos, que grabado en paneles de nido de abeja de aluminio usando una máquina de chorro de agua alta presión. Toman la forma de los objetos estáticos, que tiempo en un único espacio visibl
Conecte sus proyectos para Internet.

Conecte sus proyectos para Internet.

Control de sus proyectos en Internet o utilizar los datos desde una página web con el Módulo de E-Net, un complemento para la Plataforma de la hélice.El módulo de E-Net es un proyecto open source que utiliza Microchip de ENC28J60 dando la plataforma
Registrador de datos de energía solar

Registrador de datos de energía solar

¿Siempre quiso saber cuánta energía solar podría generar al poner células fotovoltaicas en un lugar específico en o alrededor de tu casa?Este Instructable muestra cómo construir un registrador de datos basado en un Arduino (o Genuino) Uno con data-lo
Registrador de datos GPS para corredores del camino de

Registrador de datos GPS para corredores del camino de

Yo soy un corredor del camino (a pie), y me gustan los números y matemáticas así (como un estudiante de ingeniería). La idea de seguimiento /marcando mi camino corriente para el post-análisis siempre me ha fascinado, pero siempre enfrento un problema
Cómo construir un registrador de datos GPS de peso ligero para aplicaciones de cohete modelo

Cómo construir un registrador de datos GPS de peso ligero para aplicaciones de cohete modelo

de febrero de 2009ResumenHe estado soñando de la construcción de un equipo de vuelo que no sólo controlan la secuencia de vuelo, sino también registrar datos a bordo de un cohete modelo. Pero necesito a caminar antes de puedo correr, así que empecé c
Quadcopter de visualización de datos con Plotly

Quadcopter de visualización de datos con Plotly

Quadcopters moderno puede utilizarse para varios propósitos distintos de entretenimiento y modelo de aeronaves, como las aplicaciones de vigilancia o asistencia en algunos lugares inaccesibles para los seres humanos así como la supervisión de situaci
Registro de datos de tarjeta SD con el Sensor de temperatura humedad DHT22

Registro de datos de tarjeta SD con el Sensor de temperatura humedad DHT22

Este es un tutorial explicando cómo hacer el registro con el Sensor de humedad de temperatura DHT22 por nuestro cliente Steve Spence.Esto es un poco complicado, como el sensor salidas flotadores y enviamos cadenas a la tarjeta SD, he puesto juntos un
Proyectos PHP

Proyectos PHP

Proyectos informáticos / asignaciones [información y tecnología de la comunicación]Directrices de desarrollo de software con SDLC0. encontrar un proyecto de Software / cliente1. requisito compilación y análisis: Análisis de viabilidad: 2. Análisis de
Base de datos de NERO

Base de datos de NERO

Hola chicos, uno aquí está de mi viejo proyecto. Base de datos de Nero.Nero Database le permite almacenar la información, texto largo no puede ser almacenado sólo texto sin espacios en blanco. Esta aplicación muestra que programa se puede utilizar pa
Controladores para Robots baratos, parte 2 de velocidad: controlador PID

Controladores para Robots baratos, parte 2 de velocidad: controlador PID

¡ Hola! Esto es parte de un tutorial de dos partes sobre cómo hacer un controlador de velocidad de un resorte de tapa y pluma de botella! Si no lo has hecho todavía, ¡ pruébelo! Si te gusta, por que no votar por mí en el concurso de sensores! ¡ Graci