Logo Rodrigo Barbosa

🤖 ROBÓTICA NO ENSINO FUNDAMENTAL I — 4º ANO

⚡ 3º BIMESTRE: HARDWARE COM MICRO:BIT — ENGENHARIA DE SISTEMAS DO CAOS ⚡
APROVADO PELO MINISTÉRIO DO SE-ENTÃO-SENÃO
Logo Gisele Nunes

📬 CARTA DE ABERTURA DO BIMESTRE

Leia com um apito na boca e um capacete de papelão na cabeça

"Tropa do caos, escutem o chamado!

Este bimestre não é sobre robôs que obedecem é sobre robôs que pensam. Que decidem. Que sentem o mundo ao redor com seus sensores e reagem como verdadeiras criaturas digitais.

Vocês vão pegar uma plaquinha chamada micro:bit que é basicamente um cérebro do tamanho de uma bala e vão transformá-la num ser com personalidade. Ela vai piscar, dançar, sentir movimento, tomar decisões e, no final, vai resolver um problema real que vocês mesmos vão detectar na escola.

E o melhor: tudo isso com sucata, cola quente, muito SE, REPITA e aquele brilho nos olhos de quem sabe que bug não é erro é aprendizado com efeitos especiais.

No final, vocês não vão ganhar só um certificado. Vão ganhar o título de ENGENHEIRO(A) DE SISTEMAS DO CAOS com direito a foto imitando robô, adesivo e a glória eterna de ter domado o caos.

Apertem os botões A e B. Liguem os LEDs. Preparem o cabo USB. O micro:bit está chamando. E vocês vão atender.

Vambora! 🤖⚡"

🗺️ MAPEAMENTO BIMESTRE 3 - 4º ANO

RCP-PR · Programação com micro:bit e hardware (p.32-35)
Habilidades BNCC (Outras) Semana Título da Aula Habilidades BNCC (Matemática) Habilidades BNCC (LP)
Competência 5 (Pensamento Computacional) 21 Aqueça os neurônios Revisão relâmpago EF04MA21 padrões e regularidades
EF04CI01 movimento/energia; Competência 4 (Investigação) 22 Detetives do caos problema real na escola EF04MA21 identificação de padrões
Competência 5 (Decomposição) 23 Manual do Robô texto instrucional EF04LP11 planejar e produzir manual
EF04CI01 construção com materiais; Competência 4 24 Prototipagem com sucata e micro:bit
Competência 5 (Eventos concorrentes) 25 Concorrência pacífica dois eventos ao mesmo tempo EF04MA21 regularidades
Competência 5 (Depuração) 26 Caça aos bugs 2.0 tabela e rotação de papéis EF04LP11 registro de ocorrências
Competência 5 (Iteração) 27 Versão 2.0 refinamento e aninhamento extra EF04MA21 novas regularidades
Competência 4 (Comunicação digital) 28 Ensaio geral apresentação sem travamentos EF04LP11 produção de texto oral
Competência 4 (comunicação com público) 29 Mostra de Robótica Parte 1 EF04LP11 exposição oral
Competência 5 (reflexão sobre aprendizagem) 30 Mostra de Robótica Parte 2 + Autoavaliação EF04LP11 autoavaliação oral/escrita

📅 BIMESTRE 3 - PLANO SINTÉTICO (Semanas 21 a 30)

10 semanas de pura robótica com micro:bit
Atividade Principal Semana Título da Aula Conceito-Chave
3 desafios-relâmpago em dupla (cronometrados) + autoavaliação com adesivos 21 Aqueça os neurônios Revisão: aninhamento, eventos concorrentes, parâmetros
Caminhada fotográfica, critérios de viabilidade, escolha do problema 22 Detetives do caos Identificação de problema real na escola
Preenchimento de template com nome, materiais, algoritmo e esboço de código 23 Manual do Robô Texto instrucional + algoritmo em português estruturado
Montagem com caixas, tampinhas, papel alumínio e conexão com a placa 24 Prototipagem com sucata Construção física do robô + integração com micro:bit
Adicionar um segundo loop (piscar LED / tocar som) enquanto o principal roda 25 Concorrência pacífica Eventos concorrentes (paralelismo)
Trios com papéis (piloto, copiloto, engenheiro) tabela de bugs e correções 26 Caça aos bugs 2.0 Depuração sistemática com registro
Corrigir bugs, adicionar `SE` dentro de `SE` dentro de `REPITA`, testar 27 Versão 2.0 Refinamento + aninhamento duplo
Cartaz, roteiro de 2 min, ensaio entre duplas com feedback 28 Ensaio geral Preparação para apresentação oral
Metade das equipes apresenta para outra turma, com adesivos de feedback 29 Mostra Parte 1 Exposição para público externo
Segunda leva de apresentações, rubrica lúdica, certificados e foto coletiva 30 Mostra Parte 2 + Fechamento Autoavaliação e celebração

🎒 PLANOS DE AULA DETALHADOS — BIMESTRE 3

Prepare a bagunça organizada. Loop até a coordenação pedir pra parar!
Progresso 0/10
0%

🎯 Objetivos Operacionais
  • Recuperar, por meio de desafios cronometrados, os conceitos de aninhamento (condicional dentro de loop), eventos concorrentes (dois scripts rodando em paralelo) e parâmetros (variáveis que controlam comportamentos).
  • Resolver três problemas em dupla, com troca de códigos para correção mútua.
  • Identificar, em situações novas, qual estrutura de controle é mais adequada.
  • Desenvolver a decomposição de problemas complexos em partes menores e mais simples.
📚 Conteúdo Programático

Aninhamento (Nesting): Estruturas condicionais (`SE`/`ENTÃO`/`SENÃO`) inseridas dentro de laços de repetição (`REPITA N VEZES` ou `REPITA PARA SEMPRE`). Exemplo prático: percorrer uma lista de 5 números e, para cada um, verificar se é par ou ímpar. O aninhamento permite criar decisões dentro de repetições, gerando comportamentos mais complexos com poucas linhas de código.

Eventos Concorrentes (Concurrent Events): Execução paralela de dois ou mais scripts no micro:bit, dois blocos `ao iniciar` ou `enquanto` rodando simultaneamente. Exemplo: um script controla o movimento dos LEDs, outro controla a leitura dos botões. Na robótica real, isso é essencial para que o robô processe múltiplas entradas sem travar.

Parâmetros: Valores que passamos para funções ou blocos para alterar seu comportamento (ex: `piscar(vezes)` onde `vezes` é um parâmetro). Parâmetros tornam o código reutilizável e flexível.

Pensamento Computacional: Decomposição (quebrar o desafio em partes), reconhecimento de padrões (identificar onde usar loop e onde usar condicional), abstração (ignorar detalhes irrelevantes) e algoritmos (sequência de passos).

📋 Habilidades BNCC e RCP-PR

EF04MA21, RCP-PR (Programação Colaborativa), Competência 5 (BNCC), RCP-PR (Autoria de sistemas simples).

🧰 Materiais (Kit Revisão)
Computadores com MakeCode micro:bits + cabo USB Cartões de desafio Cronômetro Adesivos "Flash do Código" Tabela de autoavaliação Cartazes "Poderes do Pensamento Computacional"
💻 Código Desafio 1 — Loop com condicional
// ============================================================
// DESAFIO 1: Loop com condicional
// Objetivo: Percorrer números de 1 a 5 e mostrar se cada um é par ou ímpar
// ============================================================

// Variável que armazena o número que será testado a cada volta do laço.
// Começamos do 1, pois queremos analisar de 1 a 5.
let contador = 1

// Estrutura FOR: repete o bloco de código 5 vezes.
// i começa em 0, vai até 4 (pois a condição é i < 5), e incrementa +1 a cada fim de volta.
for (let i = 0; i < 5; i++) {

    // ------------------------------------------------------------------
    // TESTE LÓGICO (CONDICIONAL IF/ELSE)
    // O operador % (módulo) retorna o RESTO da divisão do 'contador' por 2.
    // Exemplos: 
    //   1 % 2 = 1 (sobra 1) -> ÍMPAR
    //   2 % 2 = 0 (sobra 0) -> PAR
    //   3 % 2 = 1 -> ÍMPAR
    // ------------------------------------------------------------------
    if (contador % 2 == 0) {
        // CASO VERDADEIRO (número PAR):
        // Mostra o ícone de CORAÇÃO na matriz de LEDs do Micro:bit.
        basic.showNumber(contador)
        basic.showIcon(IconNames.Heart)
        // Pausa por 500ms (meio segundo) para dar tempo de visualizar o ícone.
        basic.pause(500)
    } else {
        // CASO FALSO (número ÍMPAR):
        // Mostra o ícone de QUADRADO na matriz de LEDs.
        basic.showNumber(contador)
        basic.showIcon(IconNames.Square)
        // Pausa por 500ms para visualização.
        basic.pause(500)
    }

    // ------------------------------------------------------------------
    // INCREMENTO DO CONTADOR
    // Após mostrar o ícone referente ao número atual, aumentamos o 
    // 'contador' em 1 para que na próxima volta do laço ele valha 2, 3, 4...
    // Isso garante que vamos testar TODOS os números de 1 a 5.
    // ------------------------------------------------------------------
    contador = contador + 1

    // (Observação: O 'i' do FOR também aumenta automaticamente ao final 
    // de cada volta, por isso o laço roda exatamente 5 vezes).
}

// Quando o FOR terminar (ou seja, após analisar o número 5), 
// mostramos a string "FIM" (Fim) no display para indicar que o programa acabou.
basic.showString("FIM")
💻 Código Desafio 2 — Eventos concorrentes
// ============================================================
// DESAFIO 2: Eventos concorrentes
// Objetivo: Dois comportamentos acontecendo ao mesmo tempo
// ============================================================

// EXPLICAÇÃO GERAL DO FUNCIONAMENTO:
// Este programa ilustra o conceito de concorrência no Micro:bit.
// Enquanto o loop `forever` pisca todos os LEDs da matriz (uma animação
// contínua de fundo), os botões A e B podem ser pressionados a qualquer
// momento. Cada pressão dispara uma função de evento que exibe um ícone
// (feliz ou triste) por 1 segundo, substituindo temporariamente a animação.
// Após esse tempo, a tela é limpa e o loop `forever` retoma sua piscada.
// Como o sistema de eventos do Micro:bit gerencia essas interrupções de
// forma assíncrona, temos a sensação de que duas tarefas estão rodando
// "ao mesmo tempo" – na prática, o processador alterna rapidamente entre
// elas, respeitando as pausas (`pause`) e a fila de eventos.

// ------------------------------------------------------------------
// Evento disparado quando o botão A é pressionado.
// A função associada é executada de forma assíncrona, ou seja, pode
// ocorrer a qualquer instante, independentemente do que o programa
// estiver fazendo (desde que não esteja em uma pausa bloqueante?).
input.onButtonPressed(Button.A, function () {
    // Exibe um ícone de "feliz" (cara sorridente) na matriz de LEDs.
    basic.showIcon(IconNames.Happy)
    // Aguarda 1000 milissegundos (1 segundo) para que o ícone fique visível.
    basic.pause(1000)
    // Após a pausa, limpa a tela (apaga todos os LEDs).
    basic.clearScreen()
    // Ao final, o controle retorna para o que estava sendo executado antes
    // (geralmente o loop `forever`, que continua piscando os LEDs).
})

// ------------------------------------------------------------------
// Evento disparado quando o botão B é pressionado.
// Funciona de maneira análoga ao botão A, mas exibe um ícone de "triste".
input.onButtonPressed(Button.B, function () {
    basic.showIcon(IconNames.Sad)
    basic.pause(1000)
    basic.clearScreen()
})

// ------------------------------------------------------------------
// Loop infinito executado continuamente pelo sistema.
// Ele é responsável pela animação de fundo: acende todos os LEDs,
// espera 500 ms, apaga tudo, espera mais 500 ms, e repete.
// Esse loop nunca termina, mas pode ser "interrompido" temporariamente
// quando um evento de botão ocorre – a função do evento é executada
// e, ao final, o loop continua de onde parou (ou recomeça).
basic.forever(function () {
    // Mostra um padrão de LEDs totalmente aceso (5x5 com #).
    // A string com `#` representa LED ligado, espaço representa apagado.
    basic.showLeds(`
    # # # # #
    # # # # #
    # # # # #
    # # # # #
    # # # # #
  `)
    // Mantém os LEDs acesos por 500 milissegundos.
    basic.pause(500)
    // Apaga todos os LEDs.
    basic.clearScreen()
    // Mantém a tela apagada por 500 milissegundos.
    basic.pause(500)
    // O ciclo recomeça automaticamente, pois está dentro de um `forever`.
})
💻 Código Desafio 3 — Aninhamento duplo
// ============================================================
// DESAFIO 3: Aninhamento duplo
// Objetivo: SE dentro de SE dentro de REPITA
// ============================================================

// O bloco 'basic.forever' executa o código em loop infinito.
// A cada iteração, lê o acelerômetro e decide qual ícone mostrar.
basic.forever(function () {

    // ------------------------------------------------------------
    // PRIMEIRA DECISÃO – EIXO X (inclinação lateral)
    // ------------------------------------------------------------
    // Se o valor de aceleração no eixo X for MENOR que -200,
    // significa que o micro:bit está inclinado para a ESQUERDA.
    // (O limiar de -200 evita falsos positivos por vibrações.)
    if (input.acceleration(Dimension.X) < -200) {

        // ----------------------------------------------------------
        // SEGUNDA DECISÃO – EIXO Y (inclinação frontal)
        // (aninhada dentro do "SE da esquerda")
        // ----------------------------------------------------------
        // Agora verificamos se, além de estar à esquerda, o aparelho
        // também está inclinado para FRENTE (Y negativo forte).
        if (input.acceleration(Dimension.Y) < -200) {

            // Estado 1: ESQUERDA + FRENTE → ícone "X" (proibido)
            basic.showIcon(IconNames.No)

        } else {
            // Estado 2: apenas ESQUERDA (sem frente) → seta para OESTE
            // ATENÇÃO: Em alguns ambientes, 'ArrowWest' pode não ser
            // reconhecido; nesse caso, substitua por 'ArrowLeft'
            // (ou consulte a documentação do seu editor).
            basic.showArrow(ArrowNames.West)
        }

    } else {
        // ----------------------------------------------------------
        // RAMO ALTERNATIVO – NÃO está inclinado para esquerda
        // (ou seja, X >= -200)
        // ----------------------------------------------------------
        // Agora testamos se está inclinado para a DIREITA (X > 200).
        if (input.acceleration(Dimension.X) > 200) {

            // Estado 3: DIREITA → seta para LESTE
            // ATENÇÃO: Analogamente, 'ArrowEast' pode precisar ser
            // trocado por 'ArrowRight' em algumas plataformas.
            basic.showArrow(ArrowNames.East)

        } else {
            // Estado 4: posição NEUTRA (X entre -200 e 200)
            // → apaga todos os LEDs.
            basic.clearScreen()
        }
    }

    // Pausa de 100 ms para estabilizar leituras e permitir
    // que os ícones sejam visualizados.
    basic.pause(100)
})
⏱️ Minuto a Minuto (50 min)
0-5 min
Abertura + formação de duplas — "Voltamos, tropa! Hoje é dia de raio-X no cérebro. Em 10 minutos vocês vão resolver TRÊS desafios-relâmpago. Quem terminar ganha o selo 'Flash do Código'. Mas atenção: só vale se a dupla estiver em sintonia. Formem duplas e escolham um nome para a dupla tipo 'Os Binários', 'As Condicionais' ou 'Os Loops Lendários'."
5-8 min
Desafio 1 (3 min) loop com condicional — Projeta o desafio: "Escrevam um código que REPITA 5 VEZES: SE o número for par, o robô mostra um coração; SENÃO, mostra um quadrado." Dica: "Usem uma variável contadora de 1 a 5."
8-11 min
Desafio 2 (3 min) evento concorrente — "Criem dois eventos: quando apertar o botão A, mostra feliz; quando apertar o B, mostra triste. E enquanto isso, o LED fica piscando sem parar!"
11-15 min
Desafio 3 (4 min) aninhamento duplo — "Aninhem um SE dentro de outro SE dentro de um loop: SE inclinado esquerda ENTÃO SE inclinado frente ENTÃO mostrar X."
15-25 min
Correção coletiva — Projeta as soluções. Pergunta: "Qual a diferença entre aninhar e colocar um SE depois do outro?" Discute a importância da ordem das estruturas.
25-35 min
Desafio Bônus (para quem terminou) — "Adicionem um parâmetro ao código do desafio 1: 'piscar(vezes)'. Criem uma função que recebe `vezes` e repete o pisca-pisca N vezes."
35-45 min
Autoavaliação com adesivos — "Vão até a parede e colem um adesivo em cada coluna: aninhamento, eventos e parâmetros confiante, mais ou menos ou preciso revisar."
45-50 min
Diário do robô (individual) — "Escrevam no caderno: A parte que eu lembrava bem era ______. A que tive que revisar foi ______. Vou melhorar ______."
♿ Orientações para Adaptações e Inclusão
  • TDAH: Fazer um desafio por vez, com pausa de 1 min entre eles (pausa para respiração ou alongamento).
  • Deficiência intelectual: Fornecer uma "colinha autorizada" com a estrutura pronta do loop, faltando apenas a condicional.
  • TEA: Usar cards visuais com cores diferentes para cada tipo de bloco (Verde = loop, azul = condicional, amarelo = evento).
  • Dislexia: Permitir desenhar os blocos em vez de escrever texto.
  • Altas habilidades: Desafio extra com três níveis de aninhamento (adicionar mais uma condicional dentro das existentes).
📊 Critérios Operacionais de Avaliação
Indicador Critério Pontos
Código funciona corretamente (mostra coração para par, quadrado para ímpar) Desafio 1 Loop com condicional 0-3
Dois botões funcionam e o LED pisca simultaneamente Desafio 2 Eventos concorrentes 0-3
Código com SE dentro de SE dentro de loop, funcionando Desafio 3 Aninhamento duplo 0-4
Reflexão escrita sobre o que aprendeu e o que precisa melhorar Autoavaliação preenchida 0-2
Colaboração, divisão de tarefas, respeito mútuo Trabalho em equipe 0-3
Total 0-15
Frase do dia: "Loop não é macarrão! Variável não é coisa de velho! Depurar não é xingamento!"

🎯 Objetivos Operacionais
  • Observar a rotina escolar (corredores, salas, pátio, biblioteca) e identificar problemas que poderiam ser resolvidos com automação simples (loop + condicional + sensores).
  • Listar critérios de viabilidade: segurança, materiais disponíveis, tempo, impacto real.
  • Decidir, em equipe, UM problema para ser atacado durante todo o bimestre.
  • Desenvolver o olhar investigativo próprio do pensamento computacional: observar, perguntar, registrar.
📚 Conteúdo Programático

Metodologia de Projeto: Observação, levantamento de requisitos, análise de viabilidade. A engenharia começa com a pergunta certa, não com a resposta.

Sensores do micro:bit:

  • Botões A e B — sensores de toque (entrada digital)
  • Acelerômetro — sensor de movimento (detecta inclinação, tremor, queda)
  • Matriz de LEDs — saída visual (mostra números, letras, ícones)
  • Sensor de luz — os LEDs também funcionam como sensor de luz ambiente!

Pensamento Computacional: Decomposição do problema em partes (entrada, processamento, saída). Qual é a entrada? O sensor. Qual é o processamento? A lógica do SE/REPITA. Qual é a saída? O LED, o som (se tiver alto-falante).

Critérios de Viabilidade: Segurança, Materiais, Tempo, Impacto.

📋 Habilidades BNCC e RCP-PR

EF04CI01, Competência 4 (BNCC), RCP-PR (Autoria de sistemas simples), RCP-PR (Programação colaborativa).

🧰 Materiais (Kit Detetives)
Caderno de campo Câmera ou lápis para desenhar Cartaz com os 3 critérios Fita métrica e lanterna Mapas da escola (plantas baixas) micro:bits para demonstração
💻 Código de Demonstração dos Sensores
// ============================================================
// DEMONSTRAÇÃO DOS SENSORES DO MICRO:BIT
// Use este código para mostrar aos alunos o que cada sensor faz
// ============================================================

// ------------------------------------------------------------------
// BLOCO 1: BOTÃO A – MEDIÇÃO DA INTENSIDADE LUMINOSA
// ------------------------------------------------------------------
// Quando o botão A for pressionado, o micro:bit lê o valor do sensor
// de luz ambiente (que fica na superfície da placa, próximo aos LEDs).
// O valor retornado é um número entre 0 (escuro total) e 255 (muito claro).
// Esse número é exibido no visor de LED durante alguns segundos.
// ------------------------------------------------------------------
input.onButtonPressed(Button.A, function () {
  // Lê o nível de luz e armazena na variável 'luz'
  let luz = input.lightLevel()
  // Mostra o valor numérico no visor (os LEDs acendem formando o número)
  basic.showNumber(luz)
})

// ------------------------------------------------------------------
// BLOCO 2: BOTÃO B – ACELERÔMETRO (INCLINAÇÃO E MOVIMENTO)
// ------------------------------------------------------------------
// Quando o botão B for pressionado, o micro:bit lê os valores de
// aceleração nos eixos X (horizontal) e Y (vertical) do acelerômetro.
// A aceleração é medida em milig (miligravidade), sendo aproximadamente
// 1000 mg quando o micro:bit está parado na horizontal (medindo a gravidade).
// Os valores são exibidos como texto no visor, com o formato "X=... Y=...".
// ------------------------------------------------------------------
input.onButtonPressed(Button.B, function () {
  // Lê a aceleração no eixo X (esquerda/direita)
  let x = input.acceleration(Dimension.X)
  // Lê a aceleração no eixo Y (frente/trás)
  let y = input.acceleration(Dimension.Y)
  // Exibe uma mensagem de texto com os dois valores medidos
  basic.showString("X=" + x + " Y=" + y)
})

// ------------------------------------------------------------------
// BLOCO 3: LOOP INFINITO – ANIMAÇÃO DE "ESPERA" (BACKGROUND)
// ------------------------------------------------------------------
// Este bloco executa continuamente enquanto o micro:bit estiver ligado.
// Ele não interfere nos botões, pois os eventos são assíncronos.
// A função 'showLeds' exibe um padrão de LEDs; aqui desenhamos uma
// matriz 5x5 totalmente apagada (todos os pontos são '.').
// Em seguida, pausamos por 1 segundo, limpamos a tela e pausamos
// mais 1 segundo. O efeito visual é um "pisca-pisca" sutil: a tela
// fica apagada o tempo todo, mas as pausas alternam entre o estado
// de "padrão vazio" e "tela limpa" – na prática, não há mudança
// visível, mas serve para demonstrar o uso do loop forever e pausas.
// Se desejar, você pode substituir o padrão vazio por uma animação
// (por exemplo, um coração) para tornar o efeito mais perceptível.
// ------------------------------------------------------------------
basic.forever(function () {
  // Exibe uma matriz 5x5 com todos os LEDs apagados
  basic.showLeds(`
    . . . . .
    . . . . .
    . . . . .
    . . . . .
    . . . . .
  `)
  // Aguarda 1000 milissegundos (1 segundo)
  basic.pause(1000)
  // Limpa completamente a tela (todos os LEDs apagados)
  basic.clearScreen()
  // Aguarda mais 1 segundo
  basic.pause(1000)
})
⏱️ Minuto a Minuto (50 min)
0-10 min
Chuva de ideias — "Que coisas na escola são chatas, repetitivas ou esquecidas?" Dá exemplos: "Esquecer de apagar a luz, o giz que acaba, a campainha que não toca, a fila da biblioteca bagunçada, o bebedouro que fica ligado."
10-20 min
Caminhada fotográfica — "Mochila, caderno e celular (ou lápis) vamos fazer uma expedição. Anotem 3 problemas e tirem foto ou desenhem." Acompanha os grupos.
20-30 min
Seleção com critérios — Apresenta o cartaz. "Apliquem os 3 critérios. Pode ser resolvido com loop e SE? Precisa de sensor? Cabe em 3 semanas? Escolham UM."
30-40 min
Pitch de 1 min por equipe — "Cada equipe tem 1 minuto para convencer a turma. 'Nosso problema é ______. Vamos resolvê-lo com um robô que ______.'" Dá feedback rápido: "Interessante! Mas como o robô vai saber que a lixeira está cheia? Sensor de luz?"
40-50 min
Registro no Diário de Projeto — "Agora escrevam: qual o problema, por que escolheram, e uma primeira ideia de solução (desenho). Se o robô pudesse falar, o que ele diria?"
♿ Orientações para Adaptações e Inclusão
  • TEA: Oferecer lista de problemas pré-selecionados ("Apaga-luz", "Avisa-giz", "Organiza-fila").
  • Altas habilidades: Escolher problema com duas camadas (apaga luz + tranca porta).
  • Deficiência motora: Usar gravador de voz no tablet para registrar as observações.
  • Baixa visão: Descrever os problemas oralmente e usar maquetes táteis.
  • TDAH: Fornecer uma checklist com etapas da caminhada para manter o foco.
📊 Critérios Operacionais de Avaliação
Indicador Critério Pontos
Lista com pelo menos 5 problemas observados na escola Lista de 5 problemas identificados 0-3
Grupo aplicou os 3 critérios e justificou a escolha Aplicação dos critérios de viabilidade 0-3
Apresentação clara do problema e solução proposta Pitch de 1 minuto 0-3
Desenho + descrição do problema e solução Registro no Diário de Projeto 0-3
Engajamento na observação e registro Participação na caminhada 0-3
Total 0-15
Frase do dia: "O problema certo é metade da solução. A outra metade é o robô!"

🎯 Objetivos Operacionais
  • Planejar o projeto por escrito: objetivo, materiais, algoritmo em português estruturado (passo a passo).
  • Produzir a primeira versão do "Manual do Robô" um texto instrucional claro, com linguagem objetiva, para que outro grupo possa operá-lo.
  • Reconhecer a importância da documentação na engenharia (e na vida).
  • Desenvolver a abstração: traduzir a solução do problema em passos lógicos, sem se perder em detalhes.
📚 Conteúdo Programático

Texto Instrucional: Características (linguagem clara, verbos no imperativo, sequência lógica, uso de imagens/símbolos). Por que um manual precisa ser detalhado? Porque o leitor não pode adivinhar o que está na sua cabeça.

Algoritmo em Português Estruturado: Traduzir o problema em passos lógicos, usando palavras como `REPITA`, `SE`, `ENTÃO`, `SENÃO`, `ENQUANTO`. É a ponte entre o pensamento e o código.

Decomposição: Quebrar o problema em partes: entrada (sensores), processamento (lógica), saída (LEDs, sons).

Versionamento: Todo bom projeto tem versões. A versão 1.0 é o planejamento; depois vêm as melhorias.

📋 Habilidades BNCC e RCP-PR

EF04LP11, Competência 5 (BNCC), RCP-PR (Programação colaborativa), RCP-PR (Autoria de sistemas simples).

🧰 Materiais (Kit Manual)
Template do manual Manuais de brinquedo reais Canetas coloridas Cartaz "Os 4 Mandamentos do Algoritmo" micro:bits para observação
💻 Algoritmo em Português Estruturado (Exemplo)
ALGORITMO: Apaga-Luz 3000
VERSÃO: 1.0

INÍCIO

REPITA PARA SEMPRE:
  LEIA o sensor de luz (lightLevel)
  SE o sensor de luz for MENOR que 50 (está escuro) ENTÃO
    MOSTRE no LED: "LUZ" (para avisar)
    ESPERE 2 segundos
    APAGUE o LED
  SENÃO
    NÃO faça nada (está claro)
  FIM SE
FIM REPITA

FIM
⏱️ Minuto a Minuto (50 min)
0-5 min
Abertura provocativa — "Engenheiro que não documenta é como robô sem bateria: não funciona por muito tempo. Hoje vamos escrever o manual do nosso robô ANTES de construir. Porque ninguém merece um robô que ninguém sabe operar."
5-15 min
Leitura de manual real — Distribui manuais. "Identifiquem: o que faz, como ligar, o que cada botão faz, solução de problemas. Por que tem imagens? Por que é tão detalhado?"
15-30 min
Preenchimento do template — Circula, ajuda. Pergunta: "E se o sensor falhar? O que seu robô faz então?" Preenchem: Nome, Problema, Materiais, Algoritmo em português, Esboço em blocos.
30-40 min
Troca de manuais entre duplas — "Agora, cada dupla lê o manual da outra e SIMULA mentalmente se o algoritmo resolveria o problema. Dêem sugestões."
40-50 min
Revisão do manual — "Com base no feedback, revisem. Guardem para as próximas aulas." Pergunta final: "O que vocês acrescentariam para deixar mais claro?"
♿ Orientações para Adaptações e Inclusão
  • Dislexia: Permitir gravação de áudio do manual ou usar símbolos (setas, carinhas em vez de texto).
  • Deficiência visual: Manual em braille ou letra grande (tamanho 24+) com relevo.
  • TDAH: Template com campos coloridos e espaços bem delimitados.
  • Deficiência intelectual: Oferecer frases prontas para completar ("O robô ______ quando o sensor detectar ______.").
  • Altas habilidades: Incluir uma seção "E se...?" com possíveis variações (desafio extra de criatividade).
📊 Critérios Operacionais de Avaliação
Indicador Critério Pontos
Nome criativo e problema claramente definido Nome e problema do robô 0-2
Lista completa de materiais necessários Materiais listados 0-2
Passos lógicos, uso correto de SE, REPITA, ENTÃO, SENÃO Algoritmo em português estruturado 0-4
Desenho claro da estrutura do código Esboço do código em blocos 0-3
Incorporou sugestões da outra dupla Revisão com feedback 0-2
Total 0-13
Frase do dia: "Se você não consegue explicar seu algoritmo para sua avó, você não entendeu o problema."

🎯 Objetivos Operacionais
  • Construir a estrutura física do robô (ou protótipo) usando materiais recicláveis, de acordo com o manual.
  • Posicionar o micro:bit e os sensores nos locais adequados (ex: micro:bit como "cérebro", LEDs como "olhos").
  • Conectar a estrutura ao micro:bit (usando o suporte de pilhas para alimentação externa).
  • Desenvolver a criatividade e a persistência ao lidar com materiais que não se comportam como o esperado.
📚 Conteúdo Programático

Prototipagem: Transformar um projeto em modelo físico testar forma, função e encaixes. É o momento de errar no barato para acertar no caro.

Propriedades dos Materiais: Rigidez, flexibilidade, peso, aderência. Por que papelão não segura um micro:bit pesado? Por que fita adesiva não é tão boa quanto cola quente?

Movimento e Energia: Como o micro:bit transforma energia elétrica em luz (LEDs) e movimento (através do acelerômetro). Conexão com EF04CI01.

Integração Hardware-Software: Conectar o micro:bit à estrutura física. O micro:bit vai no "cérebro" do robô, os LEDs são os "olhos", os botões são as "mãos".

📋 Habilidades BNCC e RCP-PR

EF04CI01, Competência 4 (BNCC), RCP-PR Integrar hardware ao planejamento, RCP-PR (Programação colaborativa).

🧰 Materiais (Kit Prototipagem)
Caixas de leite, rolos de papel Tampinhas, palitos, elásticos, clipes Papel alumínio, garrafas PET Cola quente, tesoura, fita adesiva micro:bit, cabo USB, suporte de pilhas Cartaz "Dicas de Prototipagem"
💻 Código de Teste do Robô
// ============================================================
// TESTE DO ROBÔ VERSÃO 1.0
// Este código testa se o micro:bit está funcionando no robô
// ============================================================

/*
 * CORREÇÕES REALIZADAS:
 * ---------------------
 * 1. Adicionada variável 'bloqueado' para impedir que o loop principal
 *    (forever) interrompa a exibição de mensagens (botão A) ou a dança (botão B).
 * 2. Loop principal agora mostra um ícone de coração intercalado com tela limpa,
 *    criando um efeito de "batimento" visível (antes era todo apagado).
 */

// --- Variável global de controle: impede que o forever interrompa ações dos botões ---
// 'bloqueado' é uma flag booleana. Quando true, o loop principal (forever) 
// não executa seu conteúdo principal, garantindo que ações iniciadas por botões
// não sejam interrompidas. Isso evita concorrência entre o loop e os eventos.
let bloqueado = false

// --- Quando o robô ligar, ele se apresenta ---
// Ao iniciar, o micro:bit exibe a palavra "ROBO" rolando na matriz de LEDs.
// Isso confirma que o programa foi carregado e o hardware está funcionando.
basic.showString("ROBO")

// --- Loop principal: o robô "vive" ---
// Agora com um batimento cardíaco visível: coração acende e apaga.
// O 'forever' executa repetidamente enquanto o micro:bit estiver ligado.
basic.forever(function () {
    // Só executa o batimento se nenhuma ação dos botões estiver em andamento
    // Se bloqueado for true, significa que um botão foi pressionado e 
    // estamos no meio de uma animação/mensagem; então pulamos o batimento.
    if (!bloqueado) {
        // Mostra um coração (símbolo de "vida") - isso acende todos os LEDs 
        // que formam o desenho de um coração na matriz 5x5.
        basic.showIcon(IconNames.Heart)
        basic.pause(500)          // coração aceso por 500 ms (meio segundo)
        basic.clearScreen()       // apaga todos os LEDs da matriz
        basic.pause(500)          // apagado por 500 ms - isso dá o efeito de piscada
    } else {
        // Se estiver bloqueado, apenas espera um pouco para não sobrecarregar
        // a CPU com um loop vazio. 100 ms é um intervalo curto e suficiente.
        basic.pause(100)
    }
})

// --- Botão A: o robô "fala" ---
// A função é registrada como callback para o evento de pressão do botão A.
// Quando o botão A é pressionado, o micro:bit executa este código.
input.onButtonPressed(Button.A, function () {
    // Bloqueia o loop principal para não cortar a mensagem
    // Ao colocar bloqueado = true, o forever para de piscar o coração,
    // evitando que a mensagem "OI" seja interrompida ou sobreposta.
    bloqueado = true
    // Exibe "OI" rolando na matriz (agora sem interrupções)
    // A função showString percorre cada caractere, deslocando-o na tela.
    basic.showString("OI")
    // Libera o loop principal após a exibição
    // Quando a mensagem termina, liberamos o bloqueio para que o batimento 
    // seja retomado.
    bloqueado = false
})

// --- Botão B: o robô "dança" ---
// Callback para o botão B – executa uma sequência de ícones alternados.
input.onButtonPressed(Button.B, function () {
    // Bloqueia o loop principal durante a dança
    // Garante que o batimento não atrapalhe a coreografia.
    bloqueado = true
    // Repete 5 vezes a troca entre carinha feliz e triste.
    for (let i = 0; i < 5; i++) {
        // Mostra o ícone de feliz (smile) por 200 ms
        basic.showIcon(IconNames.Happy)
        basic.pause(200)
        // Mostra o ícone de triste (sad) por 200 ms
        basic.showIcon(IconNames.Sad)
        basic.pause(200)
    }
    // Ao final, apaga a tela para não deixar nenhum ícone fixo.
    basic.clearScreen()
    // Libera o loop principal após terminar a dança.
    bloqueado = false
})
⏱️ Minuto a Minuto (50 min)
0-5 min
Abertura — "Mãos à obra! Se o robô vai apagar a luz, precisa de um 'braço' para apertar o interruptor. Se vai recolher papel, precisa de uma 'garra'. Se vai avisar que o giz acabou, precisa de uma 'boca' para falar. Seu robô, suas regras."
5-25 min
Construção orientada — Montam a estrutura seguindo o manual. Circula, ajuda a fixar o micro:bit. Dicas: "Como vocês vão fixar o micro:bit? O que acontece se ele cair?"
25-35 min
Integração com programação — Conectam o micro:bit ao computador e carregam o código de teste. Ajuda a conectar componentes.
35-45 min
Primeiro teste de funcionamento — "Carreguem o código de teste. Vejam se os LEDs aparecem, se os botões funcionam."
45-50 min
Anotações de campo — "Escrevam: O que está frágil? O que precisa ser reforçado? Onde o micro:bit está mal posicionado?"
♿ Orientações para Adaptações e Inclusão
  • Deficiência motora: Usar peças de encaixe grandes (Lego Duplo) ou kits prontos.
  • TEA: Fornecer modelo visual da construção esperada (foto ou desenho passo a passo).
  • Baixa visão: Usar materiais contrastantes (fitas coloridas para identificar partes).
  • Altas habilidades: Desafio extra: "Adicione uma segunda função" (além de apagar a luz, acende quando alguém chega).
  • TDAH: Checklist visual com etapas claras: cortar → colar → testar → anotar.
📊 Critérios Operacionais de Avaliação
Indicador Critério Pontos
Robô físico montado com materiais recicláveis Estrutura construída 0-4
Micro:bit fixo, LEDs visíveis, botões acessíveis Micro:bit posicionado corretamente 0-3
Código de teste carregado e funcionando Teste de funcionamento 0-4
Registro do que precisa ser melhorado Anotações de fragilidades 0-2
Total 0-13
Frase do dia: "O melhor robô não é o mais bonito, é o que não cai quando você liga."

🎯 Objetivos Operacionais
  • Acrescentar um evento concorrente ao código principal: enquanto o robô executa a tarefa principal, ele também pisca um LED, mostra uma animação ou reage a um botão.
  • Ajustar o código para que dois loops rodem "ao mesmo tempo" (paralelismo) e testar se há interferência.
  • Compreender que, em sistemas reais, múltiplas tarefas podem competir por recursos (processamento, energia).
  • Desenvolver a depuração ao identificar e corrigir conflitos entre eventos.
📚 Conteúdo Programático

Eventos Concorrentes: Execução paralela de dois ou mais scripts no micro:bit, `basic.forever` e `input.onButtonPressed` rodam simultaneamente. Isso simula o multitarefa dos robôs reais.

Multitarefa em Sistemas Embarcados: Como robôs (e computadores) lidam com múltiplas tarefas (time-sharing, interrupções). Exemplo: o cérebro humano também faz várias coisas ao mesmo tempo andar e conversar, por exemplo.

Interferência entre Processos: Quando um evento atrapalha o outro (ex: piscar LED consome tempo de processamento e deixa o movimento mais lento). Isso ensina sobre otimização e trade-offs.

Sincronização: Em alguns casos, precisamos que os eventos conversem entre si.

📋 Habilidades BNCC e RCP-PR

Competência 5 (BNCC), EF04CI01, RCP-PR (Autoria de sistemas simples), RCP-PR (Programação colaborativa).

🧰 Materiais (Kit Concorrência)
Robôs montados MakeCode for micro:bit Cronômetro para testar interferência Cartaz "O Desafio da Concorrência"
💻 Código com Eventos Concorrentes
// =================================================================
//  TÍTULO: EVENTOS CONCORRENTES NO micro:bit (VERSÃO DIDÁTICA)
//  PROPÓSITO: Demonstrar o funcionamento de múltiplas tarefas
//  (loops e eventos) executando em paralelo (concorrência) e
//  como elas interagem ao compartilhar a matriz de LEDs.
//  HARDWARE UTILIZADO:
//    - BBC micro:bit (placa)
//    - Matriz de LEDs 5x5
//    - Botão A
//    - Botão B
//    - Acelerômetro (sensor de movimento)
//    - Cabo USB, suporte de pilhas, computador e monitor
// =================================================================

// -------------------- EXPLICAÇÃO GERAL ----------------------------
// O micro:bit executa os blocos 'forever' e os manipuladores de
// eventos de forma *intercalada* (não simultânea, mas concorrente).
// Isso significa que, enquanto um loop está em execução, ele pode
// ser pausado a qualquer momento para atender a um evento (botão
// ou gesto) ou para dar vez a outro loop. A ordem de execução não
// é determinística, e isso gera efeitos interessantes (e por vezes
// conflitantes) na tela – justamente o que queremos explorar.
// -----------------------------------------------------------------

// ================================================================
//  TAREFA 1 – MONITOR DE LUZ AMBIENTE (loop principal)
//  Este loop lê continuamente o sensor de luz e exibe uma
//  representação visual na matriz de LEDs.
//  - Se estiver escuro (luz < 50): mostra a palavra "LUZ".
//  - Se estiver claro: desenha um padrão de "sol" (LEDs acesos).
//  O loop tem uma pausa de 500ms para que a tela seja visível e
//  para dar chance aos outros blocos de executarem.
// ================================================================
basic.forever(function () {
    let luz = input.lightLevel()          // lê o valor (0 a 255)

    if (luz < 50) {
        // Exibe o texto "LUZ" rolando – isso ocupa a tela por ~1s
        basic.showString("LUZ")
        basic.pause(1000)
        basic.clearScreen()
    } else {
        // Mostra um "sol" (LEDs centrais acesos) como indicador de claro
        // Desenha um SOL na matriz de LEDs 5x5
        basic.showLeds(`
            # . # . #
            . # # # .
            # # # # #
            . # # # .
            # . # . #
        `)
        basic.pause(500)
        basic.clearScreen()
        basic.pause(500)
    }
})

// ================================================================
//  TAREFA 2 – INDICADOR DE INCLINAÇÃO (loop secundário)
//  Este loop lê a orientação do acelerômetro e exibe uma seta
//  apontando para a direção da inclinação (N, S, L, O).
//  Ele também escreve na matriz, concorrendo com a Tarefa 1.
//  O resultado visual é uma alternância (ou sobreposição) entre
//  a informação de luz e a de inclinação.
// ================================================================
basic.forever(function () {
    // Obtém a direção da inclinação (0° = norte, 90° = leste, etc.)
    let direcao = input.compassHeading()   // 0 a 359 (graus)
    // Nota: O compasso exige calibragem; para efeito didático,
    // usamos o acelerômetro para detectar inclinação (roll/pitch)
    // e mostrar setas. Vamos usar uma função simplificada:
    let inclinacaoX = input.acceleration(Dimension.X)
    let inclinacaoY = input.acceleration(Dimension.Y)

    // Decide qual seta mostrar com base nos eixos X e Y
    if (Math.abs(inclinacaoX) > 200 && Math.abs(inclinacaoX) > Math.abs(inclinacaoY)) {
        // Inclinação lateral forte
        if (inclinacaoX < 0) {
            basic.showArrow(ArrowNames.West)   // inclinado para esquerda
        } else {
            basic.showArrow(ArrowNames.East)   // inclinado para direita
        }
    } else if (Math.abs(inclinacaoY) > 200) {
        // Inclinação para frente/trás
        if (inclinacaoY < 0) {
            basic.showArrow(ArrowNames.North)  // inclinado para frente
        } else {
            basic.showArrow(ArrowNames.South)  // inclinado para trás
        }
    } else {
        // Inclinação pequena: mostra um ponto central
        basic.showLeds(`
            . . . . .
            . . . . .
            . . # . .
            . . . . .
            . . . . .
        `)
    }
    basic.pause(800)   // pausa para dar visibilidade e alternância
})

// ================================================================
//  EVENTO: BOTÃO A – Mostra um rosto feliz
//  Quando pressionado, este evento é disparado imediatamente,
//  interrompendo qualquer loop em execução para exibir o ícone.
//  Após 1 segundo, a tela é limpa e os loops retomam.
// ================================================================
input.onButtonPressed(Button.A, function () {
    basic.showIcon(IconNames.Happy)   // exibe o sorriso
    basic.pause(1000)
    basic.clearScreen()
})

// ================================================================
//  EVENTO: BOTÃO B – Mostra um rosto triste
//  Funciona de maneira análoga ao botão A, mas com expressão triste.
// ================================================================
input.onButtonPressed(Button.B, function () {
    basic.showIcon(IconNames.Sad)
    basic.pause(1000)
    basic.clearScreen()
})

// ================================================================
//  EVENTO: GESTO DE "SHAKE" (balançar o micro:bit)
//  O acelerômetro detecta um movimento brusco e dispara este evento.
//  Mostra um ponto de exclamação (!) para indicar surpresa.
// ================================================================
input.onGesture(Gesture.Shake, function () {
    basic.showIcon(IconNames.Yes)    // o ícone "Yes" é um "check", mas
    // poderíamos usar "No" ou um desenho
    basic.pause(1000)
    basic.clearScreen()
})

// ================================================================
//  OBSERVAÇÕES FINAIS SOBRE CONCORRÊNCIA:
//  - Os dois loops `forever` executam indefinidamente, cada um com
//    sua própria taxa de atualização (500ms e 800ms). Como ambos
//    escrevem na mesma matriz, o que vemos na tela é uma mistura
//    (alternância) dos dois conteúdos – a menos que um deles seja
//    interrompido por um evento.
//  - Os eventos (botões e shake) têm prioridade alta: quando ocorrem,
//    o micro:bit pausa os loops e executa o bloco do evento, depois
//    retoma os loops. Isso demonstra o conceito de *interrupção*.
//  - Esse comportamento não é sincronizado; portanto, a tela pode
//    exibir fragmentos de diferentes tarefas, o que é intencional
//    para fins de aprendizado sobre concorrência e a necessidade
//    de mecanismos de exclusão mútua (como variáveis de estado)
//    em aplicações reais.
// ================================================================
⏱️ Minuto a Minuto (50 min)
0-5 min
Abertura — "Seu robô já resolve o problema principal? Agora vamos dar a ele uma personalidade: enquanto ele faz a tarefa, ele pode piscar, mostrar carinhas ou reagir a botões. Dois eventos em paralelo! Quem aqui já tentou falar e comer ao mesmo tempo? É mais ou menos isso."
5-15 min
Planejamento do evento — "Enquanto o robô estiver monitorando a luz, ele vai: piscar um LED / mostrar uma carinha / reagir ao botão A." Registram no manual (versão 1.1).
15-30 min
Programação do evento — Ajuda a criar o segundo script. Exemplo: `onButtonPressed` + `showIcon`. Programam os dois scripts.
30-40 min
Teste de interferência — "O evento concorrente atrapalha o principal? Mostrar uma carinha pode consumir processamento a luz foi medida corretamente?" Observam e relatam.
40-45 min
Ajuste fino — "Se atrapalhou, reduzam a frequência ou usem um evento mais simples." Ajustam e testam novamente.
45-50 min
Diário do robô — "Meu robô agora tem dois 'cérebros': um que ______ e outro que ______. Eles funcionam juntos porque ______."
♿ Orientações para Adaptações e Inclusão
  • TDAH: Usar evento simples (apenas ligar/desligar o LED sem temporizador).
  • Altas habilidades: Adicionar terceiro evento condicional ("Se detectar inclinação, muda a cor do LED").
  • TEA: Oferecer diagrama visual mostrando os dois scripts paralelos.
  • Deficiência intelectual: Professor auxilia na escolha de um evento único e simples.
📊 Critérios Operacionais de Avaliação
Indicador Critério Pontos
Segundo script funcionando em paralelo Evento concorrente adicionado 0-4
Aluno identificou se houve interferência entre os scripts Teste de interferência 0-3
Ajustou o código para minimizar interferência Ajuste fino realizado 0-3
Reflexão sobre como os dois scripts funcionam juntos Diário do robô preenchido 0-3
Total 0-13
Frase do dia: "Fazer duas coisas ao mesmo tempo é o superpoder do robô. E do professor também."

🎯 Objetivos Operacionais
  • Testar o robô em condições reais (sala de aula com variação de luz, movimento, obstáculos) e registrar sistematicamente cada bug.
  • Preencher a tabela de bugs com colunas: O que aconteceu?, Qual a causa?, Como corrigimos?, Corrigido? (sim/não).
  • Trabalhar em trio com papéis rotativos: piloto (opera o robô), copiloto (observa e anota), engenheiro (sugere correções). Cada rodada troca os papéis.
  • Desenvolver a depuração sistemática como prática científica: observar, hipotetizar, testar, corrigir.
📚 Conteúdo Programático

Depuração (Debugging): Processo científico de identificar, isolar e corrigir erros não é "tentar de novo", é "observar, hipotetizar, testar, corrigir". O bug é um professor disfarçado.

Teste de Software: Planejar testes que cobrem diferentes cenários (luz forte, luz fraca, obstáculo, superfície lisa/áspera). Um bom teste é aquele que tenta quebrar o sistema.

Trabalho Colaborativo: Divisão de papéis com responsabilidades claras piloto não pode anotar, copiloto não pode tocar no robô, engenheiro não pode executar. Isso desenvolve disciplina e respeito mútuo.

Registro de Ocorrências: A tabela de bugs é um gênero textual técnico objetivo, claro, com dados observáveis.

📋 Habilidades BNCC e RCP-PR

Competência 5 (BNCC), EF04LP11, RCP-PR (Programação colaborativa), RCP-PR (Autoria de sistemas simples).

🧰 Materiais (Kit Caça ao Bug)
Tabela de bugs impressa Cronômetro Robôs prontos Canetas de cores diferentes Cartaz de dicas de depuração Cabo USB para recarregar
💻 Correção de Bug (Exemplo)
// ============================================================
// BLOCO 1: CÓDIGO COM BUG (antes da correção)
// ============================================================

/*
 * COMENTÁRIO DIDÁTICO:
 * O bloco abaixo contém um erro lógico muito comum em programação com microcontroladores.
 * O objetivo é acionar um alerta visual (mostrar "LUZ") sempre que o ambiente estiver escuro
 * (nível de luz < 50). Porém, o código original não limpa a tela após exibir a mensagem.
 * 
 * Como funciona o showString()?
 * - Ele exibe caracteres em rolagem (scroll) no display de LEDs.
 * - Após terminar a rolagem, o micro:bit mantém o ÚLTIMO frame (pedaço) da animação
 *   fixo na tela, a menos que você ordene explicitamente que a tela seja apagada.
 * 
 * O que acontece na prática?
 * - Se a luz estiver baixa, a mensagem "LUZ" rola uma vez e para.
 * - O último caractere ("Z") ou parte dele fica aceso para sempre, porque nunca
 *   chamamos basic.clearScreen().
 * - Quando a luz volta a ficar acima de 50, a condição não é mais verdadeira,
 *   mas como a tela nunca foi limpa, o pedaço da mensagem continua lá, dando a
 *   impressão de que o programa "travou" ou que o LED não apaga.
 */

// -- CÓDIGO COM BUG (antes da correção) --
basic.forever(function () {
    // basic.forever() é um loop infinito que executa o bloco repetidamente,
    // enquanto o micro:bit estiver ligado. Ele é ideal para ler sensores
    // continuamente.

    let luz = input.lightLevel()
    // input.lightLevel() lê a intensidade da luz ambiente através dos LEDs
    // do display. O valor retornado varia de 0 (escuro total) a 255 (muito claro).
    // Este valor é armazenado na variável 'luz'.

    if (luz < 50) {
        // Condição de teste: se o nível de luz for MENOR que 50, consideramos
        // que está escuro e devemos emitir o alerta.

        basic.showString("LUZ")
        // Exibe a palavra "LUZ" em rolagem no display.
        // ATENÇÃO AO BUG: Após a rolagem terminar, o micro:bit NÃO limpa
        // automaticamente a tela. Ele mantém o último padrão de LEDs aceso.
        // A função showString() tem um pequeno atraso interno para a animação,
        // mas, ao final, a tela fica com o último caractere visível.
        // FALTAVA O basic.clearScreen() NO ELSE!
        // O texto ficava na tela para sempre!
    }
    // Fim do if. Se a luz for >= 50, nada é executado, mas a tela continua
    // mostrando o que quer que estivesse lá (no caso, o resto do "LUZ").
    // O loop forever recomeça imediatamente, mas como a condição agora é falsa,
    // ele não faz nada novo e a tela permanece suja.
})

// ============================================================
// BLOCO 2: CÓDIGO CORRIGIDO (depois) – VERSÃO COM ALTERAÇÃO MÍNIMA
// ============================================================

/*
 * COMENTÁRIO DIDÁTICO SOBRE A CORREÇÃO APLICADA:
 * Nesta versão, optou-se por uma mudança simples: quando a luz está alta,
 * em vez de simplesmente não fazer nada (o que deixava resíduos), agora
 * exibimos a mensagem "OK" para indicar que o ambiente está claro.
 * 
 * EFEITO:
 * - Se escuro → mostra "LUZ" (rolagem, depois fica estático na tela).
 * - Se claro → mostra "OK" (rolagem, depois fica estático na tela).
 * 
 * Isso substitui a mensagem antiga pela nova, mas AINDA NÃO APAGA A TELA.
 * O problema de "ficar com resíduo" é parcialmente mitigado porque a tela
 * agora sempre mostra algo relevante (ou "LUZ" ou "OK"), mas se não houver
 * mensagem a ser mostrada (por exemplo, se a luz oscilar e o programa
 * não atualizar), ainda pode haver um frame antigo. Além disso, se desejar
 * que a tela fique completamente apagada em algum momento, seria necessário
 * chamar basic.clearScreen() explicitamente.
 * 
 * Esta abordagem é uma correção mínima que mantém o usuário informado,
 * mas não é uma limpeza total. Para um comportamento mais limpo, veja
 * a sugestão no resumo final.
 */

// -- CÓDIGO CORRIGIDO (depois) --
basic.forever(function () {
    // Loop infinito para monitoramento contínuo.

    let luz = input.lightLevel()
    // Leitura do nível de luz.

    if (luz < 50) {
        // Se estiver escuro...

        basic.showString("LUZ")
        // Exibe a mensagem "LUZ" em rolagem. Após a rolagem, a mensagem
        // permanece na tela (último frame) enquanto a condição for verdadeira.
        // Isso garante que o alerta fique visível durante todo o período escuro.
    } else {
        // Se a luz for igual ou superior a 50 (ambiente claro)...

        basic.showString("OK")
        // Exibe "OK" para indicar que a luz está normal. Essa mensagem
        // substitui a anterior, evitando que a tela fique com "LUZ" quando
        // não é mais necessário. Porém, a tela ainda não é apagada – apenas
        // atualizada com um novo texto. Se você quiser que a tela fique
        // completamente escura em vez de mostrar "OK", substitua esta linha
        // por basic.clearScreen().
    }
    // O loop recomeça imediatamente. Se a condição permanecer a mesma,
    // o showString() será chamado novamente a cada iteração, fazendo a
    // rolagem reiniciar. Isso pode causar um pequeno "pisca" ou reinício
    // da animação. Para evitar esse comportamento, seria necessário usar
    // variáveis de estado, mas essa solução mantém a simplicidade didática.
})

// ============================================================
// RESUMO FINAL PARA FIXAÇÃO DE CONCEITOS:
// ============================================================
// 1. showString() NÃO limpa a tela – ela apenas exibe e mantém o último frame.
// 2. Para um alerta persistente, mostre a mensagem enquanto a condição for verdadeira.
// 3. Para realmente limpar a tela quando a condição for falsa, use
//    basic.clearScreen() no else, em vez de mostrar outra mensagem.
// 4. Esta versão optou por mostrar "OK" como alternativa, o que é didático
//    para ilustrar a substituição de mensagens, mas não remove completamente
//    os LEDs (que ficam com o último frame de "OK").
// 5. Em loops forever, lembre-se de atualizar a tela em ambos os ramos
//    para evitar exibir informações desatualizadas.
⏱️ Minuto a Minuto (50 min)
0-5 min
Abertura + formação de trios — "Agora o negócio fica sério: vamos testar o robô no campo de batalha (a sala de aula) e anotar TUDO que der errado. Quanto mais bugs, mais aprendizado. Lembrem-se: bug não é erro, é oportunidade de aprender. Formem trios e definam: piloto, copiloto, engenheiro."
5-15 min
Rodada 1 — Piloto executa o programa 3 vezes. Copiloto anota pelo menos 2 bugs. Engenheiro observa em silêncio. Circula, observa, dá dicas: "O piloto só executa. Copiloto, anote TUDO que sair do esperado. Engenheiro, não fale ainda só observe."
15-25 min
Rodada 2 (troca de papéis) — "Rodem os papéis. Agora o piloto vira copiloto, o copiloto vira engenheiro, o engenheiro vira piloto. Acrescentem um obstáculo (um caderno na frente do micro:bit) e testem novamente."
25-35 min
Rodada 3 (última troca + tentativa de correção) — "Última troca. Agora o engenheiro pode sugerir correções. Tentem corrigir UM dos bugs no código e testem se funcionou. Anotem o resultado."
35-45 min
Compartilhamento coletivo dos bugs — "Cada trio apresenta o bug mais engraçado ou mais surpreendente." Exemplo: "O robô começou a piscar sem parar porque o loop não tinha condição de saída."
45-50 min
Registro individual — "Escrevam no diário: O bug mais importante que encontrei hoje foi ______. Aprendi que ______."
♿ Orientações para Adaptações e Inclusão
  • TEA: Usar tabela com símbolos (😞 = bug, ❓ = causa, ✅ = solução).
  • Deficiência intelectual: Trabalhar em dupla com o professor auxiliando no registro.
  • Deficiência auditiva: Usar cartões coloridos para indicar a troca de papéis.
  • Altas habilidades: Criar um bug proposital para a outra equipe encontrar.
  • TDAH: Rodadas mais curtas (7 min) com intervalo de 1 min entre elas.
📊 Critérios Operacionais de Avaliação
Indicador Critério Pontos
Registro completo de bugs observados Tabela preenchida com pelo menos 3 bugs 0-4
Aluno desempenhou os 3 papéis Participação nas 3 rodadas com troca de papéis 0-3
Bug corrigido e testado com sucesso Correção de pelo menos 1 bug 0-4
Reflexão escrita sobre o aprendizado Registro individual 0-2
Total 0-13
Frase do dia: "Bug não é erro, é oportunidade de aprender com efeitos especiais!"

🎯 Objetivos Operacionais
  • Incorporar as correções identificadas na depuração (semana 26).
  • Acrescentar pelo menos um nível extra de aninhamento (ex: `SE` dentro de `SE` dentro de `REPITA`) para lidar com múltiplas condições.
  • Melhorar a estrutura física (reforçar com fita, reposicionar o micro:bit) e documentar todas as mudanças no manual (versão 2.0).
  • Desenvolver a iteração como prática de engenharia: produto nunca está pronto, está sempre em evolução.
📚 Conteúdo Programático

Iteração e Refinamento: Como produtos evoluem por meio de ciclos de feedback não existe versão final, existe versão atual.

Aninhamento Avançado: Estruturas condicionais aninhadas para lidar com múltiplas entradas. Exemplo: `SE sensor_luz < 50 ENTÃO (SE botão_A_pressionado ENTÃO mostrar_feliz SENÃO mostrar_triste) SENÃO parar`. Isso permite comportamentos mais inteligentes e adaptativos.

Engenharia de Software: Versionamento (1.0 → 2.0) e documentação de mudanças no manual. Cada versão tem um propósito claro.

Refinamento Físico: Reforçar a estrutura, ajustar posição do micro:bit, melhorar estabilidade o corpo do robô também evolui.

📋 Habilidades BNCC e RCP-PR

Competência 5 (BNCC), EF04MA21, RCP-PR (Autoria de sistemas simples), RCP-PR (Programação colaborativa).

🧰 Materiais (Kit Refinamento)
Robôs montados Fita adesiva larga, papelão extra Checklist de melhorias Manual (versão 1.0) Cartaz "Ciclo do Refinamento"
💻 Código com Aninhamento Duplo
// ============================================================
// VERSÃO 2.0 ANINHAMENTO DUPLO
// SE dentro de SE dentro de REPITA
// ============================================================

// ------------------------------------------------------------------
// EXPLICAÇÃO GERAL DO FUNCIONAMENTO:
// Este programa executa um loop infinito (forever) que monitora
// continuamente o nível de luz ambiente e o estado dos botões A e B
// do micro:bit. 
//
// Estrutura de decisão aninhada (duplo aninhamento):
//   NÍVEL 1: Verifica se está escuro (luz < 50).
//      NÍVEL 2: Se escuro, verifica o botão A.
//               - Se A pressionado → exibe ícone feliz.
//               - Senão → exibe a palavra "LUZ".
//      NÍVEL 2: Se claro (luz >= 50), verifica o botão B.
//               - Se B pressionado → exibe ícone triste.
//               - Senão → exibe uma matriz de LEDs apagados (tela vazia)
//                         com pausas intercaladas.
//
// Todas as ações são seguidas por uma pausa e limpeza da tela para
// evitar sobreposição e dar tempo de visualização.
// ------------------------------------------------------------------

// ===== SCRIPT PRINCIPAL: loop infinito =====
basic.forever(function () {
    // Lê o valor atual do sensor de luz (0 = escuro total, 255 = claro máximo)
    let luz = input.lightLevel()

    // ==================== ANINHAMENTO NÍVEL 1 ====================
    // Condição externa: verifica se o ambiente está escuro
    if (luz < 50) {

        // ---------- ANINHAMENTO NÍVEL 2 (dentro do 'escuro') ----------
        // Verifica se o botão A está pressionado neste momento
        if (input.buttonIsPressed(Button.A)) {
            // Caso verdadeiro: mostra um ícone feliz (sorriso)
            basic.showIcon(IconNames.Happy)
            // Aguarda 500 ms para que o ícone seja visível
            basic.pause(500)
            // Limpa a tela para a próxima iteração
            basic.clearScreen()
        } else {
            // Caso contrário (botão A NÃO pressionado):
            // Exibe a palavra "LUZ" como texto rolante
            basic.showString("LUZ")
            // Pausa 1000 ms para leitura
            basic.pause(1000)
            // Limpa a tela
            basic.clearScreen()
        }
        // Fim do aninhamento nível 2 (botão A)

    } else {
        // ---------- RAMO DO NÍVEL 1: ambiente claro (luz >= 50) ----------

        // ANINHAMENTO NÍVEL 2 (dentro do 'claro'):
        // Verifica se o botão B está pressionado
        if (input.buttonIsPressed(Button.B)) {
            // Caso verdadeiro: mostra ícone triste
            basic.showIcon(IconNames.Sad)
            basic.pause(500)
            basic.clearScreen()
        } else {
            // Caso contrário (botão B NÃO pressionado):
            // Exibe uma matriz 5x5 com todos os LEDs apagados
            // (representa uma tela vazia)
            basic.showLeds(`
        . . . . .
        . . . . .
        . . . . .
        . . . . .
        . . . . .
      `)
            // Primeira pausa de 500 ms para mostrar o "vazio"
            basic.pause(500)
            // Limpa a tela (redundante, mas garante estado limpo)
            basic.clearScreen()
            // Segunda pausa para criar um efeito de piscada
            basic.pause(500)
        }
        // Fim do aninhamento nível 2 (botão B)

    }
    // Fim do aninhamento nível 1 (luz)
})
// Fim do loop forever (reinicia automaticamente)
⏱️ Minuto a Minuto (50 min)
0-5 min
Abertura inspiradora — "Nenhum robô fica pronto na primeira tentativa. O primeiro iPhone também travava. Hoje vamos criar a versão 2.0, mais robusta e mais inteligente. Seu robô vai sair do protótipo e virar produto."
5-15 min
Revisão da tabela de bugs — "Escolham os 3 bugs mais críticos. Decidam: corrigir na física (reforçar) ou na programação (código)?" Analisam a tabela, decidem prioridades.
15-30 min
Implementação das correções + aninhamento extra — Ajuda a adicionar o aninhamento. Exemplo: "Dentro do loop principal, SE sensor_luz < 50 ENTÃO (já faz algo), SENÃO SE botão_pressionado ENTÃO mostrar_feliz." Reforçam a estrutura, reposicionam sensores, adicionam o `SE` dentro do `SE` dentro do loop.
30-40 min
Teste rápido da versão 2.0 — "Executem 2 vezes. Os bugs corrigidos sumiram? Se não, ajustem novamente." Testam, ajustam se necessário.
40-45 min
Documentação da versão — "Atualizem o manual: escrevam 'Versão 2.0 O que melhoramos hoje: ______.'" Atualizam o manual.
45-50 min
Compartilhamento — "Cada equipe compartilha UMA melhoria: 'Nós adicionamos ______ e agora o robô consegue ______.'"
♿ Orientações para Adaptações e Inclusão
  • Altas habilidades: Criar uma versão 2.5 com sensor extra (acelerômetro).
  • TDAH: Checklist visual com etapas claras: corrigir → testar → documentar.
  • Deficiência intelectual: Professor auxilia na escolha de um único bug para corrigir por vez.
  • TEA: Fornecer um diagrama do fluxo do código com o novo aninhamento.
📊 Critérios Operacionais de Avaliação
Indicador Critério Pontos
Bugs da semana 26 foram corrigidos Pelo menos 2 bugs corrigidos 0-4
Código com SE dentro de SE dentro de loop Aninhamento extra adicionado 0-4
Documentação das melhorias realizadas Manual atualizado (versão 2.0) 0-3
Robô testado e funcionando Teste da versão 2.0 0-2
Total 0-13
Frase do dia: "A versão 2.0 é a prova de que você não desistiu na 1.0."

🎯 Objetivos Operacionais
  • Planejar uma apresentação de 2 minutos por equipe, com roteiro claro: problema, solução, demonstração, código principal e um bug que enfrentaram.
  • Criar um cartaz (ou slide) com elementos-chave: nome do robô, foto/desenho, trecho do código mais importante.
  • Ensinar estratégias para lidar com imprevistos durante a demonstração (o "bug ao vivo" é parte do show).
  • Desenvolver a comunicação oral e a confiança para falar em público.
📚 Conteúdo Programático

Comunicação Oral: Estrutura de uma apresentação introdução, desenvolvimento, conclusão, com tempo controlado. Menos é mais: 2 minutos para impactar.

Design de Pôster: Hierarquia visual título grande, imagens, código destacado, legibilidade à distância. Um cartaz bom é aquele que conta a história sem que o apresentador precise falar tudo.

Gerenciamento de Imprevistos: Respirar fundo, explicar o que aconteceu, mostrar o código, não entrar em pânico. Bug ao vivo é oportunidade de mostrar competência.

Storytelling Técnico: Contar uma história o problema, a jornada, a solução, o aprendizado.

📋 Habilidades BNCC e RCP-PR

EF04LP11, Competência 4 (BNCC), RCP-PR (Programação colaborativa), RCP-PR (Autoria de sistemas simples).

🧰 Materiais (Kit Apresentação)
Cartolina, canetas coloridas Impressões do código Cronômetro Cartões com dicas de imprevistos Modelo de roteiro Projetor (opcional)
📝 Roteiro de 2 minutos (Exemplo)
ROTEIRO APRESENTAÇÃO DO ROBÔ "APAGA-LUZ 3000"

[0:00-0:30] INTRODUÇÃO
"Olá! Meu nome é ______ e este é o Apaga-Luz 3000. Ele resolve um
problema que temos na escola: as luzes ficam acesas mesmo quando não tem
ninguém na sala."

[0:30-1:00] COMO FUNCIONA
"O robô usa o sensor de luz do micro:bit para medir a claridade. Se
estiver escuro, ele mostra 'LUZ' no LED para avisar que alguém precisa
apagar a luz."

[1:00-1:30] DEMONSTRAÇÃO
"Vou mostrar agora. Vejam: quando eu cubro o micro:bit (simulando
escuro), ele mostra 'LUZ'. Quando eu descubro, ele para."

[1:30-2:00] BUG E APRENDIZADO
"No começo, o robô não parava de mostrar 'LUZ' porque eu esqueci de
colocar o 'limpar tela'. Aprendi que sempre precisamos apagar a tela
depois de mostrar uma mensagem."
⏱️ Minuto a Minuto (50 min)
0-5 min
Abertura — "A Mostra de Robótica é na próxima semana! Hoje vamos ensaiar como se estivéssemos no palco do Teatro Municipal. Preparem o cartaz, o roteiro e o robô."
5-15 min
Estrutura da apresentação — Ensina o roteiro: 1) Nome do robô e problema (30s); 2) Como funciona: loop, condicionais, eventos (30s); 3) Demonstração ao vivo (40s); 4) Um bug que tiveram e como corrigiram (20s) = 2 min. Anotam o roteiro.
15-30 min
Construção do cartaz — "Usem cores para destacar as partes do código. Coloquem o nome do robô bem grande." Criar pôster com título, desenho, código principal.
30-45 min
Ensaio por rodízio — Organiza os rodízios. "Plateia, dêem feedback: ficou claro? A demonstração funcionou? O tempo foi bom?" Apresentam para outra equipe, recebem feedback.
45-50 min
Ajustes finais — "Anotem o que precisam melhorar: testar mais, falar mais devagar, escrever código maior." Anotam ajustes.
♿ Orientações para Adaptações e Inclusão
  • Ansiedade social: Permitir apresentação gravada em vídeo ou apenas para o professor.
  • Surdez: Usar legendas ou intérprete de Libras.
  • Mutismo seletivo: Permitir que um colega ajude ou usar cartão de respostas.
  • TEA: Oferecer um roteiro visual com imagens e tempo estimado.
📊 Critérios Operacionais de Avaliação
Indicador Critério Pontos
Cartaz com título, desenho, código principal Cartaz criado 0-3
Roteiro de 2 minutos estruturado Roteiro escrito 0-3
Ensaio completo dentro de 2 minutos Apresentação ensaiada dentro do tempo 0-4
Recebeu e anotou feedback da outra equipe Feedback da plateia 0-3
Total 0-13
Frase do dia: "Se o robô travar na apresentação, respire fundo e diga: 'Isso é uma oportunidade de aprendizado!'"

🎯 Objetivos Operacionais
  • Apresentar os projetos para uma plateia real (outra turma, professores, funcionários).
  • Explicar conceitos de aninhamento, eventos concorrentes e depuração de forma acessível.
  • Receber feedback por adesivos coloridos e responder perguntas.
  • Desenvolver a comunicação com diferentes públicos adaptar a linguagem conforme o interlocutor.
📚 Conteúdo Programático

Comunicação com Diferentes Públicos: Adaptar a linguagem para crianças menores, usar analogias; para adultos, usar termos técnicos com explicação.

Feedback: Como receber e processar críticas construtivas sem se sentir atacado. Feedback é presente, não ofensa.

Valorização do Erro: O "bug ao vivo" é uma oportunidade de mostrar resolução de problemas.

Circuitos de Apresentação: Organização de estações para que o público circule estilo feira de ciências.

📋 Habilidades BNCC e RCP-PR

Competência 4 (BNCC), EF04LP11, RCP-PR (Programação colaborativa), RCP-PR (Autoria de sistemas simples).

🧰 Materiais (Kit Mostra)
Robôs em funcionamento Cartazes Adesivos para votação Certificados de participação Câmera Convites Cabo USB de backup
⏱️ Minuto a Minuto (50 min)
0-5 min
Organização da sala em circuito — "Cada equipe fica em uma estação com seu robô e cartaz. Visitantes (outra turma) vão circular. Cada grupo tem 3 minutos para apresentar. Visitantes, façam perguntas!"
5-40 min
Rodízio de visitas — Circula, observa, ajuda se algum robô travar. Apresentam, demonstram, recebem adesivos.
40-45 min
Momento do "bug ao vivo" — "Se algum robô falhar, o apresentador explica o que aconteceu e como resolveria aplausos para a depuração!" Se falhar, explicam com tranquilidade.
45-50 min
Encerramento parcial — "Anotem os comentários dos visitantes. Guardem para melhorar na semana que vem." Anotam feedback.
♿ Orientações para Adaptações e Inclusão
  • Deficiência motora: Garantir cadeira e apoio para o robô.
  • TEA: Oferecer um "cantinho silencioso" para descanso entre apresentações.
  • Deficiência auditiva: Garantir que os visitantes saibam que podem se aproximar e ler os lábios.
  • Ansiedade: Permitir que o aluno apresente sentado ou com apoio de um colega.
📊 Critérios Operacionais de Avaliação
Indicador Critério Pontos
Demonstrou o robô e explicou o funcionamento Apresentação para visitantes 0-5
Coletou adesivos e anotou comentários Recebimento de feedback 0-4
Lidou com bugs ao vivo com tranquilidade Gerenciamento de imprevistos 0-3
Total 0-12
Frase do dia: "O melhor feedback não é o que você recebe, é o que você usa para melhorar."

🎯 Objetivos Operacionais
  • Apresentar a outra metade das equipes (ou repetir para público diferente).
  • Realizar autoavaliação final usando uma rubrica lúdica com carinhas de robô.
  • Celebrar as conquistas com certificados personalizados e menções especiais.
  • Refletir sobre o próprio aprendizado o que sei fazer agora que não sabia no começo?
📚 Conteúdo Programático

Autoavaliação: Refletir sobre o próprio aprendizado o que sei fazer agora que não sabia no começo?

Celebração: Reconhecer esforço, criatividade, persistência e trabalho em equipe.

Encerramento de Ciclo: O que vem no próximo bimestre (spoiler: sensores múltiplos e aninhamento triplo).

Cultura Maker: Celebrar o feito à mão robôs feitos de sucata, código escrito por crianças.

📋 Habilidades BNCC e RCP-PR

Competência 5 (BNCC), EF04LP11, RCP-PR (Programação colaborativa), RCP-PR (Autoria de sistemas simples).

🧰 Materiais (Kit Finale)
Certificados "Engenheiro(a) de Sistemas do Caos" Rubrica de autoavaliação (figuras: 🤖 feliz, 😐 neutro, 😞 triste) Câmera Adesivos especiais Som de robô (bip)
📝 Rubrica de Autoavaliação
🤖 Robô Expert (3) 😞 Robô Iniciante (1) 😐 Robô Aprendiz (2) Critério
Explica e usa `SE` dentro de `REPITA` com fluência, criando soluções com múltiplas condições Não identifica ou confunde com estruturas simples Reconhece aninhamento, mas precisa de ajuda para escrever Aninhamento
Programa dois scripts paralelos e explica a interferência entre eles Não compreende o conceito de eventos paralelos Consegue adicionar um evento, mas não explica bem a paralelização Eventos concorrentes
Registra bugs, identifica causas e propõe correções eficazes Não registra ou não tenta corrigir Registra bugs, mas precisa de ajuda para corrigir Depuração
Colabora ativamente, respeita papéis (piloto/copiloto/engenheiro) Trabalha sozinho ou atrapalha a equipe Colabora, mas às vezes foge dos papéis Trabalho em equipe
Manual claro, apresentação objetiva e dentro do tempo Manual incompleto ou apresentação confusa Manual razoável, apresentação com alguns desvios Comunicação (manual + apresentação)
⏱️ Minuto a Minuto (50 min)
0-35 min
Mostra da segunda metade — Organiza o circuito igual à semana 29. Os que já apresentaram viram monitores/plateia especializada. Apresentam, demonstram, recebem feedback.
35-40 min
Autoavaliação individual — Distribui a rubrica. "Pintem o robô que representa vocês em cada item." Preenchem a rubrica.
40-45 min
Entrega de certificados e menções — "Todos vocês são Engenheiros de Sistemas do Caos. E ainda temos menções especiais: 'Mestre do Manual', 'Rei/Rainha da Depuração', 'Sensor Supremo', 'Rei do Bug', 'Equipe Mais Criativa'." Recebem certificados e adesivos.
45-50 min
Foto da turma + "bip" coletivo — "Todo mundo com o robô! Vamos fazer um 'bip' coletivo 1, 2, 3, BIP!" Posam, imitam robô, vibram. Tira foto.
♿ Orientações para Adaptações e Inclusão
  • Mutismo seletivo: Permitir que um colega ajude ou use cartão de respostas.
  • TEA: Rubrica com símbolos e cores, tempo extra para preencher.
  • Ansiedade: Garantir que todos recebam certificado universalmente.
  • Altas habilidades: Convidar a equipe a fazer um "pitaco" sobre o próximo bimestre.
📊 Critérios Operacionais de Avaliação
Indicador Critério Pontos
Apresentou para visitantes na segunda metade Apresentação na mostra 0-4
Rubrica completa e reflexiva Autoavaliação preenchida 0-4
Engajamento na foto e no momento final Participação na celebração 0-3
Total 0-11
Frase do dia (Última!): "Bug não é erro, é aprendizado com efeitos especiais! E agora vocês são Engenheiros de Sistemas do Caos!"

Público Adaptação-chave Exemplo prático (em qualquer semana)
TEA Cards visuais, lista pré-selecionada, modelo visual, tabela com símbolos Na semana 22, oferecer 5 problemas prontos para escolher. Na semana 26, usar 😞/❓/✅ na tabela.
TDAH Pausas, checklist, tarefa única por vez Na semana 21, fazer um desafio de cada vez com 1 min de pausa. Na semana 27, checklist com etapas.
Deficiência intelectual Colinha, frases prontas, dupla com professor Na semana 21, fornecer estrutura pronta do loop. Na semana 23, frases para completar.
Deficiência motora Gravador de voz, peças grandes, cadeira Na semana 22, usar tablet para gravar observações. Na semana 24, usar Lego Duplo.
Deficiência visual Descrição oral, braille/letra grande, materiais contrastantes Na semana 23, manual em braille ou fonte 24+. Na semana 24, fitas coloridas.
Deficiência auditiva Sinais visuais, legenda, Libras Na semana 26, cartões coloridos para troca de papéis. Na semana 28, combinar intérprete.
Ansiedade social / Mutismo seletivo Apresentação gravada, cartão de respostas, colega auxiliar Na semana 28, permitir vídeo. Na semana 29, usar cartões com frases.

🏆 CERTIFICADO DE CONCLUSÃO - 4º ANO

"ENGENHEIRO(A) DE SISTEMAS DO CAOS"

🤖 CERTIFICADO ROBÔMESTRES

Certificamos que

[NOME DO ALUNO]

concluiu com êxito o 4º ANO - ROBÓTICA EDUCACIONAL
Dominando os conceitos de:
🔧 MICRO:BIT (o cérebro do robô)
🔁 LOOP (repetição inteligente)
📦 VARIÁVEL (o bolso mágico do robô)
🐛 DEPURAÇÃO (caça aos bugs)
🤖 PROTÓTIPO (robô de sucata com micro:bit)


RobôMestres do Paraná • 2026

"Bug não é erro, é aprendizado com efeitos especiais!"

🔧 Ass: Professor(a) do Caos

Visualização ao selecionar aluno

Cadastro de Alunos

📋 Lista de Programadores 0
    ♿ ADAPTAÇÕES ESPECÍFICAS BIMESTRE 3
    📌 Para TEA (Transtorno do Espectro Autista)
    • Use checklist visual com etapas (1. Ouvir, 2. Repetir, 3. Colar).
    • Prefira ritmos musicais previsíveis para os loops (evite barulhos abruptos).
    • Na caça ao tesouro (semana 22), ofereça um mapa simplificado e sem obstáculos surpresa.
    • Permita que o aluno use abafador de ruído se necessário.
    📌 Para TDAH (Déficit de Atenção)
    • Timer explosivo: use cronômetro de 5-7 minutos para cada bloco e um sino estridente para marcar a troca.
    • Hiperfoco recompensado: o aluno que terminar o algoritmo primeiro pode ser o "líder do loop" do grupo.
    • Divida as atividades em partes curtas com recompensas imediatas (adesivo a cada etapa concluída).
    📌 Para Deficiência Física
    • Comando por voz: o aluno pode ser o "programador-mor" e ditar os comandos `repita` para os colegas executarem.
    • Para o labirinto humano (semana 22), o aluno pode ser o "leitor do algoritmo" em vez de andar.
    • Use robôs de chão (tipo Beebot) em um tapete adaptado para alunos com limitação motora nos membros superiores.
    📌 Para Altas Habilidades
    • Loopception (Loop aninhado): Desafie-os a criar `repita 3 vezes { repita 2 vezes { pular } }`.
    • Tutor de robótica: Peça que criem um tutorial em vídeo explicando o conceito de loop para alunos do 3º ano.
    • Desafio extra: criar um algoritmo que desenha um polígono de 12 lados (calcular o ângulo sozinho).

    "SE o robô não andar, ENTÃO a gente declara Dia do Bug; SENÃO a gente dança."

    📚 REFERÊNCIAS BIBLIOGRÁFICAS (ABNT)

    BRASIL. Ministério da Educação. Base Nacional Comum Curricular (BNCC). Brasília: MEC, 2018. Disponível em: http://basenacionalcomum.mec.gov.br/. Acesso em: 18 jun. 2026.
    BRASIL. Ministério da Educação. Computação na Educação Básica Complemento à BNCC. Brasília: MEC, 2022.
    BRACKMANN, C. P. Desenvolvimento do Pensamento Computacional através de Atividades Desplugadas. Porto Alegre: UFRGS, 2017.
    MICRO:BIT EDUCATIONAL FOUNDATION. micro:bit Guia do Professor. Disponível em: https://microbit.org/pt-br/teach/. Acesso em: 18 jun. 2026.
    PAPERT, S. Mindstorms: Crianças, Computadores e Aprendizagem Poderosa. Porto Alegre: Artmed, 2008.
    PARANÁ. Secretaria de Estado da Educação. Referencial Curricular do Paraná: Ensino Fundamental Anos Iniciais. Curitiba: SEED, 2018.
    SOUZA, C. S.; SILVA, R. A. Robótica Educacional com Sucata: Práticas e Possibilidades. Belo Horizonte: Autêntica, 2019.
    VALENTE, J. A. (Org.). Pensamento Computacional e Programação no Ensino Fundamental. São Paulo: Cortez, 2020.
    WING, J. M. Computational Thinking. Communications of the ACM, v. 49, n. 3, p. 33-35, 2006.

    🎉 PARABÉNS, PROFESSOR! O bimestre está completo, com 10 semanas de pura robótica, caos criativo e aprendizado significativo.

    Seus alunos sairão não apenas com um robô de sucata e micro:bit, mas com a mente de engenheiros prontos para desbravar o próximo desafio.

    E lembre-se: bug não é erro, é aprendizado com efeitos especiais! 🤖⚡