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

ตลอดบทช่วยสอนนี้ เราจะเขียนโปรแกรมง่ายๆ ที่อ่านตำแหน่ง X และ Y ของจอยสติ๊กและแสดงผลบนซีเรียลมอนิเตอร์ของ Arduino เมื่อกดจอยสติ๊ก สถานะของสวิตช์ก็จะถูกตรวจจับด้วย สำหรับคำอธิบายโค้ดโดยละเอียด โปรดดูวิดีโอตามไทม์สแตมป์ที่ระบุ (ในวิดีโอที่ 00:00)
อธิบายฮาร์ดแวร์
ส่วนประกอบหลักสำหรับโปรเจกต์นี้ประกอบด้วยโมดูลจอยสติ๊กแบบสองแกนและบอร์ด Arduino โมดูลจอยสติ๊กประกอบด้วยตัวต้านทานปรับค่าได้สองตัว หนึ่งตัวสำหรับแกน X และหนึ่งตัวสำหรับแกน Y ซึ่งให้ค่าแอนะล็อกตามตำแหน่งของจอยสติ๊ก ปุ่มกดสวิตช์บนจอยสติ๊กใช้ตรวจจับเมื่อมีการกด
เมื่อคุณเลื่อนจอยสติ๊ก โพเทนชิโอมิเตอร์จะเปลี่ยนความต้านทาน ซึ่งจะถูกแปลงเป็นค่าระหว่าง 0 ถึง 1023 ซึ่งช่วยให้เราสามารถระบุตำแหน่งของจอยสติ๊กได้อย่างแม่นยำ ปุ่มกดสวิตช์เชื่อมต่อกับพินอินพุตดิจิทัลบน Arduino ทำให้เราสามารถอ่านสถานะได้โดยไม่ต้องใช้ตัวต้านทานภายนอก โดยใช้คุณสมบัติตัวต้านทานดึงขึ้นภายใน
รายละเอียดจากดาต้าชีต
| ผู้ผลิต | ทั่วไป |
|---|---|
| หมายเลขชิ้นส่วน | โมดูลจอยสติ๊กแบบสองแกน |
| แรงดันไฟฟ้าลอจิก/IO | 5 โวลต์ |
| แรงดันไฟฟ้าจ่าย | 5 โวลต์ |
| ช่วงแรงดันเอาต์พุต | 0 - 5 โวลต์ |
| ความละเอียด | 10 บิต (0-1023) แอนะล็อก |
| ประเภทสวิตช์ | ปุ่มกด |
| แพ็กเกจ | โมดูลมาตรฐาน |
- ตรวจสอบให้แน่ใจว่าแหล่งจ่ายไฟ (5 โวลต์) ไปยังโมดูลจอยสติ๊กถูกต้อง
- เชื่อมต่อเอาต์พุต X และ Y ของจอยสติ๊กเข้ากับพินแอนะล็อก A0 และ A1 ตามลำดับ
- ใช้พินดิจิทัล 6 สำหรับสวิตช์ของจอยสติ๊ก
- ใช้การกำหนดค่าตัวต้านทานดึงขึ้นสำหรับพินสวิตช์
- ตรวจสอบค่าเอาต์พุตเพื่อให้แน่ใจว่าอยู่ในช่วง 0 ถึง 1023
คำแนะนำการเดินสายไฟ


ในการเดินสายไฟจอยสติ๊กแบบสองแกนเข้ากับ Arduino ให้เริ่มต้นโดยเชื่อมต่อพินกราวด์ของจอยสติ๊กเข้ากับรางกราวด์บนเบรดบอร์ดของคุณ จากนั้นเชื่อมต่อพิน 5V ของจอยสติ๊กเข้ากับรางบวกบนเบรดบอร์ด พินตัวแปรสองตัวบนจอยสติ๊กซึ่งระบุเป็น X และ Y ควรเชื่อมต่อกับพินแอนะล็อก A0 และ A1 บน Arduino ตามลำดับ
สำหรับปุ่มกดสวิตช์บนจอยสติ๊ก ให้เชื่อมต่อกับพินดิจิทัล 6 บน Arduino การเชื่อมต่อนี้ใช้คุณสมบัติตัวต้านทานดึงขึ้นภายใน ดังนั้นคุณไม่จำเป็นต้องใช้ตัวต้านทานภายนอก สุดท้าย หากคุณต้องการตรวจสอบสถานะสวิตช์ด้วย LED ให้เชื่อมต่อขายาวของ LED เข้ากับพินดิจิทัล 13 และขาสั้นผ่านตัวต้านทาน 680 โอห์มไปยังกราวด์
ตัวอย่างโค้ดและคำอธิบาย
ในโค้ด Arduino เรากำหนดพินสำหรับสวิตช์และระบุขนาดหน้าจอสำหรับการแมปค่าจอยสติ๊ก ฟังก์ชัน setup เริ่มต้นการสื่อสารซีเรียลและตั้งค่าโหมดพินสวิตช์
void setup() {
Serial.begin(9600); // เริ่มต้นการสื่อสารซีเรียล
pinMode(sw, INPUT_PULLUP); // ตั้งค่าพิน sw เป็นอินพุต
pinMode(13, OUTPUT); // พิน LED
}
ในฟังก์ชัน loop เราอ่านค่าแอนะล็อกสำหรับตำแหน่ง X และ Y และแมปค่าเหล่านั้นเข้ากับขนาดหน้าจอที่กำหนด สถานะของสวิตช์จะถูกอ่านและพิมพ์ไปยังซีเรียลมอนิเตอร์ด้วย
void loop() {
int x = analogRead(A0); // อ่านค่าแอนะล็อกสำหรับ X
int y = analogRead(A1); // อ่านค่าแอนะล็อกสำหรับ Y
int sStat = digitalRead(sw); // อ่านสถานะสวิตช์
// พิมพ์ค่าไปยังซีเรียลมอนิเตอร์
Serial.print("X: ");
Serial.print(xPos);
Serial.print(" Y: ");
Serial.println(yPos);
}
สุดท้าย โค้ดจะตรวจสอบว่าสวิตช์ถูกกดหรือไม่ โดยเปิดหรือปิด LED ตามสถานะของสวิตช์ ซึ่งให้การตอบสนองทางภาพเมื่อปุ่มจอยสติ๊กถูกกด
if(sStat == LOW) {
Serial.println("กดสวิตช์");
digitalWrite(13, HIGH); // เปิด LED
} else {
digitalWrite(13, LOW); // ปิด LED
}
เพื่อดูว่าค่าจอยสติ๊กเปลี่ยนแปลงแบบเรียลไทม์อย่างไร ให้อัปโหลดโค้ดไปยัง Arduino ของคุณและเปิดซีเรียลมอนิเตอร์ ค่าจะอัปเดตทุกครึ่งวินาที โดยแสดงตำแหน่ง X และ Y ปัจจุบันพร้อมกับสถานะสวิตช์ (ในวิดีโอที่ 01:30)
การสาธิต / สิ่งที่คาดหวัง
เมื่อคุณเลื่อนจอยสติ๊ก ค่า X และ Y ควรเปลี่ยนแปลงตามไปด้วย โดยอยู่ในช่วง 0 ถึง 1023 หากคุณกดปุ่มจอยสติ๊ก LED ที่เชื่อมต่อกับพิน 13 จะสว่างขึ้น ซึ่งบ่งบอกว่าสวิตช์ทำงานอยู่ หากจอยสติ๊กอยู่ตรงกลาง คุณควรเห็นค่ารอบๆ 512 สำหรับทั้งสองแกน ขึ้นอยู่กับการปรับเทียบของจอยสติ๊ก
ไทม์สแตมป์วิดีโอ
- 00:00 - แนะนำจอยสติ๊กแบบสองแกน
- 01:30 - คำอธิบายโค้ดและการทำงาน
- 02:45 - คำแนะนำการเดินสายไฟ
- 03:15 - ผลลัพธ์ที่คาดหวังและการทดสอบ
/*
* This is Arduino code to use a dual-axis XY joystick to read the value of the joystick position as X and Y, and
* also read the switch.
* Other Arduino library and videos: https://robojax.com
* Watch the video for this code to learn it fully.
* Watch the video here: https://youtu.be/6N8Iq353GM8
* This code is offered "as is" without any warranty.
* If you are sharing this code, you must keep this copyright note.
*/
/*
* Written for Robojax video on January 10, 2018
* by Ahmad Nejrabi, in Ajax, Ontario, Canada
* Copyright Robojax Inc.
*/
/*
* This is a dual-axis joystick sketch for Arduino.
* The position of the joystick is read and displayed on the serial monitor.
*/
#define sw 6
#define screenWidth 600
#define screenHeight 300
void setup() {
// initialize serial communication at 9600 bits per second:
Serial.begin(9600);
pinMode(sw,INPUT_PULLUP);// setting pin sw as input
pinMode(13,OUTPUT);
}
void loop() {
// Robojax Dual Axis joystick project
int x = analogRead(A0);// read analog value
int y = analogRead(A1);
int xPos = map(x, 0, 1023,0,screenWidth);
int yPos = map(y, 0, 1023,0,screenHeight);
int sStat = digitalRead(sw);//
// Robojax project
Serial.print("X: ");
Serial.print(xPos);
Serial.print(" Y: ");
Serial.println(yPos);// Robojax prints y value
if(sStat ==LOW){
Serial.println("Switch pressed");
digitalWrite(13,HIGH);// Turn LED ON
}else{
digitalWrite(13,LOW);// Turn LED OFF
}
delay(500);
}
สิ่งที่คุณอาจต้องการ
-
อเมซอนBuy XY joystick from Amazonamzn.to
แหล่งข้อมูลและเอกสารอ้างอิง
ยังไม่มีทรัพยากรเลย
ไฟล์📁
ไม่มีไฟล์ที่พร้อมใช้งาน