const int LED_RED = 4;
const int LED_GREEN = 3;
const int LED_BLUE = 2;
const int BUTTON_RED_UP = 5;
const int BUTTON_RED_DOWN = 6;
const int BUTTON_GREEN_UP = 7;
const int BUTTON_GREEN_DOWN = 8;
const int BUTTON_BLUE_UP = 9;
const int BUTTON_BLUE_DOWN = 10;
int curButtonRedUp = LOW;
int lastButtonRedUp = LOW;
int curButtonRedDown = LOW;
int lastButtonRedDown = LOW;
int curButtonGreenUp = LOW;
int lastButtonGreenUp = LOW;
int curButtonGreenDown = LOW;
int lastButtonGreenDown = LOW;
int curButtonBlueUp = LOW;
int lastButtonBlueUp = LOW;
int curButtonBlueDown = LOW;
int lastButtonBlueDown = LOW;
int buttonRedBrightState = 0;
int buttonGreenBrightState = 0;
int buttonBlueBrightState = 0;
int debounce(const int last, const int button)
{
int current = digitalRead(button);
if (current != last)
{
delay(5);
current = digitalRead(button);
}
return current;
}
void changeLedBrightStateUp(int& lastButton, int& curButton, int& buttonBrightState, int BUTTON, int LED)
{
curButton = debounce(lastButton, BUTTON);
if (curButton == HIGH && lastButton == LOW)
{
buttonBrightState += 50;
if (buttonBrightState > 250)
{
buttonBrightState = 250;
}
analogWrite(LED, buttonBrightState);
}
lastButton = curButton;
}
void changeLedBrightStateDown(int& lastButton, int& curButton, int& buttonBrightState, int BUTTON, int LED)
{
curButton = debounce(lastButton, BUTTON);
if (curButton == HIGH && lastButton == LOW)
{
buttonBrightState -= 50;
if (buttonBrightState < 0)
{
buttonBrightState = 0;
}
analogWrite(LED, buttonBrightState);
}
lastButton = curButton;
}
void setup() {
// put your setup code here, to run once:
pinMode(LED_RED, OUTPUT);
pinMode(LED_GREEN, OUTPUT);
pinMode(LED_BLUE, OUTPUT);
digitalWrite(LED_RED, LOW);
digitalWrite(LED_GREEN, LOW);
digitalWrite(LED_BLUE, LOW);
pinMode(BUTTON_RED_UP, INPUT);
pinMode(BUTTON_RED_DOWN, INPUT);
digitalWrite(BUTTON_RED_UP, LOW);
digitalWrite(BUTTON_RED_DOWN, LOW);
pinMode(BUTTON_GREEN_UP, INPUT);
pinMode(BUTTON_GREEN_DOWN, INPUT);
digitalWrite(BUTTON_GREEN_UP, LOW);
digitalWrite(BUTTON_GREEN_DOWN, LOW);
pinMode(BUTTON_BLUE_UP, INPUT);
pinMode(BUTTON_BLUE_DOWN, INPUT);
digitalWrite(BUTTON_BLUE_UP, LOW);
digitalWrite(BUTTON_BLUE_DOWN, LOW);
}
void loop() {
// put your main code here, to run repeatedly:
changeLedBrightStateUp(lastButtonRedUp, curButtonRedUp, buttonRedBrightState, BUTTON_RED_UP, LED_RED);
changeLedBrightStateDown(lastButtonRedDown, curButtonRedDown, buttonRedBrightState, BUTTON_RED_DOWN, LED_RED);
changeLedBrightStateUp(lastButtonGreenUp, curButtonGreenUp, buttonGreenBrightState, BUTTON_GREEN_UP, LED_GREEN);
changeLedBrightStateDown(lastButtonGreenDown, curButtonGreenDown, buttonGreenBrightState, BUTTON_GREEN_DOWN, LED_GREEN);
changeLedBrightStateUp(lastButtonBlueUp, curButtonBlueUp, buttonBlueBrightState, BUTTON_BLUE_UP, LED_BLUE);
changeLedBrightStateDown(lastButtonBlueDown, curButtonBlueDown, buttonBlueBrightState, BUTTON_BLUE_DOWN, LED_BLUE);
}