Raspberry PiでGPIOピンの使用法を学ぶことで、可能性の全世界が開かれます。初心者プロジェクトを通じて学んだ基本原則は、DIY電子機器とプログラミングの両方の有用な知識への道を開きます。
このチュートリアルでは、RaspberryPiプロジェクトにボタンを追加する2つの方法を紹介します。ボタンはLEDを制御するために使用されます。書面による指示は、ビデオの下にあります。
必要になるだろう
開始するには、次のコンポーネントがあることを確認してください。
- 1 x Raspberry Pi(このチュートリアルでは、モデル3Bを使用します)
- 1xプッシュボタン
- 1 x LED
- 1 x 220オーム抵抗(値が高いほど問題ありません。LEDは暗くなります)
- 1xブレッドボード
- ワイヤーを接続します
収集すると、次のようなコンポーネントが作成されます。
RaspbianオペレーティングシステムがインストールされたSDカードも必要です。これを行う最も簡単な方法は、NOOBS(New Out Of the Box Software)イメージを使用することです。これを行う方法の説明は、このビデオで利用できます。
回路のセットアップ
PiのGPIOピンを使用して回路を作成します。それらに慣れていない場合は、 Raspberry PiGPIOピンのガイド 役立ちます。ここの回路は前の回路とほとんど同じです ラズベリーパイLEDプロジェクト 、今日使用するボタンが追加されました。
この図に従って回路を設定します。
- NS 5v と GND ピンはブレッドボードの電源レールに接続します。
- ピン12(GPIO 18) LEDのプラスの脚に接続します。
- 片足 抵抗器 LEDの負の脚に取り付けられ、もう一方の脚はブレッドボードのアースレールに取り付けられます。
- ピン16(GPIO 23) ボタンの片側に取り付け、反対側をブレッドボードのグラウンドレールに取り付けます。
セットアップが完了すると、次のようになります。
回路をチェックして正しいことを確認してから、RaspberryPiの電源を入れます。
方法1:RPi.GPIOライブラリ
Piが起動したら、メニューに移動して[ プログラミング> Thonny Python IDE 。新しいPythonスクリプトが開きます。 Pythonを初めて使用する場合は、初心者にとって最適な言語であり、このチュートリアルを終了した後は、Pythonについてさらに学ぶのに最適な場所がたくさんあります。
RPi.GPIOライブラリをインポートし、ボードモードを設定することから始めます。
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BOARD)
次に、LEDとボタンのピン番号の変数を宣言します。
ledPin = 12
buttonPin = 16
ボードモードがに設定されているので注意してください ボード GPIO番号ではなくピン番号を使用しています。それが混乱している場合は、RaspberryPiのピン配置チャートがそれを明確にするのに役立ちます。
ボタンの設定
GPIOピンを設定する時が来ました。 LEDピンを出力に設定し、ボタンピンをプルアップ抵抗で入力に設定します
GPIO.setup(ledPin, GPIO.OUT)
GPIO.setup(buttonPin, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.INの後のテキストは、 内部プルアップ抵抗 ラズベリーパイの。ボタンからきれいに読み取るには、これを有効にする必要があります。ボタンはグランドピンに接続されているため、入力ピンを押すまでHIGHに保持するためのプルアップ抵抗が必要です。
先に進む前に、プルアップ抵抗とプルダウン抵抗を見てみましょう。
休憩:抵抗器を引き上げる/引き下げる
GPIOピンを入力するように構成すると、GPIOピンがそのピンを読み取り、その状態を判別します。この回路では、ピンが 高い また 低い ボタンが押されたときにLEDをトリガーします。これは、ピンが持つことができる唯一の状態である場合は簡単ですが、残念ながら、3番目の状態があります。 フローティング 。
フローティングピンの値はハイとローの間であるため、入力が予期しない動作をします。プルアップ/プルダウン抵抗はこれを解決します。
上の画像は、ボタンとラズベリーパイの簡略図です。 GPIOピンはボタンを介してグランドに接続します。内部プルアップ抵抗は、GPIOピンを内部Pi電源に接続します。この電流が流れ、ピンは安全にHIGHに引き上げられます。
ボタンを押すと、GPIOピンがグランドピンに直接接続され、ボタンの読み取り値が低くなります。
プルダウン抵抗は、スイッチが電源ピンに接続されている場合に使用します。今回は、内部抵抗がGPIOピンをグランドに接続し、ボタンを押すまでLOWを保持します。
プルアップ抵抗とプルダウン抵抗の理論は一見混乱しますが、マイクロコントローラーを使用する際に知っておくべき重要な知識です。今のところ、よくわからなくても心配しないでください。
中断したところから続けましょう。
プログラムループ
次に、プログラムループを設定します。
while True:
buttonState = GPIO.input(buttonPin)
if buttonState == False:
GPIO.output(ledPin, GPIO.HIGH)
else:
GPIO.output(ledPin, GPIO.LOW)
NS Trueながら ループは、プログラムを終了するまで、その中のコードを継続的に実行します。ループするたびに更新されます buttonState からの入力を読み取ることによって buttonPin 。ボタンが押されていない間、ボタンは残ります 高い 。
ボタンを押すと、 buttonState になります 低い 。これにより、 ifステートメント 、 以来 NS と同じです 低い 、LEDが点灯します。 NS そうしないと buttonPinがFalseでない場合は常に、ステートメントはLEDをオフにします。
スクリプトを保存して実行する
クリックしてスクリプトを保存します ファイル>名前を付けて保存 ファイル名を選択します。緑をクリックするとスケッチを実行できます 演奏する Thonnyツールバーのボタン。
ボタンを押すと、LEDが点灯します。赤を押す やめる プログラムを停止するためにいつでもボタン
問題が発生した場合は、コードと回路のセットアップでエラーがないか徹底的に確認して、再試行してください。
方法2:GPIOゼロライブラリ
RPi.GPIOライブラリは素晴らしいですが、ブロックに新しい子供がいます。 GPIOゼロライブラリは RaspberryPiコミュニティマネージャーのBenNuttallによって作成されました コードをよりシンプルにし、読み取りと書き込みを容易にすることを目的としています。
新しいライブラリをテストするには、新しいThonnyファイルを開き、ライブラリをインポートします。
from gpiozero import LED, Button
from signal import pause
ライブラリ全体をインポートしなかったことに気付くでしょう。 LEDとボタンのみを使用しているため、スクリプトではこれらのモジュールのみが必要です。輸入も承っております 一時停止 イベント管理用のPythonライブラリであるシグナルライブラリから。
GPIO Zeroを使用すると、ピンの設定がはるかに簡単になります。
led = LED(18)
button = Button(23)
GPIO ZeroライブラリにはLEDとボタン用のモジュールがあるため、以前のように入力と出力を設定する必要はありません。ピンは変更されていませんが、ここの番号は上記とは異なっていることに気付くでしょう。これは、GPIO ZeroがGPIOピン番号(BroadcomまたはBCM番号とも呼ばれます)のみを使用するためです。
プログラムエラーのため、フォトショップはリクエストを完了できませんでした
スクリプトの残りの部分はわずか3行です。
button.when_pressed = led.on
button.when_released = led.off
pause()
NS 一時停止() ここで呼び出すと、スクリプトが最下部に達したときにスクリプトが終了するのを停止するだけです。 2つのボタンのイベントは、ボタンが押されて離されるたびにトリガーされます。スクリプトを保存して実行すると、以前と同じ結果が表示されます。
ラズベリーパイにボタンを追加する2つの方法
ボタンを設定する2つの方法のうち、GPIOゼロ方式が最も簡単なようです。 RPi.GPIOライブラリについて学ぶ価値はまだあります ほとんどの初心者のラズベリーパイプロジェクト これを使って。このプロジェクトは単純ですが、知識はさまざまなことに使用できます。
GPIOピンを使用することは、独自のデバイスを学習して発明するための優れた方法ですが、Piで実行できるすべてのことからはほど遠いものです。 Raspberry Piの非公式ガイドには、自分で試すことができるクリエイティブなアイデアやチュートリアルがたくさんあります。このような別のチュートリアルについては、チェックアウトしてください Wi-Fi接続ボタンの作り方 。
共有 共有 つぶやき Eメール VirtualBoxLinuxマシンを過給するための5つのヒント仮想マシンによって提供されるパフォーマンスの低下にうんざりしていませんか? VirtualBoxのパフォーマンスを向上させるためにすべきことは次のとおりです。
次を読む 関連トピック- DIY
- ラズベリーパイ
- Python
- GPIO
- DIYプロジェクトのチュートリアル
Ian Buckleyは、ドイツのベルリンに住むフリーランスのジャーナリスト、ミュージシャン、パフォーマー、ビデオプロデューサーです。マッドサイエンティストになることを期待して、執筆中やステージ上にいないときは、DIYの電子機器やコードをいじっています。
イアン・バックリーのその他の作品ニュースレターを購読する
ニュースレターに参加して、技術的なヒント、レビュー、無料の電子書籍、限定セールを入手してください。
購読するにはここをクリックしてください