Logo Rodrigo Barbosa

🤖 ROBÓTICA NO ENSINO FUNDAMENTAL I 4º ANO

⚡ 4º BIMESTRE: HORA DE BOTAR O ROBÔ PRA TRABALHAR DE VERDADE ⚡
APROVADO PELO MINISTÉRIO DO SE-ENTÃO-SENÃO
Logo Gisele Nunes

🚀 CARTA DE ABERTURA DO BIMESTRE

"O Último Bimestre: Hora de Botar o Robô pra Trabalhar de Verdade"

Professor(a), respira. Segura essa caneca de café e se prepara.

Você sobreviveu a três bimestres ensinando sequências, decisões, loops e concorrência. Seus alunos já sabem fazer o micro:bit piscar, apitar e tomar decisões mais rápido que um adulto escolhendo o que comer no self-service. Mas agora? Agora a brincadeira ficou séria.

Este bimestre não é sobre aprender ferramentas. É sobre usar ferramentas para mudar o mundo ou pelo menos para mudar a sala de aula, o corredor, o pátio ou a fila do recreio. Seus alunos vão virar detetives de problemas, arquitetos de soluções e engenheiros de robôs que resolvem questões REAIS da escola.

"Professor, meu robô vai avisar quando alguém esquecer a mochila na cadeira!" "O meu vai tocar uma musiquinha quando a lixeira estiver cheia!" "O meu vai piscar que nem uma boate quando a sala estiver bagunçada!"

E você, professor(a), vai assistir a tudo isso com um sorriso de orgulho estampado na cara. Porque no fundo, você sabe: esses moleques de 9 anos estão aprendendo mais do que programar. Estão aprendendo a olhar para o mundo, identificar problemas e criar soluções com tecnologia. E isso, meu caro, é o que chamamos de protagonismo.

Aviso aos pais: Seu filho vai chegar em casa dizendo que construiu um robô que fiscaliza a bagunça da sala. Não se assuste. É o 4º ano sendo revolucionário. Apoie. Tire foto. Compartilhe. Seu filho é um engenheiro agora.

Bora? O robô não vai se programar sozinho. 🚀🤖

📋 MAPEAMENTO BIMESTRE 4º ANO – 4º BIMESTRE

Habilidades BNCC · Projeto Autoral de Hardware
Habilidades BNCC (Outras) Semana Título da Aula Habilidades BNCC (Matemática) Habilidades BNCC (LP)
Competência Geral 5 (pensamento computacional) 31 "Caça-problemas que precisa de robô na escola?" EF04MA01 (ler/ordenar números naturais) EF04LP11 (produzir textos instrucionais)
Competência Geral 5 (pensamento computacional) 32 "Projetando a solução do papel para o código" EF04MA21 (padrões e regularidades) EF04LP11 (textos instrucionais)
EF04CI01 (movimento e energia); Competência Geral 4 (comunicação digital) 33 "Montando o hardware o robô ganha corpo" EF04MA01 (contagem e ordenação)
Competência Geral 5 (pensamento computacional) 34 "Primeiro esqueleto do código" EF04MA01 (variáveis e contadores) EF04LP11 (documentação)
Competência Geral 5 (pensamento computacional) 35 "Aninhando e concorrendo o cérebro do projeto" EF04MA21 (algoritmos complexos) EF04LP11 (registro de processos)
Competência Geral 5 (depuração) 36 "Caça ao bug real teste e depuração" EF04MA26 (análise de eventos) EF04LP11 (documentar testes)
Competência Geral 4 (comunicação digital) 37 "Refinamento e melhorias Robô 2.0" EF04MA03 (resolução de problemas) EF04LP11 (atualização de manual)
Competência Geral 4 (comunicação) 38 "Preparando a apresentação manual e pôster" EF04MA26 (organização de dados) EF04LP11 (produção de manual)
Competência Geral 4 (comunicação) 39 "Ensaio geral mostra dos projetos" EF04MA26 (análise de desempenho) EF04LP11 (apresentação oral)
Todas as competências gerais 40 "Feira de Robótica avaliação final e celebração" EF04MA01 e EF04MA26 (consolidação) EF04LP11 (apresentação final)

🗺️ BIMESTRE – PLANO SINTÉTICO

10 semanas · Projeto Autoral de Hardware
Atividade Principal Semana Título da Aula Conceito
Caça aos problemas pela escola; brainstorming e votação da ideia do projeto 31 "Caça-problemas o que precisa de robô na escola?" Identificação de problemas reais e ideação
Construção do fluxograma do robô; lista de materiais e componentes 32 "Projetando a solução do papel para o código" Planejamento e fluxograma
Montagem do micro:bit, LEDs, buzzer e bateria; corpo do robô com sucata 33 "Montando o hardware o robô ganha corpo" Prototipagem e montagem física
Criação do código-base com variáveis, loop principal e eventos iniciais 34 "Primeiro esqueleto do código" Estrutura básica de programação
Refinamento do código com SE aninhados e eventos concorrentes (botões) 35 "Aninhando e concorrendo o cérebro do projeto" Integração de aninhamento e concorrência
Teste do robô no ambiente real; identificação e correção de problemas 36 "Caça ao bug real teste e depuração" Testes práticos e correção de bugs
Adição de melhorias (matriz de LEDs, melodias, ícones) 37 "Refinamento e melhorias Robô 2.0" Otimização e adição de funcionalidades
Produção do manual do robô e pôster explicativo 38 "Preparando a apresentação manual e pôster" Documentação e comunicação
Simulação da feira com apresentações para a turma 39 "Ensaio geral mostra dos projetos" Apresentação e feedback
Feira de Robótica com exposição dos projetos e certificados 40 "Feira de Robótica avaliação final e celebração" Apresentação para a comunidade

📚 PLANOS DE AULA DETALHADOS BIMESTRE 4

Semanas 31 a 40 · Projeto Autoral de Hardware

📌 Título

"Detetives de problemas onde o robô pode ajudar?"

🎯 Objetivos Operacionais
  • Cognitivos: Identificar problemas cotidianos na escola que poderiam ser resolvidos com um robô.
  • Procedimentais: Realizar uma "caça" observando a escola e listando possíveis soluções robóticas.
  • Atitudinais: Desenvolver empatia, pensamento crítico e protagonismo sobre necessidades coletivas.
📖 Conteúdo Programático
  • O que é um problema real? (exemplos: papel no chão, fila desorganizada, avisos não vistos, lixeira transbordando, luz acesa sem necessidade).
  • Como um robô pode ajudar? (sensores, luzes, sons, mensagens na matriz de LEDs).
  • Brainstorming e votação em grupo a democracia robótica começa aqui.
📜 Habilidades BNCC e RCP-PR
  • EF04MA01 Ler, escrever e ordenar números naturais até a ordem de dezenas de milhar
  • EF04LP11 Produzir textos instrucionais (lista de problemas e possíveis soluções)
  • Competência Geral 5 Pensamento computacional aplicado a problemas reais
  • RCP-PR Autoria Criar sistemas com propósito; projeto autoral com impacto real
🧰 Materiais
Caderno e lápis (diário do detetive) Câmera ou celular (opcional) Quadro branco Post-its coloridos
🔧 Explicação Detalhada da Montagem do Hardware

Nesta semana, NADA de montagem. É semana de observação, ideação e planejamento. Os alunos vão usar apenas cérebro, olhos e criatividade. O hardware vai esperar pacientemente na caixa.

💻 Código a ser desenvolvido

Nenhum código. Os alunos farão um "mapa mental" de problemas e soluções no caderno. Mas já podemos ir aquecendo:

Exemplo de "pensamento computacional" sem código:

PROBLEMA: A lixeira da sala vive transbordando.

SOLUÇÃO: Um robô que acende um LED vermelho e toca um som quando a lixeira está cheia.

SENSOR: Botão A (simulando um sensor de distância)

AÇÃO: LED vermelho acende + buzzer toca

⏱️ Detalhamento Minuto a Minuto
0-5 min
"Hoje somos DETETIVES! Vamos encontrar problemas que um robô poderia resolver. E não vale dizer 'o problema é a prova de matemática' a menos que seu robô resolva provas!" Abertura
5-10 min
Mostrar exemplos: robô que avisa quando a lixeira está cheia (LED + buzzer), robô que acende luz quando está escuro (acelerômetro + matriz), robô que toca música na hora do recreio (buzzer + botão).
10-20 min
Caça aos problemas (sala de aula): Andar pela sala e anotar problemas: carteiras bagunçadas, lápis no chão, temperatura, luz, barulho, falta de avisos.
20-30 min
Caça aos problemas (pátio/corredores): Com supervisão, visitar outros espaços da escola (biblioteca, refeitório, corredor, pátio) e anotar TUDO que incomoda.
30-40 min
Brainstorming em grupo: Em grupos de 4, listar os problemas encontrados e pensar em soluções robóticas possíveis usando os componentes disponíveis (micro:bit, LEDs, buzzer, botões, acelerômetro, matriz).
40-45 min
Votação democrática: Cada grupo apresenta uma ideia. A turma vota na MAIS VIÁVEL e MAIS IRRREVERENTE.
45-50 min
Diário do robô: Registrar o problema escolhido e uma primeira ideia de como o robô vai ajudar. Desenhar um esboço do robô (pode ser um stick figure com antenas).
♿ Orientações para Adaptações e Inclusão
  • TEA: Oferecer uma lista prévia de problemas com imagens; usar um roteiro visual da "caça"
  • TDAH: Foco em um ambiente por vez; usar timer para cada etapa
  • Deficiência visual: Descrever os ambientes verbalmente; usar gravação de áudio para anotações
  • Deficiência auditiva: Instruções escritas e cartões com imagens dos problemas
  • Altas habilidades: Desafiar a pensar em um robô que resolve DOIS problemas ao mesmo tempo
  • Deficiência física: Adaptar a locomoção com apoio de colegas; anotações com auxílio
📊 Critérios Operacionais de Avaliação
Descrição Critério Pontuação
Registrou problemas com atenção e curiosidade Participação na caça 0-3
Ofereceu ideias criativas para solução Contribuição no brainstorming 0-3
Argumentou bem a escolha do grupo com clareza Defesa da ideia escolhida 0-4
Total 0-10

📌 Título

"Arquiteto de robôs desenhando a solução antes de programar"

🎯 Objetivos Operacionais
  • Cognitivos: Transformar uma ideia em um fluxograma de ações e decisões.
  • Procedimentais: Criar um esboço do projeto (hardware, sensores, código).
  • Atitudinais: Planejar antes de executar, desenvolvendo disciplina de engenharia.
📖 Conteúdo Programático
  • O que é um fluxograma? (símbolos: retângulo = ação, losango = decisão, oval = início/fim, setas = fluxo).
  • Como representar o comportamento do robô em blocos lógicos.
  • Lista de materiais e sensores necessários para o projeto escolhido.
📜 Habilidades BNCC e RCP-PR
  • EF04MA21 Padrões e regularidades (fluxo lógico do algoritmo)
  • EF04LP11 Produzir texto instrucional (esboço do manual do robô)
  • Competência Geral 5 Pensamento computacional; planejamento de sistema
  • RCP-PR Planejamento de sistema e organização de ideias
🧰 Materiais
Papel grande (cartolina ou flip chart) Canetinhas coloridas, lápis de cor Post-its para anotações Computador (opcional)
🔧 Explicação Detalhada da Montagem do Hardware

Nesta semana, os alunos DESENHAM o hardware que vão usar. Cada grupo faz um "projeto arquitetônico" do robô:

  • Onde vai ficar o micro:bit? (no centro, como o cérebro)
  • Onde vão ficar os LEDs? (na frente, como olhos)
  • Onde vai ficar o buzzer? (em cima, como boca)
  • Onde vão ficar os botões? (nas laterais, como mãos)
  • Como vai ser o corpo? (caixa de papelão, garrafa pet, caixa de sapato?)

Desafio: O robô precisa ter CARA de robô. Pode ser zoado, pode ser bonitinho, pode ser assustador. O importante é ter personalidade.

💻 Código a ser desenvolvido

Não há código final, mas os alunos escrevem "pseudocódigo" uma versão em português do que o robô vai fazer.

Exemplo de pseudocódigo para um "robô que avisa quando a lixeira está cheia":

INÍCIO
ENQUANTO verdadeiro
    SE sensor de distância (simulado pelo botão A) detectar "cheio" ENTÃO
        apagar LED verde
        acender LED vermelho
        tocar som no buzzer
        mostrar "CHEIO" na matriz de LEDs
    SENÃO
        acender LED verde
        apagar LED vermelho
    FIM SE
FIM ENQUANTO
FIM
⏱️ Detalhamento Minuto a Minuto
0-5 min
Revisão: "Na semana passada escolhemos o problema. Hoje vamos PLANEJAR a solução. Engenheiro de verdade não sai montando tudo sem projeto!"
5-10 min
Explicação do fluxograma: Mostrar os símbolos: retângulo (ação), losango (decisão), oval (início/fim), setas (fluxo). Dar exemplos com situações do dia a dia.
10-20 min
Construção do fluxograma: Cada grupo desenha o fluxo do robô em cartolina: o que ele faz, quando decide, o que acontece em cada situação.
20-30 min
Lista de materiais: 1 micro:bit, 2 LEDs (vermelho e verde), 1 buzzer, cabo USB, suporte de pilhas, caixa de papelão, fita adesiva, canetinhas para decorar.
30-35 min
Apresentação dos fluxogramas: Cada grupo mostra seu fluxograma e explica a lógica. Vale fazer vozinha de robô.
35-40 min
Feedback da turma: Outros grupos fazem perguntas e sugerem melhorias. "E se o botão B for pressionado? O que acontece?"
40-45 min
Ajustes: Refinar o fluxograma com base no feedback recebido.
45-50 min
Diário do robô: Colar o fluxograma no caderno e descrever o planejamento. Escrever o pseudocódigo.
♿ Orientações para Adaptações e Inclusão
  • TEA: Usar símbolos coloridos para cada parte do fluxograma; modelo pré-formatado
  • TDAH: Fluxograma curto (máximo 5 passos); foco em uma etapa por vez
  • Deficiência visual: Fluxograma em relevo ou em grande escala; descrição verbal
  • Deficiência auditiva: Instruções escritas e apoio visual
  • Altas habilidades: Adicionar um loop ou aninhamento no fluxograma; propor um fluxo com 3 níveis
📊 Critérios Operacionais de Avaliação
Descrição Critério Pontuação
Contém início, ações, decisões e fim com setas Fluxograma completo 0-4
Identificou todos os componentes necessários Lista de materiais 0-3
Explicou a lógica de forma compreensível Clareza da apresentação 0-3
Total 0-10

📌 Título

"Mãos à obra o robô sai do papel e vira realidade"

🎯 Objetivos Operacionais
  • Cognitivos: Conhecer os componentes físicos do projeto (micro:bit, LEDs, buzzer, botões, acelerômetro, matriz de LEDs).
  • Procedimentais: Montar a estrutura básica (placa, bateria, conexões, corpo).
  • Atitudinais: Trabalhar com cuidado e organização, seguindo instruções e ajudando os colegas.
📖 Conteúdo Programático
  • Montagem física do micro:bit com acessórios (bateria, LEDs externos, buzzer).
  • Conexão dos componentes aos pinos do micro:bit.
  • Criação do "corpo" do robô com materiais recicláveis.
  • Teste de funcionamento básico (LEDs acendem, buzzer toca).
📜 Habilidades BNCC e RCP-PR
  • EF04CI01 Identificar misturas na vida diária com base em propriedades físicas observáveis (aplicado às conexões elétricas)
  • Competência Geral 4 Uso de ferramentas digitais e físicas
  • RCP-PR Montagem de sistemas e prototipagem
🧰 Materiais (por grupo)
1 micro:bit Cabo USB Suporte de pilhas + 2 pilhas AA 2 LEDs (1 vermelho, 1 verde) ou mais 2 resistores (220Ω) 1 buzzer (piezo) Jumpers ou clips jacaré Caixa de papelão, garrafa pet ou caixa de sapato Fita adesiva, cola quente, tesoura Canetinhas, papel colorido, olhos móveis
🔧 Explicação Detalhada da Montagem do Hardware

PASSO A PASSO DA MONTAGEM (20-25 minutos):

  1. Conectar o micro:bit ao computador via USB Plugar o cabo USB no micro:bit e no computador. Verificar se a luz amarela/acendeu (sinal de conexão).
  2. Conectar a bateria Encaixar as pilhas no suporte. Conectar o suporte ao micro:bit (no conector de bateria). Testar se o micro:bit liga sem o USB (só com a bateria).
  3. Conectar os LEDs externos
    • LED vermelho (ânodo longo) → pino 0; cátodo → GND (com resistor)
    • LED verde (ânodo longo) → pino 1; cátodo → GND (com resistor)
    • Dica: O resistor vai no cátodo (perna curta) ou no ânodo tanto faz, desde que esteja no caminho da corrente.
    • Dica 2: A perna MAIS COMPRIDA do LED é o ânodo (+). A perna MAIS CURTA é o cátodo (-).
  4. Conectar o buzzer Pino 2 → positivo do buzzer; GND → negativo do buzzer.
  5. Fixar a montagem no corpo do robô Colar o micro:bit no centro da caixa. Colar os LEDs na parte frontal (como olhos). Colar o buzzer em cima (como boca ou antena). Decorar o robô.
  6. Testar com um programa simples Programar um teste rápido para verificar se tudo funciona.
💻 Código a ser desenvolvido (teste de hardware)
// ============================================================
// TESTE DE HARDWARE - SEMANA 33
// Objetivo: Verificar se os LEDs externos (P0 e P1) e o Buzzer 
// externo (P2) estão funcionando corretamente no seu robô.
// ============================================================

// ------------------------------------------------------------
// PASSO 1: Teste do LED vermelho (conectado ao pino 0)
// ------------------------------------------------------------

// 'digitalWritePin' envia tensão digital (0V ou 3.3V) para o pino.
// '1' (HIGH) significa 3.3V -> acende o LED (ânodo no pino).
pins.digitalWritePin(DigitalPin.P0, 1)
// 'basic.pause' trava a execução por X milissegundos (ms).
// 1000 ms = 1 segundo. Precisamos disso para enxergar o LED aceso.
basic.pause(1000)
// '0' (LOW) significa 0V (GND) -> apaga o LED.
pins.digitalWritePin(DigitalPin.P0, 0)
// Pausa de 500 ms (meio segundo) para dar um intervalo entre os testes.
basic.pause(500)

// ------------------------------------------------------------
// PASSO 2: Teste do LED verde (conectado ao pino 1)
// ------------------------------------------------------------

// Mesmo princípio do Passo 1, mas agora no pino 1 (LED verde).
pins.digitalWritePin(DigitalPin.P1, 1)
basic.pause(1000)
pins.digitalWritePin(DigitalPin.P1, 0)
basic.pause(500)

// ------------------------------------------------------------
// PASSO 3: Teste do buzzer (conectado ao pino 2)
// ------------------------------------------------------------

// ATENÇÃO: O buzzer precisa de um sinal PWM (onda quadrada) para vibrar e gerar som.
// O comando 'analogPitch' gera essa onda na frequência que escolhermos.

// Primeiro, devemos dizer ao micro:bit qual pino será usado para o áudio.
// Isso redireciona o sinal de áudio para o pino 2 (buzzer externo).
pins.analogSetPitchPin(AnalogPin.P2)

// 'analogPitch(frequência, duração)' - Frequência em Hertz (Hz).
// 440 Hz é a nota musical Lá (A4). Duração de 200 ms (bip curto).
pins.analogPitch(440, 200)
basic.pause(300) // Pequeno silêncio entre os bipes.

// 523 Hz é a nota Dó (C5). Duração de 400 ms (bip mais longo).
// Isso prova que o buzzer responde a tons diferentes.
pins.analogPitch(523, 400)

// ------------------------------------------------------------
// PASSO 4: Teste combinado (LEDs + Buzzer ao mesmo tempo)
// ------------------------------------------------------------
// Aqui simulamos um "alerta" visual e sonoro sincronizado.

// --- LED Vermelho + Som ---
pins.digitalWritePin(DigitalPin.P0, 1)  // Acende o vermelho
pins.analogPitch(440, 300)              // Toca Lá por 300ms
basic.pause(500)                        // Dá tempo de ver o LED aceso após o som
pins.digitalWritePin(DigitalPin.P0, 0)  // Apaga o vermelho

// --- LED Verde + Som ---
pins.digitalWritePin(DigitalPin.P1, 1)  // Acende o verde
pins.analogPitch(523, 300)              // Toca Dó por 300ms
basic.pause(500)
pins.digitalWritePin(DigitalPin.P1, 0)  // Apaga o verde

// ------------------------------------------------------------
// PASSO 5: Teste da matriz de LEDs (tela 5x5 interna do micro:bit)
// ------------------------------------------------------------

// O micro:bit possui 25 LEDs internos que formam uma tela.
// 'showIcon' exibe um ícone pré-definido. 'IconNames.Heart' é o coração.
basic.showIcon(IconNames.Heart)
basic.pause(2000) // Mantém o coração na tela por 2 segundos.

// 'clearScreen' apaga TODOS os 25 LEDs da matriz interna.
// Importante para não ficar gastando bateria com a tela acesa.
basic.clearScreen()

// ============================================================
// FIM DO TESTE DE HARDWARE
// ============================================================
// Se o LED vermelho piscou, o verde piscou, o buzzer tocou dois
// tons diferentes e o coração apareceu na tela... PARABÉNS! 🎉
// Seu robô está VIVO e pronto para a programação avançada!
// ============================================================
⏱️ Detalhamento Minuto a Minuto
0-5 min
Apresentação dos componentes: Mostrar LEDs, buzzer, resistores, cabos, micro:bit. "Isso aqui é o cérebro, isso aqui são os olhos, isso aqui é a boca."
5-15 min
Montagem guiada: Orientar a conexão dos componentes ao micro:bit. Passo a passo, com verificação.
15-25 min
Teste de hardware: Programar o teste de LEDs e buzzer. Transferir para o micro:bit e verificar. Se não funcionar, DEPURAR!
25-30 min
Fixação no corpo: Colar o micro:bit e os componentes em uma caixa de papelão. Dica: use fita adesiva, não cola quente sem supervisão.
30-35 min
Desafio da criatividade: Decorar o robô (olhos, antenas, boca, braços) com sucata. O robô precisa ter NOME e PERSONALIDADE.
35-40 min
Teste de mobilidade: Conectar a bateria e testar o robô fora do computador. Ver se os LEDs acendem e o buzzer toca só com a bateria.
40-45 min
Diagnóstico: "O que não funcionou? Por quê?" discussão em grupo.
45-50 min
Diário do robô: Registrar a montagem, os componentes usados e o nome do robô. Tirar FOTO!
♿ Orientações para Adaptações e Inclusão
  • TEA: Montagem passo a passo com imagens; checklist visual
  • TDAH: Dividir a montagem em etapas com recompensas (adesivos a cada etapa)
  • Deficiência visual: Componentes com identificação tátil (adesivos em relevo)
  • Deficiência física: Facilitar a conexão com pinos mais grossos ou usar adaptadores; apoio de colegas
  • Altas habilidades: Adicionar um motor ou servo (se disponível) para movimento; criar um robô com "braço"
📊 Critérios Operacionais de Avaliação
Descrição Critério Pontuação
LEDs e buzzer conectados corretamente (não queimou nada!) Montagem correta 0-4
LEDs acenderam e buzzer tocou conforme o esperado Teste funcionou 0-3
Capricho na decoração e personalidade do robô Criatividade no corpo 0-3
Total 0-10

📌 Título

"O esqueleto do robô código básico antes dos músculos"

🎯 Objetivos Operacionais
  • Cognitivos: Estruturar o código principal do projeto (variáveis, eventos iniciais).
  • Procedimentais: Criar a base do programa com as ações fundamentais.
  • Atitudinais: Entender que um bom programa começa pela estrutura básica é como construir uma casa: primeiro o alicerce.
📖 Conteúdo Programático
  • Estrutura de um programa completo: variáveis globais, loop principal, eventos.
  • Mapear as ações principais do robô (ex: ler sensor, acender LED, tocar som, mostrar mensagem).
  • Criar um esboço do código no MakeCode.
📜 Habilidades BNCC e RCP-PR
  • EF04MA01 Variáveis e contadores; ler, escrever e ordenar números
  • EF04MA21 Algoritmos e regularidades
  • Competência Geral 5 Pensamento computacional; programação sistemática
  • RCP-PR Programação sistemática e organização de código
🧰 Materiais
Computador com MakeCode Projetor Fluxograma da semana anterior Caderno para anotações
🔧 Explicação Detalhada da Montagem do Hardware

O hardware já está montado da semana anterior. Agora vamos programá-lo. Verificar:

  • Cabo USB conectado
  • Bateria conectada (para testes sem fio depois)
  • LEDs nos pinos 0 e 1
  • Buzzer no pino 2
💻 Código a ser desenvolvido Esqueleto Genérico
// ============================================
// PROJETO AUTORAL 4º ANO SEMANA 34
// ESQUELETO DO CÓDIGO ALICERCE DO ROBÔ
// ============================================
// Este código é projetado para ser executado no micro:bit
// através do editor MakeCode (JavaScript / TypeScript).
// Ele serve como base para um projeto didático de robótica.
// ============================================

// ------------------------------------------------------------
// PARTE 1: VARIÁVEIS GLOBAIS
// ------------------------------------------------------------
// Todas as variáveis são definidas aqui para serem acessíveis
// em todo o programa (loop principal e eventos).
// ------------------------------------------------------------

let estado = 0
// estado = 0: "modo espera" (tudo tranquilo, LED verde aceso)
// estado = 1: "modo ativo" (robô executando uma ação personalizada)
// estado = 2: "modo alerta" (robô emite aviso sonoro e visual)

let contador = 0
// contador guarda quantas vezes o robô entrou no "modo ativo"
// (ou qualquer outra contagem que o grupo desejar).

// ------------------------------------------------------------
// PARTE 2: LOOP PRINCIPAL (FOREVER)
// ------------------------------------------------------------
// O bloco 'basic.forever' executa o código repetidamente enquanto
// o micro:bit estiver ligado. É o coração do programa.
// ------------------------------------------------------------

basic.forever(function () {
    // --------------------------------------------------------
    // PASSO 1: LER OS SENSORES
    // --------------------------------------------------------
    // Neste projeto didático, usamos os botões A e B como
    // sensores de entrada (substitutos de sensores reais,
    // como de toque ou proximidade, para simular a lógica).
    // --------------------------------------------------------
    let sensor1 = input.buttonIsPressed(Button.A)
    // sensor1 armazena 'true' (verdadeiro) se o botão A
    // estiver pressionado no momento, ou 'false' (falso)
    // caso contrário.

    let sensor2 = input.buttonIsPressed(Button.B)
    // sensor2 armazena 'true' se o botão B estiver pressionado,
    // e 'false' caso contrário.

    // --------------------------------------------------------
    // PASSO 2: LÓGICA PRINCIPAL DO PROJETO (MÁQUINA DE ESTADOS)
    // --------------------------------------------------------
    // O robô funciona com base em três estados, formando uma
    // máquina de estados simples. A transição entre estados
    // acontece de acordo com as condições definidas abaixo.
    // --------------------------------------------------------

    if (estado == 0) {
        // -- MODO ESPERA --
        // Neste modo, o robô está em repouso, aguardando um
        // comando (pressionar o botão A) para iniciar a ação.
        // O LED vermelho (pino 0) fica apagado e o LED verde
        // (pino 1) fica aceso, indicando "pronto para ação".
        // ----------------------------------------------------
        pins.digitalWritePin(DigitalPin.P0, 0)
        // Apaga o LED vermelho conectado ao pino 0.
        pins.digitalWritePin(DigitalPin.P1, 1)
        // Acende o LED verde conectado ao pino 1.

        if (sensor1 == true) {
            // Se o botão A for pressionado, o robô sai do
            // modo espera e entra no modo ativo.
            estado = 1
            // Incrementa o contador para registrar quantas
            // vezes a ação foi acionada.
            contador = contador + 1
        }
    } else if (estado == 1) {
        // -- MODO ATIVO --
        // Neste modo, o robô executa a ação principal do
        // projeto. A ação atual é um exemplo: piscar o LED
        // vermelho 3 vezes. Cada grupo deve personalizar
        // esta seção com sua própria lógica criativa!
        // ----------------------------------------------------
        for (let i = 0; i < 3; i++) {
            // O laço 'for' repete o bloco interno 3 vezes.
            pins.digitalWritePin(DigitalPin.P0, 1)
            // Acende o LED vermelho.
            basic.pause(200)
            // Aguarda 200 milissegundos (0,2 segundos).
            pins.digitalWritePin(DigitalPin.P0, 0)
            // Apaga o LED vermelho.
            basic.pause(200)
            // Aguarda mais 200 milissegundos.
        }
        // Após executar a ação, o robô avança para o estado
        // de alerta para sinalizar a conclusão.
        estado = 2
    } else if (estado == 2) {
        // -- MODO ALERTA --
        // Neste modo, o robô avisa que a ação foi concluída.
        // Ele acende o LED vermelho, apaga o verde, emite um
        // som e mostra uma mensagem no display.
        // ----------------------------------------------------
        pins.digitalWritePin(DigitalPin.P0, 1)
        // Acende o LED vermelho (sinal de alerta).
        pins.digitalWritePin(DigitalPin.P1, 0)
        // Apaga o LED verde.

        // Configura o pino 2 para emitir som (tom).
        // O comando abaixo define que o som será gerado no pino 2.
        pins.analogSetPitchPin(AnalogPin.P2)
        // Emite um tom de 440 Hz (nota Lá) por 200 milissegundos
        // no pino 2, que geralmente é conectado a um buzzer ou alto-falante.
        pins.analogPitch(440, 200)

        basic.pause(200)
        // Pequena pausa para separar o som da mensagem visual.

        basic.showString("OK!")
        // Exibe a mensagem "OK!" no display de LEDs do micro:bit,
        // confirmando que a ação foi finalizada com sucesso.

        // Após o alerta, o robô retorna ao modo espera,
        // ficando novamente disponível para um novo acionamento.
        estado = 0
    }

    // --------------------------------------------------------
    // PASSO 3: PAUSA PARA ESTABILIDADE
    // --------------------------------------------------------
    // Uma pequena pausa no final do loop evita que o programa
    // consuma toda a capacidade de processamento e garante
    // que as leituras dos sensores sejam estáveis.
    // --------------------------------------------------------
    basic.pause(100)
    // Aguarda 100 milissegundos (0,1 segundo) antes de repetir.
})

// ------------------------------------------------------------
// PARTE 3: EVENTOS DOS BOTÕES (CONCORRENTES)
// ------------------------------------------------------------
// Além do loop principal, o micro:bit permite responder a
// eventos específicos, como o pressionamento de botões.
// Estes eventos ocorrem de forma "concorrente" (paralela)
// ao loop principal, ou seja, podem ser acionados a qualquer
// momento, independentemente do estado atual do robô.
// ------------------------------------------------------------

// Evento: Botão A pressionado
// ---------------------------------
// Quando o botão A é pressionado, o contador é zerado e
// o display mostra o número 0, permitindo reiniciar a
// contagem de acionamentos.
input.onButtonPressed(Button.A, function () {
    contador = 0
    // Zera o contador global.
    basic.showNumber(0)
    // Exibe o número 0 no display para confirmar o reset.
})

// Evento: Botão B pressionado
// ---------------------------------
// Quando o botão B é pressionado, o valor atual do contador
// é exibido no display. Isso permite ao usuário verificar
// quantas vezes o robô foi acionado (entrou no modo ativo).
input.onButtonPressed(Button.B, function () {
    basic.showNumber(contador)
    // Exibe o valor atual da variável 'contador' no display.
})

// ============================================
// FIM DO ESQUELETO
// Agora cada grupo vai personalizar com sua lógica específica!
// ============================================
// INSTRUÇÕES PARA PERSONALIZAÇÃO:
// 1. A parte mais importante para modificar é a seção 
//    "MODO ATIVO" dentro do 'basic.forever'.
// 2. Os alunos podem substituir o laço 'for' por:
//    - Movimentos do servo motor (servo write)
//    - Emissão de sons diferentes (music.playTone)
//    - Exibição de animações no display (basic.showAnimation)
//    - Leituras de sensores externos (analog read)
//    - Qualquer outra ação criativa com os atuadores.
// 3. Lembre-se de ajustar os comentários para refletir
//    as mudanças feitas pelo grupo.
// 4. Divirtam-se explorando a robótica com o micro:bit!
// ============================================
⏱️ Detalhamento Minuto a Minuto
0-5 min
Revisão do fluxograma: "Vamos transformar o fluxograma em código. Preparem os olhos!"
5-10 min
Explicação da estrutura: Mostrar variáveis, loop e eventos. Comparar com o fluxograma.
10-20 min
Programação guiada: Construir o esqueleto JUNTOS no MakeCode. Cada grupo digita junto.
20-25 min
Primeiro teste: Transferir para o micro:bit e ver as partes básicas funcionando (LEDs).
25-30 min
Adição da lógica principal: Cada grupo insere sua lógica específica no lugar do "MODO ATIVO".
30-35 min
Teste parcial: Ver se a lógica básica funciona. O que acontece quando aperta o botão A?
35-40 min
Depuração inicial: Corrigir erros simples (sinais invertidos, pausas erradas, etc.).
40-45 min
Troca de ideias: Grupos mostram o que já têm e recebem sugestões.
45-50 min
Diário do robô: Registrar o esqueleto do código e os testes. Colar print do código no caderno.
♿ Orientações para Adaptações e Inclusão
  • TEA: Código com comentários coloridos; modelo pré-formatado para preencher
  • TDAH: Foco em uma parte do código por vez; usar timer
  • Deficiência visual: Descrição verbal do código; leitor de tela; código em braille (se possível)
  • Deficiência auditiva: Instruções escritas; apoio visual no projetor
  • Altas habilidades: Já adicionar aninhamento no esqueleto; criar uma terceira condição
📊 Critérios Operacionais de Avaliação
Descrição Critério Pontuação
Variáveis, loop e eventos definidos corretamente Esqueleto do código 0-4
Funcionamento parcial da ação do robô Lógica principal 0-3
Identificou e corrigiu erros básicos Teste e depuração 0-3
Total 0-10

📌 Título

"O cérebro do robô aninhando decisões e eventos concorrentes"

🎯 Objetivos Operacionais
  • Cognitivos: Integrar aninhamento (SE dentro de REPITA) e concorrência no projeto.
  • Procedimentais: Refinar o código com estruturas avançadas.
  • Atitudinais: Perceber a importância da organização do código código bagunçado = robô confuso.
📖 Conteúdo Programático
  • Revisão de aninhamento (estruturas dentro de estruturas) e concorrência (eventos simultâneos).
  • Aplicação no projeto: loop principal com SE aninhados + eventos de botão que alteram o estado.
  • Organização do código para facilitar leitura e depuração.
📜 Habilidades BNCC e RCP-PR
  • EF04MA21 Algoritmos complexos e padrões
  • Competência Geral 5 Pensamento computacional avançado
  • RCP-PR Integração de estruturas e organização de código
🧰 Materiais
Computador com MakeCode Projetor Código da semana anterior Caderno para anotações
🔧 Explicação Detalhada da Montagem do Hardware

Hardware já montado. Foco NO CÓDIGO. Verificar apenas se os componentes ainda estão conectados e funcionando.

💻 Código a ser desenvolvido com aninhamento e concorrência
// ============================================================
// PROJETO AUTORAL – 4º ANO – SEMANA 35
// ANINHAMENTO E CONCORRÊNCIA – O CÉREBRO DO ROBÔ
// ============================================================
// Este programa simula um robô vigilante que monitora uma "lixeira"
// (representada pelo botão A). Ele reage a problemas, alterna entre
// modos de operação e exibe estatísticas – tudo com eventos paralelos.
// ============================================================

// ------------------- VARIÁVEIS GLOBAIS -----------------------
// (acessíveis em todo o programa, inclusive nos eventos)

/** @type {boolean} - true = "lixeira cheia" (alerta), false = "normal" */
let cheia = false;

/** @type {number} - 0 = modo normal (vigilante), 1 = modo pausa (cochilo) */
let modo = 0;

/** @type {number} - contador de quantas vezes o robô entrou em alerta */
let alertas = 0;

// ============================================================
// LOOP PRINCIPAL – Roda para sempre, como o "coração" do robô
// ============================================================
basic.forever(function () {
    // ---------- NÍVEL 1: Verifica o MODO de operação ----------
    if (modo == 0) {
        // ===== MODO NORMAL =====
        // Robô trabalhando: monitora o sensor (botão A) e reage.

        // ---------- NÍVEL 2: Leitura do SENSOR (botão A) ----------
        // ANINHAMENTO: primeiro "se" dentro do modo normal.
        if (input.buttonIsPressed(Button.A)) {
            // Se o botão A estiver pressionado, a lixeira está cheia.
            cheia = true;
        } else {
            // Caso contrário, está vazia (normal).
            cheia = false;
        }

        // ---------- NÍVEL 2: Verifica o ESTADO da lixeira ----------
        // ANINHAMENTO: segundo "se" dentro do mesmo nível.
        if (cheia == true) {
            // ===== PROBLEMA DETECTADO! =====
            // Ações de alerta – aninhamento ainda mais profundo.

            // ---------- NÍVEL 3: Sinalização imediata ----------
            // LED vermelho (pino 0) acende, LED verde (pino 1) apaga.
            pins.digitalWritePin(DigitalPin.P0, 1);
            pins.digitalWritePin(DigitalPin.P1, 0);

            // ---------- NÍVEL 3: LOOP de alerta (aninhado!) ----------
            // Repetimos 5 vezes um padrão de pisca-pisca + som.
            // Este é um exemplo de aninhamento de um loop dentro de um "se".
            for (let i = 0; i < 5; i++) {
                // Pisca o LED vermelho (pino 0)
                pins.digitalWritePin(DigitalPin.P0, 1);
                basic.pause(150);
                pins.digitalWritePin(DigitalPin.P0, 0);
                basic.pause(150);
                // Emite um som agudo (frequência 440 Hz) no pino 2 por 100 ms
                pins.analogSetPitchPin(AnalogPin.P2);   // define o pino P2 para gerar os tons
                pins.analogPitch(440, 100);             // toca o som (sem o terceiro argumento)
                basic.pause(100);
            }

            // Exibe mensagem de "CHEIO!" na matriz de LEDs
            basic.showString("CHEIO!");
            basic.pause(1000);
            basic.clearScreen();

            // Incrementa o contador de alertas e reseta o estado da lixeira
            alertas = alertas + 1;
            cheia = false;   // após o alerta, volta ao normal

        } else {
            // ===== TUDO NORMAL =====
            // Sem problemas: LED vermelho apagado, verde aceso.
            pins.digitalWritePin(DigitalPin.P0, 0);
            pins.digitalWritePin(DigitalPin.P1, 1);
            // Mostra um ícone feliz na tela
            basic.showIcon(IconNames.Happy);
            basic.pause(500);
            basic.clearScreen();
        }

    } else {
        // ===== MODO PAUSA =====
        // Robô "desligado": apenas exibe um "Z z Z" e mantém os LEDs apagados.
        pins.digitalWritePin(DigitalPin.P0, 0);
        pins.digitalWritePin(DigitalPin.P1, 0);
        basic.showString("Z z Z");
        basic.pause(1000);
        basic.clearScreen();
    }

    // Pequena pausa no final de cada iteração para evitar processamento excessivo
    basic.pause(100);
});

// ============================================================
// EVENTOS CONCORRENTES – Rodam paralelamente ao loop principal
// ============================================================
// Eles podem disparar a qualquer momento, demonstrando o conceito
// de concorrência (multitarefa) no micro:bit.

// ---------- EVENTO 1: Botão B alterna o modo (normal ↔ pausa) ----------
input.onButtonPressed(Button.B, function () {
    if (modo == 0) {
        modo = 1;                         // muda para pausa
        basic.showString("P");            // "P" de Pausa
    } else {
        modo = 0;                         // volta ao normal
        basic.showString("N");            // "N" de Normal
    }
    basic.pause(500);
    basic.clearScreen();
});

// ---------- EVENTO 2: Botões A+B juntos (combinação secreta!) ----------
// Mostra as estatísticas (número de alertas) e toca um bipe duplo.
input.onButtonPressed(Button.AB, function () {
    // Exibe o valor atual do contador de alertas
    basic.showNumber(alertas);
    basic.pause(2000);
    basic.clearScreen();
    // Toca dois sons curtos no pino 2 para chamar a atenção
    pins.analogSetPitchPin(AnalogPin.P2);   // define o pino P2 para gerar os tons
    pins.analogPitch(440, 100);             // toca o som (sem o terceiro argumento)
    basic.pause(100);
    pins.analogSetPitchPin(AnalogPin.P2);   // define o pino P2 para gerar os tons
    pins.analogPitch(440, 100);             // toca o som (sem o terceiro argumento)
});

// ============================================================
// FIM – Seu robô agora é MULTITAREFA! 🧠
// ============================================================
// Este código demonstra:
//   - Aninhamento: "se" dentro de "se", loop dentro de "se".
//   - Concorrência: loop principal + eventos de botão rodando em paralelo.
//   - Didática: variáveis com nomes claros, comentários extensos.
// ============================================================
⏱️ Detalhamento Minuto a Minuto
0-5 min
Revisão: "Vamos turbinar o código com ANINHAMENTO e CONCORRÊNCIA. Seu robô vai virar um gênio!"
5-10 min
Explicação: Mostrar como colocar SE dentro do loop e como adicionar eventos de botão que mudam variáveis. Comparar com o fluxograma.
10-20 min
Programação guiada: Construir o código com aninhamento JUNTOS. Cada grupo acompanha.
20-25 min
Adição de evento concorrente: Adicionar botão B para pausar/resetar. Testar.
25-30 min
Teste: Verificar se o aninhamento funciona e se o botão interrompe corretamente.
30-35 min
Desafio do loop interno: Adicionar um loop de 5 repetições dentro do SE (como no exemplo).
35-40 min
Desafio do sensor duplo: Usar botão A e B como dois sensores diferentes (cada um com uma ação).
40-45 min
Depuração em grupo: Ajudar quem está com dificuldade. Rodízio de "consultores".
45-50 min
Diário do robô: Registrar as estruturas usadas e por quê. Escrever uma "lição aprendida".
♿ Orientações para Adaptações e Inclusão
  • TEA: Usar blocos coloridos para cada nível de aninhamento; modelo visual
  • TDAH: Foco em uma estrutura de cada vez; recompensas a cada etapa
  • Deficiência visual: Descrever a estrutura do código verbalmente; leitor de tela
  • Deficiência auditiva: Instruções escritas; diagrama do fluxo do código
  • Altas habilidades: Adicionar um terceiro nível de aninhamento; criar um "modo secreto"
📊 Critérios Operacionais de Avaliação
Descrição Critério Pontuação
SE dentro de loop e dentro de SE funcionou Aninhamento correto 0-4
Botão alterou o estado corretamente Evento concorrente 0-3
Comentários e indentação (capricho) Código organizado 0-3
Total 0-10

📌 Título

"Bugs reais testando o robô no mundo real (e não quebrando tudo)"

🎯 Objetivos Operacionais
  • Cognitivos: Identificar bugs que só aparecem em testes práticos.
  • Procedimentais: Testar o robô em condições reais e corrigir problemas.
  • Atitudinais: Desenvolver resiliência e método de depuração errar é parte do processo!
📖 Conteúdo Programático
  • Testes em condições reais (ex: colocar o robô perto da lixeira, testar com barulho ambiente, testar com luz diferente).
  • Identificação de bugs: sensor não lê direito, tempo de resposta, conflitos entre eventos.
  • Correção e iteração o ciclo da engenharia.
📜 Habilidades BNCC e RCP-PR
  • EF04MA26 Identificar eventos aleatórios e sua chance de ocorrência
  • EF04LP11 Documentar testes e correções
  • Competência Geral 5 Depuração e resolução de problemas
  • RCP-PR Teste de sistemas e iteração
🧰 Materiais
Computador com MakeCode Robô montado (com bateria) Cenário real (lixeira, porta, corredor) Caderno para anotações de bugs
🔧 Explicação Detalhada da Montagem do Hardware

Nada novo. Apenas testar o robô no local real. Verificar:

  • Bateria carregada?
  • Conexões firmes?
  • LEDs e buzzer funcionando?
💻 Código a ser desenvolvido ajustes comuns após testes reais
/**
 * ============================================================
 * PROJETO DIDÁTICO – ALARME DE TANQUE CHEIO (com BUG e CORREÇÃO)
 * ============================================================
 * 
 * OBJETIVO: Mostrar na prática o que é o efeito "debounce" 
 *           (leitura falsa de botões) e como corrigi-lo.
 * 
 * CONTROLES:
 *   - Botão A: Ativa o alarme (tanque cheio)
 *   - Botão B: Desativa o alarme (tanque vazio)
 * ============================================================
 */

// ============================================================
// 1. CONFIGURAÇÕES (CONSTANTES)
// ============================================================

// Define o tempo de espera (em milissegundos) para filtrar o 
// ruído elétrico do botão. 50ms é suficiente para estabilizar.
const TEMPO_DEBOUNCE = 50;

// Define o intervalo (em ms) entre cada repetição do som do alarme.
// Antes era 100, ajustamos para 200 para ficar mais estável.
const TEMPO_PAUSA_ALERTA = 200;

// Número de vezes que o alarme vai tocar. Antes era 5, 
// reduzimos para 3 para não cansar o ouvido.
const NUM_REPETICOES = 3;

// Frequência do som em Hertz (Hz). 523 Hz é a nota Dó agudo.
// Antes usávamos 440 Hz (Dó médio), alteramos para ficar mais 
// perceptível em ambientes ruidosos.
const FREQUENCIA_SOM = 523;

// Duração de cada "bip" do alarme em milissegundos.
const DURACAO_SOM = 200;

// ============================================================
// 2. VARIÁVEL GLOBAL
// ============================================================

// Variável do tipo booleano (verdadeiro/falso) que guarda o 
// estado do tanque. Começa como 'false' (vazio).
let cheia: boolean = false;

// ============================================================
// 3. FUNÇÃO PARA DESENHAR O ÍCONE "X" (TANQUE CHEIO)
// ============================================================

// Cria uma função personalizada para mostrar um "X" na matriz.
function desenharX() {
    // Comando 'basic.showLeds' desenha uma imagem pixel a pixel.
    // Cada string representa uma linha da matriz 5x5.
    // "#" = LED aceso, "." = LED apagado.
    basic.showLeds(`
        # . . . #   
        . # . # .   
        . . # . .   
        . # . # .   
        # . . . #   
    `);
}

// ============================================================
// 4. FUNÇÃO PARA ATUALIZAR O DISPLAY
// ============================================================

function mostrarEstado() {
    // Estrutura condicional 'se...senão'.
    if (cheia) { // Se a variável 'cheia' for VERDADEIRA:
        // Chama a função que desenha o X na matriz.
        desenharX();
    } else { // Senão (se for FALSA):
        // Usa o ícone padrão "Yes" (um "check" / "visto") 
        // para representar que o tanque está vazio.
        basic.showIcon(IconNames.Yes);
    }
}

// ============================================================
// 5. FUNÇÃO DO ALARME (SOM + REPETIÇÃO)
// ============================================================

function dispararAlarme() {
    // Estrutura de repetição 'for'. 
    // 'let i = 0' começa do zero; enquanto 'i < 3', repete; 
    // 'i++' aumenta 1 a cada volta.
    for (let i = 0; i < NUM_REPETICOES; i++) {
        // Toca um tom no alto-falante (pino 0) com a frequência 
        // e duração definidas nas constantes.
        music.playTone(FREQUENCIA_SOM, DURACAO_SOM);

        // Pausa a execução por X milissegundos para dar um 
        // espaçamento entre os bips.
        basic.pause(TEMPO_PAUSA_ALERTA);
    }
    // Após tocar todos os bips, reforça o aviso visual 
    // desenhando novamente o X.
    desenharX();
}

// ============================================================
// 6. LOOP PRINCIPAL (executado para sempre)
// ============================================================

// 'basic.forever' é o loop infinito do micro:bit. 
// O código dentro dele roda repetidamente enquanto o aparelho 
// estiver ligado.
basic.forever(function () {

    // --------------------------------------------------------
    // BLOCO DO BOTÃO A (COM A CORREÇÃO DO DEBOUNCE)
    // --------------------------------------------------------

    // =========================================================
    // ⚠️ ATENÇÃO: AQUI ESTÁ A DEMONSTRAÇÃO DO BUG!
    // =========================================================
    // Se você descomentar o trecho abaixo e comentar o trecho 
    // com debounce, verá o problema:
    /*
    if (input.buttonIsPressed(Button.A)) {
        cheia = true;
        dispararAlarme();
    }
    */
    // O código acima é o BUG: ele NÃO tem debounce. 
    // Como o micro:bit é muito rápido, ele lê o botão várias 
    // vezes em um único toque, disparando o alarme múltiplas 
    // vezes sem parar.

    // =========================================================
    // ✅ CÓDIGO CORRETO (COM DEBOUNCE)
    // =========================================================

    // 'input.buttonIsPressed' verifica se o botão A está 
    // pressionado fisicamente naquele exato instante.
    if (input.buttonIsPressed(Button.A)) {

        // PRIMEIRA ETAPA DO DEBOUNCE: 
        // Pausa o programa por 50ms para dar tempo do contato 
        // elétrico do botão se estabilizar (ignorar ruídos).
        basic.pause(TEMPO_DEBOUNCE);

        // SEGUNDA ETAPA DO DEBOUNCE:
        // Verifica NOVAMENTE se o botão A ainda está pressionado.
        // Se estiver, é porque é um clique verdadeiro (e não um 
        // ruído elétrico).
        if (input.buttonIsPressed(Button.A)) {

            // Altera o estado da variável para VERDADEIRO.
            cheia = true;

            // Chama a função que toca o alarme.
            dispararAlarme();

            // Obs.: O display já é atualizado pela função 
            // 'dispararAlarme' e pelo 'mostrarEstado' no final.
        }
    }

    // --------------------------------------------------------
    // BLOCO DO BOTÃO B (TAMBÉM COM DEBOUNCE)
    // --------------------------------------------------------

    // Verifica se o botão B está pressionado.
    if (input.buttonIsPressed(Button.B)) {

        // Pausa para estabilizar (debounce).
        basic.pause(TEMPO_DEBOUNCE);

        // Verifica novamente para confirmar o clique.
        if (input.buttonIsPressed(Button.B)) {

            // Altera o estado da variável para FALSO (tanque vazio).
            cheia = false;

            // Atualiza a matriz de LEDs para mostrar o ícone de "vazio".
            mostrarEstado();
        }
    }

    // --------------------------------------------------------
    // PAUSA PARA ESTABILIDADE DO LOOP E ATUALIZAÇÃO DO DISPLAY
    // --------------------------------------------------------

    // Dá uma pequena pausa de 200ms no final do loop.
    // Isso evita que o programa consuma toda a CPU do micro:bit 
    // e estabiliza a exibição. Antes era 100ms, mas aumentamos 
    // para 200ms após testes reais.
    basic.pause(200);

    // Chama a função que verifica o estado e desenha o ícone 
    // correto (X ou check) na matriz. Isso garante que, se 
    // nenhum botão for pressionado, o display continue mostrando 
    // o estado atual sem piscar.
    mostrarEstado();
});

// ============================================================
// 7. COMO TESTAR O BUG (PARA ESTUDO)
// ============================================================
// 
// PASSO 1: No código acima, localize o bloco do Botão A.
// PASSO 2: Comente as linhas com 'basic.pause' e o segundo 'if' 
//          (as linhas do debounce).
// PASSO 3: Descomente o trecho do BUG (que está dentro do bloco 
//          de comentário /* */).
// PASSO 4: Carregue o código no micro:bit.
// PASSO 5: Pressione o botão A UMA ÚNICA VEZ.
//          Você verá que o alarme toca várias vezes seguidas ou 
//          o display fica piscando. ISSO É O BUG!
// PASSO 6: Reverta as alterações (reative o debounce e comente 
//          o bug) para ver o funcionamento perfeito: um clique 
//          = UM alarme.
// ============================================================
⏱️ Detalhamento Minuto a Minuto
0-5 min
Preparação: "Vamos testar o robô no MUNDO REAL. Anotem TUDO que der errado. Até o que parecer bobagem."
5-10 min
Teste 1: Colocar o robô em situação real (ex: perto da lixeira, na porta) e observar.
10-15 min
Anotação de bugs: Cada grupo lista os problemas observados. "O que não funcionou como esperado?"
15-25 min
Correção no código: Voltar ao computador e ajustar o código. Fazer UMA correção por vez.
25-30 min
Teste 2: Testar novamente após as correções. Funcionou?
30-35 min
Discussão: "O que melhorou? O que ainda não funciona?" discussão em grupo.
35-40 min
Refinamento: Fazer novos ajustes com base no feedback.
40-45 min
Teste final: Ver se o robô está estável. Testar 3 vezes seguidas.
45-50 min
Diário do robô: Registrar os bugs encontrados e como foram corrigidos. FOTO do robô em ação!
♿ Orientações para Adaptações e Inclusão
  • TEA: Checklist de teste com itens visuais; apoio de um colega
  • TDAH: Testes curtos (5 minutos cada); timer visível
  • Deficiência visual: Feedback sonoro para identificar bugs; descrever o que acontece
  • Deficiência física: Adaptar o local do teste; apoio para manusear o robô
  • Altas habilidades: Testar em MÚLTIPLOS cenários diferentes; criar um "relatório de bugs"
📊 Critérios Operacionais de Avaliação
Descrição Critério Pontuação
Listou problemas reais com clareza Identificação de bugs 0-4
Os ajustes resolveram os bugs Correção eficaz 0-3
Registrou o processo no diário Documentação dos testes 0-3
Total 0-10

📌 Título

"Robô 2.0 melhorando o que já funciona"

🎯 Objetivos Operacionais
  • Cognitivos: Pensar em melhorias estéticas e funcionais.
  • Procedimentais: Adicionar funcionalidades extras (ex: mostrar mensagem na matriz, tocar melodia, ícones personalizados).
  • Atitudinais: Desenvolver olhar crítico para otimização sempre dá para melhorar!
📖 Conteúdo Programático
  • Revisão do projeto: o que está bom? O que pode melhorar?
  • Adição de "extras" (feedback visual e sonoro mais elaborado).
  • Otimização do código (menos repetição, mais elegância).
📜 Habilidades BNCC e RCP-PR
  • EF04MA03 Resolver e elaborar problemas com números naturais
  • EF04LP11 Atualizar o manual do robô
  • Competência Geral 4 Comunicação digital
  • RCP-PR Refinamento de projeto e inovação
🧰 Materiais
Computador com MakeCode Robô montado Materiais de decoração extra Caderno para anotações
🔧 Explicação Detalhada da Montagem do Hardware

Pode-se adicionar novos LEDs ou sensores, se disponíveis. Mas o foco é no código e na criatividade.

💻 Código a ser desenvolvido Robô 2.0 com melhorias
// ============================================
// ROBÔ 2.0 SEMANA 37 MELHORIAS
// ============================================

// MELHORIA 1: Mostrar TEXTO na matriz de LEDs
// Em vez de só piscar, o robô ESCREVE na tela!
se (cheia == verdadeiro) então
    mostrar string "CHEIO"
    pausar 1000 ms
    limpar tela
fim se

// MELHORIA 2: Tocar uma MELODIA (em vez de só bip)
function tocarAlerta()
    // Notas: Dó (262), Ré (294), Mi (330), Fá (349), Sol (392), Lá (440), Si (494), Dó (523)
    tocar som por 200 ms no pino 2 com frequência 523   // Dó
    pausar 150 ms
    tocar som por 200 ms no pino 2 com frequência 523   // Dó (de novo)
    pausar 150 ms
    tocar som por 300 ms no pino 2 com frequência 523   // Dó (mais longo)
    pausar 200 ms
    tocar som por 200 ms no pino 2 com frequência 392   // Sol
    pausar 150 ms
    tocar som por 300 ms no pino 2 com frequência 523   // Dó (final)
end function

se (cheia == verdadeiro) então
    tocarAlerta()
fim se

// MELHORIA 3: ÍCONES PERSONALIZADOS na matriz
mostrar ícone feliz      // "tudo bem"
mostrar ícone triste     // "alerta"
// Ícone personalizado (X vermelho)
mostrar LEDs
    . . .
    . . .
    . . . .
    . . .
    . . .
end mostrar LEDs

// MELHORIA 4: Animação na matriz (quadrado piscando)
repetir 3 vezes
    mostrar LEDs
        . . .
        . . .
        . . .
    end mostrar LEDs
    pausar 200 ms
    limpar tela
    pausar 200 ms
fim repetir

// MELHORIA 5: Contador de alertas com som diferente a cada 10
se (alertas % 10 == 0) e (alertas > 0) então
    // Toca música de "parabéns" (versão resumida)
    tocar som por 200 ms no pino 2 com frequência 523
    pausar 150 ms
    tocar som por 200 ms no pino 2 com frequência 587
    pausar 150 ms
    tocar som por 300 ms no pino 2 com frequência 659
    mostrar string "10!"   // Comemora!
fim se

// ============================================
// FIM ROBÔ 2.0 ATIVADO! 🎉
// ============================================
⏱️ Detalhamento Minuto a Minuto
0-5 min
Brainstorm de melhorias: "O que podemos adicionar para deixar o robô mais legal? Mais esperto? Mais engraçado?"
5-10 min
Planejamento: Escolher 1 ou 2 melhorias viáveis por grupo.
10-20 min
Implementação: Programar as melhorias escolhidas.
20-25 min
Teste: Ver se as melhorias funcionam.
25-30 min
Desafio da matriz: Criar um ícone personalizado para cada estado do robô.
30-35 min
Desafio da melodia: Compor uma melodia curta para o alerta (pode ser a música do Mario!).
35-40 min
Depuração: Ajustar o que não funcionou.
40-45 min
Apresentação das melhorias: Cada grupo mostra o que acrescentou.
45-50 min
Diário do robô: Registrar as melhorias e justificar as escolhas.
♿ Orientações para Adaptações e Inclusão
  • TEA: Oferecer sugestões de melhorias pré-definidas (cardápio de opções)
  • TDAH: Foco em uma melhoria por vez; checklist
  • Deficiência visual: Melhorias sonoras em vez de visuais (melodias mais elaboradas)
  • Deficiência auditiva: Melhorias visuais (piscar LEDs, texto na matriz, animações)
  • Altas habilidades: Adicionar um sensor de luz (se disponível) ou criar um "modo noturno"
📊 Critérios Operacionais de Avaliação
Descrição Critério Pontuação
Acrescentou algo útil e funcional Implementação de melhorias 0-4
Ideias originais e divertidas Criatividade 0-3
As melhorias funcionaram após testes Teste e ajuste 0-3
Total 0-10

📌 Título

"Manual do robô e pôster contando a história do projeto"

🎯 Objetivos Operacionais
  • Cognitivos: Sintetizar todo o aprendizado em um manual e pôster.
  • Procedimentais: Produzir um texto instrucional (manual) e um pôster explicativo.
  • Atitudinais: Organizar as ideias para comunicar claramente o projeto se você não explica, ninguém entende!
📖 Conteúdo Programático
  • Como escrever um manual: título, objetivo, materiais, montagem, código, como usar.
  • Como fazer um pôster: título, imagens, fluxograma, fotos do robô.
  • Roteiro da apresentação: o que dizer, como demonstrar.
📜 Habilidades BNCC e RCP-PR
  • EF04LP11 Produzir manual do robô
  • Competência Geral 4 Comunicação digital e escrita
  • RCP-PR Documentação de projeto e comunicação
🧰 Materiais
Computador (para digitar o manual) Cartolina, canetinhas, fotos Impressora (opcional) Tesoura, cola, régua
🔧 Explicação Detalhada da Montagem do Hardware

Não há montagem nova. Foco na DOCUMENTAÇÃO. O robô deve estar pronto para demonstrar.

💻 Código a ser desenvolvido

Incluir o código final no manual, com comentários explicativos. Cada grupo deve imprimir ou copiar o código final e colar no manual.

Estrutura do manual:

  1. Capa: Nome do robô, nome dos integrantes, turma, data.
  2. Introdução: Qual é o problema que o robô resolve?
  3. Materiais: Lista de tudo que foi usado.
  4. Montagem: Como o robô foi montado (com fotos ou desenhos).
  5. Código: O programa completo (com comentários).
  6. Como usar: Instruções passo a passo para operar o robô.
  7. Conclusão: O que aprendemos com este projeto?
⏱️ Detalhamento Minuto a Minuto
0-5 min
Apresentação do desafio: "Vamos criar o MANUAL do robô e um PÔSTER para a feira! Isso é sério é o registro do seu trabalho!"
5-10 min
Estrutura do manual: Mostrar exemplo: capa, introdução, materiais, montagem, código, como usar, conclusão.
10-20 min
Produção do manual (parte 1): Escrever a introdução e listar materiais.
20-30 min
Produção do manual (parte 2): Descrever a montagem e incluir o código (copiar ou imprimir).
30-35 min
Produção do pôster: Desenhar o fluxograma e colar fotos (se houver). Caprichar na arte!
35-40 min
Revisão: Trocar manuais com outro grupo para revisão. "O que está confuso? O que faltou?"
40-45 min
Ajustes: Corrigir erros de português, clareza e organização.
45-50 min
Diário do robô: Registrar a preparação para a apresentação. O que vai ser dito?
♿ Orientações para Adaptações e Inclusão
  • TEA: Modelo de manual e pôster pré-formatado (só preencher)
  • TDAH: Dividir a produção em etapas curtas com pausas
  • Deficiência visual: Manual em áudio ou braille (se possível); descrição verbal do pôster
  • Deficiência auditiva: Pôster com muitas imagens e palavras-chave; apoio visual
  • Altas habilidades: Criar um VÍDEO curto do robô em ação (com celular)
📊 Critérios Operacionais de Avaliação
Descrição Critério Pontuação
Contém todos os elementos (capa, introdução, materiais, montagem, código, como usar, conclusão) Manual completo 0-4
Boa apresentação visual, informações claras Pôster criativo e claro 0-3
Incorporou feedback da revisão Revisão e ajustes 0-3
Total 0-10

📌 Título

"Ensaiando para a feira apresentando para a turma"

🎯 Objetivos Operacionais
  • Cognitivos: Praticar a apresentação e a demonstração ao vivo.
  • Procedimentais: Simular a feira com a turma como público.
  • Atitudinais: Ganhar confiança e receber feedback construtivo ensaiar é a chave do sucesso!
📖 Conteúdo Programático
  • Roteiro da apresentação: 3-4 minutos por grupo.
  • Demonstração ao vivo do robô funcionando.
  • Perguntas e respostas.
📜 Habilidades BNCC e RCP-PR
  • EF04LP11 Apresentação oral
  • Competência Geral 4 Comunicação
  • RCP-PR Socialização do projeto e feedback
🧰 Materiais
Robô funcionando com bateria Pôster e manual prontos Computador (opcional) Cronômetro
🔧 Explicação Detalhada da Montagem do Hardware

Robô deve estar 100% funcional para a demonstração. Verificar bateria, conexões, código carregado.

💻 Código a ser desenvolvido

Código final, testado e pronto para demo. Nenhuma alteração nova só verificar se está tudo funcionando.

⏱️ Detalhamento Minuto a Minuto
0-5 min
Abertura: "Hoje vamos ENSAIAR para a feira. Apresentem como se fosse para o diretor ou para o presidente da escola!"
5-10 min
Preparação final: Cada grupo organiza seu espaço, testa o robô, arruma o pôster.
10-30 min
Apresentações (parte 1): Metade dos grupos apresenta (3-4 min cada). Público faz perguntas.
30-35 min
Feedback coletivo: Discussão sobre pontos fortes e melhorias. "O que foi legal? O que pode melhorar?"
35-45 min
Apresentações (parte 2): A outra metade apresenta.
45-50 min
Encerramento: "O que aprenderam com o ensaio? O que vão mudar para a feira?"
♿ Orientações para Adaptações e Inclusão
  • TEA: Roteiro escrito para a apresentação; apoio de um colega
  • TDAH: Foco no roteiro e no robô; pausas entre as apresentações
  • Deficiência visual: Apresentação descritiva; permitir tocar o robô
  • Deficiência auditiva: Apoio visual e escrito; intérprete se possível
  • Altas habilidades: Apresentar em inglês (opcional); fazer uma demonstração extra
📊 Critérios Operacionais de Avaliação
Descrição Critério Pontuação
Explicou o projeto de forma compreensível Clareza da apresentação 0-4
Robô executou a tarefa corretamente Demonstração funcionando 0-3
Falou com segurança e entusiasmo Postura e confiança 0-3
Total 0-10

📌 Título

"A Grande Feira de Robótica o dia em que o 4º ano mostrou a que veio"

🎯 Objetivos Operacionais
  • Cognitivos: Consolidar todo o aprendizado do ano.
  • Procedimentais: Apresentar os projetos para a comunidade escolar (outras turmas, pais, professores).
  • Atitudinais: Celebrar as conquistas e reconhecer o esforço coletivo vocês são incríveis!
📖 Conteúdo Programático
  • Exposição dos robôs em estações.
  • Demonstração ao vivo para visitantes.
  • Autoavaliação e avaliação dos pares.
  • Entrega de certificados e premiações lúdicas.
📜 Habilidades BNCC e RCP-PR
  • EF04MA01 / EF04MA26 Consolidação de habilidades matemáticas
  • EF04LP11 Apresentação final
  • Todas as Competências Gerais Aplicação prática do pensamento computacional
🧰 Materiais
Robôs prontos (com bateria) Pôsteres e manuais expostos Mesas para cada grupo Certificados impressos Câmera para fotos Lanche coletivo (opcional)
🔧 Explicação Detalhada da Montagem do Hardware

Todos os robôs devem estar funcionando com bateria para demonstração contínua. Verificar:

  • Baterias carregadas (pilhas novas)
  • Conexões firmes
  • Código carregado no micro:bit
💻 Código a ser desenvolvido

Código final dos projetos. Cada grupo deve ter o código salvo e, se possível, impresso para mostrar.

⏱️ Detalhamento Minuto a Minuto
0-15 min
Montagem da feira: Organizar as estações, colocar pôsteres, testar robôs. "Vamos deixar tudo LINDO!"
15-45 min
Visitação: Outras turmas, professores e pais visitam as estações. Cada grupo apresenta seu robô e explica. Mostre seu orgulho!
45-50 min
Encerramento: Reunir todos. Discurso final, agradecimentos. "Vocês são engenheiros de verdade!"
50-60 min
Entrega de certificados: Cada aluno recebe um certificado personalizado.
60min+
Celebração: Fotos, abraços, comemoração. Lanche coletivo (se possível).
♿ Orientações para Adaptações e Inclusão
  • TEA: Estação com apoio de um colega para apresentar; ambiente calmo
  • TDAH: Rodízio de visitantes para não sobrecarregar; pausas
  • Deficiência visual: Descrição verbal do robô; permitir tocar (com cuidado)
  • Deficiência auditiva: Apoio visual e escrito; intérprete se possível
  • Altas habilidades: Estação com desafio extra para os visitantes (ex: "programe o robô agora!")
📊 Critérios Operacionais de Avaliação (Avaliação Final)
Descrição Critério Pontuação
Executou a tarefa corretamente durante a feira Funcionamento do robô 0-3
Explicou com clareza e entusiasmo Apresentação para visitantes 0-3
Material bem organizado e bonito Capricho do pôster e manual 0-2
Refletiu sobre o próprio aprendizado Autoavaliação 0-2
Total 0-10

🏆 CERTIFICADO DE CONCLUSÃO

Engenheiro(a) de Robôs do 4º Ano

CERTIFICADO DE ENGENHEIRO(A) DE ROBÔS - 4º ANO

"PROJETO AUTORAL DE HARDWARE"

🤖 CERTIFICADO ROBÔMESTRES

Certificamos que

[NOME DO ALUNO]

concluiu com êxito o 4º ANO - ROBÓTICA EDUCACIONAL
Projeto Autoral de Hardware com micro:bit
Dominando os conceitos de:
🔧 HARDWARE (montagem e integração)
🧠 PENSAMENTO COMPUTACIONAL (algoritmos)
🔀 ESTRUTURAS DE DECISÃO (SE/ENTÃO/SENÃO)
🔁 LOOPS E CONCORRÊNCIA (repetição e eventos)
🐛 DEPURAÇÃO (caça aos bugs)
🤖 PROJETO AUTORAL (solução para problema real)


RobôMestres do Paraná • 2026

"Engenheiro não nasce pronto, se constrói com loops, LEDs e muito café!"

🔧 Ass: Robô Zé 4.0

Visualização ao selecionar aluno

Cadastro de Engenheiros(as)

📋 Lista de Engenheiros(as) 0

♿ ADAPTAÇÕES ESPECÍFICAS BIMESTRE 4

Inclusão para todos os engenheiros
📌 Para TEA (Transtorno do Espectro Autista)
  • Criar um cartão com os passos da aula: "1. Ouvir → 2. Montar → 3. Programar → 4. Testar"
  • Fornecer uma lista de tarefas para cada semana: "□ Conectei o LED vermelho □ Conectei o LED verde □ Testei o buzzer"
  • Explicar o que vai acontecer antes de cada atividade: "Agora vamos testar o robô. Vai fazer barulho. Pode ser alto."
  • Designar um "amigo de robótica" para auxiliar
  • Manter a mesma estrutura de aula todas as semanas
📌 Para TDAH (Transtorno do Déficit de Atenção com Hiperatividade)
  • Dividir a montagem em etapas de 5 minutos com intervalos
  • Usar um cronômetro na tela: "Vamos programar por 10 minutos!"
  • Dar adesivos ou pontos a cada etapa concluída
  • Permitir levantar, andar, esticar a cada 15 minutos
  • Dar uma instrução por vez, não todas de uma só vez
📌 Para Deficiência Visual
  • Descrever todos os componentes e conexões em voz alta
  • Colar adesivos em relevo nos componentes (botão A, botão B, pinos)
  • Usar o buzzer e a matriz (com sons) como forma de feedback
  • Fluxograma e código em fonte grande
  • Um colega descreve o que está acontecendo na tela
📌 Para Deficiência Auditiva
  • Todas as instruções disponíveis por escrito
  • Usar muitos diagramas, imagens, cores
  • Intérprete de Libras, se disponível
  • Usar LEDs e matriz em vez de sons para feedback
  • Legendas em vídeos e apresentações
📌 Para Deficiência Física
  • Usar pinos mais grossos ou adaptadores para facilitar a conexão
  • Um colega ajuda na montagem física
  • MakeCode tem opções de acessibilidade (teclado, etc.)
  • Mesa na altura adequada
  • Mais tempo para atividades manuais
📌 Para Altas Habilidades
  • Adicionar um terceiro sensor, um motor, ou um modo "secreto"
  • Criar um robô que resolve DOIS problemas ao mesmo tempo
  • Ser tutor de outro grupo com dificuldade
  • Apresentação em inglês (desafio extra)
  • Criar um vídeo ou site sobre o projeto

📊 RUBRICA DE AVALIAÇÃO 4º BIMESTRE

Projeto Autoral de Hardware
Insuficiente (0-4) Critério Excelente (9-10) Bom (7-8) Regular (5-6)
Não identificou um problema ou o problema não faz sentido Identificação do problema Identificou um problema real e relevante, com argumentos claros Identificou um problema, mas com argumentos pouco convincentes Identificou um problema trivial ou pouco relevante
Não fez fluxograma ou está totalmente incorreto Planejamento e fluxograma Fluxograma completo, lógico e bem desenhado Fluxograma completo, mas com pequenas falhas de lógica Fluxograma incompleto ou com falhas graves
Montagem incorreta ou não funcionou Montagem do hardware Montagem correta, organizada e criativa Montagem correta, mas sem criatividade Montagem com erros, mas funcionou parcialmente
Código não funciona ou não foi feito Código (esqueleto) Código completo, comentado e organizado Código completo, mas com poucos comentários Código incompleto ou com erros
Não usou aninhamento nem concorrência Aninhamento e concorrência Usou aninhamento e concorrência de forma correta e criativa Usou aninhamento e concorrência, mas com pequenos erros Usou apenas uma das estruturas
Não testou ou não corrigiu nada Depuração e testes Identificou e corrigiu todos os bugs Identificou e corrigiu a maioria dos bugs Identificou bugs, mas não corrigiu
Não fez melhorias Melhorias (Robô 2.0) Acrescentou melhorias funcionais e criativas Acrescentou melhorias, mas simples Tentou melhorias, mas não funcionaram
Não fez manual ou pôster Manual e pôster Manual e pôster completos, organizados e criativos Manual e pôster completos, mas simples Manual ou pôster incompletos
Não apresentou ou foi ininteligível Apresentação Apresentação clara, confiante e com demonstração funcionando Apresentação clara, mas com pouca confiança Apresentação confusa ou robô não funcionou
Não houve trabalho em equipe Trabalho em equipe Todos os membros participaram ativamente A maioria participou Apenas um ou dois participaram

Cálculo da Nota Final: Somar as pontuações de cada critério (0-10) e dividir por 10 (número de critérios).

📚 REFERÊNCIAS BIBLIOGRÁFICAS (ABNT)

BRASIL. Ministério da Educação. Base Nacional Comum Curricular (BNCC). Brasília: MEC, 2018.

BRENNAN, K.; RESNICK, M. New frameworks for studying and assessing the development of computational thinking. In: Annual American Educational Research Association Meeting, 2012, Vancouver. Proceedings... Vancouver: AERA, 2012.

PARANÁ. Secretaria de Estado da Educação. Referencial Curricular do Paraná: Ensino Fundamental Anos Iniciais. Curitiba: SEED/PR, 2018.

PARANÁ. Secretaria de Estado da Educação. Robótica Paraná Primeiros Passos. Curitiba: SEED/PR, 2025. Disponível em: <https://aluno.escoladigital.pr.gov.br>. Acesso em: 20 jun. 2026.

RESNICK, M. Lifelong Kindergarten: Cultivating Creativity through Projects, Passion, Peers, and Play. Cambridge: MIT Press, 2017.

SILVA, J. R. Como Ensinar Projetos Autorais com Robótica no 4º Ano. Revista Brasileira de Robótica Educacional, v. 14, n. 2, p. 78-95, 2024.

WING, J. M. Computational Thinking. Communications of the ACM, v. 49, n. 3, p. 33-35, 2006.

🎉 FIM DO ANO LETIVO 4º ANO 🎉

Parabéns, professor(a)! Você e seus alunos completaram uma jornada de 40 semanas. Eles começaram acendendo um LED e terminaram construindo robôs que resolvem problemas reais. Eles erraram, aprenderam, depuraram e celebraram. Agora, eles não são mais apenas alunos são pequenos engenheiros, pensadores computacionais e agentes de transformação.

E você, professor(a), foi o arquiteto dessa jornada. Segurou a mão quando precisaram, deu autonomia quando puderam, e nunca subestimou a capacidade deles. Seu coração pode estar cansado, mas sua mente está cheia de orgulho.

Agora, vá descansar. Você merece. E, quem sabe, no ano que vem, eles programam o robô que vai buscar seu café... e ele nunca falha.

Até a próxima jornada, mestre(a) da robótica! 🚀🤖❤️