#include <Arduino.h>
// ---- OUTPUT: 3 LED ----
#define RED_LED D1
#define GREEN_LED D7
#define BLUE_LED D8
// ---- INPUT: 4 nút nhấn ----
#define BTN1 D0
#define BTN2 D3
#define BTN3 D4
#define BTN4 D5
volatile int count1 = 0;
volatile int count2 = 0;
volatile int count3 = 0;
void updateLEDs() {
int maxCount = count1;
if (count2 > maxCount) maxCount = count2;
if (count3 > maxCount) maxCount = count3;
digitalWrite(RED_LED, (count1 == maxCount) ? HIGH : LOW);
digitalWrite(GREEN_LED, (count2 == maxCount) ? HIGH : LOW);
digitalWrite(BLUE_LED, (count3 == maxCount) ? HIGH : LOW);
}
void isr_btn1() {
count1++;
updateLEDs();
}
void isr_btn2() {
count2++;
updateLEDs();
}
void isr_btn3() {
count3++;
updateLEDs();
}
void isr_btn4() {
count1 = 0;
count2 = 0;
count3 = 0;
updateLEDs(); // Gọi update để tắt hết LED
}
void setup() {
pinMode(RED_LED, OUTPUT);
pinMode(GREEN_LED, OUTPUT);
pinMode(BLUE_LED, OUTPUT);
digitalWrite(RED_LED, LOW);
digitalWrite(GREEN_LED, LOW);
digitalWrite(BLUE_LED, LOW);
pinMode(BTN1, INPUT_PULLUP);
pinMode(BTN2, INPUT_PULLUP);
pinMode(BTN3, INPUT_PULLUP);
pinMode(BTN4, INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(BTN1), isr_btn1, FALLING);
attachInterrupt(digitalPinToInterrupt(BTN2), isr_btn2, FALLING);
attachInterrupt(digitalPinToInterrupt(BTN3), isr_btn3, FALLING);
attachInterrupt(digitalPinToInterrupt(BTN4), isr_btn4, FALLING);
}
void loop() {
// Không làm gì
}Loading
st-nucleo-c031c6
st-nucleo-c031c6