Thiết Kế Robot Và Lập Trình Sử Dụng Tay PS2 Không Dây - MTE
Có thể bạn quan tâm
Từ nhỏ, có lẽ chúng ta đều rất thích những đồ điện tử, nhất là chiếc xe điều khiển từ xa . Việc Sử dụng tay PS2 để chơi game đua xe trên các máy playstation chắc cũng là niềm đam mê của nhiều người . Vậy tại sao chúng ta không kết hợp chúng tại và tự tay tạo ra 1 chiếc xe điều khiển từ xa bằng tay PS2 không dây nhỉ . Ngày hôm nay chúng ta cùng nhau tạo nên một chiếc xe điều khiển từ xa theo ý của mình nhé.
Thiết kế và lắp ráp robotVideo hướng dẫn thiết kế và lắp ghép robot
https://youtu.be/nRdVDmc3aIU
Các bạn có thể tải bản thiết kế tại đây :
File solid dành cho ai muốn chỉnh sửa thông số xe, logo …: file solid
File Gcode, cho vào máy in 3D là ra sản phẩm : file in3D
File cắt mica : Cắt mica
Thành quả sau khi lắp ráp
Lắp ráp khung cho robot đã xong, chúng ta cùng bắt tay vào hoàn thiện và đi dây cho robot thôi nào
Chuẩn BịPhần cứng | |
---|---|
Arduino Uno | x1 |
Arduino motor shield L298 | x1 |
PS2 Wireless Controller | x1 |
Giới thiệu module Arduino motor shield L298
Thông số kĩ thuật
Điện áp của tín hiệu điều khiển | : 5V |
Điện áp hoạt động | : 6.5 -12V |
Iss | : ≤ 36mA |
Dòng tối đa cho mỗi cầu H | : ≤ 2A |
Công suất tối đa | : 25W (T= 75°C) |
Nhiệt độ hoạt động | : -25°C ~ +130°C |
Kết nối chân của module Arduino motor shield với Arduino Uno
Tên kênh | Chức năng | Pin |
Kênh A | Enable | 10 |
Direction | 12 | |
Kênh B | Enable | 11 |
Direction | 13 | |
Buzzer | 4 |
Module này rất tiện lơi, nó có thể cắm trực tiếp được lên Arduino Uno hoặc Arduino Mega … Giờ chỉ cần lắp 2 động cơ và đúng header của mạch và lập trình thôi, Thật dễ dàng phải không các bạn.
Ngoài ra module motor shield còn tích hợp thêm còi báo, tích hợp jum cắm servo, blutooth… Khi nào dùng tới các chân đó mình sẽ hướng dẫn kĩ hơn nha. À, robot này còn có chức năng dò line nữa, Trong bài hướng dẫn này bọn mình sẽ sử dụng module dò line do lamchucongnghe.com phát triển. Nếu chưa có module này các bạn có thể sử dụng các module dò line số tương tự trên thị trường nhé ( module này bên mình có thêm chức năng lấy mẫu sân và chống nhiễu nên dùng khá ok đó )
Tay PS2 wireless controller
Thông số kĩ thuật
Nền tảng làm việc | : For PS2 |
Loại kết nối | : 2.4G Wireless |
Khoảng cách hoạt động | : < 8m |
Nhiệt độ hoạt động | : -20~65°C |
Độ ẩm hoạt động | : 20%-80% |
Các bạn đi dây theo sơ đồ này nhé
Thư viện dùng cho tay PS2 : Tải tại đây
Code test tay Ps2
//***************************************************************// // Author : RedFox // // Website : lamchucongnghe.com // // Fanpage : fb.com//lamchucongnghevn // // Shop sendo : sendo.vn/shop/lamchucongnghe_com // // Shop shopee : shopee.vn/lamchucongnghe // //***************************************************************// #include <PS2X_lib.h> #define PS2_DAT 6 // Data Pin #define PS2_CMD 7 // Command Pin #define PS2_CS 8 // Attention Pin #define PS2_CLK 9 // Clock Pin PS2X ps2; // create PS2 Controller Class void setup() { Serial.begin(9600); delay(300); // setup pins and settings: GamePad(clock, command, attention, data) check for error int ps2Config = ps2.config_gamepad(PS2_CLK, PS2_CMD, PS2_CS, PS2_DAT); } void loop() { ps2.read_gamepad(); if(ps2.ButtonPressed(PSB_PAD_UP)) Serial.println("Press UP"); if(ps2.ButtonPressed(PSB_PAD_DOWN)) Serial.println("Press DOWN"); if(ps2.ButtonPressed(PSB_PAD_LEFT)) Serial.println("Press LEFT"); if(ps2.ButtonPressed(PSB_PAD_RIGHT)) Serial.println("Press RIGHT"); if(ps2.ButtonPressed(PSB_TRIANGLE)) Serial.println("Press Y"); if(ps2.ButtonPressed(PSB_CIRCLE)) Serial.println("Press B"); if(ps2.ButtonPressed(PSB_CROSS)) Serial.println("Press A"); if(ps2.ButtonPressed(PSB_SQUARE)) Serial.println("Press X"); if(ps2.ButtonPressed(PSB_L1)) Serial.println("Press L1"); if(ps2.ButtonPressed(PSB_L2)) Serial.println("Press L2"); if(ps2.ButtonPressed(PSB_L3)) Serial.println("Press L3"); if(ps2.ButtonPressed(PSB_R1)) Serial.println("Press R1"); if(ps2.ButtonPressed(PSB_R2)) Serial.println("Press R2"); if(ps2.ButtonPressed(PSB_R3)) Serial.println("Press R3"); if(ps2.Button(PSB_L1) || ps2.Button(PSB_R1)) { //print stick values if either is TRUE Serial.print("Stick Values:"); Serial.print(ps2.Analog(PSS_LY), DEC); //Left stick, Y axis. Other options: LX, RY, RX Serial.print(","); Serial.print(ps2.Analog(PSS_LX), DEC); Serial.print(","); Serial.print(ps2.Analog(PSS_RY), DEC); Serial.print(","); Serial.println(ps2.Analog(PSS_RX), DEC); } delay(50); }Code sử dụng tay PS2 điều khiển robot
//***************************************************************// // Author : RedFox // // Website : lamchucongnghe.com // // Fanpage : fb.com//lamchucongnghevn // // Shop sendo : sendo.vn/shop/lamchucongnghe_com // // Shop shopee : shopee.vn/lamchucongnghe // //***************************************************************// #include <PS2X_lib.h> #define PS2_DAT 6 // Data Pin #define PS2_CMD 7 // Command Pin #define PS2_CS 8 // Attention Pin #define PS2_CLK 9 // Clock Pin #define dongCoTrai 13 // Đảo chiều động cơ trái ( 0: chạy thuận, 1: chạy ngược) #define dongCoPhai 12 // Đảo chiều động cơ phải ( 1: chạy thuận, 0: chạy ngược) #define bamXungTrai 11 // Băm xung điều chỉnh tốc độ động cơ trái #define bamXungPhai 10 // Băm xung điều chỉnh tốc độ động cơ phải #define Buzzer 4 // Chân còi chip PS2X ps2; // create PS2 Controller Class bool analog; void setup() { Serial.begin(9600); // Khởi tạo còi chip, động cơ trái, động cơ phải là đầu ra pinMode(Buzzer, OUTPUT); digitalWrite(Buzzer, LOW); pinMode(dongCoTrai, OUTPUT); pinMode(dongCoPhai, OUTPUT); // Khởi tạo kết nối tay PS2 ps2.config_gamepad(PS2_CLK, PS2_CMD, PS2_CS, PS2_DAT); } void loop() { // Bắt đầu đọc dữ liệu nhấn nút từ tay PS2 ps2.read_gamepad(); delay(50); if(ps2.ButtonPressed(PSB_R1)) { // chuyển chế độ điều khiển dùng joystick //Serial.println("Analog"); analog = 1 - analog; } if(analog) { int analogLX = ps2.Analog(PSS_LX)-128; int analogLY = ps2.Analog(PSS_LY)-127; if(analogLY < 0 && analogLX == 0) { dkDongCo(180, 180); } // Lùi else if(analogLY > 0 && analogLX == 0) { dkDongCo(-120, -120); } // Quay trái else if(analogLY == 0 && analogLX < 0) { dkDongCo(0, 180); } // Quay phải else if(analogLY == 0 && analogLX > 0) { dkDongCo(180, 0); } // Cua trái else if(analogLY < 0 && analogLX < 0) { dkDongCo(40, 150); } // Cua phải else if(analogLY > 0 && analogLX < 0) { dkDongCo(150, 40); } // Lùi phải else if(analogLY > 0 && analogLX > 0) { dkDongCo(-120, -40); } // Lùi trái else if(analogLY < 0 && analogLX > 1) { dkDongCo(-40, -120); } // Dừng khi nhả các nút else if(analogLY == 0 && analogLX == 0) { dkDongCo(0, 0); } } else { int buttonUp = ps2.Button(PSB_PAD_UP); int buttonDown = ps2.Button(PSB_PAD_DOWN); int buttonLeft = ps2.Button(PSB_PAD_LEFT); int buttonRight = ps2.Button(PSB_PAD_RIGHT); if(buttonUp && !buttonDown && !buttonLeft && !buttonRight) { dkDongCo(180, 180); } // Lùi else if(!buttonUp && buttonDown && !buttonLeft && !buttonRight) { dkDongCo(-120, -120); } // Quay trái else if(!buttonUp && !buttonDown && buttonLeft && !buttonRight) { dkDongCo(0, 180); } // Quay phải else if(!buttonUp && !buttonDown && !buttonLeft && buttonRight) { dkDongCo(180, 0); } // Cua trái else if(buttonUp && !buttonDown && buttonLeft && !buttonRight) { dkDongCo(40, 150); } // Cua phải else if(buttonUp && !buttonDown && !buttonLeft && buttonRight) { dkDongCo(150, 40); } // Lùi phải else if(!buttonUp && buttonDown && !buttonLeft && buttonRight) { dkDongCo(-120, -40); } // Lùi trái else if(!buttonUp && buttonDown && buttonLeft && !buttonRight) { dkDongCo(-40, -120); } // Dừng khi nhả các nút else if(!buttonUp && !buttonDown && !buttonLeft && !buttonRight) { dkDongCo(0, 0); } } } void dkDongCo(float xungTrai, float xungPhai) { if(xungTrai >=0 ) digitalWrite(dongCoTrai, HIGH); else digitalWrite(dongCoTrai, LOW); if(xungPhai >=0 ) digitalWrite(dongCoPhai, HIGH); else digitalWrite(dongCoPhai, LOW); analogWrite(bamXungTrai, abs(xungTrai)); analogWrite(bamXungPhai, abs(xungPhai)); }Video hướng dẫn tổng thể
https://youtu.be/Zs7i9OgupJc
Video demo những pha bốc đầu thần thánh
https://www.youtube.com/watch?v=XOkllaC4Ods
Từ khóa » Thư Viện Ps2
-
[Sưu Tầm] Lập Trình Tay điều Khiển PS2 Không Dây Với Arduino
-
Kết Nối Tay Game PlayStation Với Arduino
-
Remote điều Khiển PS2 Không Dây ( PS2 Robot Controller ) - Nshop
-
Đế Chuyển Giao Tiếp Tay Cầm PS2
-
Tay điều Khiển PS2 Wireless Controller
-
TAY GAME PS2 DualShock 2 - Thế Giới Chip
-
Kết Nối Tay Game PlayStation Với Arduino - MegaCode
-
Top 11 Top Ps2 Games
-
[Tự Học Arduino] Hướng Dẫn Kết Nối Tay Game PlayStation Với ...
-
Kết Nối Tay Game PS2 Với Board Arduino - YouTube
-
Thư Viện Game For Playstation 2
-
Madsci1016/Arduino-PS2X: Read A Playstation 2 ... - GitHub
-
New Emulator For PS2 Roms - Tải Về (Android App) - ️ APKCombo