Temperature and Light Sensor Data Logger

In this tutorial I make a temperature and light sensor data logger with an Arduino so that I can test different locations for plants or places to sleep outside in the summer that don't get to much sun

Teacher Notes

Teachers! Did you use this instructable in your classroom?
Add a Teacher Note to share how you incorporated it into your lesson.

Step 1: Things You Will Need

1 Arduino board

1 Breadboard

1 Photoresistor

1 Temperature Sensor

1 SD Card

1 SD Card Reader

1 9v Battery

Jumper Wires

Step 2: Assembly

Hook up the SD card reader:

MOSI - pin 11

MISO - pin 12

CLK - pin 13

CS - pin 4

Gnd - Gnd

5v - 5v

3.3v - NOTHING

Other Gnd - Gnd


One end to 5v and the other end to pin2

after the cable to pin 2 there should be a resistor to gnd

Temperature Sensor:

Gnd - Gnd

Vin - 5v (it an also be to 3.3v but you will need to change the code)

Central Pin - Pin3

SD card:

Plug it in (:

Step 3: Code

** MOSI - pin 11 ** MISO - pin 12 ** CLK - pin 13 ** CS - pin 4


#include #include

#define PhotoresistorPin 2 #define TempPin 3 const int chipSelect = 4;

String FileName = "DataLog.txt";

long int LastLog;

void setup() { Serial.begin(9600);

pinMode(TempPin, INPUT); pinMode(PhotoresistorPin, INPUT); pinMode(13, OUTPUT);

Serial.print("Initializing SD card..."); // make sure that the default chip select pin is set to // output, even if you don't use it: pinMode(10, OUTPUT);

// see if the card is present and can be initialized: if (!SD.begin(chipSelect)) { Serial.println("Card failed, or not present");

//turns on the onboard led to signal that something is wrong digitalWrite(13,HIGH); // don't do anything more: return; }

Serial.print("Card initialized.");


void loop() {

//delays 10 minutes while (LastLog + 600000 > millis()) { delay(1000); }

int PhotoResistance = GetPhotoresistence(); float Temparature = GetTemperature(); LogData(PhotoResistance, Temparature); }

void LogData(int Resistance, int Temparature) { //the file you edit File dataFile;

dataFile = SD.open(FileName, FILE_WRITE);

dataFile.print("Minutes Running:"); dataFile.print(millis() / 60000); dataFile.print(" Photoresistor: "); dataFile.print(Resistance); dataFile.print(" Temparature: "); dataFile.print(Temparature); dataFile.println("C"); dataFile.close();

LastLog = millis(); }

float GetTemperature() {

float Temperature = analogRead(TempPin); Temperature = Temperature * 0.48828125; delay(1000); return Temperature; }

int GetPhotoresistence() {

int Photoresistence = analogRead(PhotoresistorPin); return Photoresistence; }

Step 4: Finished!!

Now just plug in the battery and it will start logging data!

Be the First to Share


    • Made with Math Contest

      Made with Math Contest
    • Multi-Discipline Contest

      Multi-Discipline Contest
    • Robotics Contest

      Robotics Contest

    2 Discussions


    5 months ago

    Can you provide links where to obtain parts? Thanks.


    Question 5 months ago on Step 4

    What does the output data look like? Can you post or send some example output? Thanks!