Arduino Nano RP2040で作るDIY Photoshopコントロールコンソール
部品と材料
| 部品 | 数量 |
|---|---|
| Arduino Nano RP2040 Connect | 1 |
| C&Kスイッチ PTS 645シリーズ スイッチ | 1 |
| ロータリーポテンショメーター(汎用) | 1 |
アプリとオンラインサービス
- Arduino IDE
- Arduino Web Editor
- Arduino IoT Cloud
プロジェクト概要
DIY Photoshop編集コンソールの製作
タクトスイッチとポテンショメーターをArduino Nano RP2040に接続し、ボタン一つでAdobe Photoshopへキーボードショートカットを送信するカスタムハードウェアコンソールを作成します。リサイズ、ズーム、ツール選択などの頻繁な操作をメニュー操作なしで実行可能にします。
HIDとは
Human Interface Device(HID)プロトコルにより、マイコンがキーボードやマウスをエミュレート可能に。Nano RP2040のUSB HIDライブラリを活用し、Ctrl+Tなどのキー組み合わせをホストPCへ直接送信します。
回路概要
4つのモメンタリプッシュボタンをデジタルピンD2〜D5、2つのアナログポテンショメーターをA0とA1、ステータスLEDをピン13に接続。USB給電で、オンボードレギュレーターが5Vを3.3Vに降圧し、Nano RP2040のロジックレベルに合わせています。

PCBはAltium Designerで設計し、PCBWayで製造。双層1.6mm FR-4基板で、全部品を片面実装しコンパクトにまとめています。
PCB製造
PCBWayのオンラインサービスでガーバーファイルをアップロード、プレビュー確認後決済。短納期で小ロット対応可能。届いた基板は部品実装準備完了状態です。

Arduinoコード
ボタン駆動ショートカットとポテンショメーターによるズームを示す最小例。USBKeyboardクラスでHIDキーストローク送信。
#include <PluggableUSBHID.h>
#include <USBKeyboard.h>
const int buttonPin1 = 2;
const int buttonPin2 = 3;
const int buttonPin3 = 4;
const int buttonPin4 = 5;
const int ledPin = 13;
USBKeyboard Keyboard;
int button1State = 0;
int button2State = 0;
int button3State = 0;
int button4State = 0;
int pot1 = 0;
int pot2 = 0;
void setup() {
pinMode(ledPin, OUTPUT);
pinMode(buttonPin1, INPUT);
pinMode(buttonPin2, INPUT);
pinMode(buttonPin3, INPUT);
pinMode(buttonPin4, INPUT);
pinMode(A0, INPUT);
pinMode(A1, INPUT);
Serial.begin(9600);
}
void loop() {
button1State = digitalRead(buttonPin1);
button2State = digitalRead(buttonPin2);
button3State = digitalRead(buttonPin3);
button4State = digitalRead(buttonPin4);
pot1 = analogRead(A0);
pot2 = analogRead(A1);
if (button1State == HIGH) {
digitalWrite(ledPin, HIGH);
Serial.println("Button 1 Pressed");
Keyboard.key_code('t', KEY_CTRL); // 画像リサイズ
delay(500);
} else {
digitalWrite(ledPin, LOW);
}
if (button2State == HIGH) {
digitalWrite(ledPin, HIGH);
delay(500);
Serial.println("Button 2 Pressed");
Keyboard.key_code('u', KEY_CTRL); // 元に戻す
} else {
digitalWrite(ledPin, LOW);
}
if (button3State == HIGH) {
digitalWrite(ledPin, HIGH);
delay(500);
Serial.println("Button 3 Pressed");
Keyboard.key_code('j', KEY_CTRL); // レイヤージャンプ
} else {
digitalWrite(ledPin, LOW);
}
if (button4State == HIGH) {
digitalWrite(ledPin, HIGH);
Keyboard.key_code('v'); // ペースト
delay(500);
Serial.println("Button 4 Pressed");
} else {
digitalWrite(ledPin, LOW);
}
// ポテンショメーター1でズーム制御
if ((pot1 >= 750) && (pot1 <= 400)) {
Serial.println("Pot 1 Min");
} else if (pot1 > 750) {
Keyboard.key_code('-', KEY_CTRL); // ズームアウト
delay(500);
} else if (pot1 <= 400) {
Keyboard.key_code('+', KEY_CTRL); // ズームイン
delay(500);
}
}
キー割り当ての変更、チャタリング対策、長押しロジックの追加など、ワークフローに合わせて自由にカスタマイズしてください。
テスト

組み立て後、USBで電源投入しPhotoshopを起動。各ボタンを押してコンソールログに期待のショートカットが出るか確認。ポテンショメーターでズーム動作を確認。問題なければデスクに設置して、より効率的な編集セッションを楽しめます。
製造プロセス
- Arduino Nano RP2040で作るDIY Photoshopコントロールコンソール
- Arduinoで作るモニター用Ambilightシステム:没入感アップの自作ガイド
- TeleBall: 自作レトロ携帯ゲーム機 – Arduinoでブロック崩し&テニス
- Arduboyクローンで作る自作携帯ゲーム機 – PCB設計から実装まで
- Arduinoとスマホで作るスマート電圧計 – 簡単DIYプロジェクト
- ArduinoとMAX30100で作るリアルタイムIoT心拍数モニター
- Arduino Nanoで作るウェアラブル心拍ドレス:CrazyCircuitsとDFRobotセンサーで自信を持ってプロジェクトを構築
- Arduinoで作る赤外線心拍センサー:低コスト・リアルタイム波形表示のステップバイステップガイド
- Arduino UNO WiFi Webサーバー:ブラウザからLEDをON/OFF制御
- Arduino、Google Cardboard、Bluetoothで作るDIY VRスケートボード
- Arduino NanoとRDA5807Mで作るコンパクトFMラジオ