const int RedLed = 10;
const int GreenLed = 9;
const int BlueLed = 8;
const int RedUp = 12;
const int RedDown = 13;
const int GreenUp = 4;
const int GreenDown = 5;
const int BlueUp = 2;
const int BlueDown = 3;
int redBrightness = 0;
int greenBrightness = 0;
int blueBrightness = 0;
int lastButtonBlueUp = LOW;
int curButtonBlueUp = LOW;
int lastButtonBlueDown = LOW;
int curButtonBlueDown = LOW;
int lastButtonRedUp = LOW;
int curButtonRedUp = LOW;
int lastButtonRedDown = LOW;
int curButtonRedDown = LOW;
int lastButtonGreenUp = LOW;
int curButtonGreenUp = LOW;
int lastButtonGreenDown = LOW;
int curButtonGreenDown = LOW;
int debounce(int last, int buttonNum){
int current = digitalRead(buttonNum);
if(last != current){
delay(5);
current = digitalRead(buttonNum);
}
return current;
}
void setup() {
Serial.begin(9600);
pinMode(BlueLed, OUTPUT);
digitalWrite(BlueLed, HIGH);
pinMode(GreenLed, OUTPUT);
digitalWrite(GreenLed, HIGH);
pinMode(RedLed, OUTPUT);
digitalWrite(RedLed, HIGH);
pinMode(RedUp, INPUT);
pinMode(RedDown, INPUT);
pinMode(GreenUp, INPUT);
pinMode(GreenDown, INPUT);
pinMode(BlueUp, INPUT);
pinMode(BlueDown, INPUT);
}
void loop() {
curButtonBlueUp = debounce(lastButtonBlueUp, BlueUp);
curButtonBlueDown = debounce(lastButtonBlueDown, BlueDown);
curButtonRedUp = debounce(lastButtonRedUp, RedUp);
curButtonRedDown = debounce(lastButtonRedDown, RedDown);
curButtonGreenUp = debounce(lastButtonGreenUp, GreenUp);
curButtonGreenDown = debounce(lastButtonGreenDown, GreenDown);
if(lastButtonBlueUp == HIGH && curButtonBlueUp == LOW){
digitalWrite(RedLed, HIGH);
digitalWrite(GreenLed, HIGH);
//redBrightness = 0; Можно обнулить яркость других цветов
//greenBrightness = 0;
if(blueBrightness<250) {
blueBrightness += 50;
}
analogWrite(BlueLed, blueBrightness);
}
lastButtonBlueUp = curButtonBlueUp;
if(lastButtonBlueDown == HIGH && curButtonBlueDown == LOW){
digitalWrite(RedLed, HIGH);
digitalWrite(GreenLed, HIGH);
//redBrightness = 0;
//greenBrightness = 0;
if(blueBrightness>0) {
blueBrightness -= 50;
}
analogWrite(BlueLed, blueBrightness);
}
lastButtonBlueDown = curButtonBlueDown;
if(lastButtonRedUp == HIGH && curButtonRedUp == LOW){
digitalWrite(BlueLed, HIGH);
digitalWrite(GreenLed, HIGH);
//blueBrightness = 0;
//greenBrightness = 0;
if(redBrightness<250) {
redBrightness += 50;
}
analogWrite(RedLed, redBrightness);
}
lastButtonRedUp = curButtonRedUp;
if(lastButtonRedDown == HIGH && curButtonRedDown == LOW){
digitalWrite(BlueLed, HIGH);
digitalWrite(GreenLed, HIGH);
//blueBrightness = 0;
//greenBrightness = 0;
if(redBrightness<250) {
redBrightness -= 50;
}
analogWrite(RedLed, redBrightness);
}
lastButtonRedDown = curButtonRedDown;
if(lastButtonGreenUp == HIGH && curButtonGreenUp == LOW){
digitalWrite(BlueLed, HIGH);
digitalWrite(RedLed, HIGH);
//blueBrightness = 0;
//redBrightness = 0;
if(greenBrightness<250) {
greenBrightness += 50;
}
analogWrite(GreenLed, greenBrightness);
}
lastButtonGreenUp = curButtonGreenUp;
if(lastButtonGreenDown == HIGH && curButtonGreenDown == LOW){
digitalWrite(BlueLed, HIGH);
digitalWrite(RedLed, HIGH);
//blueBrightness = 0;
//redBrightness = 0;
if(greenBrightness<250) {
greenBrightness -= 50;
}
analogWrite(GreenLed, greenBrightness);
}
lastButtonGreenDown = curButtonGreenDown;
Serial.println(redBrightness);
Serial.println(blueBrightness);
Serial.println(greenBrightness);
}