Скетч
#define RED_LED_PIN 9
#define BLUE_LED_PIN 10
#define GREEN_LED_PIN 11
#define RED_BUTTON_PIN 4
#define BLUE_BUTTON_PIN 3
#define GREEN_BUTTON_PIN 2
int red_brightness = 0;
int blue_brightness = 0;
int green_brightness = 0;
boolean redUp = true;
boolean blueUp = true;
boolean greenUp = true;
void setup()
{
pinMode(RED_LED_PIN, OUTPUT);
pinMode(BLUE_LED_PIN, OUTPUT);
pinMode(GREEN_LED_PIN, OUTPUT);
pinMode(RED_BUTTON_PIN, INPUT_PULLUP);
pinMode(BLUE_BUTTON_PIN, INPUT_PULLUP);
pinMode(GREEN_BUTTON_PIN, INPUT_PULLUP);
}
void loop()
{
analogWrite(RED_LED_PIN, red_brightness);
analogWrite(BLUE_LED_PIN, blue_brightness);
analogWrite(GREEN_LED_PIN, green_brightness);
redUp = handleClick(RED_BUTTON_PIN, redUp, +32, red_brightness);
blueUp = handleClick(BLUE_BUTTON_PIN, blueUp, +32, blue_brightness);
greenUp = handleClick(GREEN_BUTTON_PIN, greenUp, +32, green_brightness);
}
boolean handleClick(int buttonPin, boolean wasUp, int delta, int & brightness)
{
boolean isUp = digitalRead(buttonPin);
if (wasUp && !isUp) {
delay(10);
isUp = digitalRead(buttonPin);
// если был клик, меняем яркость в пределах от 0 до 255
if (!isUp)
brightness = (brightness + delta) % 256;
}
return isUp; // возвращаем значение обратно, в вызывающий код
}