Paso 5: El código
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: const int chipSelect = 10; inicializar la biblioteca con los números de los pines de interfaz TMP36 Variables de Pin Fotorresistencia Pin
#include < LiquidCrystal.h >
#include < SD.h >
#include < Wire.h >
#include "RTClib.h"
Archivo de datos de archivo;
Archivo de registro de archivo;
LiquidCrystal lcd (7, 8, 9, 4, 2, 6);
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
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
}