Prompt สำหรับสั่งให้ AI ช่วยเขียนโค้ด
/*
* ==========================================================
* โค้ดควบคุม LED 4 ทิศทางด้วย Joystick
* ==========================================================
* * อุปกรณ์: ESP32
* * การทำงาน:
* 1. อ่านค่า Analog จาก Joystick ทั้ง 2 แกน (X และ Y)
* 2. ควบคุม LED ตามทิศทาง:
* - เลื่อนซ้าย (แกน X ค่าน้อย) : ไฟ LED สีแดงติด
* - เลื่อนขวา (แกน X ค่ามาก) : ไฟ LED สีเขียวติด
* - เลื่อนขึ้น (แกน Y ค่ามาก) : ไฟ LED สีเหลืองติด
* - เลื่อนลง (แกน Y ค่าน้อย) : ไฟ LED สีน้ำเงินติด
* 3. หาก Joystick อยู่ในโซนตรงกลาง (Deadzone) ไฟ LED ทั้งหมดจะดับ
* * การเชื่อมต่อพิน (Pinout):
* - Joystick VRx (แกน X) -> พิน 34
* - Joystick VRy (แกน Y) -> พิน 35
* * - LED แดง (ซ้าย) -> พิน 26
* - LED เขียว (ขวา) -> พิน 27
* - LED เหลือง (ขึ้น) -> พิน 32
* - LED น้ำเงิน (ลง) -> พิน 33
* * - Joystick VCC -> 3V3
* - Joystick GND -> GND
* * หมายเหตุ:
* - หากทิศทาง 'ขึ้น'/'ลง' ของคุณสลับกัน (เช่น ดันขึ้นแต่ไฟน้ำเงินติด)
* ให้สลับ Logic ในส่วนของ `yValue` ใน `loop()`
* * ==========================================================
*/
โค้ดภาษา C++ ที่ได้จาก Prompt ข้างต้นนี้
/*
* โค้ดควบคุม LED ด้วย Joystick 2 แกน (X และ Y)
* - แกน X (ซ้าย/ขวา) -> ควบคุม LED แดง / เขียว
* - แกน Y (ขึ้น/ลง) -> ควบคุม LED เหลือง / น้ำเงิน
*/
// --- ตั้งค่าพิน ---
const int JOY_X_PIN = 34; // พิน Analog สำหรับแกน X (VRx)
const int JOY_Y_PIN = 35; // พิน Analog สำหรับแกน Y (VRy)
const int RED_LED_PIN = 26; // พิน LED สีแดง (ซ้าย)
const int GREEN_LED_PIN = 27; // พิน LED สีเขียว (ขวา)
const int YELLOW_LED_PIN = 32; // พิน LED สีเหลือง (ขึ้น)
const int BLUE_LED_PIN = 33; // พิน LED สีน้ำเงิน (ลง)
// --- ตั้งค่า Threshold (ค่าขอบเขต) ---
// ค่า ADC ของ ESP32 คือ 0-4095 (ค่ากลางประมาณ 2048)
const int LOW_THRESHOLD = 1000; // ค่าที่น้อยกว่านี้ถือว่า "ซ้าย" หรือ "ลง"
const int HIGH_THRESHOLD = 3000; // ค่าที่มากกว่านี้ถือว่า "ขวา" หรือ "ขึ้น"
void setup() {
Serial.begin(115200);
// ตั้งค่าพิน LED ทั้ง 4 เป็น OUTPUT
pinMode(RED_LED_PIN, OUTPUT);
pinMode(GREEN_LED_PIN, OUTPUT);
pinMode(YELLOW_LED_PIN, OUTPUT);
pinMode(BLUE_LED_PIN, OUTPUT);
}
void loop() {
// 1. อ่านค่า Analog จาก Joystick ทั้งสองแกน
int xValue = analogRead(JOY_X_PIN);
int yValue = analogRead(JOY_Y_PIN);
// (Optional) แสดงค่าที่อ่านได้
Serial.print("X: ");
Serial.print(xValue);
Serial.print("\t Y: ");
Serial.println(yValue);
// --- 2. ตรวจสอบเงื่อนไขแกน X (ซ้าย/ขวา) ---
if (xValue < LOW_THRESHOLD) {
// เลื่อนไปทางซ้าย
digitalWrite(RED_LED_PIN, HIGH); // แดงติด
digitalWrite(GREEN_LED_PIN, LOW); // เขียวดับ
}
else if (xValue > HIGH_THRESHOLD) {
// เลื่อนไปทางขวา
digitalWrite(RED_LED_PIN, LOW); // แดงดับ
digitalWrite(GREEN_LED_PIN, HIGH); // เขียวติด
}
else {
// อยู่ตรงกลาง (แกน X)
digitalWrite(RED_LED_PIN, LOW); // แดงดับ
digitalWrite(GREEN_LED_PIN, LOW); // เขียวดับ
}
// --- 3. ตรวจสอบเงื่อนไขแกน Y (ขึ้น/ลง) ---
// (เราใช้ LOW/HIGH Threshold เดียวกัน แต่การทำงานของแกน Y อาจกลับด้าน
// ถ้า 'ขึ้น' แล้วไฟ 'น้ำเงิน' ติด ให้สลับ HIGH/LOW ใน logic ข้างล่าง)
if (yValue < LOW_THRESHOLD) {
// เลื่อนไปทาง "ลง" (หรือ "ขึ้น" ขึ้นอยู่กับการวาง Joystick)
digitalWrite(BLUE_LED_PIN, HIGH); // น้ำเงินติด
digitalWrite(YELLOW_LED_PIN, LOW); // เหลืองดับ
}
else if (yValue > HIGH_THRESHOLD) {
// เลื่อนไปทาง "ขึ้น" (หรือ "ลง")
digitalWrite(BLUE_LED_PIN, LOW); // น้ำเงินดับ
digitalWrite(YELLOW_LED_PIN, HIGH); // เหลืองติด
}
else {
// อยู่ตรงกลาง (แกน Y)
digitalWrite(BLUE_LED_PIN, LOW); // น้ำเงินดับ
digitalWrite(YELLOW_LED_PIN, LOW); // เหลืองดับ
}
delay(50); // หน่วงเวลา
}