注釈
こんにちは、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) コマンドを使用すると、マウスの移動を簡単に制御できます。カーソル位置を更新する場合、常にカーソルの前回の位置を基準にします。
ここに、ボタンを使用してマウスカーソルを制御する単純な例があります。
回路図
コードのアップロード
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...」 のエラーが発生する場合があります。
このような状況でアップロードするには、以下の手順に従ってください:
ボード上の「RESET」ボタンを2回速く押してリリースします。 「L」 と表示されているLEDが点滅し始めるはずです。
Arduino IDEメニューから、ボードのポートを選択します。リセット後、ポートが変更されることがあるため、正しく選択されていることを確認してください。
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() 関数を使用して、それぞれのキーボードショートカットを模倣します。この例は、特定のタスク用の専用ハードウェアインターフェースを設計する方法を示しており、キーボードを介さずに繰り返しのアクションを実行し、キーボード操作が不要な場面で特に有利です。これは、データの迅速な操作が必要な職場や、簡略化されたコントロールが有益なアクセシビリティの設定で特に有益です。
回路図
コードのアップロード
elite-explorer-kit-main\r4_new_feature\05-hid_keyboard にある 05-hid_keyboard.ino ファイルを開くか、以下のコードをArduino IDEに貼り付けてください。
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}
注意事項とヒント
マウスとキーボードライブラリに関する注意: マウスまたはキーボードライブラリのいずれかが連続して実行されている場合、ボードのプログラムに干渉する可能性があります。
Mouse.move()やKeyboard.print()などの機能は、接続されたコンピュータを制御するとみなされ、それらを管理する準備ができているときにのみ呼び出すべきです。この機能をトグルするための物理スイッチや特定の入力コントロールなどのコントロールシステムを使用することをお勧めします。コードのアップロードに関する問題: UNO R4 WiFiボードのマルチプロセッサアーキテクチャのため、HID機能を使用するコードをアップロードする際に
「No device found on...」のエラーが発生する場合があります。このような状況でアップロードするには、以下の手順に従ってください:
ボード上の「RESET」ボタンを2回速く押してリリースします。「L」 と表示されているLEDが点滅し始めるはずです。
Arduino IDEメニューから、ボードのポートを選択します。リセット後、ポートが変更されることがあるため、正しく選択されていることを確認してください。
参考