ゆるく楽しむプログラミング

ジョイスティックで操作

アナログ入力を使ってみるテストです。
アナログジョイスティクUnitを使用しています。
Arudino/RaspberryPi用ですが抵抗値が変化するだけなのでmicro:bitでも問題なく使えます。

アナログ入力

ピンにかかる電圧(0~3V)を0~1023の数値に変換して入力します。
計測するのは抵抗値ではなく電圧値ですので回路図はこのようになります。

最大値は電源と同じ3V、最低値はGNDと同じ0Vになります。
Lチカの時と同じで過大な電流が流れないように十分な大きさ(1KΩくらい)の抵抗が必要です。

実際の接続

今回はGROVEセンサー接続用のエッジコネクタを使ってジャンパーピンでつないでみました。
Xを0番ピンに、Yを1番ピンにつないでいます。

スティックの動きに合わせて点が動くプログラム

論理的には512が中央値になる筈ですが、実際には揺れがあるようで余り厳密にすると勝手に動いたり中央にならなかったりするのでアバウトに200刻み5段階で区分します。
0~200:0番のLED
200~400:1番のLED
400~600:2番(真ん中)のLED
600~800:3番のLED
800~1023:4番のLED (端数はオマケ、細かいことは気にしない)
で区切っておきます。


一応、ブロック載せておきますが▼のJavascriptをコピペした方が早いです。
let y = 2
let x = 2
let スプライト = game.createSprite(2, 2)
basic.forever(function () {
    x = pins.analogReadPin(AnalogPin.P0)
    x = x / 200
    if (x > 4) {
        x = 4
    }
    y = pins.analogReadPin(AnalogPin.P1)
    y = y / 200
    if (y > 4) {
        y = 4
    }
    スプライト.delete()
    スプライト = game.createSprite(x, y)
})