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.
Projetos com Arduino76 block projects

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

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

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

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

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

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ç

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,

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
Projetos com Arduino: all block projects
- #9Controle de LED com botão (momentâneo)Free
- #10Ligar e desligar um LED com botãoFree
- #11Medição da intensidade da luz com LDRFree
- #12Luz noturna com LDRFree
- #13Uso do buzzerFree
- #14Ajuste de frequência com buzzerFree
- #27Medição de distância com HC-SR04 (Monitor Serial)Free
- #55Temperatura e umidade com DHT11Free
- #16Leitura de códigos de controle remoto IR
- #17Ligar e desligar LEDs com receptor IR e controle remoto
- #19Acender uma lâmpada de 220V com botão de pressão
- #20Ligar e desligar uma lâmpada de 220V com botão
- #21Acender uma lâmpada de 220V com controle remoto
- #22Sistema de alerta com laser
- #23Sistema de segurança com laser
- #24Detector de movimento com sensor de movimento
- #25Campainha e luz com sensor de movimento
- #26Piano simples com buzzer e botões
- #28Sensor de estacionamento com HC-SR04
- #29Exibição de mensagens no display LCD 2x16
- #30Animação de texto que rebate nas bordas do LCD
- #31Medição de distância com display LCD
- #32Uso do display LCD com I2C
- #33Projeto de medição de altura
- #34Controle de LED pelo celular via Bluetooth
- #35Uso de servo motor
- #36Uso de servo motor com potenciômetro
- #37Leitura de uma chave reed
- #38Sensor de porta com chave reed
- #39Uso de LED RGB
- #40Transição suave de cores com LED RGB
- #42Exibição de números de 0 a 99 em um display de 7 segmentos
- #43Contador com display de 7 segmentos e botões
- #44Medição de temperatura com NTC e display LCD 2x16
- #45Configuração do módulo de relógio RTC DS1302
- #46Relógio RTC DS1302 com display LCD
- #47Exibição de 0 a 9.999 em display de 7 segmentos de 4 dígitos
- #48Relógio digital com display de 7 segmentos de 4 dígitos
- #49Animação de bomba com display de 7 segmentos de 4 dígitos
- #50Uso de um sensor de chama
- #51Uso de um sensor de gás
- #52Alarme com sensores de chama e gás
- #53Leitura de valores RFID
- #54Autenticação por RFID
- #56Voltímetro digital com display LCD
- #58Comunicação bidirecional entre 2 Arduinos
- #59Controle de LEDs com joystick
- #60Controle de servos com joystick
- #61Uso do teclado matricial 3x4
- #62Controle de LEDs com teclado matricial 3x4
- #63Uso do teclado matricial 4x4
- #64Fechadura com senha, teclado 4x4 e LCD
- #67Uso do motor de passo
- #68Servo motor de 360 graus com motor de passo
- #69Uso da fita LED WS2812B
- #70Luzes de polícia com WS2812B
- #71LED sequencial com WS2812B
- #72LED sequencial com WS2812B (efeito de preenchimento)
- #73Efeito Super Máquina com WS2812B
- #74Efeito Super Máquina triplo com WS2812B
- #75Animação 1 com WS2812B
- #77Leitura de reflexão (proximidade) com TCRT5000
- #78Detecção de superfícies pretas e brancas com TCRT5000
- #82Iluminação inteligente de escadas e corredores
- #83Estação de irrigação inteligente
- #96Roleta com Arduino
- #97Teste de tempo de reação com Arduino e sinal sonoro
- #99Controle do ângulo do servo SG90 com potenciômetro
Projetos com ESP3225 block projects

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.

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.

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.

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.

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.

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.

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.

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.
Projetos com ESP32: all block projects
- #122Alarme detector de gás e fumaça com ESP32 e MQ-2Free
- #123Leitor de cartões RFID RC522 com ESP32 e LCDFree
- #108LEDs sequenciais com ESP32
- #109Efeito de luzes de viatura com ESP32
- #110Variação gradual do brilho do LED com PWM no ESP32
- #111Controle de LED RGB com ESP32
- #112Luz noturna com LDR e ESP32
- #114Melodia com buzzer e ESP32
- #115Brilho do LED com potenciômetro no ESP32 (analógico → PWM)
- #118Servo motor com ESP32 (controle por potenciômetro)
- #119Display LCD I2C com ESP32 (16x2)
- #120Relógio digital com ESP32 e RTC DS1307 (I2C + LCD)
- #121Iluminação automática com ESP32 e sensor de movimento PIR
- #125Display TM1637 de 4 dígitos e 7 segmentos com ESP32
- #126Controle de fita WS2812B NeoPixel com ESP32
- #139Sistema inteligente de irrigação de plantas com ESP32
- #140Alarme de movimento com ESP32
Projetos com Raspberry Pi Pico10 block projects

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.

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

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.

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

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

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.

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.

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).
Projetos com 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.

