HIDISCのUSBメモリが壊れた(;´Д`)
2022.10.18


2021年10月9日購入のUSBメモリが壊れた。
保証の1年過ぎた直後の出来事(;´Д`)
256GBにしては激安だったけど、20回も使ってないんじゃなかろうか。
こんなに早く壊れたのであれば決して安い買い物だったとは思えない・・・(´Д`)ハァ
HIDISCの元は太陽誘電なので大丈夫だと思ったんだけどな
やっぱり激安品はあかんかったか。

故障内容は、挿しなおすたびにフォルダ情報が破壊される。
フォーマットしなおすとその時は保存できるが、
次に通電した時にはデータは死んでいる。
USB認識が甘いこともある。つまり安定に動作しない。

消えては困るデータは東芝のメモリを使ってはいるけど、
やっぱり信頼できるメモリを使わんといかんねぇ。
USBメモリに大事なことは速度じゃない。故障率だよ。
ロータリーエンコーダ(ホイールエンコーダ)の使い方。
2022.10.14
マウスに良く使われているロータリーエンコーダ(ホイールエンコーダ)。

これの使い方を調べてみたいと思います。



↑ロータリーエンコーダというとこれが一番有名ですが、
捻るタイプのエンコーダなので今考えている用途には使えません、
今回はもっと小型でマウスのホイールと同じものを使います。



最近のマウスは、このようなパーツでホイールを検知しているようですね。
一昔前は回転する網が何回光を遮ったかを検知する構造で
センサーが露出しているタイプだったのに、
今はこれらの機能が内包し小型化がすすんでいるという。
進化が早いです(;´Д`)

さて、このロータリーエンコーダーは3ピンです。
1本が電源線、2本が信号線。
先人の知恵を借りるためにネットで使用例を検索してみると、
電源線をGNDにつなげている人が多く見えます。
しかもそのようなソースに限って、
pinMode(1, INPUT);
となっています。
中学レベルの電気しか学んでいない私は「え?インプット?入力?なのにGND?」
とちょっと疑問に思ってしまうのですが、
GNDのマイナス電圧を利用するん?とか考えてしまいますよね?
これが
pinMode(1, INPUT_PULLUP);
だったなら理解はできますが・・・。
しばし悩んだら、

pinMode(1, INPUT);
digitalWrite(1, HIGH);

と2行がセットになっていることに気が付きました。
INPUTなのに、HIGHを出してる。
このパターンでも、INPUT_PULLUPと同様に内部抵抗(最小20KΩ~最大50KΩ)
がオンになるという話。
Arduinoではあまり推奨していない方法だけど、
こういった使い方もできるんだねと。
話はそれましたが、電源線はGNDに繋いで問題ないようです。



そうそう、Arduinoはモデルによって割り込みが使えるピンが違います。
私が良く使うモデルだけ載せておきます。
UNOとMEGAとMicroとLeonardoの4つがわかればok
今回のテストで使うUNOは2ピンと3ピンね。



動作の検証なので、とりあえずシンプルに接続。
2本の信号を組み合わせて回転の方向と量を検知する仕組み。



ソースはとりあえずこんなところかな。
ロータリーエンコーダーの回転量(位置)を導き出す関数だけど、
今回はどの程度の速さで処理できるのか見たかったので、
シリアルモニターに表示させてみました。



1ノッチ動かすだけでも数回割り込みしているのがわかる。
結構デリケートなのね。
カチッって言うノッチの振動で判定がぶれるのかな。
これは割り込み処理内で位置情報だけ確保しておいて、
LOOP内で適切なタイミングで移動量を計算させて使用したほうが安定しそうだ。

- CafeNote -