Cơ bảnESP32 DevKitC V4LEDMáy trạng tháimillis
Đèn giao thông
Ba LED đỏ, vàng, xanh chạy theo chu kỳ như đèn giao thông, viết bằng máy trạng thái và millis() thay cho delay().
Linh kiện
- ESP32 DevKitC V4
- 3 × Điện trở
- 3 × LED
Thư viện
Không cần thư viện ngoài.
Thử ngay khi mô phỏng chạy
- Đổi thời gian từng pha trong mảng DURATION_MS.
- Thêm một nút nhấn cho người đi bộ.
main.cpp
// Đèn giao thông: đỏ GPIO23, vàng GPIO22, xanh GPIO21const int RED_PIN = 23;const int YELLOW_PIN = 22;const int GREEN_PIN = 21; enum Phase { RED, GREEN, YELLOW };const unsigned long DURATION_MS[] = {3000, 3000, 1000};const char* NAMES[] = {"DO", "XANH", "VANG"}; Phase phase = RED;unsigned long phaseStart = 0; void show(Phase p) { digitalWrite(RED_PIN, p == RED); digitalWrite(GREEN_PIN, p == GREEN); digitalWrite(YELLOW_PIN, p == YELLOW); Serial.println(NAMES[p]);} void setup() { Serial.begin(115200); pinMode(RED_PIN, OUTPUT); pinMode(YELLOW_PIN, OUTPUT); pinMode(GREEN_PIN, OUTPUT); show(phase);} void loop() { if (millis() - phaseStart >= DURATION_MS[phase]) { phase = static_cast<Phase>((phase + 1) % 3); phaseStart = millis(); show(phase); }}