#include <Arduino.h>
#define K1 9 // verlaag
#define K2 10 // uit
#define K3 11 // verhoog
#define ledPin 3
volatile int helderheid = 128; // start op 50%
volatile bool knop1 = false;
volatile bool knop2 = false;
volatile bool knop3 = false;
void pciSetup(byte pin) {
*digitalPinToPCMSK(pin) |= bit(digitalPinToPCMSKbit(pin)); // enable pin
PCIFR |= bit(digitalPinToPCICRbit(pin)); // clear any outstanding interrupt
PCICR |= bit(digitalPinToPCICRbit(pin)); // enable interrupt for the group
}
ISR(PCINT0_vect) {
if (digitalRead(K1) == LOW) knop1 = true;
if (digitalRead(K2) == LOW) knop2 = true;
if (digitalRead(K3) == LOW) knop3 = true;
}
void setup() {
pinMode(K1, INPUT_PULLUP);
pinMode(K2, INPUT_PULLUP);
pinMode(K3, INPUT_PULLUP);
pinMode(ledPin, OUTPUT);
pciSetup(K1);
pciSetup(K2);
pciSetup(K3);
analogWrite(ledPin, helderheid);
}
void loop() {
if (knop2) { // LED uit
helderheid = 0;
knop2 = false;
}
if (knop1) { // helderheid verlagen
helderheid -= 26; // ~10% van 255
if (helderheid < 0) helderheid = 0;
knop1 = false;
}
if (knop3) { // helderheid verhogen
helderheid += 26; // ~10% van 255
if (helderheid > 255) helderheid = 255;
knop3 = false;
}
analogWrite(ledPin, helderheid);
delay(10); // korte vertraging voor stabiliteit
}