alright back again, implementing multiple loops.
still having trouble with the flow. cant wrap my brain around it. still hitting relay pin p before going back to relay pin n.
tried to also build a timer for the relay pins so im not using delay but cant get that to work either.
//constants won't change. They're used here to set pin numbers:
const int SW = 2; // the number of the pushbutton pin
const int RELAYP = 4; //+ RELAY COIL
const int RELAYN = 7; //- RELAY COIL
const int LED = 13; // the number of the LED pin
const unsigned long Debounce = 20;
const unsigned long relaytime = 1000; //for testing purposes, this is a second for serial monitor results.
const unsigned long LongPress = 500;
//variables that will change
unsigned long currentTime = millis();
unsigned long currentRelay = millis();
unsigned long ButtonStateChangeTime = 0; // Debounce timer
unsigned long relaystate = 0; // relay timer
bool ButtonWasPressed = false;
bool effect;
void setup() {
//SET PINS:
pinMode(SW, INPUT);
pinMode(LED, OUTPUT);
pinMode(RELAYP, OUTPUT);
pinMode(RELAYN, OUTPUT);
//Set SW pin to HIGH to monitor state.
digitalWrite(SW, HIGH);
//RESET BACK TO EFFECT BYPASS AFTER START UP:
Serial.begin(9600);
Serial.println("Start");//DEBUGGING
digitalWrite(RELAYP, LOW);
digitalWrite(RELAYN, HIGH);
delay(5);
digitalWrite(RELAYN, LOW);
}//End setup.
void relayp() {
digitalWrite(RELAYP, HIGH);
//Serial.println("RELAYPon");
delay(5);
//if (currentRelay - relaystate > relaytime) {
digitalWrite(RELAYP, LOW);
//Serial.println("RELAYPoff");
//}
//currentRelay = relaystate;
}//END
void relayn() {
digitalWrite(RELAYN, HIGH);
//Serial.println("RELAYNon");
delay(5);
//if (currentRelay - relaystate > relaytime) {
digitalWrite(RELAYN, LOW);
//Serial.println("RELAYNoff");
//}
currentRelay = relaystate;
}//END
void buttonstate() {
bool buttonIsPressed = digitalRead(SW) == LOW; // Active LOW
// Check for button state change debounce.
if (buttonIsPressed != ButtonWasPressed &&
currentTime - ButtonStateChangeTime > Debounce) {
// Button state has changed.
ButtonWasPressed = buttonIsPressed;
//Serial.println("debounce");
if (ButtonWasPressed) {
Serial.println("press");
effectON();
} else {
if (currentTime - ButtonStateChangeTime > LongPress) {
Serial.println("release");
effectOFF();
}
if (currentTime - ButtonStateChangeTime < LongPress && effect == false) {
effectON();
effect = true;
} else {
if (effect == true);
effectOFF();
}
}
ButtonStateChangeTime = currentTime;
}
}//end debounce
void effectON() {
digitalWrite(LED, HIGH);
relayp();
Serial.println("on");
}//end
void effectOFF() {
digitalWrite(LED, LOW);
relayn();
Serial.println("off");
}//end
void loop() {
currentTime = millis();
buttonstate();
}//end