Last active
January 11, 2016 20:30
-
-
Save iH8c0ff33/bce4da3c035ac44349ba to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Pin config | |
const uint8_t button1Pin = 3; // Button 1 | |
const uint8_t button2Pin = 4; // Button 2 | |
const uint8_t led1Pin = 5; // LED 1 | |
const uint8_t led2Pin = 6; // LED 2 | |
// Button states | |
bool button1State = LOW; | |
bool button2State = LOW; | |
bool button1LastState = LOW; | |
bool button2LastState = LOW; | |
// Blink bools | |
bool blink1Enabled = false; | |
bool blink2Enabled = false; | |
// Blink1 timers | |
bool led1Phase = HIGH; | |
unsigned long blink1OnPhaseEndTime = 0; | |
unsigned long blink1OffPhaseEndTime = 0; | |
// Blink2 timers | |
bool led2Phase = HIGH; | |
unsigned long blink2OnPhaseEndTime = 0; | |
unsigned long blink2OffPhaseEndTime = 0; | |
// Arduino Setup | |
void setup() { | |
pinMode(button1Pin, INPUT); | |
pinMode(button2Pin, INPUT); | |
pinMode(led1Pin, OUTPUT); | |
pinMode(led2Pin, OUTPUT); | |
} | |
// Arduino Loop | |
void loop() { | |
checkButtons(); | |
if (blink1Enabled) { | |
blink1(); | |
} | |
if (blink2Enabled) { | |
blink2(); | |
} | |
} | |
// Check button states | |
void checkButtons() { | |
button1State = digitalRead(button1Pin); | |
button2State = digitalRead(button2Pin); | |
if (button1State != button1LastState) { | |
button1LastState = button1State; | |
if (button1State == HIGH) { | |
setupLeds(); | |
blink1Enabled = true; | |
} else { | |
blink1Enabled = false; | |
} | |
} | |
if (button2State != button2LastState) { | |
button2LastState = button2State; | |
if (button2State == HIGH) { | |
setupLeds(); | |
blink2Enabled = true; | |
} else { | |
blink2Enabled = false; | |
} | |
} | |
} | |
// Blink LED 1 | |
void blink1() { | |
if (led1Phase == HIGH) { // ON Phase | |
if (blink1OnPhaseEndTime == 0) { | |
blink1OnPhaseEndTime = millis() + 1000; | |
} | |
if (millis() >= blink1OnPhaseEndTime) { | |
blink1OnPhaseEndTime = 0; | |
led1Phase = LOW; | |
digitalWrite(led1Pin, LOW); | |
} | |
} else { // OFF Phase | |
if (blink1OffPhaseEndTime == 0) { | |
blink1OffPhaseEndTime = millis() + 1000; | |
} | |
if(millis() >= blink1OffPhaseEndTime) { | |
blink1OffPhaseEndTime = 0; | |
led1Phase = HIGH; | |
digitalWrite(led1Pin, HIGH); | |
} | |
} | |
} | |
// Blink LED 2 | |
void blink2() { | |
if (led2Phase == HIGH) { // ON Phase | |
if (blink2OnPhaseEndTime == 0) { | |
blink2OnPhaseEndTime = millis() + 1000; | |
} | |
if (millis() >= blink2OnPhaseEndTime) { | |
blink2OnPhaseEndTime = 0; | |
led2Phase = LOW; | |
digitalWrite(led2Pin, LOW); | |
} | |
} else { // OFF Phase | |
if (blink2OffPhaseEndTime == 0) { | |
blink2OffPhaseEndTime = millis() + 1000; | |
} | |
if(millis() >= blink2OffPhaseEndTime) { | |
blink2OffPhaseEndTime = 0; | |
led2Phase = HIGH; | |
digitalWrite(led2Pin, HIGH); | |
} | |
} | |
} | |
// Setup | |
void setupLeds() { | |
digitalWrite(led1Pin, HIGH); | |
digitalWrite(led2Pin, HIGH); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment