TolpuddleSartre:
It means the code that you didn't post isn't going to work, because you're trying to use one timer for two things.
i get this error as soon as i try to import the IRremote library. im not sure what to do at this point. here is the code
#define Pump_Timer(x) (uint32_t)(x)*60*1 // Multiplies Ms by 60 SO I COULD SET TIME AS FRACTIONS OF MINUTES
#define PhotoSensor_Delay 2000 ////Stablize Reading
#include <DHT.h>
#include <OneWire.h>
#include <EEPROM.h>
#include <LiquidCrystal_I2C.h>
#include <IRremote.h>
#define dht1 10 //TEMP SENSOR ON PIN 12
#define DHTTYPE DHT22
#define PRESSED LOW
#define NOT_PRESSED HIGH
int SkipStartupDelay = 0; //0=NORMAL STARTUP WITH DELAY, 6=TIMERS DISABLED, 9=TIMERS RE-ENABLED, 2=END OF STARTUPDELAY, 1=START TIMERS,
int Pump1Pin = 4; //SOCKET1
int Pump2Pin = 5; //SOCKET2
int Pump3Pin = 6; //SOCKET3
int RED_PIN = 30; //LED
int GREEN_PIN = 32; //LED
int BLUE_PIN = 34; //LED
int LIGHTPIN = 10;
int screenrelay = 24;
int trig = 12; //Water Level Sensor
int echo = 11;
int pHsensor = A2; //PH SENSOR IS ANALOG
int RECV_PIN = 31;
int PSTATE = 1;
int LightStatus = 0;
int pHvalue = 0; //PH VALUE berfor conversion to float
int pumponstate = 1; //PUMP ON/OFF LED INDICATOR
int pump1state = 1;
int pump1counter = 0;
int lastpump1state = 1;
int pump2state = 1;
int pump2counter = 0;
int lastpump2state = 1;
int pump3state = 1;
int pump3counter = 0;
int lastpump3state = 1;
int NoSensor = 0;
int calibratemode = 0;
int screenmode = 0;
int ms = 0;
int MenuState = 0;
OneWire ds(53); // on pin 2 (a 4.7K resistor is necessary)
LiquidCrystal_I2C lcd(0x27, 20, 21);
DHT dht(dht1, DHTTYPE);
const byte speakerPin = 9;
const int startupDuration = 100;
const int periodDuration = 900;
unsigned long last = 0;
unsigned long IRmillis = 250;
unsigned long lastPeriodStart;
unsigned long t;
unsigned long h;
unsigned long hp;
unsigned long calibratewait = 0;
unsigned long calibrateontime = 45000;
unsigned long watertempwait = 0;
unsigned long watertempdelay = 1000;
unsigned long DelayMillis = 0; //Startup Delay Lcd Refresh Variable
unsigned long LcdDelay = 10000; //NOT SURE WHY I SET THIS TO ANYTHING BUT 0
unsigned long LcdPause = 1000; //LCD REFRESH RATE
unsigned long LcdPause2 = 1000; //Hold Value to erset lcdpause back to after menu change
unsigned long startcounter = 0;
unsigned long tempdelay = 1000;
unsigned long tempdelaycomp = 0;
unsigned long startcountdelay = 60; //STARTUPDELAY COUNTDOWN SCREEN REFRESH RATE
unsigned long TimerOnMillis = 0;
unsigned long TimerStartMillis = 0;
unsigned long TimerOffMillis = 0;
unsigned long ToalOnTimeLeft = 0;
unsigned long ToalOffTimeLeft = 0;
IRrecv irrecv(RECV_PIN);
decode_results results;
struct __attribute__ ((packed)) _paramS {
} timerParams;
const uint32_t keyword = 0xDEADBEEF;
const uint16_t keywordAddress = 0x00;
const uint16_t paramAddress = keywordAddress + sizeof(keyword);
typedef struct Buttons {
const byte MenuButton = A5; //NoDelay Button Pin
const int debounce = 10; //STABLEIZE BUTTON READING
unsigned long counter = 0;
bool MenuButtonprevState = NOT_PRESSED;
bool MenuButtoncurrentState;
} Button;
Button Buttons;
class PumpTimer {
using functPtr = void(*)(void);
public:
PumpTimer(int pumpPin, uint32_t runTime, uint32_t pauseTime, functPtr stoppedAction = nullptr) : pin(pumpPin), cycleMillis(runTime), offMillis(pauseTime), callback(stoppedAction) {}
void setTime(uint32_t runTime) {
cycleMillis = runTime;
}
void setTime(uint32_t runTime, uint32_t pauseTime) {
cycleMillis = runTime;
offMillis = pauseTime;
}
uint8_t getPin() {
return pin;
}
void setPauseTime(uint32_t pauseTime) {
offMillis = pauseTime;
}
void init(void) {
pinMode(pin, OUTPUT);
}
void start(uint32_t duration) {
cycleMillis = duration;
start();
}
void start(void) {
startMillis = millis();
state = ACTIVE_RUNNING;
digitalWrite(pin, LOW);
pumponstate = (digitalRead(pin));
digitalWrite(BLUE_PIN, HIGH);
}
void process(void) {
TimerOnMillis = cycleMillis;
TimerOffMillis = offMillis;
switch (state) {
case STOPPED:
break;
case ACTIVE_RUNNING:
if (millis() - startMillis > cycleMillis) {
digitalWrite(pin, HIGH);
state = ACTIVE_PAUSED;
startMillis = millis();
pumponstate = (digitalRead(pin));
digitalWrite(BLUE_PIN, LOW);
digitalWrite(GREEN_PIN, HIGH);
PSTATE = 0;
}
break;
case ACTIVE_PAUSED:
if (millis() - startMillis > offMillis) {
state = STOPPED;
pumponstate = (digitalRead(pin));
digitalWrite(BLUE_PIN, HIGH);
digitalWrite(GREEN_PIN, LOW);
if (callback) {
callback();
}
}
break;
}
}
void stop(void) {
digitalWrite(pin, HIGH);
state = STOPPED;
callback();
}
public:
enum {
STOPPED,
ACTIVE_RUNNING,
ACTIVE_PAUSED,
} state = STOPPED;
uint8_t pin;
uint32_t cycleMillis;
uint32_t offMillis;
uint32_t startMillis;
functPtr callback;
};
///////////////////////////////////////////////////////////////////////////////////////////////////////////
PumpTimer timer[] = { /////
/*Pin number, On Time, Pause Time and pointer to callback function */ /////
{ 4, Pump_Timer(timerParams.table3ontimeDAY), Pump_Timer(timerParams.table1offtimeDAY), []() { //socket 2 pin 4 /////
timer[2].start(); /////
} /////
}, /////
{ 6, Pump_Timer(timerParams.table2ontimeDAY), Pump_Timer(timerParams.table2offtimeDAY), []() { //socket 1 pin 5 /////
timer[0].start(); /////
} /////
}, /////
{ 5, Pump_Timer(timerParams.table3ontimeDAY), Pump_Timer(timerParams.table3offtimeNIGHT), []() { //socket 3 pin 6 /////
timer[1].start(); /////
} /////
}, /////
}; /////
///////////////////////////////////////////////////////////////////////////////////////////////////////////
enum SwitchState {
PHOTOSENSOR_DAY,
PHOTOSENSOR_NIGHT,
SENSNAN,
} savedState = SENSNAN;
const uint8_t PhotoSensor = 8;
sorry it wouldn't let me post it all. but the problem is here somewhere i dont know what to do