How Can We Help?

Hướng dẫn lập trình GamePad shield cho Yolo:Bit

GamePad shield là bộ Kit mở rộng cho Yolo:Bit. Bộ kit này sẽ biến Yolo:Bit thành một tay cầm điều khiển Bluetooth. GamePad gồm Joystick và 7 nút nhấn có thể lập trình, được dùng để tạo ra các chức năng tùy biến theo ý của người dùng.

Ngoài ra, cùng với pin sạc và chức năng sạc được tích hợp sẵn trên board, GamePad shield có thể được sử dụng để điều khiển các robot của OhStem như robot xBot (thông qua Bluetooth) hoặc biến Yolo:Bit thành một chiếc máy chơi game hoàn chỉnh.

Thông số kỹ thuật

  • Nguồn: Pin sạc Li-Ion 3.7V 14500
  • Joystick: 2 axis analog (X: P0 Y: P1), 1 axis digital (Z: P2)
  • 7 nút nhấn: A (tương ứng với nút A trên Yolo:Bit), B (tương ứng với nút B trên Yolo:Bit), C (P13), D (P14), E (P15), F (P16), Z (nút nhấn của Joystick, P2)
  • Kích thước: 154 × 56 mm

Hướng dẫn lập trình cho GamePad shield

GamePad shield được dùng với Yolo:Bit. Bạn có thể tham khảo hướng dẫn lập trình cho Yolo:Bit ở đây nếu chưa từng làm việc với Yolo:Bit trước đó.

Cài đặt thư viện mở rộng cho GamePad

  1. Vào giao diện lập trình cho Yolo:Bit trong OhStem App tại địa chỉ https://app.ohstem.vn hoặc ứng dụng OhStem App trên mobile (Tải trên Google Play / App Store với tên tìm kiếm là  “OhStem App”) ohStem App - Ứng dụng lập trình cho GamePad
  2. Nhấn vào mục Mở Rộng ở danh sách bên trái:Nhấn vào mở rộng để tải thư viện cho GamePad
  3. Chọn GamePad trong danh sách các mục mở rộng có sẵn (hoặc nhập tên GamePad vào ô tìm kiếm nếu bạn không thấy): GamePad - Tải thư viện mở rộng
    Chọn tải thư viện:
  4. Chọn thiết bị Yolo:Bit để kết nối (nếu chưa kết nối) và phải đảm bảo đã cài đặt thư viện thành công (bên trái giao diện xuất hiện danh mục GamePad như hình):

Giới thiệu khối lệnh

Bên trong danh mục GamePad, bạn sẽ thấy có 3 khối lệnh:

Khối lệnh lập trình cho GamePad

  • Joystick ở hướng -> : Trả về giá trị đúng khi hướng của cần gạt Joystick xoay sang phải (tương tự với các lựa chọn khác)
  • Đọc Joystick ___: Đọc thông tin từ cần gạt Joystick gửi đến
  • Nút ___ được nhấn: Đọc thông tin từ các nút trên GamePad gửi đến (nút nào được nhấn)

Joystick ở hướng ->

Bạn có thể chọn vào icon hình tam giác ngược () trong khối lệnh để hiển thị các lựa chọn khác:

Khối lệnh đọc Joystick trên GamePad

Khối lệnh trên sẽ trả về giá trị đúng khi cần gạt Joystick xoay về đúng hướng như trong khối lệnh. 

Đọc Joystick

Bạn có thể chọn vào icon hình tam giác ngược () trong khối lệnh để hiển thị các lựa chọn khác:

Khối lệnh đọc Joystick trên GamePad

  • X: Trả về giá trị Analog cho trục X (trục ngang) của Joystick theo thang giá trị từ -100 đến 100

Trục x của Joystick trên GamePad

  • Y: Trả về giá trị Analog cho trục Y (trục dọc) của Joystick theo thang giá trị từ -100 đến 100

Trục y của Joystick trên GamePad

  • Góc quay: Trả về giá trị góc xoay của cần gạt Joystick theo thang đo từ 0 đến 359 độ:

Góc xoay của GamePad

  • Khoảng cách kéo: Mức độ kéo Joystick ra ngoài so với tâm của cần gạt (từ 0 – 100%)

Khoảng cách kéo của Joystick trên GamePad

Nút ____ được nhấn

Bạn có thể chọn vào icon hình tam giác ngược () trong khối lệnh để hiển thị các lựa chọn khác:

Khối lệnh nút được nhấn trên GamePad

Khối lệnh trên sẽ trả về giá trị đúng khi nút Joystick được nhấn (bạn nhấn mạnh vào cần gạt Joystick để thực hiện). Tương tự với các nút nhấn khác.

Lưu ý: Nút nhấn A và B trên GamePad sẽ tương ứng với nút A, B trên Yolo:Bit.

Lập trình cơ bản với Yolo:Bit

Để làm quen với GamePad, chúng ta sẽ lập trình một chương trình đơn giản với Yolo:Bit:

  • Khi nút bất kỳ được nhấn, tên nút đó sẽ được hiển thị ra màn hình ma trận LED 5×5 trên Yolo:Bit
  • Khi cần gạt Joystick được xoay về hướng nào, ma trận LED sẽ hiển thị mũi tên chỉ về hướng đó. Đồng thời, trên cửa sổ thông tin sẽ hiển thị ra giá trị góc quay của cần gạt.

Để thực hiện điều này, chúng ta sẽ sử dụng khối lệnh Nút ____ được nhấnkhối lệnh Joystick ở hướng ___ 

Nạp chương trình hoàn chỉnh

Trước khi tìm hiểu cách lập trình, bạn có thể nạp chương trình hoàn chỉnh tại đây và trải nghiệm.

Hướng dẫn lập trình

1. Đầu tiên, chúng ta xóa màn hình trước đó:

Hướng dẫn lập trình Game Pad

2. Nếu nút A được nhấn, màn hình Yolo:Bit sẽ hiển thị chữ A:

Hướng dẫn lập trình Game Pad

3. Ta thực hiện tương tự với các nút còn lại:

Hướng dẫn lập trình Game Pad

4. Đặt điều kiện: Nếu Joystick xoay về hướng bên phải:

Hướng dẫn lập trình Game Pad

5. Lúc này, Yolo:Bit sẽ hiển thị hình ảnh mũi tên chỉ sang phải:

Hướng dẫn lập trình Game Pad

6. Nhấn vào icon hình bánh răng và tạo thêm 3 nhánh điều kiện Nếu không nếu như hình:

Hướng dẫn lập trình Game Pad

Giải thích thêm:

Điều kiện “nếu không nếu” là một điều kiện gộp giữa “nếu không” và “nếu”:

Hướng dẫn lập trình Game Pad

7. Tương tự, ta cho Yolo:Bit hiển thị mũi tên tương ứng với từng hướng xoay của Joystick trong thuật toán:

Hướng dẫn lập trình Game Pad
8. Hiển thị thông tin góc xoay ra cửa sổ thông tin và cập nhật liên tục sau mỗi 200ms (1 giây = 1000ms):
Hướng dẫn lập trình Game Pad
Lưu ý: 
Hướng dẫn lập trình Game Pad

Lập trình điều khiển xBot di chuyển bằng GamePad

Chúng ta sẽ lập trình GamePad để điều khiển cho xBot, sao cho:

  • Khi kéo cần gạt Joystick sang trái, phải, trên, dưới thì xBot sẽ di chuyển theo hướng tương ứng.
  • Nhấn nút A để tiến hành tìm và kết nối Bluetooth đến xBot
  • Nhấn nút B để ngắt kết nối
  • Nhấn nút C để mở tay gắp (cho Servo nối với cổng S1 quay đến góc 0 độ)
  • Nút E để mở tay gắp (cho Servo nối với cổng S1 quay đến góc 90 độ)

Tay gắp robot

Chương trình mặc định khi khởi động của xBot (trong Firmware mới nhất) đã hỗ trợ điều khiển từ Bluetooth nếu nhận được các ký tự sau:

  • “F = xx” với xx là số từ 0-100: xBot di chuyển về phía trước (F=Forward) với tốc độ xx
  • “B = xx” với xx là số từ 0-100: xBot di chuyển về phía sau (B=Backward) với tốc độ xx
  • “L = xx” với xx là số từ 0-100: xBot quay về bên trái (L=Left) với tốc độ xx
  • “R = xx” với xx là số từ 0-100: xBot di chuyển về bên phải (R=Right) với tốc độ xx
  • “S1=xx” với S1 là tên cổng Servo cần điều khiển (bạn có thể chọn từ S1 đến S8 tùy thích), xx là góc quay (0-180 độ) muốn điều khiển
  • “S=0”: xBot đứng yên tại chỗ (S=Stop)

Ví dụ: Khi bạn sử dụng khối lệnh sau, robot xBot sẽ di chuyển tới với tốc độ 50:

Hướng dẫn lập trình Game Pad

Nạp chương trình hoàn chỉnh

Trước khi tìm hiểu cách lập trình, bạn có thể tham khảo và nạp chương trình hoàn chỉnh tại đây để trải nghiệm (Bạn nhớ kết nối Servo của tay gắp vào cổng S1 trên xBot nhé).

Hướng dẫn lập trình

1. Xóa màn hình trước đó:

Hướng dẫn lập trình Game Pad

2. Khi nút A được nhấn, Yolo:Bit sẽ hiển thị hình ảnh trái tim, đồng thời bắt đầu kết nối Bluetooth với xBot:

Hướng dẫn lập trình Game Pad

Giải thích thêm:

“ohstem-xbot-83fc” là tên của robot xBot, mỗi một thiết bị xBot sẽ có cái tên khác nhau.

Để biết tên robot của mình, bạn có thể bật Bluetooth (và cả vị trí đối với Android) và quét, tên của xBot sẽ hiển thị dưới dạng “ohstem-xbot-………” như hình:

Hướng dẫn lập trình Game Pad

Bạn cũng có thể đổi tên xBot thành tên mình thích để dễ nhớ và phân biệt chúng với các thiết bị xBot khác. Thực hiện như sau:

  • Nhấn vào icon Hướng dẫn lập trình Game Pad và chọn mục Đổi tên thiết bị như hình dưới:

Hướng dẫn lập trình Game Pad

  • Nhập tên bạn thích và nhấn lưu:

Hướng dẫn lập trình Game Pad

3. Nếu nút B được nhấn, tiến hành ngắt kết nối với xBot:

Hướng dẫn lập trình Game Pad

4. Khi kết nối / ngắt kết nối với xBot thành công, màn hình LED của Yolo:Bit sẽ hiển thị dòng chữ YES hoặc NO để báo hiệu:

Hướng dẫn lập trình Game Pad

5. Đặt điều kiện: Nếu Joystick được kéo sang phải:

Hướng dẫn lập trình Game Pad

Lưu ý: Bạn sử dụng khối lệnh Nếu / thực hiện / Nếu không nhé!

Hướng dẫn lập trình Game Pad

6. Khi đó, thông tin “R” sẽ được hiển thị lên cửa sổ thông tin, đồng thời robot sẽ xoay sang phải với tốc độ bằng khoảng cách kéo chia 2:

Hướng dẫn lập trình Game Pad

7. Nhấn vào icon hình bánh răng và tạo thêm 3 nhánh điều kiện Nếu không nếu như hình:

Hướng dẫn lập trình Game Pad

8. Thực hiện tương tự với các hướng quay khác của Joystick:

Hướng dẫn lập trình Game Pad

9. Nếu không có trường hợp nào phía trên đúng, ta cho xBot dừng lại:

Hướng dẫn lập trình Game Pad

10. Khi nút C được nhấn, tay gắp sẽ mở (Servo chân S1 quay về góc 0 độ):

Hướng dẫn lập trình Game Pad

9. Tạo thêm khối Nếu không nếu và lập trình khi nút E được nhấn, tay gắp sẽ đóng lại (quay Servo đến góc 90 độ):

Hướng dẫn lập trình GamePad

10. Tạm dừng toàn chương trình trong 50ms (1 giây = 1000ms)

Hướng dẫn lập trình GamePad

Chương trình hoàn chỉnh:

Hướng dẫn lập trình Game Pad

Nội dung