注釈

こんにちは、SunFounderのRaspberry Pi & Arduino & ESP32愛好家コミュニティへようこそ!Facebook上でRaspberry Pi、Arduino、ESP32についてもっと深く掘り下げ、他の愛好家と交流しましょう。

参加する理由は?

  • エキスパートサポート:コミュニティやチームの助けを借りて、販売後の問題や技術的な課題を解決します。

  • 学び&共有:ヒントやチュートリアルを交換してスキルを向上させましょう。

  • 独占的なプレビュー:新製品の発表や先行プレビューに早期アクセスしましょう。

  • 特別割引:最新製品の独占割引をお楽しみください。

  • 祭りのプロモーションとギフト:ギフトや祝日のプロモーションに参加しましょう。

👉 私たちと一緒に探索し、創造する準備はできていますか?[ ここ]をクリックして今すぐ参加しましょう!

USB HID

Arduino Uno R4 WiFiは、強力な開発ボードだけでなく、Human Interface Devices(HID)の内蔵サポートも備えています。これにより、このボードをマウスやキーボードなどのデバイスのエミュレーションに使用し、プロジェクトに新たな対話性を追加することができます。

HID、またはHuman Interface Devicesは、通常は入力目的で設計された、人間と直接対話するためのコンピュータデバイスのカテゴリです。このカテゴリにはキーボード、マウス、ゲームコントローラなどのデバイスが含まれます。Arduino Uno R4 WiFiを使用すると、これらのデバイスをエミュレートでき、DIYプロジェクトの可能性が広がります。

マウスコントロール

Arduino Uno R4 WiFiを使用してマウスを制御するのは簡単です。 Mouse.move(x, y) コマンドを使用すると、マウスの移動を簡単に制御できます。カーソル位置を更新する場合、常にカーソルの前回の位置を基準にします。

ここに、ボタンを使用してマウスカーソルを制御する単純な例があります。

回路図

../_images/05_hid_1_bb.png

コードのアップロード

elite-explorer-kit-main\r4_new_feature\05-hid_mouse にある 05-hid_mouse.ino ファイルを開くか、以下のコードをArduino IDEに貼り付けてください。

警告

Mouse.move() コマンドを使用すると、Arduinoがコンピュータのマウスを制御します!この機能を使用してスケッチを実行する際に、コンピュータの制御を失わないように、 Mouse.move() を呼び出す前に信頼性のあるコントロールシステムを設定してください。このスケッチには、マウスを切り替えるためのプッシュボタンが含まれており、ボタンを押すとスケッチが実行されるようになります。

警告

UNO R4 WiFiボードのマルチプロセッサアーキテクチャのため、HID機能を使用するコードをアップロードする際には、 「No device found on...」 のエラーが発生する場合があります。

このような状況でアップロードするには、以下の手順に従ってください:

  1. ボード上の「RESET」ボタンを2回速く押してリリースします。 「L」 と表示されているLEDが点滅し始めるはずです。

  2. Arduino IDEメニューから、ボードのポートを選択します。リセット後、ポートが変更されることがあるため、正しく選択されていることを確認してください。

05-hid_mouse.ino
 1/*
 2  This code is designed to control mouse cursor movement using an Arduino Uno R4.
 3  When the button connected to pin 7 is pressed, the mouse moves 10 units to the right.
 4  Uncommenting the respective sections below the main loop will change the direction of movement.
 5
 6  Board: Arduino Uno R4 
 7*/
 8
 9#include <Mouse.h>  // Include the Mouse library for mouse control
10
11const int button = 7;  // Define the pin where the button is connected
12
13void setup() {
14  pinMode(button, INPUT);  // Set the button pin as an input
15  Mouse.begin();  // Initialize mouse control
16  delay(1000);  // Wait for 1 second (1000 milliseconds) for hardware initialization
17}
18
19void loop() {
20  // Check if the button is pressed (HIGH)
21  if (digitalRead(button) == HIGH) {
22    Mouse.move(10, 0);  // Move the mouse 10 units to the right
23    delay(200);  // Wait for 200 milliseconds to slow down mouse movement
24
25    // Left
26    // Mouse.move(-10, 0);  
27    // delay(200);  
28
29    // Down
30    // Mouse.move(0, 10);  
31    // delay(200);  
32
33    // Up
34    // Mouse.move(0, -10);  
35    // delay(200);  
36
37  }
38}

マウスの移動を制御するだけでなく、マウスのクリックも扱うことができます。詳細については、 Arduino Reference - Mouse を参照してください。

キーボード制御

Arduino Uno R4 WiFiは、キーボードエミュレーションの機能も提供しています。これにより、個々のキー入力だけでなく、複雑なキーコンビネーションも送信できます。

警告

Keyboard.print() コマンドを使用すると、Arduinoがコンピュータのキーボードを制御します!この機能を使用してスケッチを実行する際に、コンピュータの制御を失わないように、 Keyboard.print() を呼び出す前に信頼性のあるコントロールシステムを設定してください。このスケッチには、キーボードを切り替えるためのプッシュボタンが含まれており、ボタンを押すとスケッチが実行されるようになります。

ショートカットキーを送信するためのサンプルコード

この場合、Arduino Uno R4 WiFiは、よく使用される2つのキーボードショートカットをエミュレートするように構成されています。「Ctrl+C」はコピー、「Ctrl+V」は貼り付けです。 Arduinoに接続された2つの物理ボタンがトリガーとして機能します。ピン7に接続されたボタンはコピー操作を開始し、ピン8に接続されたものは貼り付けをトリガーします。

ボタンを押すと、Arduinoは Keyboard.press() および Keyboard.releaseAll() 関数を使用して、それぞれのキーボードショートカットを模倣します。この例は、特定のタスク用の専用ハードウェアインターフェースを設計する方法を示しており、キーボードを介さずに繰り返しのアクションを実行し、キーボード操作が不要な場面で特に有利です。これは、データの迅速な操作が必要な職場や、簡略化されたコントロールが有益なアクセシビリティの設定で特に有益です。

回路図

../_images/05_hid_2_bb.png

コードのアップロード

elite-explorer-kit-main\r4_new_feature\05-hid_keyboard にある 05-hid_keyboard.ino ファイルを開くか、以下のコードをArduino IDEに貼り付けてください。

05-hid_keyboard.ino
 1/*
 2  This code is designed to provide copy and paste functionality using two buttons with an Arduino Uno R4.
 3  When the button connected to pin 7 is pressed, a "copy" command (Ctrl + C) is sent to the computer.
 4  When the button connected to pin 6 is pressed, a "paste" command (Ctrl + V) is sent to the computer.
 5
 6  Board: Arduino Uno R4 
 7*/
 8
 9#include <Keyboard.h>  // Include the Keyboard library to enable keyboard functionalities
10
11const int copyButtonPin = 7;  // Pin number for the copy button
12const int pasteButtonPin = 6; // Pin number for the paste button
13
14void setup() {
15  Keyboard.begin();  // Initialize the Keyboard library
16  pinMode(copyButtonPin, INPUT);  // Set the copy button pin as input
17  pinMode(pasteButtonPin, INPUT); // Set the paste button pin as input
18  delay(1000);       // Wait for 1 second to allow hardware initialization
19}
20
21void loop() {
22  // Check if the copy button is pressed
23  if (digitalRead(copyButtonPin) == HIGH) {
24    Keyboard.press(KEY_LEFT_CTRL);  // Press the Ctrl key
25    Keyboard.press('c');            // Press the 'c' key
26    Keyboard.releaseAll();          // Release all keys
27    delay(200);                     // Wait for 200 milliseconds
28  } 
29  // Check if the paste button is pressed
30  else if (digitalRead(pasteButtonPin) == HIGH) {
31    Keyboard.press(KEY_LEFT_CTRL);  // Press the Ctrl key
32    Keyboard.press('v');            // Press the 'v' key
33    Keyboard.releaseAll();          // Release all keys
34    delay(200);                     // Wait for 200 milliseconds
35  }
36}

注意事項とヒント

  1. マウスとキーボードライブラリに関する注意: マウスまたはキーボードライブラリのいずれかが連続して実行されている場合、ボードのプログラムに干渉する可能性があります。 Mouse.move()Keyboard.print() などの機能は、接続されたコンピュータを制御するとみなされ、それらを管理する準備ができているときにのみ呼び出すべきです。この機能をトグルするための物理スイッチや特定の入力コントロールなどのコントロールシステムを使用することをお勧めします。

  2. コードのアップロードに関する問題: UNO R4 WiFiボードのマルチプロセッサアーキテクチャのため、HID機能を使用するコードをアップロードする際に 「No device found on...」 のエラーが発生する場合があります。

    このような状況でアップロードするには、以下の手順に従ってください:

    1. ボード上の「RESET」ボタンを2回速く押してリリースします。「L」 と表示されているLEDが点滅し始めるはずです。

    2. Arduino IDEメニューから、ボードのポートを選択します。リセット後、ポートが変更されることがあるため、正しく選択されていることを確認してください。

参考