I am trying to use a Uno rev3 with a adafruit RTC to control a day night cycle for some 5v led strips for an automated indoor garden project and I cannot seem to make them work. I've tried making a new code with the same pin outputs just to make sure that the LEDs will work with my arduino and they do just fine. The RTC also seems to be working fine and shows up with the serial monitor just fine. Any help would be greatly appreciated. (ignore the code about the pump that's for the watering system which works fine).
#include <Wire.h>
#include <DS1307RTC.h>
// Date and time functions using a DS3231 RTC connected via I2C and Wire lib
#include "RTClib.h"
RTC_DS3231 rtc;
char daysOfTheWeek[7][12] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};
//LED values
//Pump values
int pump = 4;
int sensorPin = A0;
int sensorValue;
int limit = 850;
void setup () {
//pump on or off
{
Serial.begin(9600);
pinMode(pump, OUTPUT);
pinMode(sensorPin, INPUT);
digitalWrite(pump, LOW);
}
Serial.begin(9600);
#ifndef ESP8266
while (!Serial); // wait for serial port to connect. Needed for native USB
#endif
if (! rtc.begin()) {
Serial.println("Couldn't find RTC");
Serial.flush();
abort();
}
if (rtc.lostPower()) {
Serial.println("RTC lost power, let's set the time!");
// When time needs to be set on a new device, or after a power loss, the
// following line sets the RTC to the date & time this sketch was compiled
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
// This line sets the RTC with an explicit date & time, for example to set
// January 21, 2014 at 3am you would call:
// rtc.adjust(DateTime(2014, 1, 21, 3, 0, 0));
}
// When time needs to be re-set on a previously configured device, the
// following line sets the RTC to the date & time this sketch was compiled
// rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
// This line sets the RTC with an explicit date & time, for example to set
// January 21, 2014 at 3am you would call:
// rtc.adjust(DateTime(2014, 1, 21, 3, 0, 0));
}
void loop () //clock code
{
pinMode(3, OUTPUT);
int ledpin = 3;
DateTime now = rtc.now();
Serial.print(now.year(), DEC);
Serial.print('/');
Serial.print(now.month(), DEC);
Serial.print('/');
Serial.print(now.day(), DEC);
Serial.print(" (");
Serial.print(daysOfTheWeek[now.dayOfTheWeek()]);
Serial.print(") ");
Serial.print(now.hour(), DEC);
Serial.print(':');
Serial.print(now.minute(), DEC);
Serial.print(':');
Serial.print(now.second(), DEC);
Serial.println();
Serial.print(" since midnight 1/1/1970 = ");
Serial.print(now.unixtime());
Serial.print("s = ");
Serial.print(now.unixtime() / 86400L);
Serial.println("d");
// calculate a date which is 7 days, 12 hours, 30 minutes, 6 seconds into the future
DateTime future (now + TimeSpan(7,12,30,6));
Serial.print(" now + 7d + 12h + 30m + 6s: ");
Serial.print(future.year(), DEC);
Serial.print('/');
Serial.print(future.month(), DEC);
Serial.print('/');
Serial.print(future.day(), DEC);
Serial.print(' ');
Serial.print(future.hour(), DEC);
Serial.print(':');
Serial.print(future.minute(), DEC);
Serial.print(':');
Serial.print(future.second(), DEC);
Serial.println();
Serial.print("Temperature: ");
Serial.print(rtc.getTemperature());
Serial.println(" C");
Serial.println();
if(hour() == 22) digitalWrite(ledpin, HIGH);
if(hour() == 23) digitalWrite(ledpin, LOW);
delay(3000);
//pump code
{sensorValue = analogRead(sensorPin);
Serial.println("Analog Value: ");
Serial.println(sensorValue);
if (sensorValue<limit) {
digitalWrite(pump, HIGH);
}
else {
digitalWrite(pump, LOW);
}
delay(1000);
}
}