ラズベリーパイ(Raspberry Pi Zero WH)でScratch Lチカ(LED点滅)してみよう!

Raspberry Pi Zero WHとブレッドボード上のLEDを、Scratchのブロックで点滅させる様子を表したアイキャッチ

ラズベリーパイ(Raspberry Pi Zero WH)は、Scratch(スクラッチ)を使ってプログラムを作ることもできます。

前回は、Python3を使ってLEDを点滅させるLチカを行いました。

今回は、同じLチカをScratchでも試してみます。

Scratchは、文字でプログラムを書く代わりに、ブロックを組み合わせて処理を作るビジュアルプログラミング環境です。

LEDを点ける、少し待つ、消す、また待つ、といった処理の流れをブロックの並びで表現できるので、プログラムの動きを直感的に理解しやすいのが特徴です。

Python3でLチカをしたときと同じように、Raspberry Piから信号を出して、ブレッドボード上のLEDを点けたり消したりします。

目次

今回の制作内容

今回は、Scratchのブロックを使ってLEDを点滅させます。

Raspberry Pi Zero WHにLEDと抵抗を配線し、Scratchのブロックを並べてLEDを点滅させる流れを3ステップで説明した図

大まかな流れは、次の通りです。

  1. Raspberry Pi Zero WHとブレッドボードを配線する
  2. Scratchを起動する
  3. GPIOサーバーを開始する
  4. Scratchのブロックを並べる
  5. 緑の旗をクリックしてプログラムを実行する
  6. LEDが点滅するか確認する

Pythonのコードを書く代わりに、Scratchでは「ブロック」を組み合わせます。

「LEDをつける」「0.5秒待つ」「LEDを消す」「0.5秒待つ」という流れをくり返すと、LEDがチカチカ点滅します。

Scratchとは

Scratch(スクラッチ)は、ブロックを組み合わせてプログラムを作るビジュアルプログラミング環境です。

命令がブロックとして表示されるので、処理の順番を目で追いやすいのが特徴です。

今回使うRaspberry Pi Zero WHの環境では、Scratch 1.4を使ってGPIOを操作します。

この記事では、Scratchそのものの詳しい使い方よりも、Raspberry Piの電子工作として「LEDを点滅させるところ」までを中心にまとめます。

公式サイトはこちらです。

Raspberry PiでScratch 1.4からGPIOを使う方法については、公式ドキュメントもあります。

GPIO in Scratch 1.4

準備するもの

今回のScratch Lチカで使うものは、Python3でLチカしたときとほぼ同じです。

  • Raspberry Pi Zero WH
  • microSDカード
  • microUSB電源ケーブル
  • パソコン
  • ブレッドボード
  • ジャンパーワイヤー
  • 抵抗
  • LED

Raspberry Pi Zero WH

Raspberry pi zero WH は、初期設定と環境設定が済んだものを使います。

Raspberry Pi Zero WH本体の写真

初期設定はこちらです。

環境設定はこちらです。

microSDカード

Raspberry PiのOSやプログラムを保存するために、microSDカード を使います。

Team製32GB microSDHCカードの写真

8〜32GB程度のものを目安に使っています。

microUSB電源ケーブル

Raspberry Pi Zero WHの電源用に、microUSB電源ケーブルを使います。

Raspberry Pi Zero WHの電源に使うmicroUSB電源ケーブルの写真

スマホ用のmicroUSB充電ケーブルを使える場合もありますが、電源が弱いと起動が不安定になることがあります。

パソコン

Raspberry Piに接続したり、設定を確認したりするためにパソコンを使います。

Windowsパソコンの写真

この記事では、Raspberry Piの画面をVNC Viewerで表示し、Raspberry Pi上のScratchを操作しています。

ブレッドボード

ブレッドボード は、はんだ付けをしなくても電子部品を差し込んで配線できるボードです。

白いブレッドボードの写真

LEDや抵抗を挿して、ジャンパーワイヤーでRaspberry Piと接続します。

ジャンパーワイヤー

ジャンパーワイヤー は、Raspberry PiのGPIOピンとブレッドボードをつなぐために使います。

赤と黒のジャンパーワイヤーの写真

抵抗

LEDに流れる電流を制限するために、抵抗を使います。

抵抗の写真

LEDをRaspberry Piに直接つなぐと、電流が流れすぎてLEDやRaspberry Piを壊してしまう可能性があります。

必ず抵抗を入れて使います。

LED

LEDは、電流を流すと光る部品です。

赤、黄、白のLEDを並べた写真

LEDには向きがあります。

長い足がプラス側、短い足がマイナス側です。

配線方法

回路図と配線は、Python3でLチカしたときと同じ考え方です。

Raspberry Pi Zero WHのGPIO23から信号を出し、抵抗を通してLEDの長い足へつなぎます。

LEDの短い足はGNDへつなぎます。

Raspberry Pi Zero WHのGPIO23から抵抗を通してLEDの長い足へつなぎ、LEDの短い足をGNDへつなぐLチカ回路の配線図

今回の配線は、次の流れです。

GPIO23(ピン16) → 抵抗 → LEDの長い足(+)
LEDの短い足(-) → GND

抵抗は、LEDに流れる電流を制限するために入れます。

図では220Ω程度の抵抗を例にしています。手元の部品やLEDの種類によって適切な値は変わりますが、最初のLチカでは220〜330Ω程度の抵抗が使われることが多いです。

LEDの向きに注意する

LEDには向きがあります。

  • 長い足:アノード(+)
  • 短い足:カソード(-)

今回の配線では、LEDの長い足を抵抗側、短い足をGND側へつなぎます。

向きが逆だとLEDは光りません。

配線写真

写真で見ると、このような配線になります。

Raspberry Pi Zero WHと小さなブレッドボードを使ってLEDと抵抗を配線した写真

写真にはカメラに接続している金色のケーブルも見えますが、今回のLチカでは使っていません。

配線するときは、電源を切った状態で作業します。

線を挿し間違えたまま電源を入れると、LEDが光らないだけでなく、部品を壊してしまう可能性もあります。

Scratchでプログラミングする

配線ができたら、ScratchでLEDを点滅させるプログラムを作ります。

今回作るブロックの流れは、次のようなイメージです。

Scratch 1.4でconfig23out、gpio23on、gpio23offのブロックを使い、GPIOサーバーを開始してLEDを0.5秒ごとに点滅させる手順をまとめた図

Scratchでは、文字のコードを入力する代わりに、ブロックをドラッグして並べます。

今回のプログラムは、次の流れです。

緑の旗がクリックされたとき
config23out を送る
ずっと
  gpio23on を送る
  0.5秒待つ
  gpio23off を送る
  0.5秒待つ

config23out は、GPIO23を出力として使うための設定です。

gpio23on は、GPIO23の出力をONにします。

gpio23off は、GPIO23の出力をOFFにします。

このONとOFFをくり返すことで、LEDが点滅します。

Scratchを起動する

Raspberry Pi Zero WHを起動し、メニューからScratchを開きます。

[プログラミング] → [Scratch]
Raspberry Pi OSのメニューからScratchを起動している画面

インストールされているScratch 1.4が起動します。

Raspberry PiでScratch 1.4を起動した画面

Scratchの画面とカテゴリー

Scratchの画面には、ブロックのカテゴリーがあります。

たとえば「制御」カテゴリーをクリックすると、制御に関係するブロックが表示されます。

表示されたブロックを中央のスクリプトエリアへドラッグして、プログラムを作っていきます。

Scratch 1.4のカテゴリーから制御ブロックを選んでいる画面

Scratchでは、カテゴリーごとにブロックの色が分かれています。

色で種類を見分けられるので、慣れていない状態でも探しやすいです。

Lチカプログラムを作る

ここから、LEDを点滅させるブロックを並べていきます。

緑の旗がクリックされたときブロックを置く

まずは、プログラムをスタートさせるブロックを置きます。

「制御」カテゴリーから、次のブロックをドラッグします。

緑の旗がクリックされたとき
Scratchで緑の旗がクリックされたときブロックを置いた画面

このブロックの下に、LEDを点滅させるためのブロックをつなげていきます。

config23outを送るブロックを作る

次に、GPIO23を出力として使うためのブロックを作ります。

「〜を送る」ブロックを置きます。

Scratchでメッセージを送るブロックを追加した画面

「〜を送る」ブロックの▼をクリックし、「新規/編集」を選びます。

Scratchのメッセージ送信ブロックで新規または編集を選んでいる画面

メッセージ名に、次のように入力します。

config23out
Scratchでconfig23outというメッセージ名を入力している画面

OKをクリックすると、config23outを送る ブロックができます。

Scratchでconfig23outを送るブロックができた画面

config23out は、GPIO23を出力として使うための設定です。

GPIO番号の23を使うので、Raspberry Piの物理ピン番号16とは数字が違う点に注意します。

LEDをONにするブロックを作る

LEDを点灯させるには、GPIO23をONにします。

送るメッセージ名は、次のようにします。

gpio23on

このブロックを実行すると、GPIO23がONになり、LEDが点灯します。

LEDをOFFにするブロックを作る

LEDを消灯させるには、GPIO23をOFFにします。

送るメッセージ名は、次のようにします。

gpio23off

このブロックを実行すると、GPIO23がOFFになり、LEDが消灯します。

0.5秒待つブロックを入れる

LEDを点けたあと、すぐに消してしまうと点滅が見えにくくなります。

そこで、ONとOFFの間に待ち時間を入れます。

0.5秒待つ

「1秒待つ」ブロックの数字部分をクリックすると、待ち時間を変更できます。

ブロック全体

最終的には、このようなブロックになります。

Scratchでconfig23out、gpio23on、gpio23off、0.5秒待つブロックを組み合わせたLチカプログラムの画面

流れとしては、次の通りです。

1. GPIO23を出力として使う
2. LEDをONにする
3. 0.5秒待つ
4. LEDをOFFにする
5. 0.5秒待つ
6. 2〜5をくり返す

Scratchでプログラムを実行する

ブロックができたら、プログラムを実行します。

GPIOサーバーを開始する

このプログラムでは、ScratchからRaspberry PiのGPIOを操作します。

そのため、実行する前にGPIOサーバーを開始します。

Scratch 1.4のメニューバーから、次の順番でクリックします。

[編集] → [GPIOサーバーを開始]
Scratch 1.4の編集メニューからGPIOサーバーを開始している画面

コマンドの gpioserveronを送る を実行しても、同じようにGPIOサーバーを開始できます。

プログラムを開始する

GPIOサーバーを開始したら、Scratch画面の右上にある緑の旗をクリックします。

Scratch画面右上の緑の旗をクリックしてプログラムを実行する画面

プログラムが動くと、LEDが0.5秒ごとに点灯・消灯します。

プログラムを止める

プログラムを止めるときは、赤い丸をクリックします。

Scratch画面右上の赤い停止ボタンでプログラムを止める画面

赤い停止ボタンを押すと、Scratchのプログラムが止まります。

動作確認

LEDが点いたり消えたりして、チカチカ点滅すれば成功です。

うまく光らない場合は、次の点を確認します。

LEDの向きは合っているか

LEDは向きが逆だと光りません。

長い足がプラス側、短い足がマイナス側です。

GPIO番号は合っているか

この記事では、GPIO23を使っています。

Scratchのメッセージ名も、GPIO23に合わせて次のようにします。

config23out
gpio23on
gpio23off

23 の部分を間違えると、意図したピンが動きません。

GPIOサーバーを開始しているか

ScratchからGPIOを操作するには、GPIOサーバーを開始する必要があります。

LEDが反応しない場合は、[編集] → [GPIOサーバーを開始] を実行しているか確認します。

抵抗を入れているか

LEDには必ず抵抗を入れます。

抵抗なしで直接つなぐと、LEDやRaspberry Piを壊してしまう可能性があります。

GNDにつながっているか

LEDの短い足側がGNDにつながっているか確認します。

Raspberry Piには複数のGNDピンがあります。

どのGNDを使ってもGNDとしては同じですが、配線図と照らし合わせながら確認すると分かりやすいです。

だんだん明るさが変わるLED

Scratchでは、LEDを点ける・消すだけでなく、明るさを変える動きも作れます。

PWMというしくみを使うと、LEDがだんだん明るくなったり、だんだん暗くなったりするように見せることができます。

PWMについては、こちらの記事でも紹介しています。

Scratchでは、GPIO出力をON/OFFではなく、0〜1024の数値で指定します。

ScratchでPWMを使い、LEDの明るさをだんだん変化させるプログラムの画面

bright変数を作る

明るさを変えるために、bright という変数を作ります。

「変数」カテゴリーをクリックし、「新しい変数を作る」ボタンをクリックします。

Scratchでbrightという変数を作成している画面

変数名に次のように入力します。

bright

画面の右側に bright 変数が表示されます。

必要に応じて、スライダー表示に変更し、最大値を1024に設定します。

gpio23pwmを使う

PWMでGPIO23を制御するときは、gpio23pwm を使います。

「演算」カテゴリーのブロックを組み合わせて、gpio23pwmbright の値を送ります。

Scratchでgpio23pwmとbrightを組み合わせるために演算ブロックを使っている画面

最終的に、次のようなブロックができます。

Scratchでgpio23pwmとbrightを送るブロックを作成した画面

このブロックを使うと、LEDの明るさを段階的に変えられます。

まとめ

Raspberry Pi Zero WHで、Scratchを使ってLEDを点滅させるLチカを行いました。

今回の流れは、次の通りです。

  1. LEDと抵抗をブレッドボードに配線する
  2. Raspberry Piとブレッドボードをつなぐ
  3. Scratch 1.4を起動する
  4. GPIOサーバーを開始する
  5. config23out でGPIO23を出力に設定する
  6. gpio23ongpio23off を使ってLEDをON/OFFする
  7. 緑の旗をクリックしてLEDが点滅するか確認する

Scratchを使うと、ブロックを並べながら処理の流れを確認できます。

PythonのコードでLチカする方法とは見え方が違いますが、やっていることは同じです。

Raspberry PiからLEDを制御する基本を、別の方法でも確認できました。

次は、WebIOPiを使って、スマホからラズベリーパイを操作する方法を紹介します。

Python3でLチカする方法はこちらです。

ラズベリーパイで使う電子部品はこちらにまとめています。

制作ノート全体はこちらです。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次