ก่อนหน้านี้เราได้เชื่อมต่อจอยสติ๊กกับ Arduino UNO เพื่อทำความเข้าใจว่ามันทำงานอย่างไรและควบคุม LED สี่ดวงที่การเคลื่อนไหวซ้ายขวาขึ้นและลง ในโครงการนี้เราจะใช้จอยสติ๊กแบบเดียวกับ Gamepad หรือตัวควบคุมเกมเพื่อเล่นเกมคอมพิวเตอร์ใด ๆที่ต้องใช้การเคลื่อนไหวซ้ายขวาขึ้นและลง ในการเล่นเกมที่ต้องการตัวเลือกการควบคุมเพิ่มเติมสามารถใช้จอยสติ๊กตั้งแต่สองตัวขึ้นไป ที่นี่เราจะใช้ Arduino Leonardo เพื่อเชื่อมต่อ Joystick เป็นตัวควบคุมเกม Arduino Leonardo มีข้อได้เปรียบเหนือ Uno ที่เราสามารถติดตั้งไดรเวอร์ USB ได้และสามารถตรวจจับได้ว่าเป็นเมาส์แป้นพิมพ์หรือจอยสติ๊กจากคอมพิวเตอร์เมื่อเชื่อมต่อ
ส่วนประกอบที่จำเป็น
- Arduino Leonardo
- โมดูลจอยสติ๊ก XY แกนคู่
- Arduino IDE
- การเชื่อมต่อสายไฟ
Arduino Leonardo
สำหรับโครงการนี้เราใช้ Arduino Leonardo ซึ่งเป็นบอร์ดไมโครคอนโทรลเลอร์ที่ใช้ ATmega32u4 มีพินอินพุต / เอาท์พุตดิจิทัล 20 พิน (ซึ่ง 7 ตัวสามารถใช้เป็นเอาต์พุต PWM และ 12 เป็นอินพุตอนาล็อก) ออสซิลเลเตอร์คริสตัล 16 MHz การเชื่อมต่อไมโคร USB แจ็คเพาเวอร์หัวต่อ ICSP และปุ่มรีเซ็ต ประกอบด้วยทุกสิ่งที่จำเป็นในการรองรับไมโครคอนโทรลเลอร์ เพียงแค่เชื่อมต่อกับคอมพิวเตอร์ด้วยสาย USB หรือจ่ายไฟด้วยอะแดปเตอร์ AC-to-DC หรือแบตเตอรี่เพื่อเริ่มต้น
Leonardo แตกต่างจากบอร์ดก่อนหน้าทั้งหมดตรงที่ ATmega32u4 มีการสื่อสารผ่าน USB ในตัวทำให้ไม่จำเป็นต้องใช้โปรเซสเซอร์รอง สิ่งนี้ช่วยให้ Leonardo ปรากฏบนคอมพิวเตอร์ที่เชื่อมต่อเป็นเมาส์และคีย์บอร์ดนอกเหนือจากพอร์ตอนุกรม / COM เสมือน (CDC)
ข้อกำหนดทางเทคนิค
ไมโครคอนโทรลเลอร์ | ATmega32u4 |
แรงดันไฟฟ้าที่ใช้งาน | 5V |
แรงดันไฟฟ้าขาเข้า (แนะนำ) | 7-12V |
แรงดันไฟฟ้าขาเข้า (ขีด จำกัด) | 6-20V |
พิน I / O ดิจิทัล | 20 |
ช่อง PWM | 7 |
ช่องสัญญาณอนาล็อก | 12 |
กระแสไฟตรงต่อขา I / O | 40 มิลลิแอมป์ |
กระแสไฟตรงสำหรับ 3.3V Pin | 50 mA |
หน่วยความจำแฟลช | 32 KB (ATmega32u4) ซึ่ง 4 KB ที่ bootloader ใช้ |
SRAM | 2.5 กิโลไบต์ (ATmega32u4) |
EEPROM | 1 กิโลไบต์ (ATmega32u4) |
ความเร็วนาฬิกา | 16 เมกะเฮิรตซ์ |
ความยาว | 68.6 มม |
ความกว้าง | 53.3 มม |
น้ำหนัก | 20 ก |
การอ้างอิง PIN Out
โมดูลจอยสติ๊ก XY แกนคู่
จอยสติ๊ก มีให้เลือกหลายรูปทรงและขนาด โมดูลจอยสติ๊กทั่วไป จะแสดงในรูปด้านล่าง โดยทั่วไปโมดูลจอยสติ๊กนี้จะให้เอาต์พุตแบบอนาล็อกและแรงดันเอาต์พุตที่ให้มาจากโมดูลนี้จะเปลี่ยนไปเรื่อย ๆ ตามทิศทางที่เราเคลื่อนย้าย และเราสามารถหาทิศทางการเคลื่อนที่ได้โดยการตีความการเปลี่ยนแปลงแรงดันไฟฟ้าเหล่านี้โดยใช้ไมโครคอนโทรลเลอร์บางตัว ก่อนหน้านี้เราได้เชื่อมต่อ joy stick กับไมโครคอนโทรลเลอร์ที่แตกต่างกัน:
- การเชื่อมต่อจอยสติ๊กกับ Arduino
- การเชื่อมต่อจอยสติ๊กกับ Raspberry Pi
- การเชื่อมต่อจอยสติ๊กกับไมโครคอนโทรลเลอร์ PIC
- การเชื่อมต่อจอยสติ๊กกับไมโครคอนโทรลเลอร์ AVR
โมดูลจอยสติ๊กนี้มีสองแกนอย่างที่คุณเห็น พวกมันคือแกน X และแกน Y แต่ละแกนของ JOY STICK ติดตั้งกับโพเทนชิออมิเตอร์หรือหม้อ จุดกึ่งกลางของหม้อเหล่านี้ถูกขับออกเป็น Rx และ Ry ดังนั้น Rx และ Ry จึงเป็นจุดแปรผันของกระถางเหล่านี้ เมื่อจอยสติ๊กอยู่ในโหมดสแตนด์บาย Rx และ Ry จะทำหน้าที่เป็นตัวแบ่งแรงดันไฟฟ้า
เมื่อจอยสติ๊กถูกย้ายไปตามแกนแนวนอนแรงดันไฟฟ้าที่ขา Rx จะเปลี่ยนไป ในทำนองเดียวกันเมื่อเคลื่อนไปตามแกนแนวตั้งแรงดันไฟฟ้าที่ขา Ry จะเปลี่ยนไป ดังนั้นเราจึง มีจอยสติ๊กสี่ทิศทางบนเอาต์พุต ADC สองตัว เมื่อแท่งไม้ถูกเคลื่อนย้ายแรงดันไฟฟ้าของแต่ละพินจะสูงหรือต่ำขึ้นอยู่กับทิศทาง
แผนภูมิวงจรรวม
นี้Arduino จอยสติ๊กควบคุมเกมต้องใช้การเชื่อมต่อระหว่าง Arduino และจอยสติ๊กดังนี้
รหัสและคำอธิบายการทำงาน
รหัสที่สมบูรณ์พร้อมวิดีโอสาธิตจะได้รับในตอนท้าย ที่นี่เรากำลังอธิบายส่วนสำคัญบางส่วนของมัน
ประการแรกเราต้องเริ่มต้นไลบรารีแป้นพิมพ์
# รวม
ถัดไปในโค้ดด้านล่างเราได้เริ่มต้นแกน X และ Y ของโมดูลจอยสติ๊กสำหรับอะนาล็อกพิน A0 และ A1 ตามลำดับ
const int X_pin และ const int Y_pin ตามลำดับ
ค่าอะนาล็อกของพิน VRX จะถูกอ่านและหากค่าเป็น 1023 คำสั่งสำหรับ“ ขึ้น” จะได้รับและหากค่าเป็น 0 คำสั่งสำหรับ“ ลง” จะได้รับ
ในทำนองเดียวกันค่าอะนาล็อกของพิน VRY จะถูกอ่านและถ้าค่าเป็น 1023 คำสั่งสำหรับ "ขวา" จะได้รับและถ้าค่าเป็น 0 คำสั่งสำหรับ "ซ้าย" จะได้รับ
จอยสติ๊กยังมีปุ่มกดที่ด้านบนดังนั้นปุ่มนี้ (SW) จึงถูกอ่านด้วยและหากกดปุ่มนี้ค่าจะเป็น 0 คำสั่งสำหรับ "enter" จะได้รับ
ในที่สุดเบิร์นโค้ดลงใน Arduino และเชื่อมต่อ Arduino กับคอมพิวเตอร์
จากนั้นตรวจสอบ ' อุปกรณ์และเครื่องพิมพ์' ในแผงควบคุมของคุณคุณจะสามารถเห็น " Arduino Leonardo"ภายใต้ส่วนอุปกรณ์ดังที่แสดงในภาพด้านล่าง ตอนนี้คุณพร้อมที่จะเล่นกับจอยสติ๊กแล้ว
เราสามารถควบคุมการควบคุมเกมใด ๆ โดยใช้จอยสติ๊กนี้ จอยสติ๊กมีโพเทนชิโอมิเตอร์สองตัวอยู่ข้างในตัวหนึ่งใช้สำหรับการเคลื่อนที่ของแกน X และอีกตัวหนึ่งสำหรับการเคลื่อนที่ของแกน Y โพเทนชิออมิเตอร์แต่ละตัวได้รับ 5v จาก Arduino เมื่อเราขยับจอยสติ๊กค่าแรงดันไฟฟ้าจะเปลี่ยนไปและค่าอนาล็อกที่หมุดอะนาล็อก A0 และ A1 ก็จะเปลี่ยนไปด้วย ดังนั้นจอยสติ๊กจะทำหน้าที่เป็นแป้นเกม
นี่คือวิธีที่จอยสติ๊กปกติสามารถแปลงเป็น Game Controller โดยใช้ Arduino Leonardoและสามารถใช้เล่นเกมที่มีการควบคุมทั้งหมดเพื่อเลื่อนไปทางซ้ายขวาขึ้นและลง ตามที่บอกไว้ก่อนหน้านี้สามารถเชื่อมต่อจอยสติ๊กได้มากกว่าหนึ่งตัวเพื่อให้สามารถควบคุมได้มากขึ้นนอกเหนือจากฟังก์ชันพื้นฐานทั้งสี่นี้