@anon26912280
Implementation using millis():
int LED = 2;
int Button = 4;
int timeOn = A3;
int timeOff = A4;
int B;
boolean state = false;
void setup()
{
Serial.begin(9600);
pinMode(LED, OUTPUT);
pinMode(Button, INPUT_PULLUP);
}
void loop()
{
B = digitalRead(Button);
int onVal = analogRead(timeOn);
onVal = map(onVal, 0, 1023, 50, 500);
int offVal = analogRead(timeOff);
offVal = map(offVal, 0, 1023, 50, 500);
if (B == LOW)
{
state = ! state; //Button closed change state //true
delay(200);
}
if (state == true)
{
digitalWrite(LED, HIGH);
timeDelay(onVal);
digitalWrite(LED, LOW);
timeDelay(offVal);
}
}
void timeDelay(unsigned long t)//500 000
{
unsigned long prMillis = millis();
while(millis() - prMillis <= t)
{
if(digitalRead(Button) == LOW)
{
digitalWrite(LED, LOW);
state = !state;
}
}
}