• 車種別
  • パーツ
  • 整備手帳
  • ブログ
  • みんカラ+
イイね!
2020年10月26日

【Arduino】PCボリュームコントローラ作ってみた!

【Arduino】PCボリュームコントローラ作ってみた!

久々の工作日記。

しばらく前からリモートワークやWEB会議が多くなり、ヘッドホンやイヤホンをつけたまま仕事をすることも多くなりました。

会議中に唐突にマイク音の大きい人がしゃべることにより、聞きたくもないおっさんの吐息が耳の中へ流れ込みます・・・( ゚Д゚)

急いでボリュームを絞ろうとして、別のアイコンをクリックしてしまったりするので、単独でPCのボリュームをグリグリ調整できるコントローラが欲しくなりました。
キーボードのショートカットでも操作できますが、両手を使わないといけないので、とっさには操作しづらい・・・


市販品もありますが、カッコいい市販品は無駄に高い・・・
中華品の製品を見てみたらと、質素な基盤とツマミだけで数千円するので、これなら自分で作れるぞ!っと調査開始。

Arduinoを使ってコントローラを作っている人がいるようなので、自分も真似してみました。



alt

完成です。

素材はジャンクパーツから外してあった部品で作成。
可変抵抗の電圧値をArduinoで読み取ってやり、PCへボリューム変更の信号を送ります。


素材
 ・100均の缶カラ
 ・可変抵抗
 ・なんか良さげなノブ
 ・ケーブル
 ・ピンソケット
 ・Arduino UNO (ここが失敗・・・)



こういうものは触った時の重さが質感を出すので・・・

alt

中華風ナットでずっしり作戦!

デットニング材を張り付けることで、触った時の”カラカラ”いう安っぽい軽い音も防止。


alt

Arduino Leonardo(互換機)を使用。


ArduinoはUnoではなく、Leonardoを使用しました。

こいつが何かっていうと、PCとつなげることでマウスやキーボードなどのUSBデバイスとして認識させることができます。
つまり、マウス操作などをプログラムすることで、誰も操作していないのに定期的にマウスが動き、リモートワーク中に「退席中」にならないデバイスが作れるわけです。


当初、手持ちのArduino Unoのファームウェアを書き換えて、USBデバイスとして認識させようと思いましたが、自分のはバージョンが古いR2であったためうまくできませんでした。(海外フォーラムだと成功例あり??)

Arduino UNO R3であれば、ATmega16U2のファームウェアを書き換えれば、HIDキーボードデバイスとして認識させることができるようです。


ArduinoUno作戦がうまくいかなかったため、急遽Arduino Leonardoの互換機(600円)を追加購入しました。




んで出来たのが上の写真。
Arduino Leonardoがキーボードとして認識され、可変抵抗から出た電圧を読み取り、その値の変化に応じてPCへ音量Up/Downの信号を送ります。



ここで何も考えず作業を始めてしまったことで、失敗に気づく・・・ 

 当初、可変抵抗を動かすことで、PCへ送る信号として「PCの音量を20%にしろ」、「PCの音量を50%にしろ」という信号を送れると考えていました。
でも良く調べてみると「PCの音量を1上げろ」、「PCの音量を1下げろ」しか指令できないことに気づく・・・

 可変抵抗は回転範囲が限られているため、上で書いたような指令の出し方では相性が悪い。
回転の絶対位置でボリュームが規定できるわけではなく、現在の音量設定からの相対位置で指示を送ることになるので、PC側で音量を変更した場合、可変抵抗の角度と差が生まれてしまいます。

たとえば、
alt


理想: 最小0 ⇔ 最大100

可変抵抗の最小点を音量0、最大点を音量100にするのが理想。


でもPC側の音量をマウスで変更してしまうことで、PC音量100、でもノブの位置は最小地点で、これ以上下げられない!って状況が生まれてしまいます。

alt

音量を下げる側に動かせない・・・

素直に初めからロータリーエンコーダを使用するべきでした。エンコーダなら今の位置からの角度変化を検出して指示が送れるので、こんなことはおきません。

そこで、音量を最小にしたときに、「音量を1下げる」信号を送り続けて、初期位置補正をするようにしました。


扱いになれれば、とても便利なデバイスになりました(/・ω・)/
これで唐突な音量変化にも対応できるぞ!

安いエンコーダも買ってあるので、気が向いたときに組み替えたいと思います。




キーボード操作部分のヘッダーファイルはこの記事を参考にさせていただきました。

#include "ConsumerControl.h"

int val_old;
int cnt = 0; // 音量最小時のカウント 音量が一番小さいときにカウントを開始。
// 最小時に25カウント以上すると通信を終了する。

void setup() {
  Serial.begin(9600);
}
void loop() {
  int val = analogRead(0);
  int valm = map(val, 0, 1023, 0, 100);
  Serial.println(valm);

  // ボリュームを最小にしたとき ⇒ 音量小ボタンを押し続ける。
  if (valm <= 1 & cnt < 25) { // 25カウント以上ループした場合、機能を無効化する。
    Serial.println("Volume DOWN");
    ConsumerControl.press(VOLUME_DOWN); // 音量小ボタンを押す
    ConsumerControl.release(); // ボタンを離す
    val_old = valm;
    cnt = cnt + 1;
  }

  // ボリュームを大きくする
  if (valm > val_old + 2) {
    Serial.println("Volume UP");
    ConsumerControl.press(VOLUME_UP); // 音量大ボタンを押す
    ConsumerControl.press(VOLUME_UP); // 音量大ボタンを押す
    ConsumerControl.press(VOLUME_UP); // 音量大ボタンを押す
    ConsumerControl.release(); // ボタンを離す
    val_old = valm;
    cnt = 0;
  }
  // ボリュームを小さくする
  if (valm < val_old - 2) {
    Serial.println("Volume DOWN");
    ConsumerControl.press(VOLUME_DOWN); // 音量小ボタンを押す
    ConsumerControl.press(VOLUME_DOWN); // 音量小ボタンを押す
    ConsumerControl.press(VOLUME_DOWN); // 音量小ボタンを押す
    ConsumerControl.release(); // ボタンを離す
    val_old = valm;
    cnt = 0;
  }

  // 変化がない場合
  if (valm == val_old) {
    Serial.println("-------");
  }
  delay(20);
}


ブログ一覧 | その他 | 日記
Posted at 2020/10/26 22:50:05

イイね!0件



今、あなたにおすすめ

ブログ人気記事

今週の晩酌 〜 雅楽代(天領盃酒造 ...
pikamatsuさん

定期便です【5/14号】😺しゃこ ...
けんちゃん@HOOB(やまけんタイプR)さん

天気悪い中、安和(あわ)海岸を観に ...
S4アンクルさん

【シェアスタイル】ランドクルーザー ...
株式会社シェアスタイルさん

ホーム⚽️鳥取戦
blues juniorsさん

母との別れ
緋色の流星☆彡さん

この記事へのコメント

2020年10月27日 0:02
サス班じゃなくてエレキ班やんけ!
と、どーでもいい突っ込みを思い付いてしまったのでコメントしときます。
色々やりますね(´・ω・`)スゲェ
コメントへの返答
2020年10月27日 18:35
あークルマいじってないですねぇ(汗)

こんなチマチマしたことを続けております。自分の好きな風にプログラムできるので、便利で楽しいですよ♪

プロフィール

「点検でマツダへ。娘氏、NDを指さし「どーどすたー!」と大はしゃぎ。いい傾向です!」
何シテル?   05/10 11:19
サス班と申します. 名前の由来は学生時代にサークルでサスペンションの設計・製作を行っていたから^^ 写真,映画,革細工が趣味です♪ 素人ながらできるだ...

ハイタッチ!drive

みんカラ新規会員登録

ユーザー内検索

<< 2025/5 >>

    12 3
45678910
1112 1314151617
18192021222324
25262728293031

リンク・クリップ

alfanxi アルカンターラハンドルカバー 
カテゴリ:その他(カテゴリ未設定)
2025/05/03 23:59:53
編込み式ハンドルカバー取付 
カテゴリ:その他(カテゴリ未設定)
2025/04/29 21:54:17
PHILIPS スマホホルダー 
カテゴリ:その他(カテゴリ未設定)
2025/03/04 07:38:57

愛車一覧

マツダ MAZDA6 ワゴン マツダ MAZDA6 ワゴン
ついに実用的な車を手に入れました。 今時少なくなってきたステーションワゴンです。 荷物 ...
マツダ ロードスター マツダ ロードスター
またここに戻ってきてしまった. 身近に手放す人がいたので保護しました. やっぱりこの動 ...
スズキ カプチーノ スズキ カプチーノ
FRオープンスポーツが忘れられず,購入! スズキ カプチーノ 平成8年(1996) 後 ...
マツダ ユーノスロードスター マツダ ユーノスロードスター
1997年製NA8C(Sr.2) 500台限定のR2リミテッドです. 真っ白なボディに ...

過去のブログ

2025年
01月02月03月04月05月06月
07月08月09月10月11月12月
2021年
01月02月03月04月05月06月
07月08月09月10月11月12月
2020年
01月02月03月04月05月06月
07月08月09月10月11月12月
2018年
01月02月03月04月05月06月
07月08月09月10月11月12月
2017年
01月02月03月04月05月06月
07月08月09月10月11月12月
2016年
01月02月03月04月05月06月
07月08月09月10月11月12月
2015年
01月02月03月04月05月06月
07月08月09月10月11月12月
2014年
01月02月03月04月05月06月
07月08月09月10月11月12月
2013年
01月02月03月04月05月06月
07月08月09月10月11月12月
2012年
01月02月03月04月05月06月
07月08月09月10月11月12月
2011年
01月02月03月04月05月06月
07月08月09月10月11月12月
2010年
01月02月03月04月05月06月
07月08月09月10月11月12月
ヘルプ利用規約サイトマップ

あなたの愛車、今いくら?

複数社の査定額を比較して愛車の最高額を調べよう!

あなたの愛車、今いくら?
メーカー
モデル
年式
走行距離(km)
© LY Corporation