メインコンテンツまでスキップ

ナイトライトを作る - Raspberry Pi

このレッスンのこの部分では、Raspberry PiにLEDを追加し、それを使用してナイトライトを作成します。

ハードウェア

ナイトライトにはアクチュエータが必要です。

アクチュエータはLEDであり、電流が流れると光を放つ発光ダイオードです。これは2つの状態、オンとオフを持つデジタルアクチュエータです。1の値を送るとLEDが点灯し、0の値を送ると消灯します。LEDは外部のGroveアクチュエータであり、Raspberry PiのGrove Base hatに接続する必要があります。

ナイトライトのロジックは擬似コードで次のようになります:

Check the light level.
If the light is less than 300
Turn the LED on
Otherwise
Turn the LED off

LEDを接続する

Grove LEDは、LEDの選択肢があるモジュールとして提供されており、色を選ぶことができます。

タスク - LEDを接続する

LEDを接続します。

A grove LED

  1. 好きなLEDを選び、LEDモジュールの2つの穴に足を挿入します。

    LEDは発光ダイオードであり、ダイオードは一方向にしか電流を流すことができない電子デバイスです。つまり、LEDは正しい向きで接続する必要があります。そうでないと動作しません。

    LEDの足の一つは正極ピンで、もう一つは負極ピンです。LEDは完全に丸いわけではなく、一方が少し平らです。少し平らな側が負極ピンです。LEDをモジュールに接続する際には、丸い側のピンがモジュールの外側にある**+**とマークされたソケットに接続され、平らな側がモジュールの中央に近いソケットに接続されるようにしてください。

  2. LEDモジュールには、明るさを調整するためのスピンボタンがあります。最初はこれを反時計回りに回して最大にしてください。小さなプラスドライバーを使用して回します。

  3. Groveケーブルの一端をLEDモジュールのソケットに挿入します。これは一方向にしか挿入できません。

  4. Raspberry Piの電源を切った状態で、Groveケーブルのもう一端をPiに接続されたGrove Base hatのD5とマークされたデジタルソケットに接続します。このソケットは、GPIOピンの隣のソケット列の左から2番目です。

The grove LED connected to socket D5

ナイトライトをプログラムする

ナイトライトは、Grove光センサーとGrove LEDを使用してプログラムできます。

タスク - ナイトライトをプログラムする

ナイトライトをプログラムします。

  1. Piの電源を入れ、起動を待ちます。

  2. この課題の前の部分で作成したVS Codeのナイトライトプロジェクトを開きます。Pi上で直接実行するか、Remote SSH拡張機能を使用して接続します。

  3. 必要なライブラリをインポートするために、app.pyファイルに次のコードを追加します。これは他のimport行の下に追加します。

    from grove.grove_led import GroveLed

    from grove.grove_led import GroveLedステートメントは、Grove PythonライブラリからGroveLedをインポートします。このライブラリには、Grove LEDと対話するためのコードが含まれています。

  4. light_sensor宣言の後に次のコードを追加して、LEDを管理するクラスのインスタンスを作成します。

    led = GroveLed(5)

    led = GroveLed(5)行は、LEDが接続されているデジタルGroveピンD5に接続するGroveLedクラスのインスタンスを作成します。

    💁 すべてのソケットには固有のピン番号があります。ピン0、2、4、6はアナログピンで、ピン5、16、18、22、24、26はデジタルピンです。

  5. whileループ内で、time.sleepの前にチェックを追加して、光レベルを確認し、LEDをオンまたはオフにします。

    if light < 300:
    led.on()
    else:
    led.off()

    このコードはlight値をチェックします。これが300未満の場合、GroveLedクラスのonメソッドを呼び出し、LEDをオンにするデジタル値1を送信します。光の値が300以上の場合、offメソッドを呼び出し、LEDをオフにするデジタル値0を送信します。

    💁 このコードは、print('Light level:', light)行と同じレベルにインデントされて、whileループ内にある必要があります!

    💁 アクチュエータにデジタル値を送信する場合、0値は0Vであり、1値はデバイスの最大電圧です。Groveセンサーとアクチュエータを使用するRaspberry Piの場合、1電圧は3.3Vです。

  6. VS Codeのターミナルから、次のコマンドを実行してPythonアプリを実行します。

    python3 app.py

    光の値がコンソールに出力されます。

    pi@raspberrypi:~/nightlight $ python3 app.py 
    Light level: 634
    Light level: 634
    Light level: 634
    Light level: 230
    Light level: 104
    Light level: 290
  7. 光センサーを覆ったり外したりします。光レベルが300以下の場合、LEDが点灯し、光レベルが300を超えるとLEDが消灯することに気づくでしょう。

    💁 LEDが点灯しない場合は、正しい向きで接続されていること、スピンボタンが完全にオンに設定されていることを確認してください。

The LED connected to the Pi turning on and off as the light level changes

💁 このコードはcode-actuator/piフォルダーにあります。

😀 ナイトライトプログラムは成功しました!