#define potR 33 // กำหนดพอร์ตอินพุตสำหรับโพเทนชิโอมิเตอร์ที่ควบคุมสีแดง (R)
#define potG 25 // กำหนดพอร์ตอินพุตสำหรับโพเทนชิโอมิเตอร์ที่ควบคุมสีเขียว (G)
#define potB 26 // กำหนดพอร์ตอินพุตสำหรับโพเทนชิโอมิเตอร์ที่ควบคุมสีน้ำเงิน (B)
#define R 21 // กำหนดพอร์ตเอาต์พุตสำหรับควบคุมไฟ LED สีแดง (R)
#define G 19 // กำหนดพอร์ตเอาต์พุตสำหรับควบคุมไฟ LED สีเขียว (G)
#define B 18 // กำหนดพอร์ตเอาต์พุตสำหรับควบคุมไฟ LED สีน้ำเงิน (B)
int R_value = 0; // ตัวแปรเก็บค่าความสว่างของสีแดง
int G_value = 0; // ตัวแปรเก็บค่าความสว่างของสีเขียว
int B_value = 0; // ตัวแปรเก็บค่าความสว่างของสีน้ำเงิน
void setup() {
Serial.begin(115200); // เริ่มต้น Serial Monitor ด้วย baud rate 115200
Serial.println("Hello, ESP32!"); // แสดงข้อความทักทายใน Serial Monitor
// กำหนดพอร์ตของโพเทนชิโอมิเตอร์เป็นอินพุต
pinMode(potR, INPUT);
pinMode(potG, INPUT);
pinMode(potB, INPUT);
// กำหนดพอร์ตของ LED เป็นเอาต์พุต
pinMode(R, OUTPUT);
pinMode(G, OUTPUT);
pinMode(B, OUTPUT);
}
void loop() {
// อ่านค่าจากโพเทนชิโอมิเตอร์ (0 - 4095) และแปลงเป็นช่วง (0 - 255) สำหรับการควบคุมความสว่างของ LED
R_value = ((analogRead(potR) * 255) / 4095); // แปลงค่าโพเทนชิโอมิเตอร์สำหรับสีแดง
G_value = ((analogRead(potG) * 255) / 4095); // แปลงค่าโพเทนชิโอมิเตอร์สำหรับสีเขียว
B_value = ((analogRead(potB) * 255) / 4095); // แปลงค่าโพเทนชิโอมิเตอร์สำหรับสีน้ำเงิน
// แสดงค่าความสว่างของสี R, G, B ใน Serial Monitor
Serial.println("-------------------");
Serial.print("Red: ");
Serial.println(R_value); // แสดงค่า R_value ใน Serial Monitor
Serial.print("Green: ");
Serial.println(G_value); // แสดงค่า G_value ใน Serial Monitor
Serial.print("Blue: ");
Serial.println(B_value); // แสดงค่า B_value ใน Serial Monitor
Serial.println("-------------------");
// ส่งค่า PWM ไปยังพอร์ต LED เพื่อควบคุมความสว่างของแต่ละสี
analogWrite(R, R_value); // ควบคุมความสว่างของ LED สีแดง
analogWrite(G, G_value); // ควบคุมความสว่างของ LED สีเขียว
analogWrite(B, B_value); // ควบคุมความสว่างของ LED สีน้ำเงิน
delay(100); // หน่วงเวลา 100 ms ก่อนอ่านค่ารอบถัดไป
}