const int buttonPin1 = 7;
const int buttonPin2 = 8;
const int buttonPin3 = 9;
const int ledPin1 = 4; //led in 1 but can't use serial if in that pin
const int ledPin2 = 5; //led in 2 but can't use serial if in that pin
const int ledPin3 = 2;
const int ledPin4 = 3;
const int potPin = A1;
unsigned long minValue = 1000UL; // 1 seconds in milliseconds (scaled to 0V)
unsigned long maxValue = 10000UL; // 10 seconds in milliseconds (scaled to 5V)
int lastButtonState1 = 0;
int lastButtonState2 = 0;
int lastButtonState3 = 0;
int ledTrigger2 = 0;
int ledTrigger3 = 0;
int ledTrigger4 = 0;
int ledState1;
int ledState2;
int ledState3;
int ledState4;
int lastLedTrigger2 = 0;
int lastLedTrigger3 = 0;
int lastLedTrigger4 = 0;
unsigned long startTime1;
unsigned long startTime2;
unsigned long startTime3;
unsigned long startTime4;
void setup() {
pinMode(buttonPin1, INPUT);
pinMode(ledPin1, OUTPUT);
pinMode(ledPin2, OUTPUT);
pinMode(ledPin3, OUTPUT);
pinMode(ledPin4, OUTPUT);
Serial.begin(9600);
}
void loop()
{
int potValue = analogRead(potPin); // Read potentiometer value (0 to 1023)
unsigned long mappedValue = map(potValue, 0, 1023, minValue, maxValue);
Serial.println(mappedValue);
delay(100);
int buttonState1 = digitalRead(buttonPin1);
if (buttonState1 == HIGH)
{
if (lastButtonState1 == 0) // lastButtonState starts as zero so this statement is true
{
ledState1 = 1; //turn ledState from 0 to 1
startTime1 = millis(); //start timer
}
}
lastButtonState1 = buttonState1; //lastButtonState is zero but buttonState is high so lastButtonState is now 1
if (ledState1) //ledState is 1 now so this statement is true
{
if (millis() - startTime1 <= mappedValue)
//Until the startTime reaches above the interval time the loop will choose this if statement rather than the else which turns off // the LED
{
digitalWrite(ledPin1, HIGH); //turns on the LED
}
else
{
digitalWrite(ledPin1, LOW); //turns off LED and resets the ledState
ledState1 = 0;
ledTrigger2 = 1;
}
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// LED 2 Sequence
if (ledTrigger2 == 1)
{
if (lastLedTrigger2 == 0)
{
ledState2 = 1;
startTime2 = millis();
}
lastLedTrigger2 = ledTrigger2;
if (millis() - startTime2 <= mappedValue)
{
digitalWrite(ledPin2, HIGH);
}
else
{
digitalWrite(ledPin2, LOW);
ledState2 = 0;
ledTrigger2 = 0;
lastLedTrigger2 = 0;
ledTrigger3 = 1;
}
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// LED 3 sequence
if (ledTrigger3 == 1)
{
if (lastLedTrigger3 == 0)
{
ledState3 = 1;
startTime3 = millis();
}
lastLedTrigger3 = ledTrigger3;
if (millis() - startTime3 <= mappedValue)
{
digitalWrite(ledPin3, HIGH);
}
else
{
digitalWrite(ledPin3, LOW);
ledState3 = 0 ;
ledTrigger3 = 0;
lastLedTrigger3 = 0;
ledTrigger4 = 1;
}
}
///////////////////////////////////////////////////////////////////////////////////////////////
// LED 4 sequence
if (ledTrigger4 == 1)
{
if (lastLedTrigger4 == 0)
{
ledState4 = 1;
startTime4 = millis();
}
lastLedTrigger4 = ledTrigger4;
if (millis() - startTime4 <= mappedValue)
{
digitalWrite(ledPin4, HIGH);
}
else
{
digitalWrite(ledPin4, LOW);
ledState4 = 0;
lastLedTrigger4 = 0;
ledTrigger4 = 0;
}
}
}