const int buttonPin1 = 35;
const int buttonPin2 = 33;
const int ledPin1 = 34;
const int ledPin2 = 32;
bool ledState1 = LOW;
bool ledState2 = LOW;
bool lastButtonState1 = HIGH;
bool lastButtonState2 = HIGH;
bool buttonState1 = HIGH;
bool buttonState2 = HIGH;
int buttonPressCount1 = 0;
int buttonPressCount2 = 0;
unsigned long button1PressTime = 0;
unsigned long button2PressTime = 0;
const unsigned long longPressDuration = 2000; // 2 seconds
void setup() {
pinMode(buttonPin1, INPUT_PULLUP);
pinMode(buttonPin2, INPUT_PULLUP);
pinMode(ledPin1, OUTPUT);
pinMode(ledPin2, OUTPUT);
digitalWrite(ledPin1, ledState1);
digitalWrite(ledPin2, ledState2);
Serial.begin(9600);
}
void loop() {
buttonState1 = digitalRead(buttonPin1);
buttonState2 = digitalRead(buttonPin2);
// Handling Button 1
if (buttonState1 == LOW && lastButtonState1 == HIGH) {
button1PressTime = millis(); // Record when the button is pressed
}
if (buttonState1 == HIGH && lastButtonState1 == LOW) {
unsigned long pressDuration = millis() - button1PressTime;
if (pressDuration < longPressDuration) {
// Short press: toggle the LED state
ledState1 = !ledState1;
digitalWrite(ledPin1, ledState1);
buttonPressCount1++;
Serial.print("Button 1 pressed ");
Serial.print(buttonPressCount1);
Serial.println(" times.");
} else {
// Long press: dim the LED
Serial.println("Button 1 held for more than 2 seconds. Dimming LED.");
for (int brightness = 255; brightness >= 0; brightness -= 5) {
analogWrite(ledPin1, brightness); // PWM dimming
delay(50);
}
analogWrite(ledPin1, 0); // Turn off the LED after dimming
}
}
// Handling Button 2
if (buttonState2 == LOW && lastButtonState2 == HIGH) {
button2PressTime = millis();
}
if (buttonState2 == HIGH && lastButtonState2 == LOW) {
unsigned long pressDuration = millis() - button2PressTime;
if (pressDuration < longPressDuration) {
// Short press: toggle the LED state
ledState2 = !ledState2;
digitalWrite(ledPin2, ledState2);
buttonPressCount2++;
Serial.print("Button 2 pressed ");
Serial.print(buttonPressCount2);
Serial.println(" times.");
} else {
// Long press: dim the LED
Serial.println("Button 2 held for more than 2 seconds. Dimming LED.");
for (int brightness = 255; brightness >= 0; brightness -= 5) {
analogWrite(ledPin2, brightness);
delay(50);
}
analogWrite(ledPin2, 0);
}
}
lastButtonState1 = buttonState1;
lastButtonState2 = buttonState2;
}