#include <SD.h>
const int analogPin = A0; // Analog pin for potentiometer
const int digitalPin = 2; // Digital pin for button
const int ledPinPot = 3; // Digital pin for potentiometer LED
const int ledPinTMP36 = 4; // Digital pin for TMP36 LED
const int ledPinSoilMoisture = 5; // Digital pin for soil moisture LED
const int ledPinPhotoresistor = 6; // Digital pin for photoresistor LED
const int ledPinTilt = 8; // Digital pin for tilt sensor LED
const int analogPinTMP36 = A1; // Analog pin for TMP36 temperature sensor
const int soilMoisturePin = A2; // Analog pin for soil moisture sensor
const int analogPinPhotoresistor = A3; // Analog pin for photoresistor
const int tiltSensorPin = 7; // Digital pin for tilt sensor
int analogValue;
int digitalValue;
int analogValueTMP36;
int soilMoistureValue;
int photoresistorValue;
int tiltSensorValue;
String outString; // Declare a global string variable to store data
void setup() {
pinMode(analogPin, INPUT);
pinMode(digitalPin, INPUT);
pinMode(analogPinTMP36, INPUT);
pinMode(soilMoisturePin, INPUT);
pinMode(analogPinPhotoresistor, INPUT);
pinMode(tiltSensorPin, INPUT);
pinMode(ledPinPot, OUTPUT);
pinMode(ledPinTMP36, OUTPUT);
pinMode(ledPinSoilMoisture, OUTPUT);
pinMode(ledPinPhotoresistor, OUTPUT);
pinMode(ledPinTilt, OUTPUT);
Serial.begin(9600);
// Initialize SD card
if (!SD.begin(10)) {
Serial.println("SD Card initialization failed!");
return;
}
// Create or open the CSV file
File dataFile = SD.open("data.csv", FILE_WRITE);
if (dataFile) {
dataFile.println("Analog,LED_Analog,Temperature,LED_TMP36,Soil_Moisture,LED_SoilMoisture,Photoresistor,LED_Photoresistor,Tilt_Sensor,LED_Tilt");
dataFile.close();
} else {
Serial.println("Error opening data.csv");
}
}
void loop() {
analogValue = analogRead(analogPin);
analogValueTMP36 = analogRead(analogPinTMP36);
digitalValue = digitalRead(digitalPin);
soilMoistureValue = analogRead(soilMoisturePin);
photoresistorValue = analogRead(analogPinPhotoresistor);
tiltSensorValue = digitalRead(tiltSensorPin);
int brightness = map(analogValue, 0, 1023, 0, 255);
analogWrite(ledPinPot, brightness);
float temperature = analogValueTMP36 * 0.48876;
// LED indication for TMP36
if (temperature > 80) {
digitalWrite(ledPinTMP36, HIGH);
} else {
digitalWrite(ledPinTMP36, LOW);
}
// LED indication for Soil Moisture
if (soilMoistureValue < 400) {
digitalWrite(ledPinSoilMoisture, HIGH);
} else {
digitalWrite(ledPinSoilMoisture, LOW);
}
// LED control based on Photoresistor
int photoresistorThreshold = 500;
if (photoresistorValue > photoresistorThreshold) {
digitalWrite(ledPinPhotoresistor, HIGH);
} else {
digitalWrite(ledPinPhotoresistor, LOW);
}
// LED control based on Tilt Sensor
if (tiltSensorValue == HIGH) {
digitalWrite(ledPinTilt, HIGH);
} else {
digitalWrite(ledPinTilt, LOW);
}
// Construct the CSV string
outString = String(analogValue) + "," +
(digitalRead(ledPinPot) == HIGH ? "ON" : "OFF") + "," +
String(temperature) + "," +
(digitalRead(ledPinTMP36) == HIGH ? "ON" : "OFF") + "," +
String(soilMoistureValue) + "," +
(digitalRead(ledPinSoilMoisture) == HIGH ? "ON" : "OFF") + "," +
String(photoresistorValue) + "," +
(digitalRead(ledPinPhotoresistor) == HIGH ? "ON" : "OFF") + "," +
String(tiltSensorValue) + "," +
(digitalRead(ledPinTilt) == HIGH ? "ON" : "OFF");
// Print the data to the Serial monitor
Serial.println(outString);
// Write the data to a CSV file
writeToCSV(outString);
delay(1000);
}
void writeToCSV(String data) {
// Open the file in append mode
File dataFile = SD.open("data.csv", FILE_WRITE);
// If the file is available, write to it
if (dataFile) {
dataFile.println(data);
dataFile.close();
} else {
Serial.println("Error writing to data.csv");
}
}