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

Código em blocos de LED piscante
LED piscanteAbrir em tamanho real

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 piscante

Block projects

Every project with a block version, by platform. Free projects come first: 31 of them are completely free, blocks and code included.

Projetos com Arduino76 block projects

LED piscante
#1Iniciante

LED piscante

O primeiro contato com a eletrônica: acender e apagar um único LED. O Arduino acende e apaga o LED em intervalos curtos, fazendo a luz piscar rapidamente. Você vê da forma mais simples como a placa co

4.6(185)
1083
Dois LEDs piscando alternadamente
#2Iniciante

Dois LEDs piscando alternadamente

Dois LEDs piscam rapidamente, um de cada vez: quando um acende, o outro apaga, como se estivessem jogando uma bola de um para o outro. O Arduino mantém cada luz acesa por um quinto de segundo e passa

4.6(104)
339
Semáforo
#3Iniciante

Semáforo

Uma pequena versão do semáforo que você vê na rua todos os dias. O vermelho fica aceso por dois segundos, o amarelo acende por um instante, o verde fica aceso por dois segundos e depois volta ao verme

4.8(130)
387
Luzes de polícia com LEDs
#4Iniciante

Luzes de polícia com LEDs

Como as luzes de uma viatura: o LED vermelho pisca três vezes rapidamente, depois o LED azul pisca três vezes, e a sequência se repete sem parar. Basta ligar dois LEDs e dois resistores ao Arduino. Um

4.7(101)
250
Sequencial de LEDs
#5Intermediário

Sequencial de LEDs

Luzes que acendem uma após a outra, como se estivessem correndo. O Arduino acende seis LEDs, um de cada vez; cada um brilha por um instante e apaga, fazendo a luz percorrer a sequência do início ao fi

4.6(85)
206
Efeito Knight Rider com LEDs
#6Intermediário

Efeito Knight Rider com LEDs

O clássico efeito Knight Rider: um ponto de luz percorre seis LEDs de uma ponta à outra e depois volta. O Arduino acende cada LED por um décimo de segundo antes de passar para o próximo, muda de direç

4.8(106)
201
Sequencial de LEDs com velocidade ajustável
#7Intermediário

Sequencial de LEDs com velocidade ajustável

Seis LEDs acendem um após o outro, fazendo a luz parecer correr de uma ponta à outra. Ao girar o botão do potenciômetro, a velocidade muda na hora: para um lado, a luz corre rapidamente; para o outro,

4.6(72)
145
Efeito Knight Rider com LEDs e velocidade ajustável
#8Intermediário

Efeito Knight Rider com LEDs e velocidade ajustável

Uma luz percorre seis LEDs de uma ponta à outra, muda de direção e volta. Ao girar o botão do potenciômetro, você ajusta a velocidade na hora: em uma extremidade, a luz quase voa; na outra, avança dev

4.5(60)
119

Projetos com Arduino: all block projects

Projetos com ESP3225 block projects

LED piscando com ESP32
#103Iniciante

LED piscando com ESP32

Ensina o uso básico de uma saída GPIO no ESP32. Fazemos um LED piscar ligando e desligando um pino digital. É a versão para ESP32 do clássico projeto blink do Arduino UNO: os comandos básicos de blink no ambiente Arduino são os mesmos, mas a disposição dos pinos e os níveis de 3,3 V dos GPIOs do ESP32 diferem dos do Arduino UNO.

4.7(37)
99
Controle de LED com botão no ESP32 (momentâneo)
#104Iniciante

Controle de LED com botão no ESP32 (momentâneo)

O LED acende enquanto o botão está pressionado e apaga ao soltá-lo. Mostra como usar o pino de entrada digital e o resistor pull-up interno do ESP32. O modo INPUT_PULLUP dispensa um resistor externo.

4.6(36)
55
Controle de LED com botão no ESP32 (alternância)
#105Iniciante

Controle de LED com botão no ESP32 (alternância)

Cada vez que o botão é pressionado, o estado do LED muda: se estiver aceso, apaga; se estiver apagado, acende. É o padrão clássico de alternância. Com debounce, eliminamos o ruído mecânico dos contatos do botão para garantir uma única mudança a cada pressionamento.

4.6(39)
57
LED integrado do ESP32 piscando
#106Iniciante

LED integrado do ESP32 piscando

Faça o LED azul integrado do ESP32 DevKit V1 piscar. Nenhum componente externo é necessário! O primeiro projeto para experimentar ao comprar um ESP32. GPIO 2 está conectado ao LED integrado.

4.8(29)
53
Semáforo com ESP32
#107Iniciante

Semáforo com ESP32

Simulação de um semáforo real com 3 LEDs: vermelho, amarelo e verde. Os tempos se aproximam da lógica real: vermelho longo, amarelo curto e verde longo. Um exemplo clássico de controle sequencial de GPIOs.

4.4(21)
44
Leitura da intensidade da luz com módulo LDR e ESP32
#113Iniciante

Leitura da intensidade da luz com módulo LDR e ESP32

Acompanhe em tempo real no Monitor Serial o valor bruto do ADC do módulo LDR e a porcentagem relativa de luz calculada a partir de referências de escuridão e claridade. Essa porcentagem não é uma medida em lux. O projeto ensina a lógica de calibração do módulo. É ideal fazê-lo antes do projeto 10, pois ajuda a determinar o valor do limiar.

4.6(36)
55
Medidor ultrassônico de distância HC-SR04 com ESP32
#116Intermediário

Medidor ultrassônico de distância HC-SR04 com ESP32

O sensor ultrassônico HC-SR04 calcula a distância medindo o tempo que a onda sonora emitida leva para atingir um objeto e retornar (tempo de voo). Neste projeto, enviaremos um pulso de 10 microssegundos do ESP32 ao pino TRIG do sensor e leremos a duração do eco no pino ECHO com `pulseIn()`. Exibiremos a distância calculada em centímetros em um LCD I2C 16x2. Como o HC-SR04 opera a 5V, é preciso usar um **divisor de tensão** no pino ECHO; caso contrário, o GPIO de 3,3V do ESP32 será danificado.

4.9(28)
45
Temperatura e umidade com ESP32 e DHT22 (com display LCD)
#117Intermediário

Temperatura e umidade com ESP32 e DHT22 (com display LCD)

Este projeto mede a temperatura e a umidade do ambiente com um sensor DHT22 e exibe os dados em tempo real em um LCD I2C 16x2. Os dados são lidos do sensor pelo protocolo de um fio (one-wire) com a biblioteca Adafruit DHT. Este projeto serve de base para estações meteorológicas IoT, automação residencial ou sistemas de monitoramento ambiental em estufas. A comunicação com o DHT22 é feita pelo pino GPIO 4 do ESP32.

4.8(38)
56

Projetos com Raspberry Pi Pico10 block projects

Piscar o LED integrado do Raspberry Pi Pico (Pico e Pico W)
#147Iniciante

Piscar o LED integrado do Raspberry Pi Pico (Pico e Pico W)

O primeiro projeto da série Raspberry Pi Pico! Fazemos o LED verde integrado piscar para verificar se a placa funciona — um primeiro experimento no estilo clássico "Hello World". SEM componentes externos, apenas o Pico e um cabo USB. O código foi escrito em **MicroPython** (a linguagem com suporte oficial da Raspberry Pi Foundation). Aprenda a usar a classe `machine.Pin`, o modo `Pin.OUT`, os métodos `led.on()/off()` e `time.sleep()` no Thonny IDE.

5.0(1)
10
Raspberry Pi Pico: controle de LED externo (GP14 + protoboard)
#148Iniciante

Raspberry Pi Pico: controle de LED externo (GP14 + protoboard)

O próximo passo após o LED integrado do Pico: conectar um LED externo à protoboard e controlá-lo pelo pino GP14. Neste projeto, você aprende a usar qualquer pino GPIO de uso geral do Pico como saída, a polaridade do LED (terminal longo = ânodo/+, terminal curto = cátodo/–) e por que um resistor limitador de corrente (220Ω) é necessário. Sem o resistor, uma corrente excessiva passa pelo LED e pode queimá-lo. O circuito é muito simples: Pico GP14 → resistor de 220Ω → LE

4.5(2)
7
Raspberry Pi Pico: dois LEDs alternados (padrão flip-flop, GP14 + GP13)
#149Iniciante

Raspberry Pi Pico: dois LEDs alternados (padrão flip-flop, GP14 + GP13)

O próximo passo após um único LED no Pico: dois LEDs piscam alternadamente no clássico padrão flip-flop. Quando um apaga, o outro acende — o exemplo mais básico de coordenação entre vários GPIOs. Neste projeto, dois LEDs de cores diferentes (vermelho no GP14, verde no GP13) trocam de estado a cada 500ms. O método `Pin.toggle()` do MicroPython deixa o código curto e claro. Essa mesma lógica é a base de semáforos, luzes policiais, LEDs sequenciais e todas as animações com vários LEDs.

5.0(2)
19
Raspberry Pi Pico: semáforo (3 LEDs em sequência, GP11/GP12/GP13)
#150Iniciante

Raspberry Pi Pico: semáforo (3 LEDs em sequência, GP11/GP12/GP13)

Simulamos um semáforo real com LEDs vermelho, amarelo e verde — o primeiro projeto com 3 LEDs da série Pico! Verde por 4 segundos: "siga"; amarelo por 1,5 segundo: "prepare-se"; vermelho por 3 segundos: "pare"; e vermelho+amarelo por 1 segundo: "saída" (padrão de semáforo europeu). Aprenda **definição de funções** (`def all_off()`), **lógica de máquina de estados** (sequência) e **sincronização de vários GPIOs**.

4.0(1)
12
Raspberry Pi Pico: efeito de luz policial (vermelho + azul, GP11 + GP12)
#151Iniciante

Raspberry Pi Pico: efeito de luz policial (vermelho + azul, GP11 + GP12)

Simulamos a barra de luzes de uma viatura com um Raspberry Pi Pico da forma mais simples! Os LEDs vermelho e azul acendem alternadamente (flip-flop): enquanto o vermelho está aceso, o azul fica apagado, e eles trocam de estado a cada 0,3 segundo, para sempre. O código escreve as duas etapas diretamente em um único laço `while True`; a velocidade é definida pela constante `WAIT_MS`.

4.7(3)
10
Raspberry Pi Pico: luz policial com 3 piscadas alternadas (2 LEDs, GP11 + GP12)
#152Iniciante
Premium

Raspberry Pi Pico: luz policial com 3 piscadas alternadas (2 LEDs, GP11 + GP12)

Uma variação rítmica do projeto de luz policial — flip-flop com 3 piscadas! O mesmo circuito de 2 LEDs do #151 (GP11 vermelho + GP12 azul), mas com outro padrão: o LED vermelho pisca 3 vezes rapidamente, depois o azul pisca 3 vezes, sem parar. Esse padrão de "rajada + troca" é o ritmo mais reconhecível das luzes de viaturas reais. Aprenda a usar a função com parâmetros `def burst(led, count, duration_ms)`, a criar ritmos e a gerar diferentes efeitos visuais com código no mesmo circuito.

0.0(0)
15
Raspberry Pi Pico: LED controlado por botão (enquanto pressionado, GP14 + GP2)
#155Iniciante
Premium

Raspberry Pi Pico: LED controlado por botão (enquanto pressionado, GP14 + GP2)

Primeiro projeto de **entrada** com o Pico — leitura de botão! O LED acende enquanto o botão está pressionado e apaga ao soltá-lo. O grande passo depois das animações com LEDs: **entrada de sinais do mundo para o Pico**. Aprenda a usar `Pin.IN` (modo de entrada), `Pin.PULL_UP` (pull-up interno — padrão para botões) e a leitura com `button.value()`. LED no GP14, botão no GP2. Pressionado = LOW (0), solto = HIGH (1) — essa lógica invertida confunde no início, mas é padrão da indústria.

0.0(0)
11
Raspberry Pi Pico: ligar e desligar LED com botão (GP14 + GP2)
#156Iniciante
Premium

Raspberry Pi Pico: ligar e desligar LED com botão (GP14 + GP2)

Botão + LED — próximo nível! Ao contrário do #155, não é preciso manter o botão pressionado. Pressione e solte → LED aceso. De novo → LED apagado (alternância). O circuito é o mesmo do #155 (LED no GP14, botão no GP2), mas o código muda bastante. Aprenda **detecção de borda** (o instante da queda 1→0), **rastreamento de estado** e **debounce** (filtro de repique). `led.toggle()` alterna o estado em uma linha. Base para projetos interativos com botões (seletor de modo, IRQ, clique duplo).

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