#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// กำหนดขา LED
const int ledPins[] = {4, 16, 17, 5};
const int numLeds = sizeof(ledPins) / sizeof(ledPins[0]);
// สร้างอ็อบเจ็กต์ LCD (0x27 คือ I2C address ของ LCD)
LiquidCrystal_I2C lcd(0x27, 20, 4); // กำหนดจอ LCD ขนาด 20x4
void setup() {
// เริ่มต้นการทำงานของ LCD
lcd.init();
lcd.backlight(); // เปิดแสงไฟ backlight
// กำหนดให้ทุกขาเป็น output
for (int i = 0; i < numLeds; i++) {
pinMode(ledPins[i], OUTPUT);
}
// แสดงข้อความที่บรรทัดที่ 1 และ 2
lcd.setCursor(0, 0); // กำหนดบรรทัดที่ 1
lcd.print("ESP32 Control 4 LED");
lcd.setCursor(0, 1); // กำหนดบรรทัดที่ 2
lcd.print("Left to Right Return");
lcd.setCursor(0, 2); // กำหนดบรรทัดที่ 3
lcd.print("BLINK ALL");
}
void loop() {
// วิ่งจากขวาไปซ้าย (4, 16, 17, 5)
for (int i = 0; i < numLeds; i++) {
digitalWrite(ledPins[i], HIGH);
delay(500);
digitalWrite(ledPins[i], LOW);
}
// วิ่งจากซ้ายไปขวา (5, 17, 16, 4)
for (int i = numLeds - 1; i >= 0; i--) {
digitalWrite(ledPins[i], HIGH);
delay(500);
digitalWrite(ledPins[i], LOW);
}
// กระพริบพร้อมกันทุกดวง
for (int i = 0; i < 5; i++) { // กระพริบ 5 ครั้ง
for (int j = 0; j < numLeds; j++) {
digitalWrite(ledPins[j], HIGH);
}
delay(500);
for (int j = 0; j < numLeds; j++) {
digitalWrite(ledPins[j], LOW);
}
delay(500);
}
}