111 block projects · Arduino · ESP32 · Pico
Block Coding for Arduino, ESP32 and Pico Projects
Follow colorful blocks instead of reading code line by line. 111 BlueGrays projects come with a block version, and every block maps to a line of the real code that runs on the board.
What is block coding?
Block coding means building a program out of puzzle-like blocks instead of typing it. "Set pin as output", "turn the LED on" and "wait 1 second" are each a block, and stacking them builds the program. No semicolons, brackets or typos to worry about, so you can focus on the logic.
BlueGrays uses its own block set, and the blocks speak your language: if the app is in English, the blocks say "repeat forever" and "write HIGH to pin". In Arduino and ESP32 projects the blocks map to C++ code; in Raspberry Pi Pico projects they map to MicroPython.
The goal is not to stay in blocks forever but to understand the code. Put a project's blocks next to its code and you can see what each line does. After a few projects you start reading the code without the blocks.
How block coding works in BlueGrays
In the app, the blocks live in the code section of every block project. Four steps:
- 01
Pick a block project
Projects with the block badge come with a block version. You can also filter the list to show only block projects.
- 02
Turn on "Show as blocks"
One switch in the code section turns the code into blocks. Tap the image to open it full screen and zoom in.
- 03
Understand the blocks
The "Understand the blocks" tab walks you through the program step by step, showing only the blocks for each step and what they do.
- 04
Move on to real code
Switch it off and the same program appears as code. Copy it into the Arduino IDE (or Thonny for the Pico) and upload it to your board.
One program: blocks and code
On the left, the project's blocks. On the right, the code that runs on the board. Every block has a matching line of code.
Blocks

Code
1// ─────────────────────────────────────────
2// BlueGrays · bluegrays.com
3// LED Blink
4// ─────────────────────────────────────────
5// Blinks a single LED on and off every 100 ms. Shows the basic use of the
6// digitalWrite and delay functions.
7//
8// Pins:
9// D9 -> LED (with a 220 ohm resistor)
10
11void setup() {
12 pinMode(9,OUTPUT); // LED pin as output
13}
14
15void loop() {
16 digitalWrite(9,HIGH); // Turn the LED on
17 delay(100); // Wait 100 ms (1000 ms = 1 s)
18 digitalWrite(9,LOW); // Turn the LED off
19 delay(100);
20}
21Block projects
Every project with a block version, by platform. Free projects come first: 31 of them are completely free, blocks and code included.
Arduinoのプロジェクト76 block projects

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

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

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

LEDの警察車両風点滅
警察車両の警光灯のように、赤いLEDが素早く3回点滅し、続いて青いLEDが3回点滅します。このパターンを途切れることなく繰り返します。Arduinoに2個のLEDと2個の抵抗をつなぐだけで、数分で組み立てられる、目を引く入門プロジェクトです。

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

Knight Rider風LED
Knight Riderでおなじみの、光が左右に往復する動きです。6個のLEDの上を光の点が端から端へ進み、折り返します。Arduinoが各LEDを10分の1秒ずつ点灯させ、端に着くたびに向きを変えて往復し続けます。装飾用の照明や警告灯作りの第一歩にぴったりです。

速度調整できる流れるLED
6個のLEDが順番に点滅し、光が端から端へ走るように見えます。ポテンショメーターのつまみを回すと、その速さがすぐに変わります。一方に回すと光が素早く進み、反対に回すと各LEDが1秒近く点灯します。つまみで動きの速さを調整する仕組みを目で確かめられます。

速度調整できるKnight Rider風LED
6個のLEDの上を光が端から端へ走り、折り返して戻ってきます。ポテンショメーターのつまみを回すと、その速さをすぐに調整できます。つまみを一方の端にすると光が飛ぶように進み、反対の端にするとゆっくり進みます。1つのつまみで動作中のアニメーションを操る楽しさを体験できます。
Arduinoのプロジェクト: all block projects
- #9ボタンでLEDを点灯(押している間のみ)Free
- #10ボタンでLEDの点灯・消灯を切り替えFree
- #11LDRで光の強さを測定Free
- #12LDRで作る常夜灯Free
- #13ブザーの使い方Free
- #14ブザーの周波数を調整Free
- #27HC-SR04で距離を測定(シリアルモニタ表示)Free
- #55DHT11で温度と湿度を測定Free
- #16IRリモコンのコードを読み取り
- #17IR受信機とリモコンでLEDを点灯・消灯
- #19ボタンを押している間だけ220V電球を点灯
- #20ボタンを押すたびに220V電球の点灯・消灯を切り替え
- #21リモコンで220V電球を点灯・消灯
- #22レーザー警報システム
- #23レーザー防犯システム
- #24人感センサーで動きを検出
- #25モーションセンサーで作るドアベルとライト
- #26ブザーとボタンで作る簡単なピアノ
- #28HC-SR04で作る駐車センサー
- #292x16 LCDディスプレイにメッセージを表示
- #30LCDで文字が左右に跳ね返るアニメーション
- #31LCDディスプレイを使った距離測定
- #32I2CでLCDディスプレイを使う
- #33身長測定プロジェクト
- #34BluetoothでスマートフォンからLEDを操作
- #35サーボモーターの使い方
- #36ポテンショメーターでサーボモーターを操作
- #37リードスイッチの状態を読み取る
- #38リードスイッチ式ドアセンサー
- #39RGB LEDの使い方
- #40RGB LEDで滑らかに色を変える
- #427セグメントディスプレイで0〜99を表示
- #437セグメントディスプレイとボタンで作るカウンター
- #44NTCと2x16 LCDディスプレイで温度を測定
- #45DS1302 RTC時計モジュールのセットアップ
- #46DS1302 RTC時計をLCDディスプレイで表示
- #474桁の7セグメントディスプレイで0〜9999を表示
- #484桁の7セグメントディスプレイで作るデジタル時計
- #494桁の7セグメントディスプレイで作る爆弾アニメーション
- #50炎センサーの使い方
- #51ガスセンサーの使い方
- #52炎・ガスセンサーで警報
- #53RFIDの値の読み取り
- #54RFID認証
- #56LCDディスプレイ付きデジタル電圧計
- #582台のArduinoで双方向通信
- #59ジョイスティックでLEDを制御
- #60ジョイスティックでサーボモーターを制御
- #613x4キーパッドの使い方
- #623x4キーパッドでLEDを制御
- #634x4キーパッドの使い方
- #644x4キーパッドとLCDで暗証番号ロック
- #67ステッピングモーターの使い方
- #68ステッピングモーターで作る360度サーボモーター
- #69WS2812B LEDテープの使い方
- #70WS2812Bで作るパトカー風ライト
- #71WS2812Bで流れるLED
- #72WS2812Bで流れるLED(積み上げ点灯)
- #73WS2812Bのナイトライダー風ライト
- #74WS2812Bのナイトライダー風ライト(3灯)
- #75WS2812Bアニメーション1
- #77TCRT5000で反射(近接)を読み取る
- #78TCRT5000で床面の白黒を判別
- #82階段・廊下のスマート照明
- #83スマート水やりステーション
- #96Arduinoルーレット
- #97Arduinoで作る音の合図付き反応時間テスト
- #99ポテンショメーターでSG90サーボモーターの角度制御
ESP32のプロジェクト25 block projects

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

ESP32でボタンによるLED制御(押している間だけ点灯)
ボタンを押している間はLEDが点灯し、離すと消灯します。ESP32のデジタル入力ピンと内蔵プルアップ抵抗の使い方を学びます。INPUT_PULLUPモードを使うため、外付け抵抗は不要です。

ESP32でボタンによるLED制御(トグル)
ボタンを押すたびにLEDの状態が切り替わり、点灯中なら消灯し、消灯中なら点灯します。基本的なトグル動作です。チャタリング対策でボタンの機械的なノイズを除去し、1回の操作で1回だけ切り替わるようにします。

ESP32の内蔵LEDを点滅
ESP32 DevKit V1に内蔵された青色LEDを点滅させます。外付け部品は不要です!ESP32を購入したら、最初に試すプロジェクトです。GPIO 2が内蔵LEDにつながっています。

ESP32の信号機
赤・黄・緑の3個のLEDで、実際の信号機を再現します。赤は長く、黄は短く、緑は長く点灯させ、実際の信号機に近いタイミングで動かします。GPIOを順番に制御する基本例です。

ESP32とLDRモジュールで光の強さを読み取る
LDRモジュールの生のADC値と、暗い状態・明るい状態の基準値から計算した相対的な明るさの割合を、シリアルモニタでリアルタイムに確認します。この割合はルクスの測定値ではありません。モジュールの校正の仕組みを学べます。しきい値の決定に使うため、プロジェクト10の前に取り組むのが適しています。

ESP32とHC-SR04で作る超音波距離計
HC-SR04超音波センサーは、発した音波が物体に反射して戻るまでの時間(Time of Flight)を測定して距離を計算します。このプロジェクトでは、ESP32からセンサーのTRIGピンに10マイクロ秒のパルスを送り、ECHOピンからの反射波の持続時間を`pulseIn()`で読み取ります。計算した距離をcm単位で16x2 I2C LCDに表示します。HC-SR04は5Vで動作するため、ECHOピンには**分圧回路**が必須です。分圧しないとESP32の3.3V GPIOが破損します。

ESP32 DHT22温湿度計(LCDディスプレイ付き)
DHT22センサーで周囲の温度と湿度を測定し、16x2 I2C LCDにリアルタイムで表示するプロジェクトです。Adafruit DHTライブラリを使い、1本の信号線を使うプロトコルでセンサーからデータを読み取ります。IoT気象観測装置やスマートホームの自動化、温室の環境監視システムの基礎となります。ESP32のGPIO 4ピンを介してDHT22と通信します。
ESP32のプロジェクト: all block projects
- #122ESP32 MQ-2ガス・煙検知アラームFree
- #123ESP32 RFID RC522カードリーダー(LCD付き)Free
- #108ESP32の流れるLED
- #109ESP32でパトカーの点滅ライトを再現
- #110ESP32のPWMでLEDをフェード
- #111ESP32でRGB LEDを制御
- #112ESP32とLDRで作るナイトライト
- #114ESP32とブザーでメロディーを演奏
- #115ESP32と可変抵抗でLEDの明るさを制御(アナログ→PWM)
- #118ESP32サーボモーター(ポテンショメーター制御)
- #119ESP32 I2C LCDディスプレイ(16x2)
- #120ESP32とDS1307 RTCのデジタル時計(I2C + LCD)
- #121ESP32 PIR人感センサーによる自動照明
- #125ESP32 TM1637 4桁7セグメントディスプレイ
- #126ESP32 WS2812B NeoPixel LEDテープの制御
- #139ESP32のスマート植物水やりシステム
- #140ESP32の動体検知アラーム
Raspberry Pi Picoのプロジェクト10 block projects

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)出力で、切り替わる様子をリアルタイムに確認できます。

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

Raspberry Pi Picoで2個のLEDを交互に点滅(GP14+GP13)
PicoでLEDを1個点滅させた次は、2個のLEDを交互に点滅させる定番のフリップフロップパターンです。一方が消えるともう一方が点灯する、複数のGPIOを連動させる最も基本的な例です。このプロジェクトでは、色の異なる2個のLED(GP14に赤、GP13に緑)が500msごとに点灯状態を入れ替えます。MicroPythonの`Pin.toggle()`メソッドを使うと、コードを短く読みやすくできます。同じ基本的な仕組みが、信号機、パトカーの点滅灯、流れるLEDなど、複数のLEDを使ったアニメーションの基礎になります。回路はとても簡単で、各LEDに220Ωの抵抗を使います。

Raspberry Pi Picoで信号機(3個のLEDを順に点灯、GP11/GP12/GP13)
赤・黄・緑のLEDで本物の信号機を再現する、Picoシリーズ初の3個のLEDを使うプロジェクトです!緑が4秒間「進め」、黄が1.5秒間「準備」、赤が3秒間「止まれ」、赤と黄が1秒間「発進準備」を示します(ヨーロッパの信号機のパターン)。**関数の定義**(`def all_off()`)、**状態機械の仕組み**(順序)、**複数のGPIOの同期**を学びます。回路はとても簡単です。GP11(緑)、GP12(黄)、GP13(赤)に3個のLEDを接続し、それぞれに220Ωの電流制限抵抗を使います。

Raspberry Pi Picoでパトカーの点滅灯(赤+青、GP11+GP12)
Raspberry Pi Picoで、パトカーの屋根にある点滅灯を最も簡単な形で再現します!赤と青のLEDが交互に点灯するフリップフロップ方式です。赤が点灯している間は青が消灯し、0.3秒ごとに状態を入れ替え、繰り返します。コードは1つの`while True`ループに2つの動作を直接記述し、速度は`WAIT_MS`定数で設定します。

Raspberry Pi Picoで3連続点滅のパトカー灯(2個のLED、GP11+GP12)
パトカーの点滅灯プロジェクトのリズムを変え、3回ずつ交互に点滅させます!#151と同じ2個のLEDの回路(GP11に赤、GP12に青)を使いますが、点滅パターンが異なります。赤のLEDが素早く3回点滅し、次に青が3回点滅する動作を繰り返します。この「連続点滅+切り替え」は、本物のパトカーの点滅灯でおなじみのリズムです。引数を持つ関数`def burst(led, count, duration_ms)`、リズムの設計、同じ回路でコードを変えて異なる光の演出を作る方法を学びます。

Raspberry Pi Picoでボタンを押してLEDを点灯(GP14 + GP2)
Picoで初めての**入力**プロジェクト、ボタンの読み取りです!ボタンを押している間はLEDが点灯し、離すと消灯します。LEDアニメーションから一歩進んで、**外部からPicoに信号を入力する方法**を学びます。`Pin.IN`(入力モード)、`Pin.PULL_UP`(ボタンで一般的に使う内蔵プルアップ抵抗)、`button.value()`による読み取りを扱います。LEDはGP14、ボタンはGP2(内蔵PULL_UP)に接続します。押すとLOW(0)、離すとHIGH(1)になります。この逆の論理は最初は戸惑いますが、業界で標準的に使われています。

Raspberry Pi PicoでボタンによるLEDの点灯・消灯切り替え(GP14 + GP2)
ボタンとLEDを使って、さらに一歩進みます!#155と違い、ボタンを押し続ける必要はありません。1回押して離すとLEDが点灯し、もう1回押して離すと消灯します(トグル動作)。回路は#155と同じ(LEDはGP14、ボタンはGP2)ですが、コードは大きく変わります。**エッジ検出**(1→0に変わる瞬間の検出)、**状態の記録**、**チャタリング対策**(機械的な接点の振動を除去)を学びます。MicroPythonの`led.toggle()`なら1行で状態を切り替えられます。モード切り替え、IRQ、ダブルクリックなど、ボタン操作を使うあらゆるプロジェクトの基礎になります。
Raspberry Pi Picoのプロジェクト: all block projects
Who is it for?
Kids and parents
Coding for kids sticks much better when it ends with an LED lighting up on the desk. The blocks make the program readable, and you build the circuit together.
Teachers and clubs
In a robotics or STEM class you can explain a project with blocks first, then move on to its code. Every project has a parts list and a circuit diagram ready.
Beginners
Arduino block coding is the fastest way to get the logic in your first few projects. Start with blocks and switch to code when you feel ready.
Frequently asked questions
What is block-based coding?
It is a way of programming where commands are shown as blocks that snap together like puzzle pieces instead of typed text. Since you cannot make typos, beginners and kids grasp the logic of a program more easily.
How many BlueGrays projects come with blocks?
Right now 111: 76 Arduino, 25 ESP32 and 10 Raspberry Pi Pico projects. The list grows as more projects are converted.
Is block coding free?
The app is free. The blocks and code of 31 block projects are open to everyone. In the other projects the blocks unlock with Premium, just like the code.
Can I upload the blocks straight to my board?
No. The blocks make the program easier to read and understand; what goes onto the board is always the project's real code. You copy it into the Arduino IDE, or Thonny for the Pico, and upload it.
Can I build my own programs with the blocks?
Not yet. We prepare the blocks for each project and match them to the code one to one, so the blocks you see always stand for a tested program that works.
How is this different from Scratch or mBlock?
In Scratch and mBlock you drag blocks around on a computer to write your own program. In BlueGrays every block project comes with a circuit diagram, a parts list and the real code, and the blocks are a readable version of that code. The two complement each other.
Is it suitable for kids? What age can they start?
Kids around 9 or 10 who read comfortably can start together with an adult. The first projects need no soldering: they are built on a breadboard with LEDs, buttons and a buzzer.
Which languages are the blocks in?
English, Turkish, German, Spanish, French and Italian. The blocks appear in whatever language you use the app in.
The BlueGrays app
Start block coding on your phone
Blocks, circuit diagram, parts list and real code on one screen. Free on iOS and Android.
Scan with your phone
Point your camera at the code and your phone's app store opens.

