- Thành phần bắt buộc
- Arduino Leonardo
- Mô-đun cần điều khiển trục kép XY
- Sơ đồ mạch
- Giải thích mã và làm việc
Trước đây, chúng tôi đã giao tiếp Joystick với Arduino UNO để hiểu cách nó hoạt động và điều khiển bốn đèn LED trên chuyển động trái, phải, lên và xuống của nó. Trong dự án này, chúng tôi sẽ sử dụng Joystick tương tự như Gamepad hoặc bộ điều khiển trò chơi để chơi bất kỳ trò chơi máy tính nào yêu cầu chuyển động trái, phải, lên và xuống. Để chơi các trò chơi yêu cầu nhiều tùy chọn điều khiển hơn, có thể sử dụng hai hoặc nhiều cần điều khiển. Ở đây chúng ta sẽ sử dụng Arduino Leonardo để giao diện Joystick làm Game controller. Arduino Leonardo có lợi thế hơn Uno là chúng ta có thể cài đặt trình điều khiển USB trên đó và nó có thể được phát hiện như chuột, bàn phím hoặc phím điều khiển bằng máy tính khi kết nối.
Thành phần bắt buộc
- Arduino Leonardo
- Mô-đun cần điều khiển trục kép XY
- Arduino IDE
- Kết nối dây
Arduino Leonardo
Đối với dự án này, chúng tôi đang sử dụng Arduino Leonardo, đây là một bảng vi điều khiển dựa trên ATmega32u4. Nó có 20 chân đầu vào / đầu ra kỹ thuật số (trong đó 7 chân có thể được sử dụng làm đầu ra PWM và 12 chân làm đầu vào Analog), bộ dao động tinh thể 16 MHz, kết nối micro USB, giắc cắm nguồn, tiêu đề ICSP và nút đặt lại. Nó chứa mọi thứ cần thiết để hỗ trợ vi điều khiển; chỉ cần kết nối thiết bị với máy tính bằng cáp USB hoặc cấp nguồn bằng bộ chuyển đổi AC-sang-DC hoặc pin để bắt đầu.
Leonardo khác với tất cả các bo mạch trước ở chỗ ATmega32u4 có giao tiếp USB tích hợp, loại bỏ sự cần thiết của bộ xử lý thứ cấp. Điều này cho phép Leonardo xuất hiện với một máy tính được kết nối dưới dạng chuột và bàn phím, ngoài cổng COM / nối tiếp (CDC) ảo.
Thông số kỹ thuật
Vi điều khiển | ATmega32u4 |
Điện áp hoạt động | 5V |
Điện áp đầu vào (Khuyến nghị) | 7-12V |
Điện áp đầu vào (giới hạn) | 6-20V |
Các chân I / O kỹ thuật số | 20 |
Kênh PWM | 7 |
Các kênh đầu vào tương tự | 12 |
Dòng điện DC trên mỗi chân I / O | 40 mA |
Dòng điện một chiều cho chân 3,3V | 50 mA |
Bộ nhớ flash | 32 KB (ATmega32u4) trong đó 4 KB được bộ nạp khởi động sử dụng |
SRAM | 2,5 KB (ATmega32u4) |
EEPROM | 1 KB (ATmega32u4) |
Tốc độ đồng hồ | 16 MHz |
Chiều dài | 68,6 mm |
Chiều rộng | 53,3 mm |
Cân nặng | 20 g |
Tham chiếu hết mã PIN
Mô-đun cần điều khiển trục kép XY
Cần điều khiển có nhiều hình dạng và kích cỡ khác nhau. Một mô-đun Joystick điển hình được hiển thị trong hình bên dưới. Mô-đun Joystick này thường cung cấp các Đầu ra Analog và điện áp đầu ra được cung cấp bởi mô-đun này liên tục thay đổi theo hướng mà chúng ta di chuyển nó. Và chúng ta có thể nhận được hướng di chuyển bằng cách diễn giải những thay đổi điện áp này bằng cách sử dụng một số vi điều khiển. Trước đây, chúng tôi đã giao diện joy stick với các bộ vi điều khiển khác nhau:
- Giao diện điều khiển với Arduino
- Giao diện điều khiển với Raspberry Pi
- Cần điều khiển giao diện với Vi điều khiển PIC
- Giao diện phím điều khiển với Vi điều khiển AVR
Mô-đun cần điều khiển này có hai trục như bạn có thể thấy. Chúng là trục X và trục Y. Mỗi trục của JOY STICK được gắn vào một chiết áp hoặc nồi. Điểm giữa của các bình này được chuyển ra ngoài là Rx và Ry. Vì vậy Rx và Ry là điểm thay đổi của các bình này. Khi Cần điều khiển ở chế độ chờ, Rx và Ry hoạt động như bộ phân áp.
Khi cần điều khiển được di chuyển dọc theo trục hoành, điện áp tại chân Rx thay đổi. Tương tự, khi nó được dịch chuyển dọc theo trục tung, điện áp tại chân Ry thay đổi. Vì vậy, chúng ta có bốn hướng của Cần điều khiển trên hai đầu ra ADC. Khi thanh được di chuyển, điện áp trên mỗi chân sẽ cao hoặc thấp tùy thuộc vào hướng.
Sơ đồ mạch
Bộ điều khiển trò chơi cần điều khiển Arduino này yêu cầu kết nối giữa Arduino và Cần điều khiển như sau:
Giải thích mã và làm việc
Mã hoàn chỉnh với một video demo được đưa ra ở cuối; ở đây chúng tôi đang giải thích một vài phần quan trọng của nó.
Đầu tiên, chúng ta cần khởi tạo thư viện bàn phím
#include
Tiếp theo trong đoạn mã dưới đây, chúng tôi đã khởi tạo trục X và trục Y của mô-đun Cần điều khiển cho chân Analog A0 và A1 tương ứng.
const int X_pin và const int Y_pin tương ứng
Giá trị tương tự của chân VRX được đọc và nếu giá trị là 1023 thì lệnh cho “lên” được đưa ra và nếu giá trị là 0 thì lệnh cho “xuống” được đưa ra.
Tương tự, giá trị tương tự của chân VRY được đọc và nếu giá trị là 1023 thì lệnh cho “phải” được đưa ra và nếu giá trị là 0 thì lệnh cho “trái” được đưa ra.
Cần điều khiển cũng có một nút nhấn ở trên cùng để nút này (SW) cũng được đọc và nếu nút được nhấn, giá trị sẽ là 0 thì lệnh cho “enter” được đưa ra.
Cuối cùng ghi mã vào Arduino và kết nối Arduino với máy tính.
Tiếp theo, hãy kiểm tra ' Thiết bị và Máy in' trong bảng điều khiển của bạn, bạn sẽ có thể thấy " Arduino Leonardo" trong phần thiết bị như được hiển thị trong hình ảnh bên dưới. Bây giờ bạn đã sẵn sàng chơi với cần điều khiển.
Chúng tôi có thể kiểm soát bất kỳ điều khiển trò chơi nào bằng Cần điều khiển này. Cần điều khiển có hai chiết áp bên trong nó, một chiết áp cho chuyển động trục X và một cho chuyển động trục Y. Mỗi chiết áp nhận được 5v từ Arduino. Vì vậy, khi chúng ta di chuyển cần điều khiển, giá trị điện áp sẽ thay đổi và giá trị tương tự tại các chân Analog A0 và A1 cũng sẽ thay đổi. Vì vậy cần điều khiển sẽ hoạt động như một gamepad.
Vì vậy, đây là cách một Cần điều khiển bình thường có thể được chuyển đổi thành Bộ điều khiển trò chơi bằng Arduino Leonardo và có thể được sử dụng để chơi các trò chơi có tất cả các điều khiển di chuyển sang trái, phải, lên và xuống. Như đã nói với earliar, nhiều hơn một Cần điều khiển có thể được giao tiếp để có được nhiều điều khiển hơn ngoài bốn chức năng cơ bản này.