// Định nghĩa các chân LED
#define LED_UNRIPE 13 // LED xanh lá - chưa chín
#define LED_RIPE 12 // LED vàng - chín
#define LED_OVERIPE 14 // LED đỏ - quá chín
#define MQ3_PIN 36 // Chân ADC cho MQ-3 (GPIO36)
// Ngưỡng giá trị MQ-3 (giả lập, cần hiệu chỉnh thực tế)
#define THRESHOLD_UNRIPE 1000 // Dưới 1000: chưa chín
#define THRESHOLD_RIPE 2500 // 1000-2500: chín
#define THRESHOLD_OVERIPE 4000 // Trên 2500: quá chín
void setup() {
// Khởi tạo cổng Serial
Serial.begin(115200);
// Cấu hình các chân LED là OUTPUT
pinMode(LED_UNRIPE, OUTPUT);
pinMode(LED_RIPE, OUTPUT);
pinMode(LED_OVERIPE, OUTPUT);
// Tắt tất cả LED ban đầu
digitalWrite(LED_UNRIPE, LOW);
digitalWrite(LED_RIPE, LOW);
digitalWrite(LED_OVERIPE, LOW);
}
void loop() {
// Đọc giá trị từ MQ-3 (mô phỏng bằng random trong Wokwi)
int mq3Value = analogRead(MQ3_PIN); // Giá trị từ 0-4095
// Để mô phỏng, bạn có thể thay bằng: int mq3Value = random(0, 4096);
// In giá trị ra Serial Monitor
Serial.print("MQ-3 Value: ");
Serial.println(mq3Value);
// Kiểm tra trạng thái và điều khiển LED
if (mq3Value < THRESHOLD_UNRIPE) {
// Chưa chín
digitalWrite(LED_UNRIPE, HIGH);
digitalWrite(LED_RIPE, LOW);
digitalWrite(LED_OVERIPE, LOW);
Serial.println("Trạng thái: Chưa chín");
updateGauge(0); // Xanh lá
}
else if (mq3Value >= THRESHOLD_UNRIPE && mq3Value <= THRESHOLD_RIPE) {
// Chín
digitalWrite(LED_UNRIPE, LOW);
digitalWrite(LED_RIPE, HIGH);
digitalWrite(LED_OVERIPE, LOW);
Serial.println("Trạng thái: Chín");
updateGauge(1); // Vàng
}
else if (mq3Value > THRESHOLD_RIPE) {
// Quá chín
digitalWrite(LED_UNRIPE, LOW);
digitalWrite(LED_RIPE, LOW);
digitalWrite(LED_OVERIPE, HIGH);
Serial.println("Trạng thái: Quá chín");
updateGauge(2); // Đỏ
}
delay(1000); // Đợi 1 giây trước khi đọc lại
}
// Hàm cập nhật gauge (mô phỏng trên Wokwi)
void updateGauge(int state) {
// Trong Wokwi, bạn cần thêm phần tử gauge trong giao diện
// và sử dụng Serial để gửi dữ liệu tới gauge
if (state == 0) {
Serial.println("gauge1:0"); // Chưa chín - xanh lá
} else if (state == 1) {
Serial.println("gauge1:1"); // Chín - vàng
} else if (state == 2) {
Serial.println("gauge1:2"); // Quá chín - đỏ
}
}