#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// กำหนดที่อยู่ I2C และขนาดหน้าจอ LCD (20x4)
LiquidCrystal_I2C lcd(0x27, 20, 4);
// กำหนดหมายเลขขาของ LED
int ledPins[] = {15, 2, 4, 16, 17, 5, 18, 19};
int numLeds = sizeof(ledPins) / sizeof(ledPins[0]); // จำนวน LED
void setup() {
// เริ่มต้นการทำงานของ LCD
lcd.init();
lcd.backlight();
lcd.setCursor(3, 1); // ตั้งตำแหน่งเคอร์เซอร์ที่คอลัมน์ที่ 3 แถวที่ 1
lcd.print("I LOVE IOT"); // แสดงข้อความ "I LOVE IOT"
// กำหนดแต่ละขาของ LED เป็น Output
for (int i = 0; i < numLeds; i++) {
pinMode(ledPins[i], OUTPUT);
digitalWrite(ledPins[i], LOW); // ปิด LED ทั้งหมด
}
}
void loop() {
// วิ่ง LED จากซ้ายไปขวา
for (int i = 0; i < numLeds; i++) {
digitalWrite(ledPins[i], HIGH); // เปิด LED
delay(200); // รอ 200 มิลลิวินาที
digitalWrite(ledPins[i], LOW); // ปิด LED
}
// เปิด LED ทีละดวงจากซ้ายไปขวา
for (int i = 0; i < numLeds; i++) {
digitalWrite(ledPins[i], HIGH); // เปิด LED
delay(200); // รอ 200 มิลลิวินาที
}
// ดับ LED ทีละดวงจากขวามาซ้าย
for (int i = numLeds - 1; i >= 0; i--) {
digitalWrite(ledPins[i], LOW); // ปิด LED
delay(200); // รอ 200 มิลลิวินาที
}
// กระพริบ LED ทั้งหมดพร้อมกัน 3 ครั้ง
for (int j = 0; j < 3; j++) {
for (int i = 0; i < numLeds; i++) {
digitalWrite(ledPins[i], HIGH); // เปิด LED ทั้งหมด
}
delay(500); // รอ 500 มิลลิวินาที
for (int i = 0; i < numLeds; i++) {
digitalWrite(ledPins[i], LOW); // ปิด LED ทั้งหมด
}
delay(500); // รอ 500 มิลลิวินาที
}
}