Raspberry Pi Pico Wでジョイスティックを使う!

はじめに

みなさんこんにちは!
香月です
今回は、ジョイスティックを「Raspberry Pi Pico」で使ってみました!

この記事を読めば「Raspberry Pi Pico W」でジョイスティックを使ったものを作れるようになります!

電子工作をするうえで、コントローラーなどを使うためにはジョイスティックを使います。
コントローラーが使えるようになると、「Raspberry Pi Pico W」でできることがぐっと広がります。

わからないことがありましたら、問い合わせページまたは公式ラインに連絡をください!
Youtubeもありますので、ぜひ見てみてください!

使うもの

この記事で使っているものを紹介します。
*このリンクは、アフィリエイトリンクです。
こちらのリンクから購入されると、投稿主にインセンティブが発生します。
より良い記事のために、ぜひ購入する際は以下のリンクよりお願いします。。

実際に投稿主が購入したキットを紹介します。
こちらのキットは、マイコンと電子工作に必要な部品がセットになったものです。
こちら購入すればすぐに電子工作始められます!
また、公式HPでモジュール、プログラムの解説もされているので、非常におススメです。

購入はこちらをクリック!
*画像はリンク先より引用

個別で購入したい方は、以下のリンクより購入ください。

購入はこちらをクリック!
*画像はリンク先より引用

購入はこちらをクリック!
*画像はリンク先より引用

購入はこちらをクリック!
*画像はリンク先より引用

購入はこちらをクリック!
*画像はリンク先より引用

ジョイスティックと回路の解説

まずはジョイスティックと回路について少しお話します。
下の画像を見てください!

ジョイスティックにはX軸方向とY軸方向に可変抵抗が取り付けられています。
イラストで書いてあるように、スティックを上方向に倒すと、Y軸の抵抗値が大きくなり
上に傾けられたと認識します。

これが、ジョイスティックの解説です

では、回路を組んでいきましょう!
↑の画像のように回路を作ってください
↓が実際に組んだ回路です

今回使う回路は、ジョイスティックが傾いた方向にLEDが光るという回路です。
ジャンパー線のつなぎ方には気をつけてください。
*この回路には抵抗は入っていません

わかりやすいようにユニバーサル基板を使って自作してみました。
↓の画像のように回路を組みます
これはイメージです

LED1つづつにジャンパー線をつなぎ、GNDは1箇所にまとめます。

動かしていこう!

では、実際にピコにコードを書き込んでいきましょう!

from machine import ADC, Pin
import utime

x = ADC(Pin(27))#x軸に流れる電流値を取得
y = ADC(Pin(26))#y軸に流れる電流値を取得
center=Pin(15,Pin.OUT)#以下でそれぞれのLEDに出力するピンの設定
x2=Pin(13,Pin.OUT)
x1=Pin(14,Pin.OUT)
y1=Pin(11,Pin.OUT)
y2=Pin(12,Pin.OUT)
push = Pin(28, Pin.IN, Pin.PULL_UP)#ジョイスティックの押し込みを検知するピン
while True:
    #すべてのLEDをOFFにする
    center.low()
    x1.low()
    x2.low()
    y1.low()
    y2.low()
    #電流値を符号なしの16進数で取得(0〜65535)
    x_value = x.read_u16()
    y_value = y.read_u16()
    #ジョイスティックの押し込みされたかを取得
    button = push.value()
    #以下のコードは、一定以上傾いたら、その方向のLEDを光らせる
    if x_value>=50000:
        x1.high()
    elif x_value<=1000:
        x2.high()
    else:
        pass
    if y_value>=45000:
        y2.high()
    elif y_value<=15000:
        y1.high()
    else:
        pass
    if button==0:
        center.high()
    else:
        pass
    #取得した値をシェルに表示
    print('x:'+str(x_value)+' y:'+str(y_value)+' button:'+str(button))
    #0.1秒おきに上記の操作を繰り返す
    utime.sleep(0.1)

以上がコードと解説になります。
LEDを光らせるIF文の値は、デバイスにより依存します。
最初から傾いて認識される場合は、調整してください。

以上のコードをコピペして「Thonny」でピコに書き込んでください!

では、実際にスティックを傾けてみましょう!

まずは、上下に傾けてみます、、、

ちゃんと光りました!!
では、左右にも傾けてみます

きちんと光りました!
最後は押し込んでみます、、、

きちんと光りました!

これで、ジョイスティックを使いな¥こなせるようになりましたね!
もし、動かない場合は、↓を確認してください!

動かない原因

もし動かない場合は以下の点を確認してください。

回路が間違っている

まずは回路です。
今回は入り組んだ回路を作ります。
ジャンパー線が正しいところにつながっているか?
LEDの向きはあっているか?

を確認してください。

LEDやジョイスティックが壊れている

部品が壊れている可能性があります。
他の部品で動くか確認してください。

どうしても動かない場合は

以上の項目でチェックしてもわからない場合は、問い合わせページより連絡ください。
時間に余裕のあるときに対応させていただきます!

さいごに

どうだったでしょうか?
今回は、ジョイスティックを用いて回路を作ってみました!
今回は十字に設置したLEDを光らせただけでした。
モーターを組み合わせるとクレーンゲームも作ることができます。

ぜひ!みなさんも様々な電子部品と組み合わせて動かしてみてください!

Raspberry Pi Pico Wカテゴリの最新記事