/* Blink Turns an LED on for one second, then off for one second, repeatedly. Most Arduinos have an on-board LED you can control. On the UNO, MEGA and ZERO it is attached to digital pin 13, on MKR1000 on pin 6. LED_BUILTIN is set to the correct LED pin independent of which board is used. If you want to know what pin the on-board LED is connected to on your Arduino model, check the Technical Specs of your board at: https://www.arduino.cc/en/Main/Products modified 8 May 2014 by Scott Fitzgerald modified 2 Sep 2016 by Arturo Guadalupi modified 8 Sep 2016 by Colby Newman This example code is in the public domain. http://www.arduino.cc/en/Tutorial/Blink */ // the setup function runs once when you press reset or power the board const int ledPinA = 2; const int ledPinB = 3; const int ledPinC = 7; const int timing = 100; const int buttonPin = 8; int buttonState = 0; int displayMode = 0; void setup() { // initialize digital pin LED_BUILTIN as an output. pinMode(ledPinA, OUTPUT); pinMode(ledPinB, OUTPUT); pinMode(ledPinC, OUTPUT); pinMode(buttonPin, INPUT_PULLUP); } // the loop function runs over and over again forever void loop() { buttonState = digitalRead(buttonPin); if (buttonState == LOW) { if (displayMode == 0) { fade(); } else if (displayMode == 1) { allOn(); } else if (displayMode == 2) { allOff(); } else { } } } void allOn() { digitalWrite(ledPinA, HIGH); digitalWrite(ledPinB, HIGH); digitalWrite(ledPinC, HIGH); delay(500); updateDisplayMode(); } void allOff() { digitalWrite(ledPinA, LOW); digitalWrite(ledPinB, LOW); digitalWrite(ledPinC, LOW); delay(500); updateDisplayMode(); } void fade() { digitalWrite(ledPinA, HIGH); // turn the LED on (HIGH is the voltage level) delay(timing); // wait for a second digitalWrite(ledPinB, HIGH); // turn the LED off by making the voltage LOW delay(timing); // wait for a second digitalWrite(ledPinC, HIGH); // turn the LED on (HIGH is the voltage level) delay(timing); // wait for a second digitalWrite(ledPinA, LOW); // turn the LED off by making the voltage LOW delay(timing); // wait for a second digitalWrite(ledPinB, LOW); // turn the LED on (HIGH is the voltage level) delay(timing); // wait for a second digitalWrite(ledPinC, LOW); // turn the LED off by making the voltage LOW delay(timing); updateDisplayMode(); } void updateDisplayMode() { if (displayMode < 2) { displayMode += 1; } else { displayMode = 0; } }