Đề tài Điều khiển scorbot – ev qua mạng bằng cần điều khiển

Từ khi ra đời, các robot không ngừng được cải tiến và hoàn thiện để ngày càng giúp ích cho con người. Chúng dần thay thế con người trong những công việc nặng nhọc, trong những môi trường độc hại,. mà con người không thể làm việc. Muốn vậy hoặc là cần có các robot đủ thông minh để hoạt động độc lập, chúng có thể tự làm việc theo một chương trình nhất định, nhưng cũng phải xử lý được những tình huống xảy ra không dự đoán trước được. Hoặc là các robot có khả năng liên lạc từ xa để con người có thể điều khiển chúng mà không phải có mặt trong môi trường không mong muốn. Những robot tự vận hành phải được trang bị những sensor, những bộ cảm biến nhạy cảm để chúng có thể xác định được điều kiện cũng như trạng thái của môi trường mà chúng làm việc từ đó mới có khả năng thích nghi và đáp ứng được với những điều kiện đó. Phần mềm viết cho những robot này cực kì phức tạp và công phu tạo cho chúng một bộ óc đủ thông minh để có thể tự hoạt động. Đối với những robot có khả năng điều khiển từ xa, cần phải có một hệ thống được trang bị các thiết bị để theo dõi hoạt động của robot, chẳng hạn một camera thu hình ảnh của robot. Hệ thống cũng cần phải có phần tạo ra các tín hiệu điều khiển, robot sẽ phải được trang bị để có khả năng nhận các tín hiệu điều khiển này và thực hiện. Phương tiện để liên lạc từ xa với các robot thông qua mạng Internet/LAN. Đã có nhiều nghiên cứu và xây dựng thành công các hệ thống như vậy. Một bài toán đặt ra là cần phải quan sát được một robot di động, rồi căn cứ vào hình ảnh nhận được để điều khiển robot. Yêu cầu quan trọng nhất của hệ thống là phải điều khiển và quan sát được từ xa và phải đáp ứng được tính thời gian thực. Để dễ dàng điều khiển robot ta không thể dùng bàn phím của máy tính mà yêu cầu có một thiết bị điều khiển dễ dàng và linh hoạt hơn. Chúng ta sẽ sử dụng cần điều khiển để điều khiển robot đượct thuận lợi và hiệu quả cao hơn.

doc49 trang | Chia sẻ: ngtr9097 | Lượt xem: 2103 | Lượt tải: 1download
Bạn đang xem trước 20 trang tài liệu Đề tài Điều khiển scorbot – ev qua mạng bằng cần điều khiển, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ ---------(((---------  ĐỖ VĂN THÁI ĐIỀU KHIỂN SCOROBOT - EV QUA MẠNG BẰNG CẦN ĐIỀU KHIỂN KHOÁ LUẬN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY Ngành: Điện tử - Vi hệ thống và điều khiển tự động Cán bộ hướng dẫn: ThS. Nguyễn Vinh Quang HÀ NỘI – 2008 MỤC LỤC LỜI CẢM ƠN 1 TÓM TẮT NỘI DUNG ĐỀ TÀI 2 MỞ ĐẦU 3 CHƯƠNG I 5 ĐIỀU KHIỂN SCORBOT BẰNG CẦN ĐIỀU KHIỂN 5 1.1. TỔNG QUAN VỀ SCORBOT – ER VPLUS. 5 1.1.1. Về cấu trúc: 5 1.1.2. Không gian làm việc: 6 1.1.3. Các motor, bộ giải mã, và các công tắc: 6 1.1.4. Bộ điều khiển: 7 1.1.5. Hoạt động của robot: 8 1.1.5.1. Chế độ trực tiếp: 8 1.1.5.2. Chế độ bằng tay: 8 1.1.6. Hệ thống cùng làm việc: 9 1.2. ĐIỀU KHIỂN SCORBOR – ER VPLUS BẰNG CẦN ĐIỀU KHIỂN. 11 1.2.1. Điều khiển robot trong chế độ bằng tay: 11 1.2.2. Phần mềm Autohotkey 11 1.2.3. Chương trình điều khiển 13 1.2.4. Cần điều khiển (Joystick): 19 1.2.5 Kết quả điều khiển 20 CHƯƠNG II 22 ĐIỀU KHIỂN ROBOT QUA MẠNG 22 2.1. TỔNG QUAN VỀ MẠNG INTERNET. 22 2.1.1.Mô hình tổng quát của mạng Internet: 22 2.1.2. Hệ thống địa chỉ và cơ chế truyền dữ liệu trong mạng Internet: 24 2.2. Giới thiệu về phần mềm remote desktop control: 31 2.2.1. Remote Desktop Protocol (RDP): 32 2.2.2. Phần mềm remote desktop: 38 2.3. KẾT QUẢ ĐIỀU KHIỂN THỰC TẾ: 42 KẾT QUẢ 45 PHẦN LÝ THUYẾT: 45 PHẦN THỰC HÀNH 45 MỞ RỘNG ĐỀ TÀI 45 TÀI LIỆU THAM KHẢO 46 LỜI CẢM ƠN Trước hết cho phép em được bày tỏ lòng cảm ơn chân thành và sâu sắc tới Thạc sĩ Nguyễn Vinh Quang, người đã tận tình chỉ bảo và tạo mọi điều kiện có thể để giúp đỡ em trong suốt quá trình làm luận văn. Cũng cho phép em được cảm ơn các thầy cô trong Khoa Điện tử - viễn thông , đặc biệt là các thầy cô trong bộ môn Điện tử và Kĩ thuật máy tính đã giúp đỡ em về trang thiết bị cũng như các điều kiện có thể để em có thể hoàn thành luận văn này. Xin cảm ơn những người bạn đã luôn ủng hộ và trợ giúp tôi trong suốt thời gian làm luận văn. TÓM TẮT NỘI DUNG ĐỀ TÀI Đề tài “ Điều khiển scorbot – ev qua mạng bằng cần điều khiển” nghiên cứu việc điều khiển robot từ xa qua mạng máy tính (LAN, WAN, INTERNET) sử dụng cần điều khiển và camera quan sát. Hệ thống này gồm 2 phần chính: Phần 1: Điều khiển Scorbot – Ev bằng cần điều khiển sử dụng phần mềm autohotkey. Điều khiển robot trong chế độ trục và chế độ tọa độ XYZ. Dùng cần điều khiển kết nối với máy tính thay thể điều khiển bằng bàn phím máy tính giúp cho việc điều khiển dễ dàng và hiệu quả hơn. Phần 2: Điều khiển Scorbot – Ev qua mạng máy tính sử dụng phần mềm remote desktop. Khi đó robot được nối với một máy tính có camera quan sát và truyền hình ảnh qua mạng đến một máy tính khác, người điều khiển quan sát hình ảnh robot và dùng cần điều khiển điều khiển hoạt động của robot qua mạng. MỞ ĐẦU Từ khi ra đời, các robot không ngừng được cải tiến và hoàn thiện để ngày càng giúp ích cho con người. Chúng dần thay thế con người trong những công việc nặng nhọc, trong những môi trường độc hại,... mà con người không thể làm việc. Muốn vậy hoặc là cần có các robot đủ thông minh để hoạt động độc lập, chúng có thể tự làm việc theo một chương trình nhất định, nhưng cũng phải xử lý được những tình huống xảy ra không dự đoán trước được. Hoặc là các robot có khả năng liên lạc từ xa để con người có thể điều khiển chúng mà không phải có mặt trong môi trường không mong muốn. Những robot tự vận hành phải được trang bị những sensor, những bộ cảm biến nhạy cảm để chúng có thể xác định được điều kiện cũng như trạng thái của môi trường mà chúng làm việc từ đó mới có khả năng thích nghi và đáp ứng được với những điều kiện đó. Phần mềm viết cho những robot này cực kì phức tạp và công phu tạo cho chúng một bộ óc đủ thông minh để có thể tự hoạt động. Đối với những robot có khả năng điều khiển từ xa, cần phải có một hệ thống được trang bị các thiết bị để theo dõi hoạt động của robot, chẳng hạn một camera thu hình ảnh của robot. Hệ thống cũng cần phải có phần tạo ra các tín hiệu điều khiển, robot sẽ phải được trang bị để có khả năng nhận các tín hiệu điều khiển này và thực hiện. Phương tiện để liên lạc từ xa với các robot thông qua mạng Internet/LAN. Đã có nhiều nghiên cứu và xây dựng thành công các hệ thống như vậy. Một bài toán đặt ra là cần phải quan sát được một robot di động, rồi căn cứ vào hình ảnh nhận được để điều khiển robot. Yêu cầu quan trọng nhất của hệ thống là phải điều khiển và quan sát được từ xa và phải đáp ứng được tính thời gian thực. Để dễ dàng điều khiển robot ta không thể dùng bàn phím của máy tính mà yêu cầu có một thiết bị điều khiển dễ dàng và linh hoạt hơn. Chúng ta sẽ sử dụng cần điều khiển để điều khiển robot đượct thuận lợi và hiệu quả cao hơn. Mô hình đề tài được chỉ ra dưới đây:  Đây là một đề tài đơn giản nhưng nếu được mở rộng thì sẽ có nhiều ứng dụng trong thực tế: Điều khiển robot trong các nhà máy có môi trường độc hại mà con người không thể tiếp cận và làm việc được. Mạng máy tính ngày càng trở nên phổ biến và mang lại nhiều lợi ích cho con người giúp công việc con người trở nên tiện lợi và năng động hơn. Điều khiển robot trong xí nghiệp một cách tự động, không cần công nhân viên điều khiển trực tiếp mà điều khiển qua mạng internet khi đây chúng ta có thể ngồi ở một nơi nào đó điều khiển nhiều máy móc cùng một lúc. Một hệ thống bảo vệ trong một toà nhà: Trong một toà nhà có thể đặt nhiều camera, các hình ảnh thu từ các camera được truyền trực tiếp về một trung tâm quan sát, từ trung tâm này người bảo vệ có thể điều khiển các trạm gác có các camera đó theo dõi. Kết hợp với xử lý ảnh để tạo ra một robot có khả năng nhận biết các vật thể, tìm đường, từ đó ứng dụng cho việc phân loại sản phẩm, cảnh báo tự động... CHƯƠNG I ĐIỀU KHIỂN SCORBOT BẰNG CẦN ĐIỀU KHIỂN 1.1. TỔNG QUAN VỀ SCORBOT – ER VPLUS. 1.1.1. Về cấu trúc: SCORBOT – ER Vplus là loại robot thẳng đứng, với 5 khớp quay, với kẹp được gắn vào, robot có 6 bậc tự do. Thiết kế này cho phép robot có thể làm việc trong một không gian rộng. Sự chuyển động của các khớp chỉ ra ở bảng dưới: STT  Tên khớp  Chuyển động  Góc làm việc tối đa  Số thứ tự motor   1  Khớp đế (Base)  Quay thân robot  3100  1   2  Khớp vai (Shoulder)  Nâng và hạ cánh tay trên robot  +1300/-350  2   3  Khớp tay (Elbow)  Nâng và hạ cánh tay robot  +-1300  3   4  Khớp cổ (Wrist Pitch)  Nâng và hạ bộ chấp hành cuối (Đầu kẹp)  +-1300  4+5   5  Cổ xoay (Wrist Roll)  Quay bộ chấp hành cuối  Không giới hạn  4+5   + Đầu kẹp ( Gripper) có khả năng mở kẹp tối đa là 75mm. 1.1.2. Không gian làm việc: Độ dài và góc làm việc của các khớp làm cho không gian làm việc SCORBOT – ER Vplus có dạng là một hình cầu gần như khép kín ở tâm robot. Hình chiếu của không gian này xuống bề mặt đế của robot là một vòng tròn gần gần kín có bán kính là 610mm. Độ cao cực đại của không gian làm việc là 1040mm.  1.1.3. Các motor, bộ giải mã, và các công tắc: + Motor: 5 khớp và kẹp của robot được điều khiển bởi các motor phụ một chiều. Chiều quay của motor được xác định bởi cực của hiệu điện thế điều khiển. Cực dương của hiệu điện thế một chiều làm cho motor quay theo một chiều, trong khi cực âm lại làm cho motor quay theo chiều ngược lại. Mỗi motor được gắn với một bộ giải mã để điều khiển khép kín.    + Bộ giải mã: Việc xác định vị trí và chuyển động của mỗi trục được đo bằng một bộ giải mã quang - điện. Nó tác động đến các motor, motor lái các trục. Bộ giải mã sẽ tạo ra số các tín hiệu xung tỉ lệ với sự chuyển động của trục quay khi robot hoạt động. Tần số của tín hiệu chỉ ra chiều của chuyển động. Bộ điều khiển đọc các tín hiệu này và xác định phạm vi và chiều của trục chuyển đông. + Các công tắc: 5 công tắc được gắn trên cánh tay của robot thông báo cho bộ điều khiển các vị trí xác định trước. 1.1.4. Bộ điều khiển: Danh mục  Đặc điểm kỹ thuật  Ghi chú   Nhiệt độ môi trường làm việc  20 – 400    CPU  68010    EPROM  384KB    RAM  System: 64KB User: 128KB    Truyền thông  Cổng nối tiếp: RS232    Đầu vào  16 đầu vào (có LED chỉ thị); Chế độ NPN and PNP logic    Đầu ra  12 đầu ra (có LED chỉ thị) Chế độ NPN and PNP logic  Tối đa 24VDC    4 relay output (có LED chỉ thị)    Ngôn ngữ lập trình  ACL     SCORBASE LEVER5    Hệ thống cùng làm việc  XYZ Các khớp    LED chỉ thị  Nguồn chính Vào/Ra Nguồn phụ Khẩn cấp    Kết nối  Lối và/ lối ra Cấp nguồn    D9 connector  Trục lái Kẹp RS232 Teach pendant Robot RS232 bổ trợ  D9 connector D9 connector D25 connector D25 connector D50 connector D37 connector   Teach Pendant  30 phím chức năng LCD 2 dòng, 16 ký tự / dòng    1.1.5. Hoạt động của robot: + Phần mềm: ACL: Advamced Control Language, là ngôn ngữ lập trình được phát triển bởi Eshed Robotec, ACL là chương trình được đặt ở trong EPROMs với Controler-A, và có thể truy nhập từ một vài đầu cuối chuẩn hay là máy tính PC bởi giao tiếp RS232. Những đặc điểm của ACL: Người dùng trực tiếp điều khiển trục robot. Chương trình người sử dụng của hệ thống robot. Điều khiển dữ liệu vào/ra. Chương trình thực thi đồng thời, đồng bộ và có liên kết với nhau. Quản lý file đơn giản. ATS: Advanced Terminal Software, là giao diện để điều khiển ACL. ATS làm việc trên máy tính PC và cho phép truy cập vào ACL từ máy tính. Những đặc điển của ATS: Hình thể điều khiển có cấu trúc ngắn gọn. Định nghĩa được các thiết bị ngoại vi. Nhiều phím tắt cho các lệnh vào. Chỉnh sửa được chương trình. Quản lý việc in ấn, phục hồi. 1.1.5.1. Chế độ trực tiếp: Khi hệ thống ở chế độ trực tiếp, người sử dụng có thể điều khiển trực tiếp các trục, và điều khiển các lệnh thực thi như được nhập từ người sử dụng. Khi ở chế độ trực tiếp màn xuất hiện ký tự đợi lệnh như thế này: >_ Khi hệ thống làm việc ở chế độ EDIT, lệnh được nhập vào trong một chương trình của người sử dụng, chương trình có thể được lưu và thực thi ở thời điểm sau. 1.1.5.2. Chế độ bằng tay: Chế độ bằng tay cho phép điều khiển trực tiếp các trục của robot khi Teach Pendant không kết nối. Khởi động chế độ bằng tay: Khởi động DOS, ta xâm nhập vào thư mục ATS Nếu bộ điều khiển kết nối với máy tính ở cổng COM1 (Mặc định), tại con trỏ lệnh ta gõ: Ats Nếu bộ điều khiển kết nối với máy tính ở cổng COM2, ta sẽ gõ: Ats /c2 Khi đã tải song phần mềm, Màn hình chính ATS xuất hiện như sau:  Để khởi động chế độ bằng tay Ta giữ phím và bấm ký tự M: Hệ thống sẽ trả lại một trong các cách sau: MANUAL MODE! >_ JOINT MODE  MANUAL MODE! >_ XYZ MODE   Để thoát ra khỏi chế độ bằng tay, giữ phím và bấm ký tự M EXIT MANUAL MODE… >_ 1.1.6. Hệ thống cùng làm việc: SCORBOT – ER Vplus có thể làm việc và lập trình ở hai hệ thống cùng làm việc khác nhau là: Các khớp và toạ độ Cartesian (XYZ). + Toạ độ Cartesian, hay XYZ, hệ thống cùng làm việc này là một hệ thống hình học được sử dụng để định rõ vị trí của robot. Định nghĩa bởi khoảng cách của nó trên các trục toạ độ, từ các điểm ban đầu. Khi robot hoạt động thực thi trên chế độ XYZ, tất cả hay một vài trục chuyển động theo trục X, Y hay Z.    + Chế độ làm việc khớp: Chế độ này định rõ vị trí của mỗi trục ở sự tính toán của các bộ giải mã. Khi các trục hoạt động, các bộ giải mã quản phát ra một dãy các tín hiệu điện có dòng cao, thấp. Các con số của tín hiệu là tỷ lệ với điểm của trục di chuyển. Bộ điều khiển đếm các tín hiệu và xác định khoảng cách một trục đã di chuyển. Khi sự di chuyển của robot được thực hiện ở chế độ trục, mỗi trục di chuyển theo lệnh. Nếu một vài thiết bi ngoại vi được kết nối đến hệ thống robot, vị trí của các trục luôn luôn có trạng thái ở bộ giải mã. + Để chọn hệ thống làm việc đồng thời từ bàn phím, bạn phải vào chế độ bằng tay. Để khởi động hệ thống làm việc chế độ các khớp: Press: j JOINT MODE Để khởi động hệ thống làm việc chế độ XYZ Prees: x XYZ MODE 1.2. ĐIỀU KHIỂN SCORBOR – ER VPLUS BẰNG CẦN ĐIỀU KHIỂN. 1.2.1. Điều khiển robot trong chế độ bằng tay: Để điều khiển trực tiếp hoạt động của các khớp robot từ bàn phím, chế độ điều khiển bằng tay phải được khởi động. Các phím chức năng dùng để điều khiển hoạt động của robot. * Khi hệ hoạt động trong chế độ khớp: Phím 1, Q Dịch chuyển axis 1 (Base). Phím 2, W Dịch chuyển axis 2 (Shoulder). Phím 3, E Dịch chuyển axis 3 (Elbow). Phím 4, R Dịch chuyển axis 4 (Wrist Pitch). Phím 5, T Dịch chuyển axis 5 (Wrist Roll ). Phím 6, Y Đóng/ Mỡ đầu kẹp (axis 6). * Khi trong chế độ XYZ: Phím 1, Q Dịch chuyển đầu kẹp dọc theo trục X. Phím 2, W Dịch chuyển đầu kẹp dọc theo trục Y. Phím 3, E Dịch chuyển đầu kẹp dọc theo trục Z. Phím 4, R Chuyển động khớp Pitch. Khi muốn điều khiển robot ở chế độ khớp hoặc XYZ, hay chuyển đổi giữa 2 chế độ ta nhấn phím J (để kích hoạt chế độ khớp) hoặc phím X (để kích hoạt chế độ XYZ). Để đặt tốc độ cho robot ta nhấn phím S, nhập vào giá trị bằng số (từ 0 đến 100) sau đó bấm phím . Chúng ta co thể soạn thảo chương trình điều khiển cho robot sử dụng hàm Edit trong chế độ lập trình (Edit mode) và đưa vào tên chương trình không qua 5 ký tự và sau đó bấm phím . 1.2.2. Phần mềm Autohotkey: (Version 1.0.47.00) Giới thiệu: Autohotkey là một phần mềm miễn phí, mã nguồn mỡ cho Windows. Các tính năng cơ bản: - Tự động thực hiện các thao tác nhấn phím hay click chute. Bạn có thể viết macro cho chute hay bàn phím hoặc sử dụng chương trình ghi macro. - Tạo phím nóng cho bàn phím, joystick và chute. Hầu như mọi phím, mọi nút hoăc tổ hợp nut nào cũng có thể trở thành phím nóng. - Tự động kéo dài những chữ viết tắt. Ví dụ bạn viết “btw” chương trình sẽ tự động phát triển thành “by the way”. - Tự tạo những form nhập dữ liệu, giao diện và thanh menu. - Thay đổi các phím trên bàn phím, chuột, và trên cần điều khiển. - Trả lời các tín hiệu từ bộ điều khiển từ xa. - Chạy các bản(Scripts) ghi có sẵn và nâng cao chúng với các tính năng mới. - Chạy bất kỳ bản ghi nào thành file EXE có thể chạy độc lập trên máy tính. Để sử dụng chương trình bạn tạo một bản thao (cript), trong đó bạn có thể chứa các lệnh tạo phím nóng, các trạng thái phím, thời gian....Chương trình sẽ nạp các script vào nhớ theo dòng và mỗi dòng có thể dài đến 16.383 ký tự. Trong khi nạp, script sẽ được kiểm tra và tối ưu hoá. Các sai sót sẽ được hiển thị và ta phải sửa trước khi chạy. 1.2.3. Chương trình điều khiển:\ ; AutoHotkey Version: 1.0.47.00 ; Dieu khien theo toa do X - Y #Persistent ; Keep this script running until the user explicitly exits it. SetTimer, WatchAxis, 2008 return"{ WatchAxis: GetKeyState, JoyX, JoyX ; Get position of X axis. GetKeyState, JoyY, JoyY ; Get position of Y axis. KeyToHoldDownPrev = %KeyToHoldDown% ; Prev now holds the key that was down before (if any). if JoyX > 70 KeyToHoldDown = 1 else if JoyX < 30 KeyToHoldDown = q else if JoyY > 70 KeyToHoldDown = 2 else if JoyY < 30 KeyToHoldDown = w else KeyToHoldDown = if KeyToHoldDown = %KeyToHoldDownPrev% ; The correct key is already down (or no key is needed). return ; Do nothing. ; Otherwise, release the previous key and press down the new key: SetKeyDelay -1 ; Avoid delays between keystrokes. if KeyToHoldDownPrev ; There is a previous key to release. Send, {%KeyToHoldDownPrev% up} ; Release it. if KeyToHoldDown ; There is a key to press down. Send, {%KeyToHoldDown% down} ; Press it down. Return ; Dieu khien theo toa do Z. Joy1:: Send {3 down} ; Press the spacebar down. SetTimer, WaitForJoy1, 200 ; Reduce the number 30 to 20 or 10 to send keys faster. Increase it to send slower. return WaitForJoy1: if not GetKeyState("Joy1") ; The button has been released. { Send {3 up} ; Release the spacebar. SetTimer, WaitForJoy1, off ; Stop monitoring the button. return } ; Since above didn't "return", the button is still being held down. Send {3 down} ; Send another Spacebar keystroke. return Joy2:: Send {e down} ; Press the spacebar down. SetTimer, WaitForJoy2, 200 ; Reduce the number 30 to 20 or 10 to send keys faster. Increase it to send slower. return WaitForJoy2: if not GetKeyState("Joy2") ; The button has been released. { Send {e up} ; Release the spacebar. SetTimer, WaitForJoy2, off ; Stop monitoring the button. return } ; Since above didn't "return", the button is still being held down. Send {e down} ; Send another Spacebar keystroke. return ; Dieu khien chuyen dong cua Pitch. Joy3:: Send {4 down} ; Press the spacebar down. SetTimer, WaitForJoy3, 200 ; Reduce the number 30 to 20 or 10 to send keys faster. Increase it to send slower. return WaitForJoy3: if not GetKeyState("Joy3") ; The button has been released. { Send {4 up} ; Release the spacebar. SetTimer, WaitForJoy3, off ; Stop monitoring the button. return } ; Since above didn't "return", the button is still being held down. Send {4 down} ; Send another Spacebar keystroke. return Joy4:: Send {r down} ; Press the spacebar down. SetTimer, WaitForJoy4, 200 ; Reduce the number 30 to 20 or 10 to send keys faster. Increase it to send slower. return WaitForJoy4: if not GetKeyState("Joy4") ; The button has been released. { Send {r up} ; Release the spacebar. SetTimer, WaitForJoy4, off ; Stop monitoring the button. return } ; Since above didn't "return", the button is still being held down. Send {r down} ; Send another Spacebar keystroke. Return ; Dieu khien dong mo dau kep. Joy5:: Send {6 down} ; Press the spacebar down. SetTimer, WaitForJoy5, 200 ; Reduce the number 30 to 20 or 10 to send keys faster. Increase it to send slower. return WaitForJoy5: if not GetKeyState("Joy5") ; The button has been released. { Send {6 up} ; Release the spacebar. SetTimer, WaitForJoy5, off ; Stop monitoring the button. return } ; Since above didn't "return", the button is still being held down. Send {6 down} ; Send another Spacebar keystroke. Return Joy6:: Send {y down} ; Press the spacebar down. SetTimer, WaitForJoy6, 200 ; Reduce the number 30 to 20 or 10 to send keys faster. Increase it to send slower. return WaitForJoy6: if not GetKeyState("Joy6") ; The button has been released. { Send {y up} ; Release the spacebar. SetTimer, WaitForJoy6, off ; Stop monitoring the button. return } ; Since above didn't "return", the button is still being held down. Send {y down} ; Send another Spacebar keystroke. return . ; Chuyen sang che do Khop Joy7:: Send {x down} ; Press the spacebar down. SetTimer, WaitForJoy7, 200 ; Reduce the number 30 to 20 or 10 to send keys faster. Increase it to send slower. return WaitForJoy7: if not GetKeyState("Joy7") ; The button has been released. { Send {x up} ; Release the spacebar. SetTimer, WaitForJoy7, off ; Stop monitoring the button. return } ; Since above didn't "return", the button is still being held down. Send {x down} ; Send another Spacebar keystroke. return . ; Chuyen sang che do XYZ Joy8:: Send j down} ; Press the spacebar down. SetTimer, WaitForJoy8, 200 ; Reduce the number 30 to 20 or 10 to send keys faster. Increase it to send slower. return WaitForJoy8: if not GetKeyState("Joy8") ; The button has been released. { Send {j up} ; Release the spacebar. SetTimer, WaitForJoy8, off ; Stop monitoring the button. return } ; Since above didn't "return", the button is still being held down. Send {j down} ; Send another Spacebar keystroke. Return . 1.2.4. Cần điều khiển (Joystick): Joystick được dùng để điều khiển là sản phẩm của hãng Logitech. Cần điều khiển này có 1 núm điều khiển và 9 phím công tắc. Khi sử dụng chương trình viết dựa trên phần mềm AutoHotkey (Version