Code: Select all
// Work in Progress 27 Aug 2018
// Developing first data logging sketch
// read temperature sensor and log readings of deg C and deg F to SD card
// 28 August-- sucessfully write data to SD card, next add switch to control data logging
// 29 August-- switch added. Jumper Pin 3 to 3.3 volts to logg data, jumper to GRN to not log data
// note: need to "re-set" Arduino after re-inserting SD card
#include <OneWire.h>
#include <DallasTemperature.h>
#include <Wire.h>
#include <SD.h>
#include <SPI.h>
#include "RTClib.h"
#define ONE_WIRE_BUS 7
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
float Celcius=0;
float Fahrenheit=0;
int inputPin=3; // jumper Pin 3 to 3.3 volts to write data to SD card, to GRN to not write to SD
int chipSelect = 4; // chipSlect pin for the SD card reader
File myFirstData; //Data object you will write your sensor data to
RTC_PCF8523 rtc;
void setup(void)
{
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
Serial.begin(9600);
sensors.begin();
rtc.begin();
pinMode(inputPin, INPUT);
pinMode(10, OUTPUT); //Must declare 10 an output and reserve it
SD.begin(4); //Initialize the SD card reader
}
void loop(void)
{
myFirstData=SD.open("My_Data.txt", FILE_WRITE);
sensors.requestTemperatures();
Celcius=sensors.getTempCByIndex(0);
Fahrenheit=sensors.toFahrenheit(Celcius);
//Serial.print(" C ");
DateTime now = rtc.now(); //get current date&time from rtc
Serial.print(now.year(), DEC);
Serial.print("/");
Serial.print(now.month(),DEC);
Serial.print("/");
Serial.print(now.day(), DEC);
Serial.print(", ");
Serial.print(now.hour(), DEC);
Serial.print(":");
Serial.print(now.minute(), DEC);
Serial.print(":");
Serial.print(now.second(), DEC);
Serial.print(", ");
Serial.print(Celcius);
Serial.print(", ");
//Serial.print(" F ");
Serial.println(Fahrenheit);
delay(1000);
int dlSwitch = digitalRead(inputPin);
if (dlSwitch == 1)
{
//Serial.print(" log data");
myFirstData.print(now.year(), DEC);
myFirstData.print("/");
myFirstData.print(now.month(),DEC);
myFirstData.print("/");
myFirstData.print(now.day(), DEC);
myFirstData.print(", ");
myFirstData.print(now.hour(), DEC);
myFirstData.print(":");
myFirstData.print(now.minute(), DEC);
myFirstData.print(":");
myFirstData.print(now.second(), DEC);
myFirstData.print(", ");
myFirstData.print(Celcius);
myFirstData.print(",");
myFirstData.println(Fahrenheit);
myFirstData.close();
}
}