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:

  1. 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.

  2. 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.

  3. 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.

  4. 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

LEDの点滅のブロックコード
LEDの点滅原寸で開く

Code

Arduino (C++)
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}
21
Open the project: LEDの点滅

Block 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の点滅

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

4.6(185)
1080
2個のLEDを点灯
#2初級

2個のLEDを点灯

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

4.6(104)
338
信号機
#3初級

信号機

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

4.8(130)
386
LEDの警察車両風点滅
#4初級

LEDの警察車両風点滅

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

4.7(101)
250
流れるLED
#5中級

流れるLED

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

4.6(85)
206
Knight Rider風LED
#6中級

Knight Rider風LED

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

4.8(106)
201
速度調整できる流れるLED
#7中級

速度調整できる流れるLED

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

4.6(72)
144
速度調整できるKnight Rider風LED
#8中級

速度調整できるKnight Rider風LED

6個のLEDの上を光が端から端へ走り、折り返して戻ってきます。ポテンショメーターのつまみを回すと、その速さをすぐに調整できます。つまみを一方の端にすると光が飛ぶように進み、反対の端にするとゆっくり進みます。1つのつまみで動作中のアニメーションを操る楽しさを体験できます。

4.5(60)
119

Arduinoのプロジェクト: all block projects

ESP32のプロジェクト25 block projects

ESP32でLEDを点滅
#103初級

ESP32でLEDを点滅

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

4.7(37)
99
ESP32でボタンによるLED制御(押している間だけ点灯)
#104初級

ESP32でボタンによるLED制御(押している間だけ点灯)

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

4.6(36)
55
ESP32でボタンによるLED制御(トグル)
#105初級

ESP32でボタンによるLED制御(トグル)

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

4.6(39)
57
ESP32の内蔵LEDを点滅
#106初級

ESP32の内蔵LEDを点滅

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

4.8(29)
53
ESP32の信号機
#107初級

ESP32の信号機

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

4.4(21)
44
ESP32とLDRモジュールで光の強さを読み取る
#113初級

ESP32とLDRモジュールで光の強さを読み取る

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

4.6(36)
55
ESP32とHC-SR04で作る超音波距離計
#116中級

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が破損します。

4.9(28)
45
ESP32 DHT22温湿度計(LCDディスプレイ付き)
#117中級

ESP32 DHT22温湿度計(LCDディスプレイ付き)

DHT22センサーで周囲の温度と湿度を測定し、16x2 I2C LCDにリアルタイムで表示するプロジェクトです。Adafruit DHTライブラリを使い、1本の信号線を使うプロトコルでセンサーからデータを読み取ります。IoT気象観測装置やスマートホームの自動化、温室の環境監視システムの基礎となります。ESP32のGPIO 4ピンを介してDHT22と通信します。

4.8(38)
56

Raspberry Pi Picoのプロジェクト10 block projects

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を点灯(GP14+ブレッドボード)
#148初級

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

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

4.5(2)
7
Raspberry Pi Picoで2個のLEDを交互に点滅(GP14+GP13)
#149初級

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Ωの抵抗を使います。

5.0(2)
19
Raspberry Pi Picoで信号機(3個のLEDを順に点灯、GP11/GP12/GP13)
#150初級

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Ωの電流制限抵抗を使います。

4.0(1)
12
Raspberry Pi Picoでパトカーの点滅灯(赤+青、GP11+GP12)
#151初級

Raspberry Pi Picoでパトカーの点滅灯(赤+青、GP11+GP12)

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

4.7(3)
10
Raspberry Pi Picoで3連続点滅のパトカー灯(2個のLED、GP11+GP12)
#152初級
プレミアム

Raspberry Pi Picoで3連続点滅のパトカー灯(2個のLED、GP11+GP12)

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

0.0(0)
15
Raspberry Pi Picoでボタンを押してLEDを点灯(GP14 + GP2)
#155初級
プレミアム

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)になります。この逆の論理は最初は戸惑いますが、業界で標準的に使われています。

0.0(0)
11
Raspberry Pi PicoでボタンによるLEDの点灯・消灯切り替え(GP14 + GP2)
#156初級
プレミアム

Raspberry Pi PicoでボタンによるLEDの点灯・消灯切り替え(GP14 + GP2)

ボタンとLEDを使って、さらに一歩進みます!#155と違い、ボタンを押し続ける必要はありません。1回押して離すとLEDが点灯し、もう1回押して離すと消灯します(トグル動作)。回路は#155と同じ(LEDはGP14、ボタンはGP2)ですが、コードは大きく変わります。**エッジ検出**(1→0に変わる瞬間の検出)、**状態の記録**、**チャタリング対策**(機械的な接点の振動を除去)を学びます。MicroPythonの`led.toggle()`なら1行で状態を切り替えられます。モード切り替え、IRQ、ダブルクリックなど、ボタン操作を使うあらゆるプロジェクトの基礎になります。

0.0(0)
9

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.

Platform pages