สิ่งแรกที่อยู่ในใจของเราเมื่อฟังคำว่าจอยสติ๊กคือตัวควบคุมเกม ใช่มันเหมือนกันทุกประการและสามารถใช้เพื่อการเล่นเกมได้ นอกเหนือจากการเล่นเกมแล้วยังมีแอปพลิเคชั่นอื่น ๆ อีกมากมายในอุปกรณ์อิเล็กทรอนิกส์ DIY จอยสติ๊กนี้ไม่ใช่อะไรนอกจากการรวมโพเทนชิโอมิเตอร์สองตัวสำหรับระนาบ X และ Y ตามลำดับ มันอ่านแรงดันไฟฟ้าผ่านโพเทนชิออมิเตอร์และให้ค่าอนาล็อกแก่ Arduino และค่าอนาล็อกจะเปลี่ยนไปเมื่อเราขยับก้านจอยสติ๊ก (ซึ่งเป็นเพียงตัวชี้โพเทนชิออมิเตอร์)
ในวงจรนี้เรากำลังเชื่อมต่อ Joystick กับ Arduinoเพียงแค่ควบคุม LED สี่ดวงตามการเคลื่อนไหวของจอยสติ๊ก เราได้วาง LED 4 ดวงในลักษณะที่แสดงถึงทิศทางของการเคลื่อนที่ของก้านจอยสติ๊ก จอยสติ๊กนี้ยังมีปุ่มกดซึ่งสามารถใช้เพื่อวัตถุประสงค์อื่น ๆ หรือสามารถปล่อยทิ้งไว้ได้ ไฟ LED ดวงเดียวติดอยู่ที่สวิตช์ของจอยสติ๊กเมื่อกดปุ่มจอยสติ๊ก LED เดี่ยวจะเปิดขึ้น
วัสดุที่จำเป็น
- Arduino UNO
- โมดูลจอยสติ๊ก
- ไฟ LED -5
- ตัวต้านทาน: 100ohm-3
- การเชื่อมต่อสายไฟ
- เขียงหั่นขนม
แผนภูมิวงจรรวม
โมดูลจอยสติ๊ก
จอยสติ๊ก มีให้เลือกหลายรูปทรงและขนาด โมดูลจอยสติ๊กทั่วไป จะแสดงในรูปด้านล่าง โดยทั่วไปโมดูลจอยสติ๊กนี้จะให้เอาต์พุตแบบอนาล็อกและแรงดันเอาต์พุตที่ให้มาจากโมดูลนี้จะเปลี่ยนไปเรื่อย ๆ ตามทิศทางที่เราเคลื่อนย้าย และเราสามารถหาทิศทางการเคลื่อนที่ได้โดยการตีความการเปลี่ยนแปลงแรงดันไฟฟ้าเหล่านี้โดยใช้ไมโครคอนโทรลเลอร์บางตัว ก่อนหน้านี้เราได้เชื่อมต่อ Joystick กับ AVR และ Raspberry Pi
โมดูลจอยสติ๊กนี้มีสองแกนอย่างที่คุณเห็น พวกมันคือแกน X และแกน Y แต่ละแกนของ JOYSTICK ติดตั้งกับโพเทนชิออมิเตอร์หรือหม้อ จุดกึ่งกลางของหม้อเหล่านี้ถูกขับออกเป็น Rx และ Ry ดังนั้น Rx และ Ry จึงเป็นจุดแปรผันของกระถางเหล่านี้ เมื่อจอยสติ๊กอยู่ในโหมดสแตนด์บาย Rx และ Ry จะทำหน้าที่เป็นตัวแบ่งแรงดันไฟฟ้า
เมื่อจอยสติ๊กถูกเคลื่อนไปตามแกนแนวนอนแรงดันไฟฟ้าที่ขา Rx จะเปลี่ยนไป ในทำนองเดียวกันเมื่อเคลื่อนไปตามแกนแนวตั้งแรงดันไฟฟ้าที่ขา Ry จะเปลี่ยนไป ดังนั้นเราจึง มีจอยสติ๊กสี่ทิศทางบนเอาต์พุต ADC สองตัว เมื่อแท่งไม้ถูกเคลื่อนย้ายแรงดันไฟฟ้าของแต่ละพินจะสูงหรือต่ำขึ้นอยู่กับทิศทาง
ที่นี่เรากำลังเชื่อมต่อโมดูลจอยสติ๊กนี้กับ Arduino UNO ซึ่งมาพร้อมกับกลไก ADC (Analog to Digital Converter) ในตัวตามที่แสดงในวิดีโอตอนท้าย เรียนรู้เพิ่มเติมเกี่ยวกับการใช้ ADC ของ Arduino ที่นี่
รหัสและคำอธิบาย
รหัส Arduino ที่สมบูรณ์จะกล่าวถึงในตอนท้าย
ในโค้ดด้านล่างเราได้กำหนดแกน X และ Y ของโมดูลจอยสติ๊กสำหรับขาอะนาล็อก A0 และ A1 ตามลำดับ
#define joyX A0 #define joyY A1
ตอนนี้ในรหัสด้านล่างเรากำลังเริ่มต้น PIN 2 ของ Arduino สำหรับสวิตช์ (ปุ่มกด) ของโมดูลจอยสติ๊กและค่าของ ปุ่มสเตท และ ปุ่มสเตท 1 จะเป็น 0 เมื่อเริ่มต้น
ปุ่ม int = 2; int buttonState = 0; int buttonState1 = 0;
ในโค้ดด้านล่างนี้เรากำลังตั้งค่าอัตราการส่งข้อมูลเป็น 9600 และกำหนด Pin 7 เป็นพินเอาต์พุตและพินปุ่มเป็นพินอินพุต ในขั้นต้นหมุดของปุ่มจะยังคงสูงอยู่จนกว่าสวิตช์จะกด
การตั้งค่าเป็นโมฆะ () {pinMode (7, OUTPUT); pinMode (ปุ่ม INPUT); digitalWrite (ปุ่มสูง); Serial.begin (9600); }
ในรหัสนี้เรากำลังอ่านค่าจากพินอะนาล็อก A0 และ A1และพิมพ์แบบอนุกรม
int xValue = analogRead (joyX); int yValue = analogRead (joyY); Serial.print (xValue); Serial.print ("\ t"); Serial.println (yValue);
เงื่อนไขสำหรับการเปิดและปิด LED ตามการเคลื่อนที่ของก้านจอยสติ๊กได้กำหนดไว้ในรหัสด้านล่าง ที่นี่เรากำลังรับค่าอนาล็อกของแรงดันไฟฟ้าที่ขา A0 และ A1 ของ Arduino ค่าอนาล็อกเหล่านี้จะเปลี่ยนไปเมื่อเราขยับจอยสติ๊กและไฟ LED จะเรืองแสงตามการเคลื่อนไหวของจอยสติ๊ก
เงื่อนไขนี้สำหรับการเคลื่อนที่ของก้านจอยสติ๊กในทิศทางแกน -Y
ถ้า (xValue> = 0 && yValue <= 10) {digitalWrite (10, HIGH); } else {digitalWrite (10, LOW);}
เงื่อนไขนี้ใช้สำหรับการเคลื่อนที่ของก้านจอยสติ๊กในทิศทางแกน -X
ถ้า (xValue <= 10 && yValue> = 500) {digitalWrite (11, สูง); } else {digitalWrite (11, LOW);}
เงื่อนไขนี้ใช้สำหรับการเคลื่อนที่ของก้านจอยสติ๊กในทิศทาง + แกน X
ถ้า (xValue> = 1020 && yValue> = 500) {digitalWrite (9, HIGH); } else {digitalWrite (9, LOW);}
เงื่อนไขนี้ใช้สำหรับการเคลื่อนที่ของก้านจอยสติ๊กในทิศทาง + แกน Y
ถ้า (xValue> = 500 && yValue> = 1020) {digitalWrite (8, HIGH); } else {digitalWrite (8, LOW);}
เมื่อเราเลื่อนก้านควบคุมในแนวทแยงมุมตำแหน่งหนึ่งจะมาเมื่อค่าอะนาล็อกของ X และ Y จะเป็น 1023 และ 1023 ตามลำดับ LED ทั้ง Pin 9 และ Pin 8 จะติดสว่าง เพราะเป็นไปตามเงื่อนไขของ LED ดังนั้นสำหรับการลบที่ไม่ตรงกันนั้นเราได้กำหนดเงื่อนไขว่าถ้าค่าของ (X, Y) เป็น (1023, 1023) LED ทั้งสองจะยังคงอยู่ในสภาพ OFF
ถ้า (xValue> = 1020 && yValue> = 1020) {digitalWrite (9, LOW); digitalWrite (8, ต่ำ); }
ด้านล่างสภาพถูกนำมาใช้ในการดำเนินงานLED เชื่อมต่อกับสวิทช์ปุ่มกด เมื่อเรากดสวิตช์จอยสติ๊กไฟ LED จะเปิดและล็อคจนกว่าปุ่มจะคลาย เป็นทางเลือกในการใช้สวิตช์ปุ่มกดบนโมดูลจอยสติ๊ก
ถ้า (buttonState == LOW) {Serial.println ("Switch = High"); digitalWrite (7, สูง); } else {digitalWrite (7, LOW);}
การควบคุม LED โดยใช้จอยสติ๊กกับ Arduino
หลังจากอัปโหลดรหัสไปยัง Arduino และเชื่อมต่อส่วนประกอบตามแผนภาพวงจรตอนนี้เราสามารถควบคุม LED ด้วยจอยสติ๊กได้แล้ว เราสามารถเปิดไฟ LED สี่ดวงในแต่ละทิศทางตามการเคลื่อนไหวของก้านจอยสติ๊ก จอยสติ๊กมีโพเทนชิออมิเตอร์สองตัวอยู่ข้างในตัวหนึ่งใช้สำหรับการเคลื่อนที่ของแกน X และอีกอันสำหรับการเคลื่อนที่ของแกน Y โพเทนชิออมิเตอร์แต่ละตัวจะได้รับ 5v จาก Arduino เมื่อเราขยับจอยสติ๊กค่าแรงดันไฟฟ้าจะเปลี่ยนไปและค่าอนาล็อกที่หมุดอะนาล็อก A0 และ A1 ก็จะเปลี่ยนไปด้วย
ดังนั้นจาก Arduino เรากำลังอ่านค่าอะนาล็อกสำหรับแกน X และ Y และเปิดไฟ LED ตามการเคลื่อนที่ของแกนของจอยสติ๊ก สวิตช์ปุ่มกดบนโมดูลจอยสติ๊กใช้เพื่อควบคุม LED เดี่ยวในวงจรดังแสดงในวิดีโอด้านล่าง