見出し画像

Raspberry Pi Picoを使ってボタンが押された時にキーボードのショートカットを入力してもらう。


・概要

電子工作の一環でRaspberry Pi picoをショートカットキーを入力させるHID(Human interface device)として動作させようと思いその流れを記事に書く。簡単に見えて意外と躓いたのでその流れも細かく解説していく。
Raspberry Pi picoをHIDとして動作させる方法は大きく分けて2通りある。

・方法1 CircuitPythonを使う方法
・方法2 ArduinoをインストールしてAruduinoとして動作させる方法。
パッと検索して出てくるのは方法1のCirucuitPython(以下CP)だろうか
CPのやり方は何度か試したが私の環境ではどうしても動作が安定せず。
上手くいかなかった。そのため今回はCPでの作成は諦め、Aruduino経由で動作させる。ちなみにMicroPythonはHIDの良いライブラリがないので注意。


Aruduino IDE環境構築

すでに構築済みの人は飛ばしてほしい。
MicropythonやCirucuitPythonが導入済みの人は以下の記事からラズパイをリセットします

主な環境設定の手順は以下の通り。
1,Raspberry Pi Picoをブートセルモード(白いボタンを押しながら接続)で接続する
2,Aruduino IDEをインストール
下記のリンクからOSに合わせたものを選ぶ。あとは手順に沿ってインストール

3,IDEをRaspberry Pi Pico向けに設定
ファイル→基本設定から
追加のボードマネージャーのURLの項目に以下のgithuburlを追加する。

https://github.com/earlephilhower/arduino-pico/releases/download/global/package_rp2040_index.json
こんな感じ

ツール→ボードマネージャーからRaspberry Pi Pico/RP2040をインストール

RP2040

ツール→ボード→RP2040→Raspberry Pi picoを選ぶ。

PicoWの人はWを選んでね

最後にツール→ポート→UF2Boradを選ぶ
4,コードを描いて書き込む上の→ボタン
IDEのセットアップはこれで終わり、ちなみに次回からの接続ではブートセルモードにする必要はないです。

コードの書き込みと解説

今回試しに書き込んでみたコードはこちら

 #include  "Keyboard.h"

const int buttonPin = 15; // GP15ピンをボタンのピンとして使用

void setup() {
  pinMode(buttonPin, INPUT_PULLUP); // ボタンピンを入力として設定し、内部プルアップ抵抗を有効にする
  Keyboard.begin(); // キーボード機能を開始
}

void loop() {
  static bool buttonPressed = false; // ボタンの状態を追跡するフラグ

  // ボタンが押されたとき(GP15がLOWになったとき)にのみキー入力を送信
  if (digitalRead(buttonPin) == LOW) {
    if (!buttonPressed) { // ボタンが新たに押された場合
      Keyboard.press(KEY_LEFT_GUI); // "Win" キーを押す
      Keyboard.press('d'); // "D" キーを押す
      delay(100); // 少し待つ
      Keyboard.releaseAll(); // すべてのキーを離す

      buttonPressed = true; // ボタンが押された状態に更新
    }
  } else {
    buttonPressed = false; // ボタンが離されたらフラグをリセット
  }

  delay(50); // チャタリング防止のための小さな遅延
}

GP15に接続したボタンがONになった時にショートカット"Win + D"を入力するコードです。見られてはいけない画面を一瞬で隠すのに使えますね()
コードを描いて上の→ボタンを押せば書き込みが始まりました。最初こそ長かったですが二回目以降は一瞬でコンパイルできますね。アイデア次第ではより便利で素晴らしいものを作れると思います。

・宣伝

X(旧twitter)のフォローといいねお願いします!!
いいねしてくれると次回への励みになるのでお願いします!!

https://twitter.com/sakamod32



この記事が気に入ったらサポートをしてみませんか?