3Dマウス④ ジョイスティックの制御
2023.01.20
前回の3Dマウスの記事はこちら
https://randol-news.net/art/00576.html
前回は配線のミスが無いこと、ソースの書き換えが正常に行えたこと、
キーボードとマウスの制御が問題なくできることを確認しました。
今回はある程度3Dマウスに近い動作ができるまで
実験を進めていきたいと思います。
if (Joy_Switch_POS == LOW) {
Keyboard.press(KEY_LEFT_SHIFT);
Mouse.press(MOUSE_MIDDLE);
delay(2);
Mouse.move(1,1,0);
Keyboard.releaseAll();
Mouse.release(MOUSE_MIDDLE);
delay(2);
Mouse.move(-1,-1 ,0);
}else{
Keyboard.releaseAll();
Mouse.release(MOUSE_MIDDLE);
}
delay(10);
この処理が怪しい(;´Д`)
マウスカーソルの移動が10pxならうまく処理されるが、
1pxにすると、まったく動かなくなる。
なぜだ(;´Д`)
マウスカーソルをもとの位置に戻さなければ1pxでも正常に動く。
なぜだ(;´Д`)
解せぬ・・
厳密には6pxでも動くが、マウスホイールが動いたと錯覚したのか、
拡大縮小現象もおきる(笑)
安定して動くのが10px
意味不明。
拡大縮小が突然おきる原因は時間がかかったけど判明(;´Д`)
犯人はマウスのホイールボタンのダブルクリックに
「モデルを画面に合わせる」が組み込まれているため、
これが反応している模様。こんなん使ったことない。初めて知ったわ(;´Д`)
隠れたショートカットがまだまだあるんだなーと。
6px未満はドライバーによってダブルクリック認定されるかされないか
際どいラインなんだと思う。
これはPCの性能とマウスドライバーの良しあしでだいぶバラツキが出そうだ。
やばい、詰んだか?(;´Д`)
10pxを最小として組んでいけば?となるが
でもこれだと最小なのに目で追えないほど回転速度が速くて実用的じゃない。
じゃdelayを変化させて速度をコントロールするか?
そうなるとなめらかさを失うしな・・・ 困った。
しかもX、Yの両方向を同時に動かすのにdelayだけで管理するのは無理がある。
ORBIONがなぜマウスカーソルの動きに補正を入れないのか疑問だったが、
ようやく理解した(;´Д`)
3日間悩みに悩んだが、1pxレベルのオービットは必要。これは避けられないと思った。
7pxや10px刻みだと、複雑なものを作っているときに、
狙った角度を正面にできないことが多いからだ。
そこでどのように解決するかというと、1px~7pxまでの動きはカーソルが動くのを許容した。
8~10pxの場合は移動量が多すぎてすぐ画面端に激突したり、
FUSION360のウインドウからはみ出たりするので
元の座標にとどまるように位置修正を施す。
これでお茶を濁す。

ジョイスティックと移動量の関係は計算式ではなく、
表管理することにした。
思いついた当初は、配列で管理するつもりだったけど、
微調整するとき見づらく面倒だったので、
とりあえずIF文の羅列で実験してみたが、処理落ちもしないし、
可読性も高いしこのままでいいかもしれない(;´Д`)

マウスの中央ボタンがダブルクリックになってしまう問題。
これを解決するために、「カーソルは移動させるがボタンは押さない」
という処理を中間に挟んで回避する策を採用。
マウスはクリックとクリックの間に大きいカーソル移動があれば
いくら連射速度が速くともダブルクリックにならないという性質を利用してます。
動作を動画にとって見ました。
なめらかさと速度のバランスを取るのに苦労したけど
これからループ内に他の処理が加わっていくので動きは若干速めに調整。
まぁいいところに落ち着いたんではないかと思う。
ジョイスティックの傾斜が緩いときはカーソルも動き、
急なときはカーソルは止める。割と違和感ない。
回転を遅くしたい時というのはは微調整の為がほとんどなので、
よほど狭いモニターを使っていない限り端に激突することは珍しい。
問題点があるとすれば高速回転をさせたとき、
マウスカーソルがチカチカするくらいか。
高速で行ったり来たりしてるからね、仕方ないね。
ま、これは妥協(;´Д`)
ロータリーエンコーダーは特に工夫もなく、
前回コーディングしたものを入れ込むだけで動いた。
拡大縮小とオービットが実装されたことで、
だいぶ3Dマウスっぽくなってきた。
ファームウェアで残す部分は
パン操作と、ボタンを追加した時の処理、
あとFusion360に合わせて作っているけど、
2,3種は別ソフトでも動くようにしておきたいな。
とは言っても液晶を付けてないので、ソースファイル内で選択させる形だけど。
次は外装のデザインを進めるかな。
次の3Dマウスの記事はこちら
https://randol-news.net/art/00581.html
https://randol-news.net/art/00576.html
前回は配線のミスが無いこと、ソースの書き換えが正常に行えたこと、
キーボードとマウスの制御が問題なくできることを確認しました。
今回はある程度3Dマウスに近い動作ができるまで
実験を進めていきたいと思います。
if (Joy_Switch_POS == LOW) {
Keyboard.press(KEY_LEFT_SHIFT);
Mouse.press(MOUSE_MIDDLE);
delay(2);
Mouse.move(1,1,0);
Keyboard.releaseAll();
Mouse.release(MOUSE_MIDDLE);
delay(2);
Mouse.move(-1,-1 ,0);
}else{
Keyboard.releaseAll();
Mouse.release(MOUSE_MIDDLE);
}
delay(10);
この処理が怪しい(;´Д`)
マウスカーソルの移動が10pxならうまく処理されるが、
1pxにすると、まったく動かなくなる。
なぜだ(;´Д`)
マウスカーソルをもとの位置に戻さなければ1pxでも正常に動く。
なぜだ(;´Д`)
解せぬ・・
厳密には6pxでも動くが、マウスホイールが動いたと錯覚したのか、
拡大縮小現象もおきる(笑)
安定して動くのが10px
意味不明。
拡大縮小が突然おきる原因は時間がかかったけど判明(;´Д`)
犯人はマウスのホイールボタンのダブルクリックに
「モデルを画面に合わせる」が組み込まれているため、
これが反応している模様。こんなん使ったことない。初めて知ったわ(;´Д`)
隠れたショートカットがまだまだあるんだなーと。
6px未満はドライバーによってダブルクリック認定されるかされないか
際どいラインなんだと思う。
これはPCの性能とマウスドライバーの良しあしでだいぶバラツキが出そうだ。
やばい、詰んだか?(;´Д`)
10pxを最小として組んでいけば?となるが
でもこれだと最小なのに目で追えないほど回転速度が速くて実用的じゃない。
じゃdelayを変化させて速度をコントロールするか?
そうなるとなめらかさを失うしな・・・ 困った。
しかもX、Yの両方向を同時に動かすのにdelayだけで管理するのは無理がある。
ORBIONがなぜマウスカーソルの動きに補正を入れないのか疑問だったが、
ようやく理解した(;´Д`)
3日間悩みに悩んだが、1pxレベルのオービットは必要。これは避けられないと思った。
7pxや10px刻みだと、複雑なものを作っているときに、
狙った角度を正面にできないことが多いからだ。
そこでどのように解決するかというと、1px~7pxまでの動きはカーソルが動くのを許容した。
8~10pxの場合は移動量が多すぎてすぐ画面端に激突したり、
FUSION360のウインドウからはみ出たりするので
元の座標にとどまるように位置修正を施す。
これでお茶を濁す。

ジョイスティックと移動量の関係は計算式ではなく、
表管理することにした。
思いついた当初は、配列で管理するつもりだったけど、
微調整するとき見づらく面倒だったので、
とりあえずIF文の羅列で実験してみたが、処理落ちもしないし、
可読性も高いしこのままでいいかもしれない(;´Д`)

マウスの中央ボタンがダブルクリックになってしまう問題。
これを解決するために、「カーソルは移動させるがボタンは押さない」
という処理を中間に挟んで回避する策を採用。
マウスはクリックとクリックの間に大きいカーソル移動があれば
いくら連射速度が速くともダブルクリックにならないという性質を利用してます。
動作を動画にとって見ました。
なめらかさと速度のバランスを取るのに苦労したけど
これからループ内に他の処理が加わっていくので動きは若干速めに調整。
まぁいいところに落ち着いたんではないかと思う。
ジョイスティックの傾斜が緩いときはカーソルも動き、
急なときはカーソルは止める。割と違和感ない。
回転を遅くしたい時というのはは微調整の為がほとんどなので、
よほど狭いモニターを使っていない限り端に激突することは珍しい。
問題点があるとすれば高速回転をさせたとき、
マウスカーソルがチカチカするくらいか。
高速で行ったり来たりしてるからね、仕方ないね。
ま、これは妥協(;´Д`)
ロータリーエンコーダーは特に工夫もなく、
前回コーディングしたものを入れ込むだけで動いた。
拡大縮小とオービットが実装されたことで、
だいぶ3Dマウスっぽくなってきた。
ファームウェアで残す部分は
パン操作と、ボタンを追加した時の処理、
あとFusion360に合わせて作っているけど、
2,3種は別ソフトでも動くようにしておきたいな。
とは言っても液晶を付けてないので、ソースファイル内で選択させる形だけど。
次は外装のデザインを進めるかな。
次の3Dマウスの記事はこちら
https://randol-news.net/art/00581.html
TPMSからのエア漏れ
2023.01.14

最近、左リアタイヤのエア漏れが激しい。
空気圧が1週間で0.3は下がる。
これはタイヤのリムからか、バルブコアから漏れているのか?
いや、パンクでもしているのか?
などと思っていたけども、石鹸水チェックしても漏れは見つからない。
思い起こせば夏タイヤの時も左リアの空気圧が減っていた。
これはもしかしてTPMSから漏れてるんじゃ?!
確実なところを知りたいので、あえて左リアのTPMSを左フロントにつけてみる。
するとエア漏れを起こすタイヤは左フロントに変わった。
犯人はTPMSである(;´Д`)
さて、どうしたものか。

TPMSの裏側を見ると、赤いパッキンゴムが固定されている。
おそらくこれが原因なのではと。
TPMSは空気圧をチェックするために虫ピンを押した状態を維持していますが、
その空気はこのパッキンでせき止めていると思う。
このパッキンを新しくすれば直る、そんな気がする。

新しいパッキンをどうやって入手するのか、
まだ思いつきもしないけど、
サイズだけは図っておきたいと思う。
外径はおよそ8mm

内径は3mm
このサイズで探してみよう。

新しいパッキンが手に入るか不明なので、
それ以外の処置も考えてみる。
ゴム製品は柔軟性を失ったとき、
熱湯で、ある程度回復すると聞いたことがある。
沸騰した水が冷めるまでパッキンを温めてみた。
このパッキンをもとに戻して2週間後・・
しばらく使っているが、エア圧は0.1減った程度。
かなり回復したぞ。
これは使える(;´Д`)
NEC Express5800 GT110a-SのRaidドライバーについて
2023.01.11
NECのサーバー、Express5800 GT110a-Sはかなり古いです(;´Д`)
HDDを復元不可能なレベルで完全消去、
その後OSをクリーンインストールし再利用としたとき、
のしかかるのはRaidドライバーの問題。
このモデルはWindows Server 2008 standerdが付属しているのですが、
このセットアップディスクには当然収録されていません。
別ディスクとして提供していた模様です。
NECのホームページではドライバーの提供は終了しているのでもう手に入りません。
中古のオフィス機器なんてセットアップディスク関連が残っているわけもなく、
自力で探し出さなきゃいけないのですが、ようやく見つけましたよ。
別サーバー、別OSからの流用です。Windows7用なのですが、Windows Server2008でも使えます。
http://support.express.nec.co.jp/dload/410671-A01/index.html
ここからドライバーをダウンロードすることが出来ます。
ダウンロードしたMegasr1_win7.exeは自己解凍圧縮ファイルなので、
実行して解凍してからUSBメモリにぶっこみます。
Windows Serverのセットアップに「HDDが見つかんないぞグルァ!」と怒られたら
そのUSBメモリを読み込み先に指定します。
これで解決なわけですが、
HDDを完全消去してしまっている場合、RAID情報も消されているので、
電源投入時の黒画面でRAIDの設定画面に入り(CTRLとMキー)
RAID1を構築しておかなくてはいけないことを忘れずに。
これをしていないとドライバーを読み込ませてもHDD無いと永遠言われ続けます(;´Д`)
HDDを復元不可能なレベルで完全消去、
その後OSをクリーンインストールし再利用としたとき、
のしかかるのはRaidドライバーの問題。
このモデルはWindows Server 2008 standerdが付属しているのですが、
このセットアップディスクには当然収録されていません。
別ディスクとして提供していた模様です。
NECのホームページではドライバーの提供は終了しているのでもう手に入りません。
中古のオフィス機器なんてセットアップディスク関連が残っているわけもなく、
自力で探し出さなきゃいけないのですが、ようやく見つけましたよ。
別サーバー、別OSからの流用です。Windows7用なのですが、Windows Server2008でも使えます。
http://support.express.nec.co.jp/dload/410671-A01/index.html
ここからドライバーをダウンロードすることが出来ます。
ダウンロードしたMegasr1_win7.exeは自己解凍圧縮ファイルなので、
実行して解凍してからUSBメモリにぶっこみます。
Windows Serverのセットアップに「HDDが見つかんないぞグルァ!」と怒られたら
そのUSBメモリを読み込み先に指定します。
これで解決なわけですが、
HDDを完全消去してしまっている場合、RAID情報も消されているので、
電源投入時の黒画面でRAIDの設定画面に入り(CTRLとMキー)
RAID1を構築しておかなくてはいけないことを忘れずに。
これをしていないとドライバーを読み込ませてもHDD無いと永遠言われ続けます(;´Д`)