ค้นหาโค้ด

บทช่วยสอน ESP32 26/55 - การใช้จอยสติ๊กกับ Arduino ลงมือปฏิบัติ | ชุด IoT ESP32 ของ SunFounder

บทช่วยสอน ESP32 26/55 - การใช้จอยสติ๊กกับ Arduino ลงมือปฏิบัติ | ชุด IoT ESP32 ของ SunFounder

ในบทช่วยสอนนี้ เราจะเรียนรู้วิธีการเชื่อมต่อจอยสติ๊กแบบ XY เข้ากับไมโครคอนโทรลเลอร์ ESP32 จาก SunFounder เพื่อให้เราสามารถตรวจจับตำแหน่งของมันและดำเนินการตามอินพุตที่ได้รับ เราจะรวมออดที่ทำงานเมื่อจอยสติ๊กถูกเลื่อนไปยังตำแหน่งที่กำหนดด้วย การรวมกันนี้จะช่วยให้เราสร้างโปรเจกต์แบบโต้ตอบที่ตอบสนองต่ออินพุตของผู้ใช้แบบเรียลไทม์

ESP32-26-xy-joystick-main

จอยสติ๊กแบบ XY ให้เอาต์พุตแบบแอนะล็อกสองช่องที่สอดคล้องกับตำแหน่ง X และ Y และมีสวิตช์ที่สามารถกดเพื่อกระตุ้นการทำงานได้ โดยการอ่านค่าจากจอยสติ๊ก เราสามารถควบคุมองค์ประกอบต่างๆ ในโปรเจกต์ของเรา เช่น การเปิดใช้งานออดหรือแสดงค่าบนหน้าจอ เพื่อให้เข้าใจกระบวนการอย่างถ่องแท้ โปรดดูวิดีโอเพื่อข้อมูลเพิ่มเติม (ในวิดีโอที่ 00:00)

อธิบายฮาร์ดแวร์

ส่วนประกอบหลักสำหรับโปรเจกต์นี้ประกอบด้วยไมโครคอนโทรลเลอร์ ESP32 จอยสติ๊กแบบ XY และออด ESP32 เป็นบอร์ดอเนกประสงค์ที่รองรับ Wi-Fi และ Bluetooth ทำให้เหมาะสำหรับโปรเจกต์ IoT จอยสติ๊กแบบ XY ประกอบด้วยตัวต้านทานแบบปรับค่าได้สองตัวสำหรับแกน X และ Y และปุ่มกดสวิตช์สำหรับอินพุตเพิ่มเติม

joystick_schematic
ESP32-26-xy-joystick-schematic

จอยสติ๊กส่งสัญญาณแอนะล็อกที่สอดคล้องกับตำแหน่งของมัน ซึ่งจะถูกอ่านโดยพินแอนะล็อกของ ESP32 ปุ่มกดให้สัญญาณดิจิทัลเมื่อถูกกด ออดเชื่อมต่อกับพินเอาต์พุตดิจิทัลบน ESP32 ทำให้สามารถเปิดหรือปิดการทำงานได้ตามตำแหน่งของจอยสติ๊ก

รายละเอียดจาก Datasheet

ผู้ผลิต SunFounder
หมายเลขชิ้นส่วน โมดูลจอยสติ๊ก XY
แรงดันไฟฟ้าที่ใช้งาน 3.3 V – 5 V
ค่าตัวต้านทาน 10 kΩ (แต่ละแกน)
กระแสสูงสุด 20 mA
ประเภทสวิตช์ ปุ่มกดชั่วขณะ
ขนาด ประมาณ 50 มม. x 50 มม.

 

  • ตรวจสอบให้แน่ใจว่าจอยสติ๊กได้รับไฟ 3.3 V เพื่อความเข้ากันได้กับ ESP32
  • ใช้ตัวต้านทานแบบดึงขึ้นสำหรับสวิตช์เพื่อหลีกเลี่ยงอินพุตลอย
  • เชื่อมต่อเอาต์พุตแอนะล็อกเข้ากับพิน ADC ของ ESP32 (34 สำหรับ X, 35 สำหรับ Y)
  • ใช้กลไกดีบาวซ์สำหรับสวิตช์เพื่อป้องกันการทำงานที่ผิดพลาด
  • ตรวจสอบระดับแรงดันไฟฟ้าเพื่อให้แน่ใจว่าอยู่ภายในขีดจำกัดการทำงานที่ปลอดภัย

คำแนะนำการเดินสายไฟ

ESP32-26-xy-joystick-wiring

ในการเดินสายไฟจอยสติ๊กเข้ากับ ESP32 ให้เริ่มต้นโดยเชื่อมต่อพินกราวด์จากจอยสติ๊กเข้ากับพินกราวด์บน ESP32 จากนั้นเชื่อมต่อพิน VCC ของจอยสติ๊กเข้ากับพิน 3.3 V บน ESP32 จอยสติ๊กมีพินเอาต์พุตแอนะล็อกสองพิน: เชื่อมต่อเอาต์พุตแกน X (ระบุเป็น VRX) เข้ากับพิน 34 บน ESP32 และเอาต์พุตแกน Y (ระบุเป็น VRY) เข้ากับพิน 35

สำหรับเอาต์พุตสวิตช์ ให้เชื่อมต่อพินสวิตช์เข้ากับพิน 33 บน ESP32 พินนี้จะอ่านการกดปุ่มเป็นอินพุตดิจิทัล ตรวจสอบให้แน่ใจว่าการเชื่อมต่อแน่นหนาเพื่อหลีกเลี่ยงปัญหาที่เกิดขึ้นเป็นระยะๆ หากการเดินสายไฟของคุณแตกต่างจากในวิดีโอ (ในวิดีโอที่ 02:30) ให้ปรับเปลี่ยนตามความเหมาะสมในขณะที่ปฏิบัติตามหลักการเดียวกันสำหรับการเชื่อมต่อแอนะล็อกและดิจิทัล

ตัวอย่างโค้ดและคำอธิบาย

ในโค้ด เราเริ่มต้นด้วยการกำหนดค่าคงที่สำหรับพินจอยสติ๊ก ตัวระบุ xAxis, yAxis และ btn ถูกตั้งค่าเป็น 34, 35 และ 33 ตามลำดับ ซึ่งทำให้ง่ายต่อการอ้างอิงพินเหล่านี้ตลอดทั้งโปรแกรม

#define xAxis 34
#define yAxis 35
#define btn 33

ในฟังก์ชัน setup() เราจะเริ่มต้นการสื่อสารแบบอนุกรมและตั้งค่าโหมดพินปุ่มเป็นอินพุต ซึ่งเป็นการเตรียม ESP32 ให้อ่านข้อมูลจากจอยสติ๊กและส่งไปยังซีเรียลมอนิเตอร์

void setup() {
  Serial.begin(115200);
  pinMode(btn, INPUT);  
}

ภายใน loop() เราจะอ่านค่าแอนะล็อกสำหรับแกน X และ Y ของจอยสติ๊กโดยใช้ analogRead() และเก็บไว้ใน xValue และ yValue สถานะของปุ่มจะถูกอ่านโดยใช้ digitalRead() และเก็บไว้ใน btnValue สุดท้าย เราจะพิมพ์ค่าเหล่านี้ไปยังซีเรียลมอนิเตอร์

void loop() {
  int xValue = analogRead(xAxis);
  int yValue = analogRead(yAxis); 
  int btnValue = digitalRead(btn);
  
  Serial.printf("Joystick value is %d , %d , %d \n",xValue,yValue,btnValue);
  delay(300);  // หน่วงเวลาระหว่างการอ่าน
}

ลูปนี้จะอัปเดตค่าอย่างต่อเนื่อง ให้ข้อเสนอแนะแบบเรียลไทม์เกี่ยวกับการเคลื่อนไหวของจอยสติ๊กและการกดปุ่ม สำหรับโค้ดที่สมบูรณ์ โปรดดูโค้ดเต็มที่โหลดไว้ด้านล่างบทความ

การสาธิต / สิ่งที่คาดหวัง

เมื่อการตั้งค่าเสร็จสมบูรณ์และอัปโหลดโค้ดแล้ว ซีเรียลมอนิเตอร์ควรแสดงค่า X และ Y พร้อมกับสถานะของปุ่ม เมื่อคุณเลื่อนจอยสติ๊ก ค่าจะเปลี่ยนไปตามตำแหน่งของมัน การกดปุ่มจะสลับสถานะระหว่างสูงและต่ำ

ข้อผิดพลาดทั่วไปรวมถึงการเดินสายไฟที่ไม่ถูกต้อง ซึ่งอาจทำให้เกิดอินพุตลอยหรือจอยสติ๊กไม่ตอบสนอง ตรวจสอบให้แน่ใจว่าใช้พินที่ถูกต้องและมีการติดตั้งตัวต้านทานแบบดึงขึ้นสำหรับสวิตช์ ดูวิดีโอเพื่อการสาธิตเชิงปฏิบัติของพฤติกรรมเหล่านี้ (ในวิดีโอที่ 13:00)

ไทม์สแตมป์ของวิดีโอ

  • 00:00 เริ่มต้น
  • 1:47 แนะนำจอยสติ๊ก XY
  • 7:32 การวัดค่าจอยสติ๊ก
  • 8:40 อธิบายการเดินสายไฟ
  • 11:06 อธิบายโค้ด Arduino สำหรับจอยสติ๊กกับ ESP32
  • 14:43 การเลือกบอร์ด ESP32 และพอร์ต COM ใน Arduino IDE
  • 16:24 การสาธิตการใช้งานจอยสติ๊กอย่างง่าย
  • 19:20 การตรวจจับตำแหน่งของจอยสติ๊กด้วยโค้ดพร้อมบัซเซอร์
  • 21:16 การสาธิตการตรวจจับตำแหน่ง

ภาพ

joystick_schematic
joystick_schematic
ESP32-26-xy-joystick-schematic
ESP32-26-xy-joystick-schematic
ESP32-26-xy-joystick-wiring
ESP32-26-xy-joystick-wiring
ESP32-26-xy-joystick-main
ESP32-26-xy-joystick-main
826-ESP32 Tutorial 26/55- Arduino code for XY Joystick
ภาษา: C++
// Define constants for the x and y axis and the button pins
#define xAxis 34
#define yAxis 35
#define btn 33


void setup() {
  // Initialize serial communication at 115200 bits per second:
  Serial.begin(115200);

  // Set the mode of the button pin to input
  pinMode(btn, INPUT);  
}

void loop() {
  // Read the analog value for x,y axis
  int xValue = analogRead(xAxis);
  int yValue = analogRead(yAxis); 

  // Read the digital value from the button pin
  int btnValue = digitalRead(btn);
  
  // print out the values
  Serial.printf("Joystick value is %d , %d , %d \n",xValue,yValue,btnValue);
  
  delay(300);  // Delay between reads
}

แหล่งข้อมูลและเอกสารอ้างอิง

ไฟล์📁

ไม่มีไฟล์ที่พร้อมใช้งาน