#define BUTTON_PIN_1 27 // ESP32 pin GPIO27, connected to button 1
#define BUTTON_PIN_2 26 // ESP32 pin GPIO26, connected to button 2
#define BUTTON_PIN_3 25 // ESP32 pin GPIO25, connected to button 3
#define BUTTON_PIN_4 33 // ESP32 pin GPIO33, connected to button 4
#define LED_PIN_1 2 // ESP32 pin GPIO2, connected to LED 1
#define LED_PIN_2 4 // ESP32 pin GPIO4, connected to LED 2
#define LED_PIN_3 18 // ESP32 pin GPIO18, connected to LED 3
#define LED_PIN_4 19 // ESP32 pin GPIO19, connected to LED 4
// variables for each LED and button
int led_state_1 = LOW; // current state of LED 1
int led_state_2 = LOW; // current state of LED 2
int led_state_3 = LOW; // current state of LED 3
int led_state_4 = LOW; // current state of LED 4
int button_state_1; // current state of button 1
int button_state_2; // current state of button 2
int button_state_3; // current state of button 3
int button_state_4; // current state of button 4
int last_button_state_1; // previous state of button 1
int last_button_state_2; // previous state of button 2
int last_button_state_3; // previous state of button 3
int last_button_state_4; // previous state of button 4
void setup() {
Serial.begin(115200);
Serial.println("Hello, ESP32!");
// Setup pin modes
pinMode(LED_PIN_1, OUTPUT);
pinMode(LED_PIN_2, OUTPUT);
pinMode(LED_PIN_3, OUTPUT);
pinMode(LED_PIN_4, OUTPUT);
pinMode(BUTTON_PIN_1, INPUT_PULLUP);
pinMode(BUTTON_PIN_2, INPUT_PULLUP);
pinMode(BUTTON_PIN_3, INPUT_PULLUP);
pinMode(BUTTON_PIN_4, INPUT_PULLUP);
// Initialize button states
button_state_1 = digitalRead(BUTTON_PIN_1);
button_state_2 = digitalRead(BUTTON_PIN_2);
button_state_3 = digitalRead(BUTTON_PIN_3);
button_state_4 = digitalRead(BUTTON_PIN_4);
}
void loop() {
// Read states of each button
button_state_1 = digitalRead(BUTTON_PIN_1);
button_state_2 = digitalRead(BUTTON_PIN_2);
button_state_3 = digitalRead(BUTTON_PIN_3);
button_state_4 = digitalRead(BUTTON_PIN_4);
// Check if any button is pressed and toggle corresponding LED
toggleLED(BUTTON_PIN_1, button_state_1, last_button_state_1, led_state_1, LED_PIN_1);
toggleLED(BUTTON_PIN_2, button_state_2, last_button_state_2, led_state_2, LED_PIN_2);
toggleLED(BUTTON_PIN_3, button_state_3, last_button_state_3, led_state_3, LED_PIN_3);
toggleLED(BUTTON_PIN_4, button_state_4, last_button_state_4, led_state_4, LED_PIN_4);
// Update last button states
last_button_state_1 = button_state_1;
last_button_state_2 = button_state_2;
last_button_state_3 = button_state_3;
last_button_state_4 = button_state_4;
}
void toggleLED(int button_pin, int button_state, int& last_button_state, int& led_state, int led_pin) {
if (last_button_state == HIGH && button_state == LOW) {
Serial.println("Button pressed");
led_state = !led_state;
digitalWrite(led_pin, led_state);
}
}