honestly I'm a little lost on the { } thing. Im pretty new to all of this. I'm having a hard time trying to find a good explanation to the braces.
But you were right that was pretty bad. I did this and seems to be working so far I hope
Thanks
//Change NOTES
//Added senond schedual
#include <LiquidCrystal.h>
LiquidCrystal lcd(8, 13, 9, 4, 5, 6, 7);
// degree fahrenheit
byte newChar[8]= {
B01100,
B10010,
B10010,
B01100,
B00000,
B00000,
B00000,
B00000
};
#include <SD.h>
#include <Wire.h>
#include "RTClib.h"
#include "DHT.h"
#define ECHO_TO_SERIAL 1 // echo data to serial port
#define PHOTOCELLPIN A8 // analog 0
#define chipSelect 53 // for the data logging shield, we use digital pin 10 for the SD cs line
#define cardFailPin 37
#define DHTTYPE DHT11 // DHT 11
#define DHTPIN_outside 40
#define DHTPIN_attic 36
#define DHTPIN 44 // The DHT output is connected to digital pin 7.
DHT dht(DHTPIN, DHTTYPE); //define the DHT object
DHT dht_attic(DHTPIN_attic, DHTTYPE);
DHT dht_outside(DHTPIN_outside, DHTTYPE);
//------------------------------
const int Relay = 47; // the number of the LED pin
int swState =0;
// Variables will change:
int relayState = HIGH; // ledState used to set the LED
//---------------------------------------------Relay without delay
long previousMillis = 0; // will store last time LED was updated
// the follow variables is a long because the time, measured in miliseconds,
// will quickly become a bigger number than can be stored in an int.
long intervala = 210000;
long intervalb = 210000;
//------------------------------
RTC_DS1307 RTC; // define the Real Time Clock object
File fileData; // the logging file on the SD card
unsigned long ulintMillis = 0; // milliseconds since start
int TempSens = 95;
int intPhotocellreading = 0;
int light_sensitivity = 850;
int humidity_sensitivity = 45;
float atticHumidity = 0;
float atticTemp = 0;
float outsideHumidity = 0;
float outsideTemp = 0;
float fHumidity = 0;
float fTemp = 0;
const unsigned long ulintLoginterval = 10000; //------------------------------SD LOG interval
void error(char *str)
{
Serial.print("error: ");
Serial.println(str);
}
void setup() //--------------------------------------------------------Setup-----------------------------------------
{
//-------------------------------------------------------------------Pins-----------------------------------------
pinMode(Relay, OUTPUT); //Relay
pinMode(DHTPIN, INPUT);
pinMode(PHOTOCELLPIN, INPUT);
pinMode(chipSelect, OUTPUT);
pinMode(cardFailPin,OUTPUT);
Serial.begin(9600);
Serial.println("Millis, Date , Time , Light , Roof Humidity , Roof Temp, Humidity Attic, Attic Temp,Outside Humidity,Outside Temp");
//-----------------------------------------------------------------------LCD----------------------------------------
lcd.createChar(1, newChar);
lcd.begin(16,2);
lcd.clear();
lcd.setCursor(6,0);
lcd.print("TEMP");
lcd.setCursor(4,1);
lcd.print("HUMIDITY");
if (!SD.begin(chipSelect)) {
error("Card failed, or not present, or datalog.csv file not present");
}
//Serial.println("card initialized.");
fileData = SD.open("datalog.csv", FILE_WRITE);
// connect to RTC
Wire.begin();
if (!RTC.begin()) {
fileData.println("RTC failed");
#if ECHO_TO_SERIAL
error ("RTC failed");
#endif //ECHO_TO_SERIAL
}
dht.begin(); // Start reading from the temperature and humidity sensor
if (fileData){
fileData.println("Millis , Date , Time, Light, Roof Humidity ,Roof Temp, Attic Humidity,Attic Temp,Outside Humidity,Outside Temp");
}
else{
error("Could not write to file.");
if (error)
digitalWrite(cardFailPin,HIGH); }
}
void loop(void)//-----------------------------------------------------------------------------LOOP-----------------------------------------
{
DateTime now;
// delay for the amount of time we want between readings
delay((ulintLoginterval -1) - (millis() % ulintLoginterval));
// log milliseconds since starting
ulintMillis = millis();
fileData.print(ulintMillis); // milliseconds since start
fileData.print(", ");
// if (error)
// digitalWrite(cardFailPin,HIGH);
#if ECHO_TO_SERIAL
Serial.print(ulintMillis); // milliseconds since start
Serial.print(", ");
#endif
// fetch the time
now = RTC.now();
// log time
fileData.print(now.year(), DEC);
fileData.print("/");
fileData.print(now.month(), DEC);
fileData.print("/");
fileData.print(now.day(), DEC);
fileData.print(",");
fileData.print(now.hour(), DEC);
fileData.print(":");
fileData.print(now.minute(), DEC);
fileData.print(":");
fileData.print(now.second(), DEC);
#if ECHO_TO_SERIAL
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);
#endif //ECHO_TO_SERIAL
intPhotocellreading = analogRead(PHOTOCELLPIN);
// Reading temperature or humidity takes about 250 milliseconds!
// Sensor readings may also be up to 2 seconds 'old' (its a very slow sensor)
fHumidity = dht.readHumidity();
fTemp = dht.readTemperature(true);
atticHumidity = dht_attic.readHumidity();
atticTemp = dht_attic.readTemperature(true);
outsideHumidity = dht_outside.readHumidity();
outsideTemp = dht_outside.readTemperature(true);
// check if returns are valid, if they are NaN (not a number) then something went wrong!
if (isnan(fHumidity) || isnan(fTemp)) {
Serial.println("Failed to read from DHT");
}
fileData.print(", ");
fileData.print(intPhotocellreading);
#if ECHO_TO_SERIAL
Serial.print(", ");
Serial.print(intPhotocellreading); //
#endif //ECHO_TO_SERIAL
fileData.print(", ");
fileData.print(fHumidity);
#if ECHO_TO_SERIAL
Serial.print(", ");
Serial.print(fHumidity);
#endif //ECHO_TO_SERIAL
fileData.print(", ");
fileData.print(fTemp);
#if ECHO_TO_SERIAL
Serial.print(", ");
Serial.print(fTemp);
#endif //ECHO_TO_SERIAL
//------------------------------------------temp Attic
fileData.print(", ");
fileData.print(atticHumidity);
#if ECHO_TO_SERIAL
Serial.print(", ");
Serial.print(atticHumidity);
#endif //ECHO_TO_SERIAL
fileData.print(", ");
fileData.print(atticTemp);
#if ECHO_TO_SERIAL
Serial.print(", ");
Serial.print(atticTemp);
#endif //ECHO_TO_SERIAL
//---------------------------------------temp outside
fileData.print(", ");
fileData.print(outsideHumidity);
#if ECHO_TO_SERIAL
Serial.print(", ");
Serial.print(outsideHumidity);
#endif //ECHO_TO_SERIAL
fileData.print(", ");
fileData.print(outsideTemp);
#if ECHO_TO_SERIAL
Serial.print(", ");
Serial.print(outsideTemp);
#endif //ECHO_TO_SERIAL
//-----------------------------------------
lcd.clear();
lcd.setCursor(0,0);
lcd.print("R ");
lcd.print(fTemp);
lcd.write(1);
lcd.setCursor(0,1);
lcd.print("R ");
lcd.print(fHumidity);
lcd.print("%");
lcd.setCursor(9,0);
lcd.print ("O ");
lcd.print(outsideTemp);
lcd.setCursor(9,1);
lcd.print("A ");
lcd.print(atticTemp);
//inthumidity = fHumidity;=============================>
if ((intPhotocellreading > light_sensitivity)&&(fHumidity < humidity_sensitivity)&&(fTemp>TempSens))
{{
digitalWrite(Relay, relayState);
}
unsigned long currentMillis = millis();
if(currentMillis - previousMillis > intervala)
{
previousMillis = currentMillis;
intervala = 1080000 - intervala;
relayState = digitalRead(Relay);
if (relayState == LOW)
relayState = HIGH;
else
relayState = LOW;
if(swState == LOW){
digitalWrite(Relay, LOW);
}
}
if (digitalRead(Relay) == HIGH)
{
fileData.print(", ");
fileData.print("Sprinkler #2 ON");
}
}
if ((intPhotocellreading > light_sensitivity)&&(fHumidity < humidity_sensitivity))
{
digitalWrite(Relay, relayState);
}
unsigned long currentMillis = millis();
if(currentMillis - previousMillis > intervalb)
{
previousMillis = currentMillis;
intervalb = 2160000 - intervalb;
relayState = digitalRead(Relay);
if (relayState == LOW)
relayState = HIGH;
else
relayState = LOW;
if(swState == LOW)
{
digitalWrite(Relay, LOW);
}
}
if (digitalRead(Relay)== HIGH)
{
fileData.print(", ");
fileData.print("Sprinkler #1 ON");
Serial.print(", ");
Serial.print("Sprinkler #1 ON");
}
fileData.println();
#if ECHO_TO_SERIAL
Serial.println();
#endif // ECHO_TO_SERIAL
fileData.flush();
}