基礎 · 読了まで14分

ブロックプログラミングとは?ブロックが本物のコードになるしくみ

ブロックプログラミングとは何か、ブロックベースのプログラミングはどう動くのかを解説します。ブロックの色、setupとloop、そしてブロックをC++とMicroPythonに変換するLEDの点滅の例を紹介します。

ブロックプログラミングとは、プログラムを1行ずつ入力する代わりに、パズルのようなカラフルなブロックを積み重ねて組み立てる方法です。1つのブロックが1つの命令で、たとえば「ピンを出力に設定する」「LEDを点灯する」「100 ms待つ」といったものがあります。ブロックははまる場所にしかつながらないため、セミコロンの付け忘れ、閉じていないかっこ、命令のスペルミスといった間違いがそもそも起こらず、プログラムのロジックに集中できます。そのためブロックベースのプログラミングは、子どもや初心者にとってプログラミングへのもっともやさしい入り口として広く知られています。

この記事はブロックからコードへシリーズの第1回です。次回はブロックで最初のプログラムを作ります:ブロックプログラミングでLEDを点滅させる。

ただし、ブロックプログラミングはおもちゃの言語ではありません。ArduinoやRaspberry Pi Picoに送られるブロックのプログラムの裏には必ず本物のコードがあり、ボードが実行するのはいつもそのコードです。この記事では、ブロックとは何か、その色が何を表しているのか、ブロックのプログラムがどのように本物のC++やMicroPythonのコードになるのかを、BlueGraysの無料プロジェクトを使って順を追って見ていきます。最後に、ブロックプログラミングの長所と限界、そしてScratch、mBlock、Tinkercadなどのツールとの関係も紹介します。

LEDの点滅プロジェクトのブロック:「セットアップ(1回だけ実行)」と「ずっと繰り返す」
ブロックで表したLEDの点滅プロジェクト:「セットアップ」ブロックでピン9を出力に設定し、「ずっと繰り返す」ブロックでLEDを100 ms点灯、100 ms消灯させます。この小さなプログラムを、以下でC++のコードと1行ずつ対応させていきます。

ブロックプログラミングとは?なぜ「ブロック」と呼ばれるのか

ブロックプログラミングでは、すべての命令が、ふちに凹みと出っ張りのあるピースになっています。上のブロックの下側の出っ張りが下のブロックの凹みにはまるので、命令は上から下へ順番に実行されます。中に口が開いたブロックもあります。これは他のブロックを中に入れるコンテナブロックです。数値や別の値ブロックを差し込む白い楕円形のスロットを持つブロックもあります。ピースの形が何をどこに置けるかを決めるので、ルールに反するプログラムを組むことはほぼ不可能です。現在のブロックエディタの多くは、MITのScratchとGoogleのオープンソースライブラリBlocklyが切り開いた道をたどっています。BlueGraysのブロックもBlocklyベースです。ブロックセットは電子工作プロジェクト向けに独自に設計し、アプリの言語で表示しています(日本語のアプリでは、ブロックも日本語で表示されます)。なお、ブロックは新しいプログラミング言語ではありません。命令、順序、条件、ループ、変数は、テキストのコードとまったく同じ概念で、ブロックはそれを目に見える形にしているだけです。

ブロックのプログラムはどうやって本物のコードになるのか?

ブロックエディタは裏でコードジェネレーターを使っています。ブロックの種類ごとにテキストコードのテンプレートがあり、ブロックを積み重ねるとそのテンプレートが順番につながります。BlueGraysはもう少し厳密で、各プロジェクトのブロックは、ボードに書き込む本物のコードと1対1で対応するように作られています。ブロックのどの行にもコード側の対応があり、コードのどの行にもブロック側の対応があります。ArduinoとESP32のプロジェクトではそのコードはC++、Raspberry Pi PicoのプロジェクトではMicroPythonです。ブロックのプログラムを読むには、次の5つの要素を知っておけば十分です。

  • セットアップ(1回だけ実行):ボードの電源が入ったときやリセットされたときに1回だけ実行される部分です。Arduinoのsetup()関数にあたり、ふつうはここでピンをINPUTやOUTPUTに設定します。
  • ずっと繰り返す:ボードの電源が入っている間、上から下へ何度も繰り返し実行される部分です。Arduinoではloop()関数、MicroPythonではwhile True:ループにあたります。
  • 命令ブロック:「ピン 9 に HIGH を書き込む」や「100 ms待つ」のように、コンテナの中に積み重ねて、それぞれ1つの仕事をするブロックです。ほとんどはテキストコードの1行にあたります。
  • 値ブロック:白い楕円の中の9や100のような数値や、「ピン 13 を読み取る」のように結果を返す丸いブロックです。命令ブロックのスロットに差し込むと、コードではかっこの中の値になります。
  • ドロップダウン:出力 / 入力やHIGH / LOWのような選択肢です。コードのOUTPUT / INPUTやHIGH / LOWの定数に対応し、メニューには正しい選択肢しか出てこないので、スペルを間違えることがありません。

ブロックとコードを並べて見る:LEDの点滅プロジェクト

理論はこのくらいにして、実際の例を見てみましょう。LEDの点滅プロジェクトでは、ピン9にLEDと抵抗をつなぎ、LEDが1秒に5回点滅します。下の表では、上の画像のブロックを1つずつコードに置き換えています。1行が1つのブロックで、1つのブロックが1行のコードです。

ブロックC++のコード動作
セットアップ(1回だけ実行)void setup() { … }ボードの起動時に中身が1回実行される
ピン 9 を 出力 に設定pinMode(9,OUTPUT);ピン9を、LEDを駆動できる出力にする
ずっと繰り返すvoid loop() { … }ボードが動いている間、中身が繰り返される
ピン 9 に HIGH を書き込むdigitalWrite(9,HIGH);ピンに5 Vを出力し、LEDが点灯する
100 ms待つdelay(100);プログラムを100ミリ秒止める
ピン 9 に LOW を書き込むdigitalWrite(9,LOW);ピンを0 Vにし、LEDが消灯する
100 ms待つdelay(100);LEDを消したまま100 ms待つ
C++ (Arduino IDE)
1void setup() {
2  pinMode(9,OUTPUT);     // LED pini çıkış / LED pin as output
3}
4
5void loop() {
6  digitalWrite(9,HIGH);  // LED'i yak / Turn the LED on
7  delay(100);            // 100 ms bekle (1000 ms = 1 sn) / Wait 100 ms (1000 ms = 1 s)
8  digitalWrite(9,LOW);   // LED'i söndür / Turn the LED off
9  delay(100);            // 100 ms bekle / Wait 100 ms
10}

コードには、ブロックには見えないものがいくつかあります。voidという単語、波かっこ、セミコロンです。これらはC++の文法ルールで、ブロックでは形そのものがその役割を担います。コンテナブロックの口が波かっこの代わりになり、ブロックが上下に並んでいることが行の順番の代わりになります。値のスロットの100を1000に変えれば、コードはdelay(1000)になり、LEDは1秒に1回点滅します。メニューでHIGHの代わりにLOWを選べば、HIGHがLOWに変わります。この1対1の対応のおかげで、いくつかのプロジェクトをこなすうちに、ブロックを見なくてもコードが読めるようになります。同じプロジェクトの回路と組み立て手順は、シリーズ第2回のブロックプログラミングでLEDを点滅させるで紹介しています。

ブロックがそのままボードに書き込まれるわけではありません。BlueGraysでは、ブロックはプログラムを読みやすく、理解しやすくするためのもので、ボードに書き込むのはいつも同じプロジェクトの本物のコードです。ArduinoとESP32のプロジェクトはコードをArduino IDEに、PicoのプロジェクトはThonnyにコピーし、そこから書き込みます。

ブロックの色は何を意味するのか?

ブロックエディタでは、色は飾りではなく、そのブロックがどのカテゴリーに属するかを示しています。プログラムを初めて見たときも、色を手がかりに「ここで変数を宣言している、ここで判断している、ここにループがある」と読み取れます。BlueGraysのプロジェクトのブロック画像には、次のカテゴリーが登場します。

色カテゴリー画像に出てくるブロックの例コード
ティールプログラムの構造、ピンの入出力、待機セットアップ(1回だけ実行)、ずっと繰り返す、ピン … を 出力 に設定、ピン … に HIGH を書き込む、ピン … を読み取る、… ms待つsetup()、loop()、pinMode()、digitalWrite()、digitalRead()、delay()
ダークティールPicoのピンとタイミングのブロックピン led :GP LED_PIN 、 出力;ピン led を オンにする(on) / オフにする(off);0.5 秒待つPin(…, Pin.OUT)、led.on()、led.off()、time.sleep()
ダスティローズ変数グローバル変数(最初に宣言)、宣言: 整数(int) … = …、… に … を代入int ledState = 0; ledState = …;
ブルーグレー論理もし … 実行、≠と=の比較、… ではないif、!=、==、!
緑ループi を 0 から 5 まで 1 ずつ変えて数えるfor (int i = 0; i < 6; i++)
紫配列配列 2 3 4 5 6 7、ledPins の i 番目の要素int ledPins[] = {2, 3, 4, 5, 6, 7}; ledPins[i]

形もヒントになります。条件や比較のブロックは両端がとがった六角形のような形で、「もし」ブロックの条件スロットにはまります。一方、数値や変数のブロックは両端が丸くなっています。表の中で注目したい点が1つあります。「i を 0 から 5 まで 1 ずつ変えて数える」ブロックでは上限が含まれるので、iは0、1、2、3、4、5の値をとります。コードではこれをi < 6という条件で書き、ループは6回実行されます。流れるLEDプロジェクトは、まさにこのブロックで6個のLEDを順番に点灯させます。ループと配列のブロックは、シリーズのループと変数の回で詳しく解説します。

「ボタンでLEDの点灯・消灯を切り替え」プロジェクトのブロック:変数、論理、ピンのブロック
ボタンでLEDの点灯・消灯を切り替え:ダスティローズのブロックは変数、ブルーグレーの「もし」ブロックは判断、ティールのブロックはピンの読み書きです。ボタンを押すたびにLEDの状態が切り替わります。

この画像の入れ子になった「もし」ブロックは、コードでは入れ子のif文になります。「もし button ≠ lastButton」ブロックはif (button != lastButton)の行で、ボタンの状態が変わったときに実行されます。その中の「もし button = 1」は、押した瞬間だけをとらえます。「ledState に ledState ではない を代入」ブロックはledState = !ledState;の行で、0を1に、1を0にします。続く「ピン 7 に ledState を書き込む」ブロックはdigitalWrite(7, ledState);です。プロジェクト全体はボタンでLEDの点灯・消灯を切り替えのページで見られます。「もし」ブロックとif/elseの関係は、シリーズのボタンと条件の回で詳しく説明します。

ArduinoとESP32ではC++、PicoではMicroPython

同じブロックのロジックでも、ボードによって違う言語に変換されます。ArduinoとESP32のプロジェクトではブロックはC++のコードに対応し、「セットアップ」と「ずっと繰り返す」のブロックはsetup()とloop()になります。たとえばESP32でLEDを点滅プロジェクトのブロックはLEDの点滅と同じ構造で、違うのはピンが5、待ち時間が500 msという点だけです。Raspberry Pi PicoのプロジェクトではブロックはMicroPythonになります。ここにはsetup()関数がありません。「セットアップ」ブロックの中身はファイルの先頭で1回だけ実行される行になり、「ずっと繰り返す」ブロックはwhile True:ループになります。

「Raspberry Pi Picoで外付けLEDを点灯」プロジェクトのブロック:MicroPythonに変換されるピンとタイミングのブロック
GP14につないだRaspberry Pi Picoの外付けLED:ダークティールのブロックは、MicroPythonのPinオブジェクトとtime.sleep()命令に対応します。LEDは0.5秒点灯し、0.5秒消灯します。
MicroPython
1from machine import Pin
2import time
3
4# ============ PIN ============
5LED_PIN = 14                    # Boştaki herhangi bir GPIO / Any free GPIO
6led = Pin(LED_PIN, Pin.OUT)     # led adlı pin, ÇIKIŞ / pin named led, OUTPUT
7
8print("== BlueGrays: Pico Harici LED Blink ==")
9print("LED pin: GP" + str(LED_PIN))
10print("500ms yakip 500ms sonduruyor / 500ms on 500ms off")
11
12# ============ ANA DÖNGÜ / MAIN LOOP ============
13while True:
14    led.on()                    # LED'i yak / Turn the LED on
15    print("[LED] ACIK / ON")
16    time.sleep(0.5)             # 0.5 saniye bekle / Wait 0.5 s
17
18    led.off()                   # LED'i söndür / Turn the LED off
19    print("[LED] KAPALI / OFF")
20    time.sleep(0.5)             # 0.5 saniye bekle / Wait 0.5 s

対応は1行ずつたどれます。「グローバル変数(最初に宣言)」の中にある「宣言: 整数(int) LED_PIN = 14」ブロックはLED_PIN = 14の行です。Pythonは型を書かないので、(int)の部分はコードに出てきません。「ピン led :GP LED_PIN 、 出力」ブロックはled = Pin(LED_PIN, Pin.OUT)になります。「ピン led を オンにする(on)」はled.on()、「0.5 秒待つ」はtime.sleep(0.5)、「シリアル出力」はprint()の行です。「テキストを結合」ブロックは、テキスト「LED pin: GP」とLED_PINの値を+でつなげて並べます。注意点として、Arduinoでは待ち時間はミリ秒(100 ms)、MicroPythonでは秒(0.5)で指定します。ブロックでもこの違いは、別々の「… ms待つ」と「… 秒待つ」のブロックで表されています。回路はRaspberry Pi Picoで外付けLEDを点灯のページを見てください。Picoが初めてなら、先にRaspberry Pi Picoとは?を読むとわかりやすくなります。

ブロックプログラミングの長所と限界

項目長所限界
文法エラーセミコロン、かっこ、大文字・小文字の間違いが起こらないロジックのミスは起こる。ピンや待ち時間を間違えれば、ブロックでも間違ったまま
読みやすさ色と形でプログラムの構造がひと目でわかる長いプログラムはブロックだと画面を大きく占める。テキストのコードのほうがコンパクト
学習スピード数分で最初のプログラムが完成し、概念が具体的になるブロックから離れないままだと、エラーメッセージを読むといったテキストコードのスキルが育たない
対応範囲ピン、待機、条件、ループ、変数、シリアルといった基本の要素がそろっているすべてのライブラリやハードウェアの細部にブロックがあるわけではない。高度なプロジェクトにはテキストのコードが必要
ボードとのつながりArduino、ESP32、Picoで同じロジックが見慣れた形で現れるボードが実行するのはいつもテキストのコードなので、いずれは知っておく必要がある

ブロックプログラミングはすべての答えではなく、橋渡しです。最初の数週間はプログラムのロジックをつかむためのとても強力な方法で、本当の目標は、いつかその橋を渡り、自信を持ってテキストのコードに向き合うことです。ブロックとコードを並べて見ると、その移行が速くなります。新しいプロジェクトのたびに、同じブロックが同じ行に変わるのを何度も目にするからです。10個のプロジェクトで「ずっと繰り返す」ブロックに出会えば、loop()という言葉にももう違和感はありません。テキストのコードに進む準備ができたら、Arduinoプログラミングの基本で、変数から関数まで例とともに学べます。

ブロックプログラミングはどんな人に向いている?

  • 子どもと家族:文字をすらすら読める9〜10歳以上の子どもなら、大人と一緒に始められます。画面上のブロックとブレッドボード上で光るLEDのおかげで、プログラミングが抽象的なものではなくなります。
  • 教師とロボットクラブ:まずブロックでプロジェクトを説明し、その後コードに進むと、レベルの違う生徒が同じ授業で一緒に学べます。そのために用意した授業案は、シリーズの最終回にあります:ブロックプログラミングで学ぶロボットプログラミングの授業案。
  • Arduino初心者:ボードを手に入れたばかりで、最初のスケッチが難しく見えるなら、ブロックは各行が何をしているのかを知るいちばんの近道です。ボードそのものについて知るには、Arduinoとは?から始めましょう。
  • コードを読むのが苦手な人:他の人が書いたプログラムを理解するのは、それ自体が1つのスキルです。完成済みのプロジェクトのブロックを見て構造をつかめば、長いコードのどこで何をしているのかがわかりやすくなります。

Scratch、mBlock、Tinkercad、MakeCodeとの比較

ブロックプログラミングと聞いて思い浮かぶツールの多くは、パソコンやブラウザで動くエディタで、それぞれに得意分野があります。共通しているのは、ブロックをドラッグして自分でプログラムを組み立てる点です。BlueGraysは別のニーズに応えます。完成済みでテスト済みのプロジェクトのブロックを、回路図、部品リスト、本物のコードと並べて見せます。アプリでは(今のところ)自分でブロックを並べてプログラムを作ることはできません。その代わり、動くことがわかっているプログラムがどう組み立てられているかを読み取れます。だからこれらのツールは競合するのではなく、互いに補い合います。たとえば、mBlockで作った信号機の点灯順序を信号機プロジェクトのブロックと比べたり、まだボードを持っていなければTinkercadで回路をシミュレーションしたりできます。詳しくはmBlockでArduinoを使うとTinkercadのArduinoシミュレーターのガイドを見てください。

ツールブロックを並べるのは誰?得意な分野
Scratch自分で、パソコン上でアニメーション、物語、ゲームでプログラミングの第一歩を踏み出す
mBlock自分で、パソコン上でScratch風のブロックでArduinoなどのボードをプログラムし、生成されたコードを見る
Tinkercad Circuits自分で、ブラウザ上で回路を仮想的に組み、ブロックかテキストのコードでシミュレーションする
MakeCode自分で、ブラウザ上でmicro:bitなどのボードで、ブロック、JavaScript、Pythonを切り替えて使う
BlueGrays完成済み、プロジェクトのコードと対応テスト済みプロジェクトのブロックを、本物のコード、回路図、部品リストと並べて読む

BlueGraysアプリでブロックプログラミングを使う方法

  1. 発見 › プロジェクトで、ブロックバッジの付いたプロジェクトを選びます。絞り込みを使って、ブロック対応のプロジェクトだけを表示することもできます。アプリでは100件以上のプロジェクトにブロックが付いています。その多くはArduinoのプロジェクトで、残りはESP32とRaspberry Pi Picoのプロジェクトです。
  2. プロジェクトのコード欄で、ブロックで表示のスイッチをオンにします。コードの代わりに同じプログラムのブロックが表示されます。画像をタップすると全画面で開き、ゆったり拡大できます。
  3. ブロック解説タブに切り替えます。プログラムがステップごとに説明され、各ステップではそのステップのブロックとその働きだけが表示されます。
  4. ある命令が何をするのか気になったら、コードガイドを確認しましょう。そこにある例はすべて、ArduinoとMicroPythonの命令に加えて、ブロックでも示されています。
  5. スイッチをオフにすると本物のコードに戻ります。コードをコピーしてArduino IDE(PicoならThonny)に貼り付け、ボードに書き込みます。
  6. 今日のクイズで学んだことを定着させましょう。毎日A1からC2までのレベルの問題が5問出題され、週間ランキングとバッジもあります。

31件のプロジェクトは、ブロックもコードも完全に無料です。それ以外のプロジェクトでは、コードと同じくブロックもプレミアムでロック解除されます。最初の一歩にぴったりの無料プロジェクトをいくつか挙げます:LEDの点滅、2個のLEDを点灯、信号機、流れるLED、ESP32でLEDを点滅、Raspberry Pi Picoの内蔵LEDを点滅。ブロック付きのプロジェクトはすべて、ブロックプログラミングのページでプラットフォーム別に見られます。そこでは、サンプルプロジェクトのブロックとコードを並べて比べることもできます。

「ブロックからコードへ」シリーズ:ロードマップ

  1. ブロックプログラミングとは何か、ブロックのプログラムがどう本物のコードになるのか(この記事)
  2. 最初のプログラム:ブロックプログラミングでLEDを点滅させる(ブロックとC++を並べて解説)
  3. ボタンと条件:「もし」ブロックとif/else
  4. ループと変数:「ずっと繰り返す」、数えるループ、配列、カウンター
  5. ブロックでのセンサー読み取り、シリアルポート、PicoのMicroPython
  6. 教師向け:ブロックプログラミングで学ぶロボットプログラミングの授業案

シリーズの次回ブロックプログラミングでLEDを点滅させるでは、この記事のLEDの点滅プロジェクトを、回路、ブロック、C++のコードを並べながら一から作ります。それまでの間、ここで紹介したプロジェクトをBlueGraysアプリで回路図やコードと一緒に開いてみてください。ブロックで表示で同じプログラムのブロック版に、ブロック解説でステップごとの説明に、ワンタップで切り替えられます。

よくある質問

ブロックプログラミングとは何ですか?

ブロックプログラミングとは、命令を入力する代わりに、パズルのピースのように組み合わさるカラフルなブロックを積み重ねてプログラムを作る方法です。1つのブロックが1つの命令で、ブロックは上から下へ順番に実行されます。文法エラーが起こらないので、子どもや初心者もプログラムのロジックに集中できます。

ブロックベースとテキストベースのプログラミングの違いは何ですか?

概念は同じで、命令、順序、条件、ループ、変数はどちらにもあります。違いは書き方です。テキストのコードではセミコロン、かっこ、正確なスペルが必要ですが、ブロックではピースの形がそれを引き受けます。長く複雑なプログラムには、テキストのコードのほうが実用的です。

ブロックプログラミングは何歳から始められますか?

文字をすらすら読める9〜10歳以上の子どもなら、大人と一緒に始められます。もっと小さい子ども向けには、絵を使ったブロックツールもあります。年齢の上限はなく、Arduinoが初めての大人も、最初のプロジェクトではブロックから多くを得られます。

ブロックプログラミングにはどんなソフトが使われますか?

よく知られているのはScratch、mBlock、Tinkercad Circuits、MakeCodeで、パソコン上でブロックをドラッグして自分でプログラムを作ります。BlueGraysアプリでは、完成済みでテスト済みのArduino、ESP32、Picoのプロジェクトのブロックを、本物のコードと並べて読めます。これらのツールは互いに補い合う関係です。

Arduinoをブロックでプログラムできますか?

はい。ただし、ボードが実行するのはいつもテキストのコードです。mBlockのようなツールは、裏でブロックをArduinoのコードに変換して書き込みます。BlueGraysではブロックがプロジェクトのC++コードと1対1で対応しています。書き込むときは、コードをコピーしてArduino IDEに貼り付けます。

ブロックプログラミングからテキストのプログラミングにはどう移行すればいいですか?

いちばん効果的なのは、同じプログラムのブロックとコードを並べて見ることです。いくつかのプロジェクトで、各ブロックがどの行になるのかを追っていくと、ブロックなしでもコードが読めるようになります。次に、待ち時間やピン番号を変えるなど、コードを直接少しずつ書き換えてみましょう。

全プロジェクトを見る
LEDの点滅
#1初級

LEDの点滅

電子工作の第一歩は、1個のLEDを点けたり消したりすることです。Arduinoで短い間隔で点灯と消灯を繰り返すと、LEDが素早く点滅します。ボードが光を制御する仕組みを最もシンプルな形で確かめ、これから取り組むプロジェクトの基礎を身につけます。

4.6(188)
1127
2個のLEDを点灯
#2初級

2個のLEDを点灯

2個のLEDが素早く交互に点滅します。一方が点くともう一方が消え、まるでボールを投げ合っているようです。ArduinoがそれぞれのLEDを5分の1秒ずつ点灯させ、次のLEDに切り替えます。1個のLEDの次に、複数の光をまとめて制御する方法を学ぶのに最適なステップです。

4.6(105)
343
信号機
#3初級

信号機

毎日道路で見かける信号機の小さな模型です。赤が2秒点灯し、黄が一瞬点灯した後、緑が2秒点灯します。その後、再び黄を経て赤に戻り、この動作を繰り返します。3個のLEDを順番に点けたり消したりしながら、タイミングの組み立て方を学びます。

4.8(131)
397
流れるLED
#5中級

流れるLED

LEDが次々に点灯し、光が走るように進みます。Arduinoが6個のLEDを1個ずつ短く点灯して消灯させることで、光が端から端へと移動し、また最初に戻ります。この簡単なプロジェクトで、1つのパターンで複数の光を制御する方法を学びます。

4.6(85)
207
ボタンでLEDの点灯・消灯を切り替え
#10初級

ボタンでLEDの点灯・消灯を切り替え

部屋の照明スイッチのように、ボタンを1回押すと点灯し、もう1回押すと消灯します。Arduinoはボタンが押されるたびにLEDの状態を反転させます。ボタン内部の小さな接点の振動で誤動作しないよう、短い待ち時間も設けます。1つのボタンでオン・オフを切り替える、シンプルな仕組みです。

4.8(100)
167
ESP32でLEDを点滅
#103初級

ESP32でLEDを点滅

ESP32のGPIO出力の基本を学びます。デジタルピンからLEDを点灯・消灯させて、点滅させます。Arduino UNOの定番のLED点滅プロジェクトのESP32版です。Arduino環境で使う基本的な点滅コマンドは同じですが、ESP32のピン配置と3.3 VのGPIO電圧レベルはArduino UNOとは異なります。

4.7(37)
99
Raspberry Pi Picoの内蔵LEDを点滅(PicoとPico W)
#147初級

Raspberry Pi Picoの内蔵LEDを点滅(PicoとPico W)

Raspberry Pi Picoシリーズの最初のプロジェクトです!ボード上の緑色LEDを点滅させて動作を確認する、定番の「Hello World」に相当する実験です。外付け部品は不要で、PicoとUSBケーブルだけで始められます。コードはMicroPython(Raspberry Pi Foundationが公式にサポートする言語)で書きます。Thonny IDEでmachine.Pinクラス、Pin.OUTモード、led.on()/off()メソッド、time.sleep()を学びます。シリアル(REPL)出力で、切り替わる様子をリアルタイムに確認できます。

5.0(1)
10
Raspberry Pi Picoで外付けLEDを点灯(ブレッドボード)
#148初級

Raspberry Pi Picoで外付けLEDを点灯(ブレッドボード)

Picoの内蔵LEDの次は、ブレッドボードに外付けLEDを接続し、GP14ピンで制御します。このプロジェクトでは、Picoの汎用GPIOピンを出力として使う方法、LEDの極性(長い足=アノード/+、短い足=カソード/−)、電流制限抵抗(220Ω)が必要な理由を学びます。抵抗を入れないと、LEDに過大な電流が流れて壊れることがあります。回路はとても簡単です。Pico GP14 → 220Ω抵抗 → LED(+)→ LED(−)→ Pico GND。Wokwiでシミュレーションできます。

4.5(2)
7