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); // หน่วงเวลา
}