// Nút nhấn
const int btnFast = 6; // Nút bơm nhanh
const int btnMedium = 7; // Nút bơm vừa
const int btnSlow = 8; // Nút bơm chậm
// Đèn LED bơm
const int pump1 = 10; // LED bơm 1
const int pump2 = 11; // LED bơm 2
const int pump3 = 12; // LED bơm 3
// Đèn LED trạng thái mức nước
const int ledRed = 2; // LED đỏ (bơm chậm)
const int ledYellow = 3; // LED vàng (bơm vừa)
const int ledGreen = 4; // LED xanh (bơm nhanh)
// Trạng thái hiện tại
int state = 0; // 0: Tắt, 1: Bơm nhanh, 2: Bơm vừa, 3: Bơm chậm
// Biến lưu trạng thái trước của nút nhấn
bool lastFast = false;
bool lastMedium = false;
bool lastSlow = false;
void setup() {
// Thiết lập nút nhấn làm đầu vào
pinMode(btnFast, INPUT_PULLUP);
pinMode(btnMedium, INPUT_PULLUP);
pinMode(btnSlow, INPUT_PULLUP);
// Thiết lập đèn LED bơm làm đầu ra
pinMode(pump1, OUTPUT);
pinMode(pump2, OUTPUT);
pinMode(pump3, OUTPUT);
// Thiết lập đèn LED trạng thái làm đầu ra
pinMode(ledRed, OUTPUT);
pinMode(ledYellow, OUTPUT);
pinMode(ledGreen, OUTPUT);
Serial.begin(9600);
}
void loop() {
// Đọc trạng thái nút nhấn
bool fastPressed = !digitalRead(btnFast);
bool mediumPressed = !digitalRead(btnMedium);
bool slowPressed = !digitalRead(btnSlow);
// Xử lý nút bơm nhanh
if (fastPressed && !lastFast) { // Chỉ thay đổi khi nút được nhấn (chuyển từ HIGH sang LOW)
state = 1; // Chuyển sang trạng thái bơm nhanh
}
// Xử lý nút bơm vừa
if (mediumPressed && !lastMedium) {
state = 2; // Chuyển sang trạng thái bơm vừa
}
// Xử lý nút bơm chậm
if (slowPressed && !lastSlow) {
state = 3; // Chuyển sang trạng thái bơm chậm
}
// Lưu trạng thái nút nhấn trước đó
lastFast = fastPressed;
lastMedium = mediumPressed;
lastSlow = slowPressed;
// Điều khiển bơm và đèn LED theo trạng thái
if (state == 1) {
// Bơm nhanh: LED xanh sáng, các LED khác tắt, tất cả 3 bơm sáng
digitalWrite(pump1, HIGH);
digitalWrite(pump2, HIGH);
digitalWrite(pump3, HIGH);
digitalWrite(ledGreen, HIGH);
digitalWrite(ledYellow, LOW);
digitalWrite(ledRed, LOW);
} else if (state == 2) {
// Bơm vừa: LED vàng sáng, các LED khác tắt, 2 bơm sáng
digitalWrite(pump1, HIGH);
digitalWrite(pump2, HIGH);
digitalWrite(pump3, LOW);
digitalWrite(ledGreen, LOW);
digitalWrite(ledYellow, HIGH);
digitalWrite(ledRed, LOW);
} else if (state == 3) {
// Bơm chậm: LED đỏ sáng, các LED khác tắt, 1 bơm sáng
digitalWrite(pump1, HIGH);
digitalWrite(pump2, LOW);
digitalWrite(pump3, LOW);
digitalWrite(ledGreen, LOW);
digitalWrite(ledYellow, LOW);
digitalWrite(ledRed, HIGH);
} else {
// Tắt tất cả khi không có trạng thái
digitalWrite(pump1, LOW);
digitalWrite(pump2, LOW);
digitalWrite(pump3, LOW);
digitalWrite(ledGreen, LOW);
digitalWrite(ledYellow, LOW);
digitalWrite(ledRed, LOW);
}
}