Arduino UNO R4 WiFi USB HID

Started by tha, November 01, 2023, 08:37:46 AM

Previous topic - Next topic

tha

https://docs.arduino.cc/tutorials/uno-r4-wifi/usb-hid

Arduino UNO R4 WiFi USB HID

เรียนรู้วิธีใช้ the UNO R4 WiFi เป็น a mouse/keyboard.

AUTHOR: Karl Söderby

ในบทช่วยสอนนี้ คุณจะได้เรียนรู้วิธีจำลองเมาส์/คีย์บอร์ดโดยใช้บอร์ด Arduino UNO R4 WiFi ด้วย the Keyboard and Mouse APIs.

คุณสมบัตินี้สามารถถูกใช้เพื่อสร้างตัวควบคุมเกม ส่วนขยายแป้นพิมพ์ หรืออุปกรณ์ HID อื่นๆ

Goals

เป้าหมายของบทช่วยสอนนี้คือ:

  •  เรียนรู้วิธีเลียนแบบแป้นพิมพ์ (การกดปุ่ม)
  •  เรียนรู้วิธีเลียนแบบเมาส์ (พิกัด x,y)

Hardware & Software Needed

  •  Arduino IDE (online or offline)
  •  Arduino UNO R4 WiFi
  •  Arduino Renesas Core

tha

Human Interface Device (HID)

Human interface devices (HID) คืออุปกรณ์ที่ออกแบบมาสำหรับ humans (keyboards, mice, game controllers etc.), ซึ่งมักส่งข้อมูลผ่าน USB ไปยังคอมพิวเตอร์. เมื่อคุณกดปุ่มบนแป้นพิมพ์ คุณจะส่งข้อมูลไปยังคอมพิวเตอร์ ซึ่งจะอ่านมันและทำให้ทำงานคีย์ที่ตรงกันตามลำดับ

The UNO R4 WiFi มี built-in ที่รองรับสำหรับ HID, เป็นคุณสมบัติที่พบในบอร์ดพัฒนาสมัยใหม่ส่วนใหญ่, แต่ไม่มีใน UNO รุ่นก่อนหน้านี้.

เพื่อเปลี่ยนบอร์ดของคุณให้เป็น HID คุณสามารถใช้ the keyboard/mouse API ที่ถูกสร้างไว้ใน  the core. คุณสามารถเยี่ยมชมเอกสารประกอบสำหรับ API นี้ใน language reference ได้ที่:

  •  Keyboard
  •  Mouse

tha

Sketch Upload Interference

เนื่องจากผลที่ตามมาของ the multi-processor design ของ the UNO R4 WiFi board, การอัฟโหลดอาจล้มเหลวด้วยข้อผิดพลาด a "No device found on ..." เมื่อ the board กำลังรัน a sketch ที่ใช้ the HID capabilities.

ด้วยเหตุนี้ คุณควรใช้ขั้นตอนต่อไปนี้เพื่ออัปโหลดภายใต้เงื่อนไขเหล่านี้:

1. กดและปล่อยปุ่มที่มีเครื่องหมาย "RESET" บนบอร์ดอย่างรวดเร็วสองครั้ง ตอนนี้ไฟ LED ที่มีเครื่องหมาย "L" บนบอร์ดควรจะกะพริบ

2. เลือกพอร์ตของบอร์ดจากเมนูใน Arduino IDE พอร์ตอาจมีการเปลี่ยนแปลงหลังจากขั้นตอนก่อนหน้า ดังนั้นโปรดตรวจสอบให้แน่ใจว่ามันได้ถูก
   เลือก

3. อัปโหลด sketch ของคุณตามปกติ


tha

Keyboard

เพื่อใช้ keyboard functionalities, เราจำเป็นต้องรวม the library ไว้ที่ด้านบนของ sketch ของเรา. The Keyboard class บรรจุหลาย methods ที่เป็นประโยชน์ในการเลียนแบบ a keyboard.


Keyboard Example

เพื่อจำลอง a keyboard, เราสามารถใช้ the press() และ releaseAll() methods. สิ่งนี้จะจำลอง a keypress, ตลอดจนการปล่อย the keypress. ตัวอย่างต่อไปนี้จะพิมพ์ a "w" ทุกๆวินาที.


หากต้องการดูตัวอย่างเพิ่มเติม โปรดดูลิงก์ด้านล่าง:

  •  Keyboard and Mouse Control Tutorial
  •  Keyboard Reprogram Tutorial
  •  Keyboard Serial Tutorial
  •  Keyboard Logout Tutorial
  •  Keyboard Message Tutorial

tha

Mouse

เพื่อใช้ mouse functionalities, เราจำเป็นต้องรวม the library ไว้ที่ด้านบนของ sketch ของเรา. The Mouse class บรรจุหลาย methods ที่เป็นประโยชน์ในการเลียนแบบ a mouse.


Mouse Example

ตัวอย่างต่อไปนี้จะเลื่อนทั้งสองแกนของเมาส์เพียงเล็กน้อย (10 จุด) ไปมา


หากต้องการดูตัวอย่างเพิ่มเติม โปรดดูลิงก์ด้านล่าง:

  •  Keyboard and Mouse Control Tutorial
  •  Button Mouse Control Tutorial
  •  Joystick Mouse Control Tutorial

tha

Summary

ในบทช่วยสอนนี้ เราได้สาธิตการใช้งาน HID ขั้นพื้นฐานกับ UNO R4 WiFi หากต้องการดู API แบบเต็ม โปรดดู API ต่อไปนี้:

  •  Keyboard
  •  Mouse

ในนั้น คุณจะพบข้อมูลอ้างอิงโดยละเอียดพร้อมกับตัวอย่างที่ดีเพื่อให้คุณเริ่มต้นใช้งานกับ HID features

tha

https://www.arduino.cc/reference/en/language/functions/usb/keyboard/

Keyboard

[USB]

Description

The keyboard functions ช่วยให้ 32u4 หรือ SAMD micro based boards ส่ง keystrokes ไปยัง an attached computer ผ่าน native USB port ของ micro ของพวกมัน.

หมายเหตุ: ไม่สามารถส่งอักขระ ASCII ได้ทุกตัว โดยเฉพาะอย่างยิ่งอักขระ the non-printing จะสามารถส่งด้วย the Keyboard libraryได้

The library รองรับการใช้ modifier keys. Modifier keys เปลี่ยนลักษณะของ key อื่นเมื่อกดพร้อมกัน. ดูข้อมูลเพิ่มเติมเกี่ยวกับคีย์ที่รองรับและการใช้งานได้ที่นี่

tha

Notes and Warnings

core libraries เหล่านี้ช่วยให้ the 32u4 and SAMD based boards (Leonardo, Esplora, Zero, Due and MKR Family) ปรากฎเป็น a native Mouse และ/หรือ Keyboard ไปยัง a connected computer.

ข้อควรระวังในการใช้ the Mouse and Keyboard libraries: ถ้า the Mouse or Keyboard library ทำงานอย่างต่อเนื่อง จะทำให้การตั้งโปรแกรมบอร์ดของคุณทำได้ยาก. Functions อย่างเช่น Mouse.move() and Keyboard.print() จะเลื่อนเคอร์เซอร์ของคุณหรือส่งการกดแป้นไปยังคอมพิวเตอร์ที่เชื่อมต่อและควรถูกเรียกใช้เมื่อคุณพร้อมที่จะจัดการพวกมันเท่านั้น.ขอแนะนำให้ใช้ a control system เพื่อเปิดฟังก์ชันนี้, เช่น a physical switch หรือตอบสนองต่อเฉพาะอินพุตที่คุณควบคุมได้เท่านั้น ดู the Mouse and Keyboard examples สำหรับบางวิธีจัดการกับสิ่งนี้.

เมื่อใช้ the Mouse or Keyboard library, วิธีที่ดีที่สุดคือทดสอบเอาต์พุตของคุณก่อนโดยใช้ Serial.print(). ด้วยวิธีนี้ คุณจะมั่นใจได้ว่าคุณทราบว่าค่าใดกำลังถูกรายงาน.