- Vật liệu cần thiết
- Sơ đồ mạch
- Mô-đun cần điều khiển
- Mã và giải thích
- Điều khiển đèn LED bằng Joystick với Arduino
Điều đầu tiên xuất hiện trong đầu chúng tôi khi nghe từ Joystick là bộ điều khiển trò chơi. Có, nó hoàn toàn giống nhau và có thể được sử dụng cho mục đích chơi game. Ngoài chơi game, nó còn có nhiều ứng dụng khác trong đồ điện tử DIY. Cần điều khiển này không có gì khác ngoài sự kết hợp của hai chiết áp cho mặt phẳng X và Y. Nó đọc điện áp thông qua chiết áp và cung cấp giá trị tương tự cho Arduino, và giá trị tương tự thay đổi khi chúng ta di chuyển trục cần điều khiển (đơn giản là con trỏ chiết áp).
Trong mạch này, chúng ta đang giao tiếp Joystick với Arduino chỉ bằng cách điều khiển bốn đèn LED theo chuyển động của Joystick. Chúng tôi đã đặt 4 đèn LED theo cách mà nó thể hiện hướng chuyển động của trục cần điều khiển. Cần điều khiển này cũng có một nút nhấn có thể được sử dụng cho nhiều mục đích khác nhau hoặc có thể để ở chế độ chờ. Một đèn LED đơn cũng được gắn vào công tắc của cần điều khiển, khi nhấn nút cần điều khiển thì đèn LED đơn đó sẽ BẬT.
Vật liệu cần thiết
- Arduino UNO
- Mô-đun cần điều khiển
- Đèn LED-5
- Điện trở: 100ohm-3
- Kết nối dây
- Breadboard
Sơ đồ mạch
Mô-đun cần điều khiển
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 tiếp Joystick với AVR và Raspberry Pi.
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 JOYSTICK đượ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 hướng 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ư một bộ phân áp.
Khi di chuyển cần điều khiể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.
Ở đây, chúng tôi đang kết nối mô-đun Joystick này với Arduino UNO đi kèm với cơ chế ADC (Bộ chuyển đổi tương tự sang kỹ thuật số) sẵn có như được hiển thị trong video ở cuối. Tìm hiểu thêm về cách sử dụng ADC của Arduino tại đây.
Mã và giải thích
Mã Arduino hoàn chỉnh được đề cập ở cuối.
Trong đoạn mã dưới đây, chúng tôi đã xác định trục X và Y của mô-đun Cần điều khiển cho chân tương tự A0 và A1 tương ứng.
#define joyX A0 #define joyY A1
Bây giờ, trong đoạn mã dưới đây, chúng tôi đang khởi tạo mã PIN 2 của Arduino cho Công tắc (nút nhấn) của mô-đun Cần điều khiển và giá trị của buttontate và buttontate1 sẽ là 0 khi bắt đầu.
nút int = 2; int buttonState = 0; int buttonState1 = 0;
Trong đoạn mã dưới đây, chúng tôi đang thiết lập tốc độ truyền thành 9600 và xác định Pin 7 là chân đầu ra và chân nút làm Chân đầu vào. Ban đầu, chốt của nút sẽ vẫn ở mức cao cho đến khi Công tắc sẽ nhấn.
void setup () {pinMode (7, OUTPUT); pinMode (nút, INPUT); digitalWrite (nút, CAO); Serial.begin (9600); }
Ở đây, trong đoạn mã này, chúng tôi đang đọc các giá trị từ chân tương tự A0 và A1 và in tuần tự.
int xValue = analogRead (joyX); int yValue = analogRead (joyY); Serial.print (xValue); Serial.print ("\ t"); Serial.println (yValue);
Các điều kiện để bật và tắt đèn LED theo chuyển động của trục Cần điều khiển, được xác định trong mã bên dưới. Ở đây chúng ta chỉ lấy các giá trị tương tự của điện áp tại chân A0 và A1 của Arduino. Các giá trị tương tự này sẽ thay đổi khi chúng ta di chuyển cần điều khiển và đèn LED sẽ phát sáng theo chuyển động của cần điều khiển.
Điều kiện này dành cho chuyển động của trục Cần điều khiển theo hướng trục Y
if (xValue> = 0 && yValue <= 10) {digitalWrite (10, HIGH); } else {digitalWrite (10, LOW);}
Điều kiện này dành cho chuyển động của trục Cần điều khiển theo hướng trục -X
if (xValue <= 10 && yValue> = 500) {digitalWrite (11, HIGH); } else {digitalWrite (11, LOW);}
Điều kiện này dành cho chuyển động của trục Cần điều khiển theo hướng trục + X
if (xValue> = 1020 && yValue> = 500) {digitalWrite (9, HIGH); } else {digitalWrite (9, LOW);}
Điều kiện này dành cho chuyển động của trục Cần điều khiển theo hướng + trục Y
if (xValue> = 500 && yValue> = 1020) {digitalWrite (8, HIGH); } else {digitalWrite (8, LOW);}
Khi chúng ta di chuyển trục cần điều khiển theo đường chéo thì đến một vị trí khi giá trị tương tự của X và Y sẽ lần lượt là 1023 và 1023, cả đèn LED của Pin 9 và Pin 8 sẽ phát sáng. Vì nó thỏa mãn điều kiện của đèn LED. Vì vậy, để loại bỏ sự không khớp đó, chúng tôi đã đưa ra một điều kiện rằng nếu giá trị của (X, Y) là (1023, 1023) thì cả hai đèn LED vẫn ở điều kiện TẮT
if (xValue> = 1020 && yValue> = 1020) {digitalWrite (9, LOW); digitalWrite (8, THẤP); }
Điều kiện dưới đây được sử dụng để vận hành đèn LED được kết nối với Công tắc nút nhấn. Khi chúng ta nhấn công tắc Cần điều khiển, đèn LED sẽ BẬT và chốt cho đến khi nút nhả. Tùy chọn sử dụng công tắc Nút nhấn trên mô-đun Cần điều khiển.
if (buttonState == LOW) {Serial.println ("Switch = High"); digitalWrite (7, CAO); } else {digitalWrite (7, LOW);}
Điều khiển đèn LED bằng Joystick với Arduino
Sau khi tải mã lên Arduino và kết nối các thành phần theo sơ đồ mạch, bây giờ chúng ta có thể điều khiển các đèn LED bằng Joystick. Chúng ta có thể BẬT bốn đèn LED ở mỗi hướng theo chuyển động của trục Cần điều khiển. Cần điều khiển có hai chiết áp bên trong nó, một chiết áp dành cho chuyển động trục X và một dụng cụ khác dành 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, từ Arduino, chúng tôi đang đọc giá trị tương tự cho trục X và Y và BẬT đèn LED theo chuyển động trục của Cần điều khiển. Một nút nhấn công tắc trên mô-đun Joystick được sử dụng để điều khiển đèn LED đơn trong mạch như trong video bên dưới.