int ledState = LOW;
unsigned long ledStarted = 0;
const long interval = 4000;
int ledArray[3] {3, 5, 6};
int buttonPin = 2;
void setup() {
pinMode(ledArray[0], OUTPUT);
pinMode(ledArray[1], OUTPUT);
pinMode(ledArray[2], OUTPUT);
pinMode (buttonPin, INPUT);
pinMode (LED_BUILTIN, OUTPUT); // To see if off delay works. Onboard led
Serial.begin (9600);
}
void loop() {
int button = digitalRead(buttonPin);
unsigned long currentMillis = millis();
if (button == HIGH) {
ledState = HIGH;
ledStarted = currentMillis;
digitalWrite(LED_BUILTIN, ledState);
// ledStarted = currentMillis;
}
if (currentMillis - ledStarted >= interval && button == LOW) {
ledState = LOW;
digitalWrite(LED_BUILTIN, ledState);
analogWrite (ledArray[0], 0);
analogWrite (ledArray[1], 0);
analogWrite (ledArray[2], 0);
}
if (ledState == HIGH) {
//0 to 255
static unsigned long blinkMillis = ledStarted;
unsigned long elapsedMillis = currentMillis - blinkMillis;
//Serial.println(elapsedMillis);
//for (int i = 0; i <= 255; i++) {
if (elapsedMillis <= 255) {
int i = elapsedMillis;
analogWrite (ledArray[0], i);
//delay (1);
}
//256 to 511
//for (int i = 0; i <= 255; i++) {
if (elapsedMillis >= 256 && elapsedMillis <= 511) {
int i = elapsedMillis - 256;
analogWrite (ledArray[1], i);
//delay (1);
}
//512 to 767
//for (int i = 0; i <= 255; i++) {
if (elapsedMillis >= 512 && elapsedMillis <= 767) {
int i = elapsedMillis - 512;
analogWrite (ledArray[2], i);
//delay (1);
}
//768 to 1968
//for (int i = 0; i <= 2; i++) {
if (elapsedMillis >= 768 && elapsedMillis <= 1968) {
analogWrite (ledArray[0], 0);
analogWrite (ledArray[1], 0);
analogWrite (ledArray[2], 0);
//delay (400);
}
if (elapsedMillis > 1968) {
blinkMillis = millis();
}
}
}