Logo Rodrigo Barbosa

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

⚡ 4º BIMESTRE: O ÚLTIMO SHOW: ROBÔS, BUGS E GLÓRIA! ⚡
APROVADO PELO MINISTÉRIO DO SE-ENTÃO-SENÃO
Logo Gisele Nunes

🚀 CARTA DE ABERTURA DO 4º BIMESTRE

O ÚLTIMO SHOW: ROBÔS, BUGS E GLÓRIA!

"Salve, Mestre da Robótica (vulgo Professor(a) que sobreviveu a 30 semanas de sensores de papel alumínio e códigos que não compilavam)!

CHEGOU A HORA DO VRAU!

Esquece função, esquece operador lógico - isso é coisa do passado. Agora é sobre FAZER ACONTECER. É sobre pegar aquela plaquinha azul chamada micro:bit, seus 25 LEDs teimosos, um monte de fios emaranhados e TRANSFORMAR TUDO ISSO NUM SHOW QUE VAI DEIXAR A ESCOLA INTEIRA DE QUEIXO CAÍDO!

Este é o 4º bimestre. A fase em que a teoria vira espetáculo. Em que os alunos viram MESTRES DA ROBÓTICA - ou, como gostamos de chamar, ARQUITETOS DO CAOS ORGANIZADO. Eles vão programar, montar, apresentar e, acima de tudo, SURPREENDER.

Agora não tem mais material superficial, não! Aqui, cada semana é um projeto prático com código DE VERDADE, hardware DE VERDADE e desafios DE VERDADE. Vamos construir:

  • Um Semáforo Sonoro que canta (sim, CANTA!) enquanto controla o trânsito
  • Um Detector de Mentiras que faz todo mundo suar frio
  • Um Jogo da Memória que vai testar os neurônios até o limite
  • E uma Feira de Robótica que vai deixar as famílias com lágrimas nos olhos (e não é de vergonha, viu?)

Agora é a hora de botar pra quebrar, de errar FEIO para acertar na feira, de mostrar que seus alunos são os REIS DA ROBÓTICA.

Bora programar o futuro, porra! 🚀

A Equipe Robô na Veia
(agora com 300% mais cafeína e zero enrolação)

📊 MAPEAMENTO DO BIMESTRE

4º BIMESTRE - SEMANAS 31 A 40
Habilidades BNCC (Outras) Semana Título da Aula (Irreverente) Habilidades BNCC (Matemática) Habilidades BNCC (LP)
EF05CI01 (Ciências) 31 "Semáforo Sonoro - O Robô que Não Deixa Ninguém no Vermelho" EF05MA24 EF05LP17, EF35LP11
EF05AR04 (Artes) 32 "Pôster do Robô - A Arte de Vender o Peixe (Robótico)" EF05MA23, EF05MA24 EF05LP17, EF05LP07
EF05CI01 (Ciências) 33 "Ensaio do Desastre - Vamos Errar FEIO para Acertar na Feira" EF05MA20, EF05MA24 EF05LP17, EF35LP11
EF05CI01 (Ciências) 34 "Detector de Mentiras - O Polígrafo do Micro:bit" EF05MA24, EF05MA25 EF05LP17, EF05LP07
EF05CI01 (Ciências) 35 "Feira Dia 1 - O Show para a Escola" EF05MA24, EF05MA25 EF05LP17, EF35LP11
Competência 10 (Socioemocional) 36 "Feira Dia 2 - O Show para as Famílias (Preparem os Lenços)" EF05MA24, EF05MA25 EF05LP17, EF35LP11
Competência 8 (Socioemocional) 37 "Autoavaliação - O Relatório do Herói (ou Vilão?)" EF05MA24, EF05MA25 EF05LP10, EF05LP07
EF05AR04, Competência 9 38 "Formatura - A Entrega do Cobiçado Mouse de Ouro" EF05MA20 EF05LP07, EF35LP11
EF05CI01 (Ciências) 39 "Jogo da Memória - O Desafio Final com LEDs" EF05MA24, EF05MA25 EF05LP10, EF05LP07
Todas as competências 40 "Encerramento Festivo - Bolo, Vídeo, Lágrimas (e Muito Código)" EF05MA24, EF05MA20 EF05LP07, EF35LP11

📌 BIMESTRE - PLANO SINTÉTICO

10 semanas de pura criação
Atividade Principal (Projeto Prático) Semana Título da Aula Conceito Central
Programar um semáforo com 3 LEDs (vermelho, amarelo, verde) e som usando o micro:bit como controlador 31 "Semáforo Sonoro - O Robô que Não Deixa Ninguém no Vermelho" Sensores, Lógica e Saídas
Criar um pôster (físico ou digital) que documenta o projeto do semáforo, com diagramas, código e lista de materiais 32 "Pôster do Robô - A Arte de Vender o Peixe (Robótico)" Comunicação Visual
Ensaio completo da apresentação, testando hardware e código; implementar "Modo Noturno" (LED amarelo piscando) 33 "Ensaio do Desastre - Vamos Errar FEIO para Acertar na Feira" Teste e Depuração
Construir um "detector de mentiras" que acende LEDs e toca um alarme ao detectar "mentiras" 34 "Detector de Mentiras - O Polígrafo do Micro:bit" Sensor de Toque e Lógica Condicional
Apresentar os projetos (Semáforo e Detector) para outras turmas da escola 35 "Feira Dia 1 - O Show para a Escola" Exposição e Comunicação
Apresentar os projetos para as famílias, com linguagem adaptada para público leigo 36 "Feira Dia 2 - O Show para as Famílias (Preparem os Lenços)" Exposição e Empatia
Preencher formulários de autoavaliação e avaliação por pares; revisar código dos projetos 37 "Autoavaliação - O Relatório do Herói (ou Vilão?)" Reflexão e Feedback
Cerimônia de formatura com entrega de certificados e do prêmio "Mouse de Ouro" 38 "Formatura - A Entrega do Cobiçado Mouse de Ouro" Celebração
Programar um jogo da memória usando a matriz de LEDs do micro:bit com níveis de dificuldade 39 "Jogo da Memória - O Desafio Final com LEDs" Arrays, Funções e Interatividade
Exibição de vídeo, entrega dos diários de bordo, bolo, show de luzes e despedida 40 "Encerramento Festivo - Bolo, Vídeo, Lágrimas (e Muito Código)" Culminância

🎒 PLANOS DE AULA DETALHADOS -- BIMESTRE 4 - HARDWARE

5º Ano | Semáforo Sonoro, Detector de Mentiras e Feira de Robótica
Progresso das Aulas
0/10
0%

🎯 Objetivos Operacionais
  • Compreender o conceito de entrada, processo e saída em um sistema computacional, identificando cada etapa no projeto do semáforo.
  • Programar o micro:bit para controlar três LEDs (vermelho, amarelo e verde) simulando um semáforo real, com tempos de duração específicos para cada sinal.
  • Utilizar o buzzer do micro:bit para emitir sons em cada etapa do semáforo, associando diferentes frequências a cada sinal (grave para PARE, médio para ATENÇÃO, agudo para SIGA).
  • Aplicar a lógica de temporização com a função pause() para controlar o ritmo do semáforo, compreendendo a relação entre milissegundos e segundos.
  • Documentar o projeto no Diário de Bordo, explicando o funcionamento do código e do hardware com diagramas e descrições detalhadas.
  • Desenvolver a habilidade de trabalhar em equipe, dividindo tarefas de montagem, programação e testes.
📚 Conteúdo Programático

Sistemas Computacionais:

  • Entrada (input): O que o sistema recebe do ambiente (botões, sensores)
  • Processo (processamento): O que o sistema faz com os dados (código, lógica)
  • Saída (output): O que o sistema produz como resultado (LEDs, buzzer, matriz)

Lógica de Programação:

  • Sequência: ordem de execução das instruções
  • Temporização: pause(ms) para controlar o tempo
  • Loops: basic.forever() para execução contínua
  • Funções: organizar código em blocos reutilizáveis

Eletrônica Básica:

  • LED (Diodo Emissor de Luz): ânodo (perna longa, positivo), cátodo (perna curta, negativo)
  • Resistor: limita a corrente para não queimar o LED (220Ω)
  • Circuito em série: componentes conectados um após o outro
  • Pinos GPIO: entrada/saída de propósito geral no micro:bit

Micro:bit:

  • Pinos de entrada e saída (P0, P1, P2)
  • Matriz de LEDs 5x5 (25 LEDs individuais)
  • Buzzer integrado (para sons)
  • Botões A e B (entradas)
📋 Habilidades BNCC e RCP-PR
Descrição Código
Explorar fenômenos da vida cotidiana que evidenciem propriedades físicas dos materiais - como condutibilidade elétrica, densidade, respostas a forças magnéticas, solubilidade, respostas a forças mecânicas (dureza, elasticidade), entre outras EF05CI01 - BNCC Ciências
Interpretar dados estatísticos apresentados em textos, tabelas e gráficos (organização do tempo e sequências) EF05MA24 - BNCC Matemática
Planejar roteiros para apresentações orais, considerando a situação comunicativa e o tema/assunto do texto EF05LP17 - BNCC Língua Portuguesa
Ouvir e compreender apresentações orais, identificando informações principais e pontos de interesse EF35LP11 - BNCC Língua Portuguesa
Estrutura de apresentação de projetos científicos Comunicação Científica - RCP-PR
Planejamento da comunicação e registro do processo de criação Autoria e Protagonismo - RCP-PR
Uso de linguagens digital e visual na construção de conhecimento Competência 4 - RCP-PR
🛠️ Materiais

Hardware:

1 x Computador com acesso à internet 1 x Monitor 1 x BBC micro:bit 1 x Cabo USB 3 x LEDs (vermelho, amarelo, verde) 3 x Resistores de 220Ω 1 x Buzzer Fios de conexão (jumpers macho-macho) 1 x Protoboard

Software:

Editor MakeCode para micro:bit Navegador web

Outros:

Diário de Bordo Folhas para anotações Canetas coloridas para diagramas
🔧 Montagem do Hardware (Explicação Detalhada Passo a Passo)

Passo 1: Entendendo os Componentes

O que é um LED?

O LED (Diodo Emissor de Luz) é um componente eletrônico que converte energia elétrica em luz. Ele tem uma característica importante: só permite a passagem de corrente em um sentido (diodo).

  • Ânodo (perna mais longa): conecta ao positivo (pino de saída do micro:bit)
  • Cátodo (perna mais curta): conecta ao negativo (GND do micro:bit)

Por que precisamos de um resistor?

O LED não tem resistência interna significativa. Se ligarmos diretamente ao micro:bit (que fornece 3V), a corrente será muito alta e o LED queimará instantaneamente. O resistor de 220Ω limita essa corrente a um valor seguro (cerca de 10-15mA).

O que é um buzzer?

O buzzer é um componente que converte sinais elétricos em ondas sonoras. No micro:bit, podemos controlar a frequência (altura do som) e a duração usando a função music.playTone().

O que é o micro:bit?

O BBC micro:bit é uma placa microcontroladora com um processador ARM, matriz de LEDs 5x5, botões, acelerômetro, bússola e pinos de entrada/saída (GPIO). É o "cérebro" do nosso projeto.

Passo 2: Conectando os LEDs ao Micro:bit

Vamos conectar os LEDs aos pinos de saída do micro:bit. Cada LED será controlado por um pino específico.

LED Vermelho (Sinal de PARE):

  • Conecte o ânodo (perna longa) do LED vermelho ao pino P0 do micro:bit
  • Conecte o cátodo (perna curta) do LED vermelho a um dos terminais do resistor de 220Ω
  • Conecte a outra ponta do resistor ao pino GND (terra) do micro:bit

LED Amarelo (Sinal de ATENÇÃO):

  • Conecte o ânodo ao pino P1
  • Conecte o cátodo a um resistor de 220Ω e, em seguida, ao GND

LED Verde (Sinal de SIGA):

  • Conecte o ânodo ao pino P2
  • Conecte o cátodo a um resistor de 220Ω e, em seguida, ao GND

Passo 3: Conectando o Buzzer

  • Conecte o terminal positivo do buzzer ao pino P3 do micro:bit
  • Conecte o terminal negativo do buzzer ao pino GND

Passo 4: Verificação do Circuito

Antes de conectar a energia, verifique:

  • Todos os LEDs estão com o ânodo no pino correto e o cátodo no resistor?
  • Os resistores estão conectados corretamente ao GND?
  • O buzzer está conectado ao P3 e GND?
  • Não há fios soltos ou em curto-circuito?

Esquema de Conexão (Vista Superior do Micro:bit)

+------------------------------------------------------------------+
|                             MICRO:BIT                             |
|                                                                  |
|  P0 +-------- LED VERMELHO +----- RESISTOR +----- GND           |
|  P1 +-------- LED AMARELO  +----- RESISTOR +----- GND           |
|  P2 +-------- LED VERDE    +----- RESISTOR +----- GND           |
|  P3 +-------- BUZZER +------------------------------ GND         |
|                                                                  |
+------------------------------------------------------------------+
💻 Código Micro:bit (Completo e Didático)

O código abaixo é extremamente didático, com comentários detalhados em português explicando cada linha. Os alunos devem digitar este código no editor MakeCode, na aba "JavaScript".

// ==============================================================
// PROJETO: SEMÁFORO SONORO
// DESCRIÇÃO: Simula um semáforo com LEDs e sons, usando o micro:bit
// AUTOR: Equipe Robô na Veia
// VERSÃO: 1.0
// ==============================================================

// ==============================================================
// 1. CONFIGURAÇÕES INICIAIS (DECLARAÇÃO DE VARIÁVEIS)
// ==============================================================

// Definimos os pinos onde cada LED está conectado.
// Usamos números para representar os pinos (0, 1, 2)
let ledVermelho = 0 // LED vermelho no pino P0
let ledAmarelo = 1 // LED amarelo no pino P1
let ledVerde = 2 // LED verde no pino P2

// ==============================================================
// 2. FUNÇÃO PARA ACENDER UM LED ESPECÍFICO
// ==============================================================

/*
Função que acende um LED específico e apaga todos os outros.
Isso garante que apenas um LED fique aceso por vez.
@param {number} pino - O número do pino onde o LED está conectado (0, 1 ou 2)
*/
function acenderLED(pino: number) {
  // PASSO 1: Desliga todos os LEDs primeiro
  // Isso evita que dois LEDs fiquem acesos ao mesmo tempo
  // digitalWritePin(pino, 0) - envia 0V (LOW) para o pino, apagando o LED
  pins.digitalWritePin(DigitalPin.P0, 0)
  pins.digitalWritePin(DigitalPin.P1, 0)
  pins.digitalWritePin(DigitalPin.P2, 0)

  // PASSO 2: Liga o LED no pino especificado
  // digitalWritePin(pino, 1) - envia 3V (HIGH) para o pino, acendendo o LED
  pins.digitalWritePin(pino, 1)
}

// ==============================================================
// 3. FUNÇÃO PARA TOCAR UM SOM
// ==============================================================

/*
Função que toca uma nota musical no buzzer.
@param {number} frequencia - A frequência do som em Hertz (Hz)
@param {number} duracao - A duração do som em milissegundos (ms)
*/
function tocarSom(frequencia: number, duracao: number) {
  // O pino P3 está conectado ao buzzer.
  // music.playTone(frequencia, duracao) toca uma nota na frequência e duração especificadas
  music.playTone(frequencia, duracao)
}

// ==============================================================
// 4. LOOP PRINCIPAL (EXECUTADO CONTINUAMENTE)
// ==============================================================

// O loop 'basic.forever' executa o código repetidamente, para sempre.
// Isso é ideal para um semáforo, que deve funcionar continuamente.
basic.forever(function () {
  // ---------- Sinal VERDE (SIGA) ----------
  // Acende o LED verde e toca um som agudo
  // Chama a função para acender o LED verde
  acenderLED(ledVerde)
  // Toca um som agudo (frequência alta) para indicar "Siga"
  // Nota Dó (523 Hz) por 200ms (milissegundos)
  tocarSom(523, 200)
  // Aguarda 5 segundos com o LED verde aceso
  // 5000 ms = 5 segundos
  basic.pause(5000)

  // ---------- Sinal AMARELO (ATENÇÃO) ----------
  // Acende o LED amarelo e toca um som médio
  acenderLED(ledAmarelo)
  // Toca um som médio para indicar "Atenção"
  // Nota Sol (392 Hz) por 200ms
  tocarSom(392, 200)
  // Aguarda 2 segundos com o LED amarelo aceso
  basic.pause(2000)

  // ---------- Sinal VERMELHO (PARE) ----------
  // Acende o LED vermelho e toca um som grave
  acenderLED(ledVermelho)
  // Toca um som grave (frequência baixa) para indicar "Pare"
  // Nota Dó baixo (262 Hz) por 300ms
  tocarSom(262, 300)
  // Aguarda 5 segundos com o LED vermelho aceso
  basic.pause(5000)

  // O loop recomeça automaticamente - verde, amarelo, vermelho, verde...
})

// ==============================================================
// 5. (OPCIONAL) INÍCIO COM UMA MENSAGEM NA MATRIZ DE LEDs
// ==============================================================

// Quando o micro:bit é ligado, mostra um ícone de coração na matriz de LEDs
// Isso serve como confirmação de que o micro:bit está funcionando
basic.showIcon(IconNames.Heart)
basic.pause(1000) // Mostra o coração por 1 segundo
basic.clearScreen() // Limpa a tela para começar o semáforo

Explicação do Código em Blocos (para alunos iniciantes)

Para alunos com dificuldade em JavaScript, o mesmo código pode ser criado usando blocos no MakeCode:

  1. Quando iniciar: mostrar ícone coraçãopausar 1000mslimpar tela
  2. Para sempre:
    • escrever digital pino P2 = 1 (verde aceso)
    • tocar tom 523 por 200ms
    • pausar 5000ms
    • escrever digital pino P2 = 0 (verde apagado)
    • escrever digital pino P1 = 1 (amarelo aceso)
    • tocar tom 392 por 200ms
    • pausar 2000ms
    • escrever digital pino P1 = 0 (amarelo apagado)
    • escrever digital pino P0 = 1 (vermelho aceso)
    • tocar tom 262 por 300ms
    • pausar 5000ms
    • escrever digital pino P0 = 0 (vermelho apagado)
⏱️ Detalhamento Minuto a Minuto (50 min)
0-5 min
Aquecimento "O Problema do Trânsito" - Professor: "Imaginem um cruzamento sem semáforo. Um caos, né? Hoje, vocês vão ser engenheiros de trânsito e programar um semáforo inteligente com o micro:bit!" Discussão rápida sobre como um semáforo funciona (sequência de cores e tempos). Perguntar: "Por que o amarelo é mais curto?" "O que aconteceria se o verde ficasse ligado para sempre?"
5-15 min
Montagem do Hardware (Mão na Massa) - Distribuir os componentes (micro:bit, LEDs, resistores, fios, protoboard). Guiar os alunos passo a passo na montagem do circuito, como descrito na seção "Montagem do Hardware". Verificar cada conexão antes de prosseguir.
15-35 min
Programação (Código no MakeCode) - Alunos abrem o MakeCode no computador. Professor projeta o código e explica cada bloco, utilizando a versão com JavaScript/Blocos. Dica: Usar a interface de blocos para alunos iniciantes, e mostrar o código JavaScript para os mais avançados. Atividade: Alunos digitam o código, testam e fazem ajustes (ex: mudar o tempo de cada sinal). Desafio: mudar a nota musical de cada sinal.
35-45 min
Teste e Depuração (Caça aos Bugs) - Cada equipe testa seu semáforo. Professor circula, ajudando a resolver problemas: LEDs que não acendem (verificar polaridade), código com erro (verificar sintaxe), buzzer sem som (verificar conexão). Desafio: Quem conseguir, adicionar um botão para mudar o semáforo manualmente (usando o botão A do micro:bit).
45-50 min
Registro no Diário de Bordo - Perguntas para os alunos: 1) "O que aprendi hoje sobre como funciona um semáforo?" 2) "Desenhe o circuito que montamos, identificando cada componente." 3) "O que é entrada, processo e saída neste projeto?"
♿ Orientações para Adaptações e Inclusão
Adaptação Necessidade
Fornecer um circuito já montado na protoboard para o aluno apenas conectar ao micro:bit. Usar roteiro visual com fotos dos passos. TEA / Deficiência Física
Utilizar a programação em blocos (MakeCode) para facilitar a compreensão. Dividir a tarefa em partes menores com recompensas visuais. TDAH / Dificuldade de Aprendizagem
Permitir que o aluno descreva o funcionamento do semáforo oralmente, em vez de escrever. Usar fonte ampliada nos materiais impressos. Deficiência Visual / Dislexia
O buzzer pode ser substituído por feedback visual (piscar a matriz de LEDs) em vez de som. Deficiência Auditiva
Desafiar o aluno a criar um semáforo com tempos diferentes para cada direção ou com um botão de pedestre que ativa o sinal vermelho. Implementar o "Modo Noturno" (amarelo piscando) já nesta semana. Altas Habilidades
📊 Critérios Operacionais de Avaliação (com pontuação)
Critério Pontuação Máxima Indicadores
O circuito foi montado corretamente, com os LEDs na polaridade certa e os resistores no lugar? 20 pts Montagem do circuito
O semáforo segue a sequência correta (verde → amarelo → vermelho → verde) com os tempos adequados? 30 pts Funcionamento do código
O aluno explica o que cada parte do código faz (entrada, processo, saída)? 20 pts Compreensão do código
As respostas são completas e reflexivas, com diagramas claros? 15 pts Registro no Diário
O aluno contribuiu com a montagem, programação e testes? 15 pts Trabalho em equipe
TOTAL 100 pts
Frase do dia: "No trânsito da programação, o semáforo é a paciência. Cada LED é uma lição, cada pausa é uma respiração."

🎯 Objetivos Operacionais
  • Criar um pôster (físico ou digital) que documente o projeto do Semáforo Sonoro de forma clara, atraente e informativa.
  • Incluir no pôster elementos obrigatórios: título chamativo, foto do robô montado, diagrama de blocos (entrada → processo → saída), trecho do código, lista de materiais e nome dos integrantes.
  • Aplicar princípios de design de comunicação visual: hierarquia, contraste, legibilidade e equilíbrio.
  • Desenvolver a identidade visual da equipe, com cores, elementos gráficos e logotipo que representem o projeto.
  • Produzir material de apoio para a apresentação na Feira de Robótica, garantindo que o público possa entender o projeto rapidamente.
  • Desenvolver habilidades de curadoria e documentação de projetos de engenharia.
📚 Conteúdo Programático

Design de Comunicação Visual:

  • Hierarquia visual: organizar informações por importância (título maior, subtítulos, corpo de texto)
  • Contraste: usar cores diferentes para destacar elementos importantes
  • Legibilidade: escolher fontes e tamanhos adequados para leitura à distância
  • Equilíbrio: distribuir elementos de forma harmoniosa no espaço

Documentação de Projetos:

  • Como apresentar um projeto de engenharia de forma clara e atraente
  • Elementos essenciais: título, imagem, diagrama, código, materiais, autores
  • Público-alvo: adaptar a linguagem para diferentes níveis de conhecimento

Diagrama de Blocos:

  • Entrada (Input): botões, sensores, dados recebidos
  • Processo (Processamento): código, lógica, tomada de decisões
  • Saída (Output): LEDs, buzzer, matriz de LEDs, ação do robô

Identidade Visual:

  • Logotipo: criar um símbolo que represente o projeto
  • Paleta de cores: escolher cores que transmitam a mensagem desejada
  • Tipografia: escolher fontes que sejam legíveis e atraentes
📋 Habilidades BNCC e RCP-PR
Descrição Código
Experimentar desenho, pintura, fotografia e vídeo por meio de técnicas convencionais e não convencionais EF05AR04 - BNCC Artes
Representar dados em tabelas, gráficos de colunas e pictóricos (organização visual de informações) EF05MA23 - BNCC Matemática
Interpretar dados estatísticos (hierarquia de informações no pôster) EF05MA24 - BNCC Matemática
Produzir material de apoio para exposição, considerando a situação comunicativa EF05LP17 - BNCC Língua Portuguesa
Produzir textos com coesão e coerência (descrições técnicas e resumos) EF05LP07 - BNCC Língua Portuguesa
Identidade do projeto e expressão da criatividade Autoria e Protagonismo - RCP-PR
Uso de linguagens digital e visual na comunicação Competência 4 - RCP-PR
🛠️ Materiais

Opção Física:

Cartolinas (tamanho A3 ou maior) Canetinhas, lápis de cor, giz de cera Fotos impressas do robô montado Cola, tesoura, fita adesiva Régua para alinhar elementos

Opção Digital:

Computador com acesso ao Canva, PowerPoint ou Google Slides Impressora para imprimir o pôster final

Materiais Complementares:

Exemplos de pôsteres de projetos científicos Checklist de elementos obrigatórios Câmera digital ou celular para fotografar o robô
🔧 Montagem do Hardware

Não se aplica - Esta semana é focada em documentação, não em montagem de hardware. No entanto, os alunos devem fotografar o robô (micro:bit + LEDs) para usar no pôster. A foto deve mostrar claramente a montagem, com boa iluminação e fundo neutro.

Dicas para a foto:

  • Colocar o robô sobre uma superfície clara (papel branco)
  • Iluminar bem, de preferência com luz natural
  • Tirar a foto de cima (vista superior) para mostrar todas as conexões
  • Incluir uma legenda na foto identificando os componentes
💻 Código Micro:bit

Não há código novo - Apenas o trecho do código do Semáforo que será incluído no pôster. Selecionar o trecho mais importante (a sequência do semáforo) e colocá-lo de forma legível.

Trecho do código a ser incluído no pôster:

// Sequência do Semáforo
acenderLED(ledVerde)   // Sinal VERDE - SIGA
basic.pause(5000)      // 5 segundos

acenderLED(ledAmarelo) // Sinal AMARELO - ATENÇÃO
basic.pause(2000)      // 2 segundos

acenderLED(ledVermelho) // Sinal VERMELHO - PARE
basic.pause(5000)      // 5 segundos

// A sequência se repete automaticamente

Diagrama de Blocos (Entrada → Processo → Saída):

┌─────────────────────────────────────────────────────────────┐
│                    SEMÁFORO SONORO                         │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  ENTRADA          PROCESSO              SAÍDA              │
│  (Input)          (Processamento)       (Output)           │
│                                                             │
│  ┌─────────┐     ┌──────────────┐      ┌──────────────┐   │
│  │ Botão   │ ──  │ Código do    │ ──  │ LED VERDE    │   │
│  │ (A/B)   │     │ Semáforo     │      │ (SIGA)       │   │
│  └─────────┘     │ - Sequência  │      └──────────────┘   │
│                  │ - Temporização│      ┌──────────────┐   │
│  ┌─────────┐     │ - Lógica     │ ──  │ LED AMARELO  │   │
│  │ Sensor  │ ──  │ - Condicional│      │ (ATENÇÃO)    │   │
│  │ (Toque) │     └──────────────┘      └──────────────┘   │
│  └─────────┘                            ┌──────────────┐   │
│                                         │ LED VERMELHO │   │
│  ┌─────────┐                            │ (PARE)       │   │
│  │ Tempo   │                            └──────────────┘   │
│  │ (pause) │                            ┌──────────────┐   │
│  └─────────┘                            │ BUZZER       │   │
│                                         │ (Sons)       │   │
│                                         └──────────────┘   │
└─────────────────────────────────────────────────────────────┘
⏱️ Detalhamento Minuto a Minuto (50 min)
0-5 min
Aquecimento "O Pôster que Vende o Projeto" - Professor: "Seu semáforo é incrível, mas se ninguém entender o que ele faz, ninguém vai se importar. O pôster é o seu cartão de visitas. Vamos criar um que vai deixar todo mundo com vontade de saber mais!" Mostrar exemplos de pôsteres bons e ruins, discutindo o que funciona e o que não funciona.
5-10 min
Fotografia do Robô - Cada equipe fotografia seu robô montado. Dicas: usar fundo claro (papel branco), boa iluminação (luz natural perto da janela), vista superior para mostrar todas as conexões.
10-15 min
Planejamento do Pôster (Rascunho) - Cada equipe planeja o layout em uma folha A4. Elementos Obrigatórios: Título chamativo (ex: "Semáforo Sonoro - O Fim do Caos no Trânsito!"), Foto do robô montado, Diagrama de blocos (Entrada → Processo → Saída), Trecho do código, Lista de materiais, Nome dos integrantes.
15-35 min
Criação do Pôster (Mão na Massa) - Alunos criam o pôster (físico ou digital). Professor auxilia com design, cores e organização da informação. Dicas: usar cores contrastantes, deixar a foto grande, usar fontes legíveis, incluir elementos visuais (setas, ícones).
35-40 min
Revisão por Pares - Equipes trocam pôsteres e dão feedback: O título é legível? O diagrama está claro? A foto mostra o robô? O código é legível? Os materiais estão listados?
40-45 min
Ajustes Finais - Cada equipe faz ajustes com base no feedback recebido. Correções de ortografia, ajustes de layout, melhorias visuais.
45-50 min
Registro no Diário de Bordo - Perguntas: 1) "Qual foi a parte mais difícil de criar no pôster?" 2) "O que você aprendeu sobre design e comunicação?" 3) "Como você acha que o público vai reagir ao seu pôster?"
♿ Orientações para Adaptações e Inclusão
Adaptação Necessidade
Fornecer um template do pôster com espaços para preencher. O aluno pode usar um colega como assistente para a montagem física. TEA / Deficiência Física
Dividir a criação do pôster em etapas com timer: 5 min para o título, 5 min para a foto, 5 min para o diagrama, etc. TDAH / Dificuldade de Aprendizagem
O pôster pode ser feito em alto relevo (barbante para contornos) ou descrição em áudio via QR code. Deficiência Visual
O aluno pode ditar o conteúdo para um colega escrever ou usar ferramentas de acessibilidade no computador. Deficiência Física
Desafiar o aluno a criar um pôster interativo com QR code para vídeo, ou um pôster digital com animações e links. Altas Habilidades
📊 Critérios Operacionais de Avaliação (com pontuação)
Critério Pontuação Máxima Indicadores
Todos os elementos obrigatórios (título, foto, diagrama, código, materiais, integrantes) estão presentes? 20 pts Elementos obrigatórios
O pôster é fácil de entender à distância? A hierarquia visual está correta? 25 pts Clareza e legibilidade
O diagrama representa corretamente o fluxo do projeto (entrada → processo → saída)? 20 pts Diagrama de blocos
O pôster é atraente, tem a cara da equipe, usa cores e elementos gráficos interessantes? 20 pts Criatividade e identidade visual
As respostas são completas e reflexivas? 15 pts Registro no Diário
TOTAL 100 pts
Frase do dia: "Um pôster é mais que papel e tinta. É a ponte entre a ideia e o mundo. É o cartão de visita do robô."

🎯 Objetivos Operacionais
  • Ensaio completo da apresentação do projeto (fala + demonstração) com cronômetro, simulando condições reais de Feira.
  • Implementar o "Modo Noturno" no semáforo (LED amarelo piscando) usando o botão A do micro:bit.
  • Identificar e corrigir falhas no código e na montagem durante o ensaio, documentando os problemas e soluções.
  • Praticar técnicas de respiração e controle da ansiedade para apresentações.
  • Desenvolver a capacidade de diagnosticar erros e propor soluções rapidamente (depuração).
  • Aplicar feedback construtivo entre equipes durante os ensaios.
📚 Conteúdo Programático

Ensaio Simulado:

  • Apresentação em condições reais (público, cronômetro, pressão)
  • Gestão do tempo: controle de 4 minutos para cada apresentação
  • Postura e comunicação: linguagem corporal, contato visual, tom de voz

Resolução de Problemas:

  • Diagnosticar e corrigir erros de código e hardware
  • Métodos de depuração: verificação passo a passo, teste de componentes individuais
  • Documentação de bugs e soluções

Modo Noturno:

  • Implementar um novo comportamento no código
  • Usar variáveis para controlar diferentes modos
  • Condicional: if (modoNoturno) { ... } else { ... }
  • Botões como entrada: input.onButtonPressed()

Ansiedade e Performance:

  • Técnicas de respiração para reduzir ansiedade
  • Mentalidade de crescimento: errar é parte do processo
  • Feedback construtivo: dar e receber críticas de forma produtiva
📋 Habilidades BNCC e RCP-PR
Descrição Código
Demonstrar protótipo em condições reais, observando seu funcionamento e coletando dados EF05CI01 - BNCC Ciências
Utilizar unidades de medida de tempo (controle de 4 minutos) EF05MA20 - BNCC Matemática
Interpretar dados estatísticos (análise de tempo e desempenho) EF05MA24 - BNCC Matemática
Apresentar oralmente para público, considerando a situação comunicativa EF05LP17 - BNCC Língua Portuguesa
Ouvir e compreender apresentações orais, identificando pontos fortes e áreas de melhoria EF35LP11 - BNCC Língua Portuguesa
Ensaio simulado de apresentação Comunicação Científica - RCP-PR
Ensaio e melhoria contínua dos projetos Autoria e Protagonismo - RCP-PR
🛠️ Materiais
Robô montado e funcionando (Semáforo da semana 31) Pôster (da semana 32) Cronômetro (no celular ou relógio) Computador com o código aberto no MakeCode Baterias extras (pilhas AA para o micro:bit) Fichas de feedback para os colegas Folhas para anotações dos erros e correções
🔧 Montagem do Hardware

Revisão e Teste:

  1. Verificar todas as conexões elétricas (LEDs, resistores, buzzer, GND)
  2. Testar o código original (semáforo normal)
  3. Garantir que o micro:bit está com bateria suficiente

Desafio: Adicionar o "Modo Noturno":

O Modo Noturno é um comportamento onde o semáforo fica com o LED amarelo piscando, indicando atenção em horários de baixo fluxo de veículos. No código, usamos o botão A para ativar/desativar este modo.

💻 Código Micro:bit (Com "Modo Noturno")
// ==============================================================
// PROJETO: SEMÁFORO SONORO COM MODO NOTURNO
// DESCRIÇÃO: 
//   Este projeto simula um semáforo com três LEDs (vermelho, amarelo e verde)
//   e sons associados a cada estado. Além disso, possui um "Modo Noturno"
//   que, quando ativado pelo botão A, faz o LED amarelo piscar continuamente,
//   simulando um semáforo em operação reduzida durante a madrugada.
// 
// AUTOR: Equipe Robô na Veia
// VERSÃO: 2.0 (com Modo Noturno)
// ==============================================================

// ==============================================================
// 1. VARIÁVEIS GLOBAIS
// ==============================================================

// Cada LED está conectado a um pino digital do micro:bit.
// Atribuímos os números dos pinos a nomes simbólicos para facilitar a leitura.
let ledVermelho = 0   // LED vermelho no pino P0 (pino digital 0)
let ledAmarelo = 1    // LED amarelo no pino P1 (pino digital 1)
let ledVerde = 2      // LED verde no pino P2 (pino digital 2)

// Variável booleana (verdadeiro/falso) que controla o modo noturno.
// Inicialmente, o modo noturno está desativado (false).
// Quando o usuário pressionar o botão A, esta variável será invertida.
let modoNoturno = false

// ==============================================================
// 2. FUNÇÃO PARA ACENDER UM LED ESPECÍFICO
// ==============================================================

// Esta função recebe um número de pino (0, 1 ou 2) e acende o LED
// correspondente, garantindo que todos os outros LEDs estejam apagados.
// Isso evita que dois LEDs fiquem acesos ao mesmo tempo.
function acenderLED(pino: number) {
  // Desliga todos os LEDs escrevendo 0 (nível baixo) em cada pino.
  // O comando pins.digitalWritePin(pino, valor) controla o pino:
  //   - valor 0 = desligado (0 volts)
  //   - valor 1 = ligado (3,3 volts)
  pins.digitalWritePin(DigitalPin.P0, 0)
  pins.digitalWritePin(DigitalPin.P1, 0)
  pins.digitalWritePin(DigitalPin.P2, 0)

  // Liga o LED no pino especificado (escreve 1 no pino desejado).
  // Como os outros estão em 0, apenas este LED acende.
  pins.digitalWritePin(pino, 1)
}

// ==============================================================
// 3. FUNÇÃO PARA TOCAR UM SOM
// ==============================================================

// Esta função gera um tom (beep) com uma frequência e duração determinadas.
// O micro:bit possui um alto-falante ou saída para fones de ouvido.
// A frequência é medida em Hertz (Hz) e a duração em milissegundos (ms).
function tocarSom(frequencia: number, duracao: number) {
  // A função playTone da biblioteca 'music' reproduz um tom puro.
  // Exemplo: 523 Hz é a nota Dó (agudo), 262 Hz é Dó grave.
  music.playTone(frequencia, duracao)
}

// ==============================================================
// 4. FUNÇÃO PARA APAGAR TODOS OS LEDs
// ==============================================================

// Função simples que desliga todos os LEDs simultaneamente.
// Útil para o modo noturno, onde o LED amarelo pisca (liga/desliga).
function apagarTodosLEDs() {
  // Escreve 0 em todos os pinos, desligando todos os LEDs.
  pins.digitalWritePin(DigitalPin.P0, 0)
  pins.digitalWritePin(DigitalPin.P1, 0)
  pins.digitalWritePin(DigitalPin.P2, 0)
}

// ==============================================================
// 5. BOTÃO A: ATIVA/DESATIVA O MODO NOTURNO
// ==============================================================

// O micro:bit possui dois botões: A e B. Aqui usamos o botão A como
// um interruptor para o modo noturno.
// A função 'input.onButtonPressed' é executada sempre que o botão é pressionado.
input.onButtonPressed(Button.A, function () {
  // Inverte o valor da variável modoNoturno:
  //   - Se era false, passa para true (ativa o modo noturno)
  //   - Se era true, passa para false (desativa o modo noturno)
  // O operador '!' (negação lógica) inverte o valor booleano.
  modoNoturno = !modoNoturno

  // Feedback visual para o usuário: mostra um ícone na matriz de LEDs
  // do micro:bit para indicar qual modo foi ativado.
  if (modoNoturno) {
    // Se o modo noturno foi ATIVADO, exibe um "V" (check) – símbolo de "SIM".
    // IconNames.Yes é um ícone pré-definido que representa um "V".
    basic.showIcon(IconNames.Yes)
  } else {
    // Se o modo noturno foi DESATIVADO, exibe um "X" – símbolo de "NÃO".
    basic.showIcon(IconNames.No)
  }

  // Aguarda 500 milissegundos (0,5 segundo) para que o usuário veja o ícone.
  basic.pause(500)

  // Limpa a matriz de LEDs (apaga todos os pixels) para não ficar poluído.
  basic.clearScreen()
})

// ==============================================================
// 6. LOOP PRINCIPAL
// ==============================================================

// O bloco 'basic.forever' executa o código dentro dele repetidamente,
// indefinidamente, enquanto o micro:bit estiver ligado.
// É o "loop principal" do programa.
basic.forever(function () {
  // VERIFICAÇÃO: Estamos no Modo Noturno?
  // A variável modoNoturno define qual comportamento o semáforo terá.
  if (modoNoturno) {
    // ---------- MODO NOTURNO: LED AMARELO PISCANDO ----------
    // Neste modo, o semáforo não segue a sequência normal.
    // Apenas o LED amarelo fica piscando (alternando ligado/desligado)
    // para indicar que o trânsito está em operação reduzida.

    // Acende o LED amarelo (pino P1) chamando a função acenderLED
    acenderLED(ledAmarelo)

    // Pausa de 500 ms (meio segundo) – tempo que o LED fica aceso.
    basic.pause(500)

    // Apaga todos os LEDs (incluindo o amarelo).
    apagarTodosLEDs()

    // Pausa de 500 ms – tempo que o LED fica apagado.
    basic.pause(500)

    // O loop se repete: acende -> espera -> apaga -> espera -> ...
    // Isso gera um efeito de pisca-pisca contínuo.
  } else {
    // ---------- MODO NORMAL: SEMÁFORO ----------
    // Funcionamento padrão de um semáforo com três tempos:
    // Verde (5s) -> Amarelo (2s) -> Vermelho (5s) -> (volta ao verde)

    // Sinal VERDE: permite a passagem dos veículos.
    acenderLED(ledVerde)        // Acende o LED verde (pino P2)
    tocarSom(523, 200)          // Reproduz a nota Dó (frequência 523 Hz) por 200 ms
    basic.pause(5000)           // Mantém o verde aceso por 5 segundos

    // Sinal AMARELO: atenção, preparar para parar.
    acenderLED(ledAmarelo)      // Acende o LED amarelo (pino P1)
    tocarSom(392, 200)          // Nota Sol (frequência 392 Hz) por 200 ms
    basic.pause(2000)           // Mantém o amarelo aceso por 2 segundos

    // Sinal VERMELHO: parada obrigatória.
    acenderLED(ledVermelho)     // Acende o LED vermelho (pino P0)
    tocarSom(262, 300)          // Nota Dó grave (frequência 262 Hz) por 300 ms
    basic.pause(5000)           // Mantém o vermelho aceso por 5 segundos

    // Após o vermelho, o loop recomeça e o verde é aceso novamente.
    // A sequência se repete eternamente.
  }
})

// ==============================================================
// 7. INÍCIO COM MENSAGEM
// ==============================================================

// O bloco 'basic.showString' é executado apenas uma vez, quando o micro:bit
// é ligado ou reiniciado. Mostra uma mensagem de boas-vindas na matriz de LEDs.
basic.showString("SEMAFORO")   // Exibe a palavra "SEMAFORO" rolando os caracteres
basic.pause(500)               // Pequena pausa após a mensagem
basic.clearScreen()            // Limpa a matriz para iniciar o programa principal

// ==============================================================
// FIM DO CÓDIGO
// ==============================================================
⏱️ Detalhamento Minuto a Minuto (50 min)
0-5 min
Aquecimento "A Hora do Show" - Professor: "Hoje é o dia de errar FEIO para não errar na feira. Cada equipe terá 4 minutos para apresentar seu projeto. Vou cronometrar e anotar tudo o que der errado. E é assim mesmo! O ensaio é para isso mesmo!" Explicar o formato da apresentação: 2 minutos de fala explicando o projeto, 2 minutos de demonstração do robô funcionando.
5-25 min
Apresentações das Equipes (4 min cada) - Cada equipe apresenta seu projeto (Semáforo + Pôster) para a turma. Professor e colegas anotam feedback: clareza, tempo, funcionamento do robô, postura, contato visual. Cronômetro visível para todos.
25-30 min
Feedback das Equipes - Cada equipe recebe feedback dos colegas e do professor. O foco é no que pode ser melhorado, não em críticas negativas. "O que você faria diferente?" "O que estava confuso?"
30-35 min
Correções e Ajustes - Equipes corrigem os problemas identificados (código, montagem, fala). Professor circula ajudando.
35-40 min
Teste do Modo Noturno - Equipes testam o Modo Noturno (botão A ativa/desativa). Verificar se o código funciona e se a explicação está clara.
40-45 min
Segunda Rodada de Apresentações - Equipes que terminaram as correções apresentam novamente para verificar melhorias.
45-50 min
Registro no Diário de Bordo - Perguntas: 1) "O que deu errado no ensaio? Como você corrigiu?" 2) "O que você vai melhorar para a feira?" 3) "Como você se sentiu durante a apresentação?" 4) "O que o feedback dos colegas te ensinou?"
♿ Orientações para Adaptações e Inclusão
Adaptação Necessidade
Fornecer um roteiro pré-escrito para a apresentação. Realizar um ensaio privado antes do ensaio geral com a turma. TEA
Dividir a apresentação em partes curtas com pausas. Permitir movimento durante a fala. Usar um cronômetro visível. TDAH
Garantir que o aluno possa ver os lábios de quem fala. Usar legendas em tempo real se possível. Deficiência Auditiva
O aluno pode ter um colega como guia para posicionamento no estande. Deficiência Visual
Permitir que o aluno apresente sentado. Praticar técnicas de respiração antes da apresentação. Ansiedade
Desafiar o aluno a adicionar um "Modo Emergência" ao código, com sirene e luzes vermelhas piscando. Altas Habilidades
📊 Critérios Operacionais de Avaliação (com pontuação)
Critério Pontuação Máxima Indicadores
A apresentação durou entre 3:30 e 4:30? 15 pts Cumprimento do tempo
O semáforo funcionou corretamente durante a demonstração? 25 pts Funcionamento do robô
A equipe falou de forma clara, audível, com bom ritmo? 20 pts Clareza da fala
A equipe usou o pôster como apoio visual para a explicação? 15 pts Uso do pôster
A equipe conseguiu corrigir os problemas identificados? 15 pts Correções
As respostas são reflexivas e detalhadas? 10 pts Registro no Diário
TOTAL 100 pts
Frase do dia: "Errar no ensaio é esperteza. Errar na feira é falta de ensaio. Hoje a gente erra FEIO para acertar LINDO amanhã!"

🎯 Objetivos Operacionais
  • Compreender o funcionamento de um sensor de toque capacitivo no micro:bit, entendendo como ele detecta a presença humana através da condutividade elétrica da pele.
  • Programar o micro:bit para ler o valor do sensor e tomar decisões usando lógica condicional (if/else), criando um sistema que "detecta" mentiras.
  • Utilizar a matriz de LEDs e o buzzer para fornecer feedback visual e sonoro (verdadeiro/falso), com ícones e sons distintos.
  • Aplicar a lógica de "calibração": o sensor precisa ser calibrado para cada pessoa, pois cada indivíduo tem condutividade elétrica diferente.
  • Desenvolver um sistema com múltiplos níveis de sensibilidade, ajustando o limiar para diferentes condições.
  • Criar um código comentado e documentado, explicando o funcionamento do sensor e da lógica condicional.
📚 Conteúdo Programático

Sensores: O que são e como funcionam:

  • Sensor de toque capacitivo: mede a capacitância do pino ao toque humano
  • Como a pele humana conduz eletricidade e altera a capacitância
  • Diferença entre sensor digital e analógico

Lógica Condicional:

  • if: executa código se a condição for verdadeira
  • else: executa código se a condição for falsa
  • else if: permite múltiplas condições
  • Comparadores: >, <, >=, <=, ==, !=

Variáveis:

  • Armazenar e manipular dados (ex: o valor lido pelo sensor)
  • Variáveis globais vs. locais
  • Tipos de dados: number, boolean, string

Calibração:

  • Ajustar o sensor para diferentes condições
  • Por que cada pessoa tem um valor de referência diferente?
  • Como implementar um sistema de calibração no código

Matriz de LEDs:

  • Exibir ícones: basic.showIcon()
  • Exibir texto: basic.showString()
  • Desenhar padrões personalizados: basic.showLeds()
📋 Habilidades BNCC e RCP-PR
Descrição Código
Explorar fenômenos da vida cotidiana que evidenciem propriedades físicas dos materiais - como condutibilidade elétrica (a pele humana conduz eletricidade) EF05CI01 - BNCC Ciências
Interpretar dados estatísticos (análise de dados do sensor - valores numéricos) EF05MA24 - BNCC Matemática
Realizar pesquisa envolvendo variáveis categóricas e numéricas (calibração do sensor para diferentes pessoas) EF05MA25 - BNCC Matemática
Produzir material de apoio para exposição (documentação do projeto) EF05LP17 - BNCC Língua Portuguesa
Produzir textos com coesão e coerência (relatório do projeto) EF05LP07 - BNCC Língua Portuguesa
Identidade do projeto e expressão da criatividade Autoria e Protagonismo - RCP-PR
Uso de linguagens digital e visual na construção de conhecimento Competência 4 - RCP-PR
Autoconhecimento (reflexão sobre o que é verdade/mentira) Competência 8 - RCP-PR
🛠️ Materiais

Hardware:

1 x Computador com acesso à internet 1 x BBC micro:bit 1 x Cabo USB 1 x Sensor de Toque (ou fio para criar um sensor capacitivo) 1 x LED (opcional - para indicar calibração) 1 x Resistor de 220Ω (se usar LED) Fios de conexão (jumpers macho-macho) 1 x Protoboard (opcional)

Software:

Editor MakeCode para micro:bit Navegador web

Outros:

Diário de Bordo Folhas para anotações Tabelas para registro dos valores do sensor de diferentes pessoas
🔧 Montagem do Hardware (Explicação Detalhada Passo a Passo)

Passo 1: Entendendo o Sensor de Toque Capacitivo

O micro:bit possui um sensor de toque capacitivo integrado nos pinos P0, P1 e P2. Isso significa que podemos usar um simples fio ou até mesmo a nossa pele para enviar um sinal ao micro:bit.

Como funciona?

  • O micro:bit mede a capacitância do pino
  • Quando tocamos o fio, a capacitância muda
  • Essa mudança é medida pelo micro:bit e convertida em um valor numérico (0 a 1023)
  • Quanto maior o contato (mais área de pele), maior a mudança na capacitância

Passo 2: Conexão Simples do Sensor de Toque

Conexão Básica (apenas fio):

  • Conecte um fio jumper ao pino P0 do micro:bit
  • A outra ponta do fio ficará "solta" (sem conexão)
  • O aluno tocará nela para ativar o sensor

Conexão com LED de Calibração (opcional - recomendado):

  • LED: ânodo (perna longa) → pino P2
  • LED: cátodo (perna curta) → resistor 220Ω → GND

Passo 3: Teste de Funcionamento

Teste Manual (sem código):

  1. Conecte o fio ao pino P0
  2. Toque o fio com o dedo
  3. O micro:bit deve detectar o toque (se programado)

Esquema de Conexão:

+------------------------------------------------------------------+
|                             MICRO:BIT                             |
|                                                                  |
|  P0 +-------- FIO SOLTO (SENSOR DE TOQUE)                        |
|  P1 +-------- (NÃO UTILIZADO)                                    |
|  P2 +-------- LED CALIBRAÇÃO (+)                                 |
|  GND +-------- LED CALIBRAÇÃO (-) através do resistor            |
|  GND +-------- FIO SOLTO (completa o circuito)                   |
|                                                                  |
+------------------------------------------------------------------+

Passo 4: Configuração do Sensor no Código

No MakeCode, usamos:

  • pins.analogReadPin(AnalogPin.P0) para ler o valor do sensor (0-1023)
  • Ou o bloco pino P0 é tocado? para detecção digital (toque/não toque)

Para este projeto, usaremos analogReadPin() para obter valores mais precisos.

💻 Código Micro:bit (Completo e Didático)
// ==============================================================
// PROJETO: DETECTOR DE MENTIRAS
// DESCRIÇÃO: O micro:bit "detecta" se você está mentindo usando
// um sensor de toque capacitivo.
// AUTOR: Equipe Robô na Veia
// VERSÃO: 1.0
// ==============================================================

// ==============================================================
// 1. VARIÁVEIS GLOBAIS
// ==============================================================

// A variável 'calibracao' armazena o valor de referência do sensor
// Este valor é lido quando a pessoa está em estado "neutro"
// Inicialmente zero, será atualizada pela função calibrar()
let calibracao = 0

// A variável 'limiar' define o que é considerado "verdade" ou "mentira"
// Quanto menor o limiar, mais sensível o detector (detecta variações pequenas)
// O valor 80 é um valor empírico que funciona bem na prática
let limiar = 80

// Flag para indicar se o sensor foi calibrado
// Usamos um booleano para controlar se a calibração já foi feita
// Inicialmente false, pois ainda não calibramos
let calibrado = false

// ==============================================================
// 2. FUNÇÃO DE CALIBRAÇÃO
// ==============================================================

/*
Função que calibra o sensor para a pessoa atual.
Deve ser chamada quando a pessoa está em estado "neutro"
(sem estresse, sem mentir).
*/
function calibrar() {
  // Lê o valor do sensor no pino P0 (0 a 1023)
  // A função analogReadPin() retorna um valor inteiro de 0 a 1023,
  // que representa a tensão no pino (0V a 3.3V). No caso do sensor
  // capacitivo, quanto maior a área de contato da pele (ou umidade),
  // maior a capacitância e, consequentemente, maior o valor lido.
  calibracao = pins.analogReadPin(AnalogPin.P0)

  // Marca que o sensor foi calibrado, alterando a flag para true
  // Isso permitirá que a função detectarMentira() funcione corretamente
  calibrado = true

  // Acende o LED de calibração (P2) para indicar que está pronto
  // O pino P2 é configurado como saída digital. Colocamos em nível ALTO (1)
  // para acender um LED externo (se conectado) ou podemos usar o LED interno
  // da placa, mas aqui usamos um pino genérico para sinalização externa.
  pins.digitalWritePin(DigitalPin.P2, 1)

  // Mostra um "V" (check) na matriz de LEDs para indicar calibração bem-sucedida
  // A função showIcon() exibe um ícone pré-definido na matriz 5x5
  basic.showIcon(IconNames.Yes)
  // Aguarda 500 milissegundos para que o usuário veja o ícone
  basic.pause(500)
  // Limpa a tela (matriz de LEDs) apagando todos os LEDs
  basic.clearScreen()

  // Mostra o valor calibrado no display (opcional)
  // Concatenação com string vazia para converter número em string
  basic.showString("" + calibracao)
  // Pausa para leitura do valor exibido
  basic.pause(500)
  // Limpa a tela novamente
  basic.clearScreen()
}

// ==============================================================
// 3. FUNÇÃO PARA "DETECTAR MENTIRA"
// ==============================================================

/*
Função principal do detector de mentiras.
Compara o valor atual do sensor com o valor calibrado.
Se a diferença for grande, considera-se "mentira".
*/
function detectarMentira() {
  // Verifica se o sensor foi calibrado
  // Se a flag calibrado for false, significa que a calibração ainda não foi feita
  if (!calibrado) {
    // Se não foi calibrado, pede para calibrar exibindo a mensagem "CALIBRE"
    basic.showString("CALIBRE")
    // Pausa para leitura da mensagem
    basic.pause(500)
    // Limpa a tela e sai da função (return)
    basic.clearScreen()
    return
  }

  // Lê o valor atual do sensor no pino P0
  // Este valor representa a resposta do sensor no momento da leitura
  let valorAtual = pins.analogReadPin(AnalogPin.P0)

  // Calcula a diferença entre o valor atual e o valor calibrado
  // Usamos Math.abs() para obter o valor absoluto (ignora o sinal)
  // Ou seja, se valorAtual for maior ou menor que calibracao, a diferença será positiva
  // Isso é importante porque a variação pode ser para mais ou para menos,
  // mas queremos apenas a magnitude da mudança.
  let diferenca = Math.abs(valorAtual - calibracao)

  // ==========================================================
  // LÓGICA CONDICIONAL - O CORAÇÃO DO DETECTOR DE MENTIRAS
  // ==========================================================

  // Se a diferença for maior que o limiar, é "mentira"
  // O limiar é um valor de tolerância: se a variação for pequena, consideramos verdade;
  // se for grande, consideramos mentira.
  if (diferenca > limiar) {
    // ---------- MENTIRA! ----------
    // Feedback: X vermelho + som grave
    // Mostra um "X" na matriz de LEDs (vermelho) - ícone de "não"
    basic.showIcon(IconNames.No)

    // Toca um som grave (frequência baixa) para indicar mentira
    // A função playTone() gera um tom com a frequência especificada (em Hz)
    // e duração em milissegundos. 200 Hz é um som grave e "pesado".
    music.playTone(200, 500)

    // Pisca o LED de calibração (P2) para indicar que algo está errado
    // Loop para piscar 3 vezes
    for (let i = 0; i < 3; i++) {
      // Apaga o LED (nível baixo)
      pins.digitalWritePin(DigitalPin.P2, 0)
      // Aguarda 100 ms
      basic.pause(100)
      // Acende o LED (nível alto)
      pins.digitalWritePin(DigitalPin.P2, 1)
      // Aguarda 100 ms
      basic.pause(100)
    }

    // Mostra o valor da diferença no display (opcional)
    // Útil para depuração e para o usuário ver o quanto variou
    basic.showString("D:" + diferenca)
    basic.pause(500)
    basic.clearScreen()
  } else {
    // ---------- VERDADE! ----------
    // Feedback: V (check) + som agudo
    // Mostra um "V" (check) na matriz de LEDs (verde) - ícone de "sim"
    basic.showIcon(IconNames.Yes)

    // Toca um som agudo (frequência alta) para indicar verdade
    // 800 Hz é um som mais agudo e "alegre"
    music.playTone(800, 500)

    // Mostra o valor da diferença no display (opcional)
    basic.showString("D:" + diferenca)
    basic.pause(500)
    basic.clearScreen()
  }

  // Pequena pausa antes de limpar a tela completamente
  basic.pause(1000)
  basic.clearScreen()
}

// ==============================================================
// 4. FUNÇÃO PARA RESETAR A CALIBRAÇÃO
// ==============================================================

/*
Função que reseta a calibração, permitindo calibrar para outra pessoa.
*/
function resetarCalibracao() {
  // Muda a flag para false, indicando que o sensor não está mais calibrado
  calibrado = false
  // Apaga o LED de calibração (P2) para indicar que a calibração foi perdida
  pins.digitalWritePin(DigitalPin.P2, 0)
  // Exibe a mensagem "RESET" na matriz
  basic.showString("RESET")
  // Pausa para visualização
  basic.pause(500)
  // Limpa a tela
  basic.clearScreen()
}

// ==============================================================
// 5. FUNÇÃO PARA AJUSTAR O LIMIAR
// ==============================================================

/*
Função que ajusta a sensibilidade do detector.
Quanto menor o limiar, mais sensível (mais "mentiras" são detectadas).
*/
function ajustarLimiar(direcao: number) {
  // direcao: 1 = aumentar (menos sensível), -1 = diminuir (mais sensível)
  // Multiplicamos direcao por 10 para fazer ajustes de 10 em 10
  limiar = limiar + (direcao * 10)

  // Garante que o limiar não fique negativo ou muito alto
  // Definimos limites mínimo de 10 e máximo de 200 para evitar valores extremos
  if (limiar < 10) {
    limiar = 10
  } else if (limiar > 200) {
    limiar = 200
  }

  // Mostra o novo limiar na matriz de LEDs para o usuário saber o valor atual
  basic.showString("L:" + limiar)
  // Pausa para leitura
  basic.pause(500)
  // Limpa a tela
  basic.clearScreen()
}

// ==============================================================
// 6. CONTROLE POR BOTÕES
// ==============================================================

// Botão A: Calibrar o sensor
// O usuário deve estar em estado "neutro" e tocar o sensor
// Quando o botão A for pressionado, chama a função calibrar()
input.onButtonPressed(Button.A, function () {
  calibrar()
})

// Botão B: Detectar mentira
// O usuário toca o sensor e o micro:bit decide se é verdade ou mentira
// Quando o botão B for pressionado, chama a função detectarMentira()
input.onButtonPressed(Button.B, function () {
  detectarMentira()
})

// Botão A+B: Resetar a calibração
// Quando ambos os botões forem pressionados simultaneamente, reseta a calibração
input.onButtonPressed(Button.AB, function () {
  resetarCalibracao()
})

// ==============================================================
// 7. INICIALIZAÇÃO
// ==============================================================

// Quando o micro:bit é ligado (ou reiniciado), o bloco "on start" é executado
// Mostra uma mensagem de boas-vindas na matriz de LEDs
basic.showString("DETECTOR")
// Pausa para leitura
basic.pause(500)
// Limpa a tela
basic.clearScreen()

// Mostra instruções para o usuário: como calibrar
basic.showString("A=CALIBRAR")
// Pausa para leitura
basic.pause(1000)
// Limpa a tela
basic.clearScreen()

// Mostra instruções para o usuário: como detectar
basic.showString("B=DETECTAR")
// Pausa para leitura
basic.pause(1000)
// Limpa a tela
basic.clearScreen()

// Mostra instruções para o usuário: como resetar
basic.showString("AB=RESET")
// Pausa para leitura
basic.pause(1000)
// Limpa a tela
basic.clearScreen()

Explicação do Código em Blocos (para alunos iniciantes)

Para facilitar a compreensão, aqui estão as principais partes em blocos:

  1. Calibrar (Botão A):
    • ler analógico pino P0definir calibracao
    • mostrar ícone simpausar 500mslimpar tela
  2. Detectar Mentira (Botão B):
    • ler analógico pino P0definir valorAtual
    • calcular diferença = |valorAtual - calibracao|
    • se diferença > limiarmostrar ícone não + tocar som grave
    • senãomostrar ícone sim + tocar som agudo
  3. Resetar (Botões A+B):
    • definir calibrado = falso
    • mostrar string "RESET"
⏱️ Detalhamento Minuto a Minuto (50 min)
0-5 min
Aquecimento "Será que você está mentindo?" - Professor: "Vocês já viram um detector de mentiras em filmes? Hoje, vocês vão construir um com o micro:bit. Mas calma, ele não é 100% preciso... ou será que é?" Discussão: O que é uma mentira? Por que as pessoas mentem? Como um detector de mentiras funciona?
5-10 min
Explicação do Sensor de Toque - Professor explica o sensor de toque capacitivo: "O micro:bit mede a capacitância do pino. Quando tocamos o fio, a capacitância muda. Essa mudança é medida e convertida em um número." Demonstrar como a condutividade da pele funciona.
10-15 min
Montagem do Hardware - Alunos conectam o fio ao pino P0 e o LED de calibração ao pino P2 (opcional). Verificar todas as conexões.
15-30 min
Programação do Código - Alunos digitam o código no MakeCode. Professor explica cada parte: calibração, leitura do sensor, lógica if/else, feedback visual e sonoro. Destaque para a lógica condicional.
30-40 min
Teste e Calibração - Cada equipe testa o detector. Desafio: calibrar o sensor para diferentes pessoas e observar os diferentes valores. Ajustar o limiar para cada pessoa.
40-45 min
Desafios Extras - Alunos que terminaram podem: 1) Adicionar um "modo de precisão" com múltiplos níveis (pouca mentira, mentira média, grande mentira), 2) Criar uma animação na matriz de LEDs para cada nível.
45-50 min
Registro no Diário de Bordo - Perguntas: 1) "Como funciona o sensor de toque do micro:bit?" 2) "O que é calibração e por que ela é importante?" 3) "Qual a diferença entre if e else?" 4) "Desenhe o diagrama do fluxo de decisão do detector."
♿ Orientações para Adaptações e Inclusão
Adaptação Necessidade
Fornecer um roteiro visual com os passos. Usar um cronômetro visual para cada etapa. TEA
Dividir a programação em partes com timer: 5 min para variáveis, 5 min para calibração, 5 min para o if/else. TDAH
O aluno pode descrever o funcionamento oralmente. Usar o som do buzzer como feedback principal. Deficiência Visual
O buzzer pode ser substituído por feedback visual intenso (piscar rápido da matriz de LEDs). Deficiência Auditiva
Desafiar o aluno a: 1) Criar um detector com múltiplos sensores, 2) Implementar um sistema de "treinamento" onde o micro:bit aprende os padrões da pessoa, 3) Criar um gráfico dos valores do sensor. Altas Habilidades
📊 Critérios Operacionais de Avaliação (com pontuação)
Critério Pontuação Máxima Indicadores
O sensor foi conectado corretamente? O LED de calibração funciona? 15 pts Montagem do hardware
O detector funciona como esperado? (calibração → detecção → feedback) 25 pts Funcionamento do código
O aluno explica o funcionamento do if/else e a diferença entre verdade e mentira? 20 pts Compreensão da lógica condicional
O aluno conseguiu calibrar o sensor para diferentes pessoas e ajustar o limiar? 20 pts Calibração e ajuste de limiar
As respostas são completas e reflexivas? 10 pts Registro no Diário
O aluno adicionou elementos extras (animações, sons, modos)? 10 pts Criatividade
TOTAL 100 pts
Frase do dia: "A verdade é um número. A mentira é outro. O detector não julga, só compara. Quem decide é você."

🎯 Objetivos Operacionais
  • Realizar a feira de robótica para os colegas de outras turmas (2º ao 4º ano e 6º ao 9º, se houver), apresentando os robôs e explicando as soluções criadas.
  • Demonstrar os robôs em funcionamento (Semáforo e Detector de Mentiras), respondendo a perguntas e interagindo com o público escolar.
  • Coletar feedback do público escolar por meio de formulários ou "passaporte da feira", registrando as impressões dos visitantes.
  • Gerenciar a logística de visitação, garantindo que todos os estandes sejam visitados e que as apresentações aconteçam dentro do tempo previsto.
  • Utilizar a sinalização "Aberto/Fechado" (programada na semana anterior) para controlar o fluxo de visitantes em cada estande.
  • Desenvolver habilidades de comunicação científica, explicando conceitos técnicos de forma acessível para diferentes públicos.
📚 Conteúdo Programático

Exposição Pública:

  • Apresentação para diferentes públicos (colegas de outras idades)
  • Adaptação da linguagem para diferentes níveis de conhecimento
  • Uso de recursos visuais (pôsteres, diagramas, demonstrações)

Comunicação Científica:

  • Como explicar conceitos técnicos de forma acessível
  • Uso de analogias para facilitar a compreensão
  • Como responder perguntas com clareza e segurança

Feedback e Avaliação:

  • Coleta de dados sobre a compreensão do público
  • Análise de formulários de feedback
  • Reflexão sobre a eficácia da comunicação

Gestão de Tempo e Logística:

  • Organizar a visitação em fluxo contínuo
  • Rodízio de atendimento entre os membros da equipe
  • Controle do tempo de cada apresentação

Demonstração de Hardware:

  • Apresentar o funcionamento dos robôs ao vivo
  • Explicar cada componente e sua função
  • Mostrar o código e explicar a lógica
📋 Habilidades BNCC e RCP-PR
Descrição Código
Apresentar oralmente para diferentes públicos, considerando a situação comunicativa EF05LP17 - BNCC Língua Portuguesa
Ouvir e compreender apresentações orais, identificando informações principais EF35LP11 - BNCC Língua Portuguesa
Demonstrar protótipo em condições reais, observando seu funcionamento EF05CI01 - BNCC Ciências
Interpretar dados estatísticos (análise de feedback dos visitantes) EF05MA24 - BNCC Matemática
Realizar pesquisa envolvendo variáveis categóricas (formulários de feedback) EF05MA25 - BNCC Matemática
Exposição pública de projetos científicos Comunicação Científica - RCP-PR
Apresentação pública com confiança e entusiasmo Autoria e Protagonismo - RCP-PR
Uso de linguagens digital e visual na comunicação Competência 4 - RCP-PR
Expressar-se com clareza e adaptar a linguagem ao público Comunicação - CG-BNCC
🛠️ Materiais

Estandes:

Mesas para cada equipe Cavaletes ou suportes para fixar pôsteres Fita adesiva dupla-face, crepe Enfeites temáticos (balões, luzes de LED)

Robôs:

Micro:bit + matriz de LEDs + LEDs + resistores + buzzer (Semáforo) Micro:bit + sensor de toque (Detector de Mentiras) Pilhas extras (muitas!) Cabo USB para reprogramação de emergência

Para o Público:

Formulários de feedback (impressos) Passaporte da feira (para carimbar) - opcional Urna para votação do "Robô Preferido da Escola" - opcional Lembrancinhas (adesivos, marcadores de página)

Para a Logística:

Cronograma de visitação (impresso e afixado na entrada) Placas de sinalização: "Entrada", "Saída", "Estande A", "Estande B", etc. Câmera ou celular para fotos e vídeos Cronômetro para controle de tempo

Sinalização com LEDs "Aberto/Fechado" (da Semana 34):

Micro:bit programado com a sinalização LEDs vermelho e verde indicando estado do estande
🔧 Montagem do Hardware

Checklist de Manhã (antes da feira):

Verificado (✅) Item
Todos os robôs ligam?
As pilhas estão carregadas? (pilhas extras à mão)
Os LEDs do semáforo acendem na sequência correta?
O buzzer do semáforo emite os sons corretos?
O sensor de toque do Detector responde?
O Detector mostra "X" e "✓" na matriz?
A sinalização "Aberto/Fechado" está funcionando?
Os pôsteres estão fixados e legíveis?
Os manuais estão no estande?
As lembrancinhas estão organizadas?
Formulários de feedback estão disponíveis?
Cronômetro está pronto?
💻 Código Micro:bit

Códigos presentes em cada estande:

  1. Semáforo Sonoro (com Modo Noturno) - da Semana 33
  2. Detector de Mentiras (com calibração) - da Semana 34
  3. Sinalização de Estande (Aberto/Fechado) - da Semana 34

Código da Sinalização de Estande (revisão):

// ==============================================================
// PROJETO: SINALIZAÇÃO DE ESTANDE ABERTO/FECHADO
// DESCRIÇÃO: Controla LEDs para indicar se o estande está aberto
// AUTOR: Equipe Robô na Veia
// ==============================================================
// 
// Este programa é destinado ao micro:bit e utiliza a plataforma MakeCode.
// O objetivo é simular a sinalização de um estande (ex: em uma feira)
// utilizando dois LEDs externos (verde e vermelho) conectados aos pinos
// P1 e P3, respectivamente. Quando o estande está aberto, o LED verde
// acende e o vermelho apaga, e a matriz de LEDs do micro:bit exibe um
// ícone de "sim" (checkmark). Quando fechado, o LED vermelho acende,
// o verde apaga e a matriz exibe um ícone de "não" (X). Os botões A e B
// permitem alternar entre os estados, e um tom sonoro é reproduzido
// para feedback auditivo.
// 
// Hardware necessário:
// - Micro:bit
// - Dois LEDs com resistores adequados conectados aos pinos P1 (verde) e P3 (vermelho)
// - (Opcional) Alto-falante ou buzzer no pino 0 (padrão para music.playTone)
//
// ==============================================================

// Declaração da variável global que armazena o estado atual do estande.
// 'true' significa aberto, 'false' significa fechado.
// Inicializamos com 'true' (aberto) mas depois será redefinida.
let estandeAberto = true

// ==============================================================
// FUNÇÃO: atualizarSinalizacao()
// DESCRIÇÃO: Atualiza os LEDs externos e a matriz de LEDs do micro:bit
// com base no estado atual (estandeAberto).
// Esta função é chamada sempre que o estado muda.
// ==============================================================
function atualizarSinalizacao() {
  // Verifica se o estande está aberto
  if (estandeAberto) {
    // === ESTANDE ABERTO ===
    // Acende o LED verde conectado ao pino P1 (nível lógico alto = 1)
    // O pino P1 é configurado como saída digital.
    pins.digitalWritePin(DigitalPin.P1, 1) // Verde aceso
    // Apaga o LED vermelho conectado ao pino P3 (nível lógico baixo = 0)
    pins.digitalWritePin(DigitalPin.P3, 0) // Vermelho apagado
    // Exibe na matriz de LEDs do micro:bit um ícone de "sim" (checkmark)
    // A função showIcon() exibe o ícone por padrão por 1500ms, mas como
    // não há pause, ele fica visível até que outro ícone seja exibido ou a tela limpa.
    basic.showIcon(IconNames.Yes)
  } else {
    // === ESTANDE FECHADO ===
    // Apaga o LED verde (pino P1)
    pins.digitalWritePin(DigitalPin.P1, 0) // Verde apagado
    // Acende o LED vermelho (pino P3)
    pins.digitalWritePin(DigitalPin.P3, 1) // Vermelho aceso
    // Exibe na matriz de LEDs um ícone de "não" (X)
    basic.showIcon(IconNames.No)
  }
  // Nota: A função não retorna nenhum valor; apenas atualiza os dispositivos de saída.
}

// ==============================================================
// EVENTO: Botão A pressionado
// DESCRIÇÃO: Quando o botão A é pressionado, o estande é aberto.
// ==============================================================
input.onButtonPressed(Button.A, function () {
  // Altera a variável global para 'true' (aberto)
  estandeAberto = true
  // Chama a função que atualiza a sinalização (LEDs e ícone)
  atualizarSinalizacao()
  // Reproduz um tom de 800 Hz por 200 milissegundos no alto-falante/buzzer
  // O pino padrão para áudio no micro:bit é o pino 0.
  music.playTone(800, 200)
})

// ==============================================================
// EVENTO: Botão B pressionado
// DESCRIÇÃO: Quando o botão B é pressionado, o estande é fechado.
// ==============================================================
input.onButtonPressed(Button.B, function () {
  // Altera a variável global para 'false' (fechado)
  estandeAberto = false
  // Chama a função que atualiza a sinalização
  atualizarSinalizacao()
  // Reproduz um tom de 300 Hz por 200 ms (tom mais grave para indicar fechamento)
  music.playTone(300, 200)
})

// ==============================================================
// INICIALIZAÇÃO DO PROGRAMA
// O código abaixo é executado quando o micro:bit é ligado ou reiniciado.
// ==============================================================

// Garantimos que o estado inicial seja 'true' (aberto) – redundante, pois já foi
// definido no início, mas reforça a inicialização.
estandeAberto = true
// Chama a função para configurar os LEDs e o ícone conforme o estado inicial.
atualizarSinalizacao()

// Exibe a palavra "FEIRA" na matriz de LEDs, uma letra por vez, com rolamento.
// A função showString() exibe uma mensagem de texto na tela, percorrendo
// caracteres e com um atraso padrão de 150ms entre eles.
basic.showString("FEIRA")

// Pausa a execução por 500 milissegundos (meio segundo) para que a mensagem
// "FEIRA" seja completamente exibida e visualizada antes de limpar a tela.
basic.pause(500)

// Limpa a tela (matriz de LEDs) para remover qualquer resíduo da mensagem.
// Após isso, a tela mostrará apenas o ícone definido pela última chamada de
// showIcon() (que foi executada em atualizarSinalizacao()).
basic.clearScreen()

// ==============================================================
// FIM DO PROGRAMA
// A partir daqui, o micro:bit fica em loop aguardando eventos (botões)
// e mantendo a sinalização atualizada.
// ==============================================================
⏱️ Detalhamento Minuto a Minuto (Modelo para 2 horas de feira)
0-15 min
Preparação Final - Equipes chegam, ligam os robôs, testam novamente. Professor faz uma última verificação em cada estande. Distribuir as fichas de feedback e os passaportes. Momento de motivação: "Pessoal, hoje é o dia! Vocês construíram, programaram, testaram, ensaiaram. Agora é só brilhar!"
15-105 min
Visitação (6 turmas de 15 min) - Cada turma entra e recebe uma breve explicação do professor (1 min). Alunos circulam pelos estandes livremente. Cada equipe apresenta repetidamente (a cada 2-3 minutos, um novo visitante ou grupo). Visitantes preenchem formulários ou carimbam o passaporte. Professor circula entre os estandes, tira fotos, ajuda em emergências técnicas, incentiva alunos tímidos.
105-120 min
Encerramento do Dia 1 - Desligar os robôs. Guardar itens valiosos (pilhas, micro:bits). Roda de conversa rápida: "O que correu bem hoje? O que podemos melhorar para amanhã (para as famílias)?" Anotar as respostas no quadro.

Formulário de Feedback (para os visitantes):

Pergunta Resposta
Qual estande você mais gostou? ______________________
O que você mais gostou na feira? ______________________
Você entendeu o problema que o robô resolve? ( ) Sim ( ) Não ( ) Mais ou menos
Você gostaria de fazer robótica no próximo ano? ( ) Sim ( ) Não ( ) Talvez
Deixe uma mensagem para os expositores: ______________________
📊 Critérios Operacionais de Avaliação (com pontuação)
Critério Pontuação Máxima Indicadores
O robô funcionou corretamente durante toda a visitação? 25 pts Funcionamento do robô
O público entendeu o problema e a solução? 20 pts Clareza da apresentação
A equipe foi cordial, respondeu perguntas com clareza? 20 pts Atendimento ao público
O estande estava organizado, com materiais acessíveis, pôster visível? 15 pts Organização do estande
A sinalização "Aberto/Fechado" foi usada corretamente? 10 pts Uso da sinalização
As reflexões sobre o dia são completas? 10 pts Registro no Diário
TOTAL 100 pts
Frase do dia: "Hoje o palco é a escola. Amanhã o palco é o mundo. Mostre seu robô, mostre sua alma."

🎯 Objetivos Operacionais
  • Receber pais, mães, avós e responsáveis com acolhimento e entusiasmo, criando um ambiente de celebração.
  • Apresentar os robôs com ainda mais carinho e detalhes, adaptando a linguagem para um público leigo (não técnico).
  • Demonstrar o funcionamento dos robôs de forma clara e emocionante, usando analogias e exemplos do dia a dia.
  • Celebrar as conquistas do ano com uma cerimônia simbólica de premiação e um lanche coletivo.
  • Criar memórias afetivas por meio de fotos, certificados e momentos de confraternização.
  • Utilizar a sinalização "Aberto/Fechado" para gerenciar o fluxo de famílias.
📚 Conteúdo Programático

Comunicação para Público Leigo:

  • Adaptar a linguagem técnica para famílias (sem jargões)
  • Usar analogias com situações do cotidiano
  • Explicar o "porquê" das escolhas técnicas

Celebração e Rito de Passagem:

  • Cerimônia de premiação e entrega de certificados
  • Ritos de passagem: marcar a transição para o 6º ano
  • Reconhecimento do esforço e das conquistas

Empatia e Acolhimento:

  • Receber as famílias com respeito e carinho
  • Saber ouvir e responder com paciência
  • Criar um ambiente onde todos se sintam bem-vindos

Confraternização:

  • Lanche coletivo como momento de integração
  • Fotografias para registro das memórias
  • Música e celebração
📋 Habilidades BNCC e RCP-PR
Descrição Código
Apresentar oralmente para público leigo, adaptando a linguagem EF05LP17 - BNCC Língua Portuguesa
Ouvir e compreender apresentações orais, valorizando o esforço dos colegas EF35LP11 - BNCC Língua Portuguesa
Interpretar dados estatísticos (satisfação das famílias) EF05MA24 - BNCC Matemática
Realizar pesquisa envolvendo variáveis categóricas (formulário de satisfação) EF05MA25 - BNCC Matemática
Agir com empatia e respeito - acolher as famílias com gentileza Competência 10 - BNCC Socioemocional
Expressão artística - músicas, teatro, decoração para a cerimônia EF05AR04 - BNCC Artes
Exposição pública para famílias Comunicação Científica - RCP-PR
Celebração de conquistas Autoria e Protagonismo - RCP-PR
Respeitar o outro e suas diferentes formas de compreensão Empatia - CG-BNCC
🛠️ Materiais

Estandes:

Mesmos do dia 1 (ajustados com base no feedback)

Robôs:

Mesmos do dia 1 (com pilhas extras)

Para as Famílias:

Convite formal impresso (enviado previamente) ou lembretes por aplicativo Formulários de satisfação para as famílias (opcional) Câmera para fotos de família com os alunos e robôs Certificados de participação (já impressos)

Confraternização:

Lanche coletivo: cada família pode trazer um quitute Bolo ou cupcakes (opcional) Bebidas (suco, água) Copos, pratos, guardanapos descartáveis

Cerimônia:

Certificados especiais (impressos e organizados em pastas) "Mouse de Ouro" (um mouse velho pintado de dourado) Caixa de som para música de fundo Projetor para exibição de vídeo (opcional)
🔧 Montagem do Hardware

Checklist de Manhã:

Verificado (✅) Item
Todos os robôs ligam?
Pilhas extras disponíveis?
Estandes organizados?
Pôsteres fixados e legíveis?
Lembrancinhas prontas?
Sinalização "Aberto/Fechado" funcionando?
Certificados organizados?
Lanche pronto?
💻 Código Micro:bit

Códigos carregados em cada estande:

  1. Semáforo Sonoro (com Modo Noturno)
  2. Detector de Mentiras (com calibração)
  3. Sinalização de Estande (Aberto/Fechado)
⏱️ Detalhamento Minuto a Minuto (Modelo para 1h30 de evento)
0-15 min
Abertura e Recepção - Professor recebe as famílias na entrada, com um sorriso. Explica brevemente: "Durante todo o ano, seus filhos aprenderam a programar o micro:bit, criaram robôs que resolvem problemas reais e agora vão mostrar para vocês." Alunos ficam nos estandes, prontos para receber. Música de fundo alegre.
15-75 min
Visitação Livre - Famílias circulam livremente pelos estandes. Cada aluno apresenta com orgulho para seus pais e familiares. É o momento de brilhar! Dicas para os alunos: "Olhem nos olhos das pessoas", "Mostrem o robô funcionando", "Contem a história do projeto." Professor circula, tira fotos, ajuda em emergências, incentiva alunos nervosos.
75-85 min
Cerimônia de Premiação - Professor chama todos para o centro. Entrega certificados individuais chamando cada aluno pelo nome. Entregar certificados especiais: Mestre dos Sensores, Caçador de Bugs Lendário, Embaixador da Robótica. Momento surpresa: entrega do "Mouse de Ouro" para a equipe mais criativa.
85-90 min
Encerramento e Foto - Todos os alunos, professores e famílias juntos para foto coletiva. Gritar "Robótica!" e tirar foto. Anunciar o lanche.
90-120 min
Lanche e Confraternização - Famílias compartilham os quitutes trazidos. Alunos conversam com as famílias, mostram os diários de bordo. Professor tira mais fotos e conversa com os pais.

Certificados Especiais:

Quem recebe? Certificado
Todos os alunos (certificado base) Arquiteto de Software 5º ano
Destaque em construção e calibração de sensores Mestre dos Sensores
Destaque em depuração e resolução de problemas Caçador de Bugs Lendário
Destaque em apresentação e comunicação Embaixador da Robótica
Equipe mais criativa (votação entre professores) Mouse de Ouro
📊 Critérios Operacionais de Avaliação (com pontuação)
Critério Pontuação Máxima Indicadores
O robô funcionou corretamente durante toda a visitação? 25 pts Funcionamento do robô
As famílias entenderam o problema e a solução? 20 pts Clareza para público leigo
A equipe foi acolhedora, olhou nos olhos, demonstrou entusiasmo? 20 pts Atendimento e empatia
O estande estava organizado, com pôster visível? 15 pts Apresentação do estande
A equipe participou da cerimônia com entusiasmo? 10 pts Participação na cerimônia
A equipe interagiu com as famílias e colegas de forma respeitosa? 10 pts Confraternização
TOTAL 100 pts
Frase do dia: "O maior prêmio não é o mouse de ouro. É ver o brilho nos olhos de quem ama a gente. Robôs vêm e vão. O amor fica."

🎯 Objetivos Operacionais
  • Refletir sobre o desempenho individual e coletivo durante a feira, identificando pontos fortes e áreas de melhoria.
  • Avaliar os colegas de forma construtiva, usando critérios claros e respeitosos.
  • Analisar criticamente o código-fonte dos projetos desenvolvidos (Semáforo e Detector de Mentiras), identificando bugs e oportunidades de otimização.
  • Reconhecer as conquistas pessoais e coletivas ao longo do ano letivo, celebrando o crescimento de cada um.
  • Desenvolver a metacognição, compreendendo como o aprendizado em robótica impactou outras áreas da vida.
  • Programar uma melhoria no código do Detector de Mentiras, adicionando um LED que acende quando o sensor é calibrado.
📚 Conteúdo Programático

Autoavaliação:

  • Reflexão sobre desempenho, esforço, aprendizado e superação
  • Identificação de pontos fortes e áreas de melhoria
  • Reconhecimento do próprio crescimento

Avaliação por Pares:

  • Feedback construtivo: como dar e receber críticas
  • Respeito e empatia na avaliação do outro
  • Critérios claros para avaliação

Metacognição:

  • Pensar sobre o próprio pensamento e aprendizado
  • Como o aprendizado em robótica se conecta com outras áreas
  • Estratégias de aprendizado para o futuro

Revisão de Código:

  • Analisar código para encontrar bugs
  • Identificar oportunidades de melhoria (refatoração)
  • Documentar problemas e soluções

Aprimoramento de Código:

  • Adicionar novas funcionalidades a um projeto existente
  • Testar e validar as alterações
  • Documentar as mudanças
📋 Habilidades BNCC e RCP-PR
Descrição Código
Relatar experiências - produzir texto narrativo e reflexivo EF05LP10 - BNCC Língua Portuguesa
Produzir textos com coesão e coerência (relatos e documentação) EF05LP07 - BNCC Língua Portuguesa
Ouvir e compreender apresentações orais (roda de conversa) EF35LP11 - BNCC Língua Portuguesa
Interpretar dados estatísticos (análise de autoavaliação) EF05MA24 - BNCC Matemática
Realizar pesquisa envolvendo variáveis categóricas (avaliação por pares) EF05MA25 - BNCC Matemática
Explorar fenômenos da vida cotidiana - propriedades físicas dos materiais EF05CI01 - BNCC Ciências
Autoavaliação e reconhecimento do próprio crescimento Autoria - RCP-PR
Autoconhecimento - conhecer-se e cuidar de si Competência 8 - RCP-PR
Conhecer-se e cuidar de si, reconhecendo suas emoções e aprendizados Autoconhecimento - CG-BNCC
🛠️ Materiais
Formulários de autoavaliação (1 por aluno) Formulários de avaliação por pares (1 por aluno ou por equipe) Cópias dos certificados já entregues Fotos da feira (projetadas em tela ou impressas) Diários de bordo do ano inteiro (para consulta) Envelopes para as cartas do futuro Computadores com o código dos projetos abertos Micro:bits com os projetos carregados (para teste)
💻 Código Micro:bit

Código do Detector de Mentiras com LED de Calibração (melhoria):

// ==============================================================
// PROJETO: DETECTOR DE MENTIRAS COM LED DE CALIBRAÇÃO
// DESCRIÇÃO: O micro:bit "detecta" se você está mentindo e
// acende um LED quando calibrado.
// AUTOR: Equipe Robô na Veia
// VERSÃO: 2.0 (com LED de Calibração)
// ==============================================================

// ==============================================================
// 1. VARIÁVEIS GLOBAIS
// ==============================================================

// Variável que armazenará o valor de referência lido do sensor
// durante a calibração. Esse valor será usado como base para
// comparar as leituras futuras.
let calibracao = 0

// Limiar (ou sensibilidade) que define o quanto a leitura atual
// pode se desviar do valor de calibração para considerarmos uma
// "mentira". Quanto menor o valor, mais sensível será o detector.
let limiar = 80

// Flag booleana que indica se o processo de calibração já foi
// realizado. Inicia como 'false' (não calibrado) e muda para
// 'true' após a calibração.
let calibrado = false

// ==============================================================
// 2. FUNÇÃO DE CALIBRAÇÃO
// ==============================================================

// Esta função deve ser executada para definir o valor de referência
// do sensor. Ela lê o pino analógico P0 e armazena esse valor.
function calibrar() {
  // Lê o valor analógico (0 a 1023) do sensor conectado ao pino P0
  // e armazena na variável global 'calibracao'.
  calibracao = pins.analogReadPin(AnalogPin.P0)

  // Muda a flag 'calibrado' para 'true', indicando que a calibração
  // foi concluída com sucesso.
  calibrado = true

  // Acende o LED de calibração conectado ao pino digital P2.
  // Esse LED serve como indicador visual de que a calibração
  // está ativa e o sistema pronto para detectar mentiras.
  pins.digitalWritePin(DigitalPin.P2, 1)

  // Exibe um ícone de "sim" (check) na matriz de LEDs do micro:bit
  // para confirmar visualmente que a calibração foi bem-sucedida.
  basic.showIcon(IconNames.Yes)

  // Aguarda 500 milissegundos (meio segundo) para que o usuário
  // possa ver o ícone e o LED aceso.
  basic.pause(500)

  // Limpa a tela (matriz de LEDs), apagando o ícone exibido.
  basic.clearScreen()
}

// ==============================================================
// 3. FUNÇÃO PARA "DETECTAR MENTIRA"
// ==============================================================

// Esta é a função principal que compara a leitura atual com a
// calibração e decide se é "verdade" ou "mentira".
function detectarMentira() {
  // Primeiro, verifica se o sensor já foi calibrado.
  // Se 'calibrado' for 'false', o sistema ainda não tem um valor
  // de referência, então não pode fazer a detecção.
  if (!calibrado) {
    // Mostra a palavra "CALIBRE" na matriz de LEDs, pedindo que
    // o usuário pressione o botão A para calibrar.
    basic.showString("CALIBRE")

    // Pausa por 500 ms para a mensagem ser lida.
    basic.pause(500)

    // Limpa a tela após a pausa.
    basic.clearScreen()

    // Sai da função imediatamente, sem tentar detectar.
    return
  }

  // Lê o valor atual do sensor no pino P0 (analógico).
  let valorAtual = pins.analogReadPin(AnalogPin.P0)

  // Calcula a diferença absoluta entre o valor atual e o valor
  // de calibração. Quanto maior essa diferença, maior a variação
  // detectada pelo sensor.
  let diferenca = Math.abs(valorAtual - calibracao)

  // Lógica de decisão: se a diferença ultrapassar o limiar,
  // consideramos que é uma "mentira"; caso contrário, "verdade".
  if (diferenca > limiar) {
    // ---------- MENTIRA! ----------

    // Exibe o ícone de "não" (X) na matriz de LEDs para indicar
    // que foi detectada uma mentira.
    basic.showIcon(IconNames.No)

    // Toca um som grave (frequência 200 Hz) por 500 ms para
    // reforçar a indicação sonora de mentira.
    music.playTone(200, 500)

    // Pisca o LED de calibração (P2) três vezes de forma rápida
    // para chamar a atenção e indicar visualmente o evento.
    for (let i = 0; i < 3; i++) {
      // Apaga o LED (0 = desligado).
      pins.digitalWritePin(DigitalPin.P2, 0)
      // Pausa 100 ms para o LED ficar apagado.
      basic.pause(100)
      // Acende o LED (1 = ligado).
      pins.digitalWritePin(DigitalPin.P2, 1)
      // Pausa 100 ms para o LED ficar aceso.
      basic.pause(100)
    }
  } else {
    // ---------- VERDADE! ----------

    // Exibe o ícone de "sim" (check) para indicar que a leitura
    // está dentro do esperado, ou seja, "verdade".
    basic.showIcon(IconNames.Yes)

    // Toca um som agudo (frequência 800 Hz) por 500 ms para
    // indicar que a resposta foi verdadeira.
    music.playTone(800, 500)
  }

  // Aguarda 1 segundo (1000 ms) para que o ícone e o som sejam
  // percebidos antes de limpar a tela.
  basic.pause(1000)

  // Limpa a tela da matriz de LEDs, preparando para a próxima leitura.
  basic.clearScreen()
}

// ==============================================================
// 4. FUNÇÃO PARA RESETAR A CALIBRAÇÃO
// ==============================================================

// Esta função permite reiniciar o processo de calibração,
// desligando o LED de calibração e resetando a flag.
function resetarCalibracao() {
  // Muda a flag 'calibrado' para 'false', indicando que o sistema
  // não está mais calibrado. A próxima detecção exigirá nova calibração.
  calibrado = false

  // Desliga o LED de calibração (P2) – coloca em nível baixo (0).
  pins.digitalWritePin(DigitalPin.P2, 0)

  // Mostra a palavra "RESET" na matriz de LEDs para informar que
  // a calibração foi resetada.
  basic.showString("RESET")

  // Pausa 500 ms para visualização da mensagem.
  basic.pause(500)

  // Limpa a tela.
  basic.clearScreen()
}

// ==============================================================
// 5. CONTROLE POR BOTÕES
// ==============================================================

// Associa o botão A à função de calibração.
// Quando o usuário pressionar o botão A, o micro:bit executará
// a função 'calibrar()', lendo o valor de referência.
input.onButtonPressed(Button.A, function () {
  calibrar()
})

// Associa o botão B à função de detecção de mentira.
// Ao pressionar B, o micro:bit executa 'detectarMentira()',
// que compara a leitura atual com a calibração e exibe o resultado.
input.onButtonPressed(Button.B, function () {
  detectarMentira()
})

// Associa o pressionamento simultâneo dos botões A e B (AB)
// à função que reseta a calibração. Útil para reiniciar o processo
// sem precisar desligar o micro:bit.
input.onButtonPressed(Button.AB, function () {
  resetarCalibracao()
})

// ==============================================================
// 6. INICIALIZAÇÃO
// ==============================================================

// Quando o micro:bit ligar ou for reiniciado, este bloco é executado
// automaticamente. Ele mostra uma mensagem de boas-vindas e depois
// limpa a tela, aguardando a interação do usuário.
basic.showString("DETECTOR")   // Exibe a palavra "DETECTOR" na matriz de LEDs.
basic.pause(500)               // Pausa de meio segundo para leitura.
basic.clearScreen()            // Limpa a tela, deixando o micro:bit pronto.
⏱️ Detalhamento Minuto a Minuto (50 min)
0-5 min
Aquecimento "Lembranças da Feira" - Professor projeta um slideshow com fotos da feira. "Qual foi o momento mais legal?" "Teve algum perrengue?" "O que vocês sentiram quando viram a reação das famílias?"
5-15 min
Autoavaliação Individual - Cada aluno recebe o Formulário de Autoavaliação e preenche individualmente. Perguntas: 1) "O que eu fiz de MELHOR na feira?" 2) "Tive dificuldade em... Na próxima vez farei diferente..." 3) "Minha parte FAVORITA do projeto foi..." 4) "De 0 a 10, minha DEDICAÇÃO foi..." 5) "Uma coisa que aprendi em robótica que vou levar para a VIDA é..."
15-25 min
Avaliação por Pares - Cada equipe avalia os colegas de outra equipe. Usar ficha anônima que será devolvida de forma resumida pelo professor. Perguntas: "O colega foi muito bom em..." "Ele/ela poderia melhorar em..." "Uma coisa que aprendi com ele/ela foi..."
25-35 min
Revisão e Melhoria do Código - Cada equipe pega o código do Detector de Mentiras e analisa: O que funciona bem? O que poderia ser melhorado? Há bugs? Desafio: Implementar a melhoria proposta (LED de calibração). Equipes que terminam testam o novo código.
35-45 min
Roda de Conversa "O que Levamos para a Vida" - Todos sentam em círculo. Professor guia a discussão com perguntas provocadoras: "Vocês usariam programação para resolver outro problema em casa ou na comunidade?" "O que foi mais importante: aprender funções, operadores lógicos, sensores ou trabalhar em equipe?" "O que vocês diriam para um aluno do 4º ano que vai começar robótica?" "Qual foi o maior erro que virou o maior aprendizado?"
45-50 min
Carta para o Futuro - Cada aluno escreve uma carta para si mesmo, com data de abertura "daqui a 1 ano" (quando estiverem no 6º ano). Colocar em um envelope, lacrar e escrever o nome por fora. Professor guarda para entregar no ano seguinte.

Formulário de Autoavaliação:

  1. "O que eu fiz de MELHOR na feira foi ____________________."
  2. "Tive dificuldade em ____________________. Na próxima vez, farei diferente: ____________________."
  3. "Minha parte FAVORITA do projeto como um todo foi ____________________."
  4. "De 0 a 10, minha DEDICAÇÃO foi __. Porque ____________________."
  5. "Uma coisa que aprendi em robótica que vou levar para a VIDA é ____________________."
  6. "Se eu pudesse voltar no tempo e dar um conselho para o meu eu do início do ano, diria: ____________________."
♿ Orientações para Adaptações e Inclusão
Adaptação Necessidade
Fornecer formulários com opções de múltipla escolha e imagens (ícones de emoções). Usar fichas visuais para a avaliação por pares. TEA
Dividir a autoavaliação em perguntas curtas com timer (1 min por pergunta). Recompensa visual ao concluir cada seção. TDAH
As perguntas podem ser lidas em voz alta pelo professor. O aluno pode gravar áudio com suas respostas em vez de escrever. Deficiência Visual
O aluno pode responder oralmente para o professor ou um colega que transcreve. Deficiência Física
Escrever uma carta em inglês para o futuro. Criar um mapa mental do aprendizado do ano. Altas Habilidades
📊 Critérios Operacionais de Avaliação (com pontuação)
Critério Pontuação Máxima Indicadores
Respostas completas, reflexivas, honestas? 25 pts Autoavaliação
Feedback respeitoso, específico, útil? 20 pts Avaliação por pares
O aluno analisou o código e implementou a melhoria? 20 pts Revisão e melhoria do código
Contribuiu com ideias, ouviu os colegas? 20 pts Participação na roda de conversa
Texto coerente, emocionante, pessoal? 15 pts Carta para o futuro
TOTAL 100 pts
Frase do dia: "O herói não é quem nunca errou. É quem errou, aprendeu e ensinou. Você é o herói da sua própria jornada."

🎯 Objetivos Operacionais
  • Realizar uma cerimônia simbólica de formatura do curso de robótica, criando um rito de passagem para o 6º ano.
  • Entregar certificados especiais e prêmios, reconhecendo as conquistas individuais e coletivas ao longo do ano.
  • Promover um momento de celebração e emoção, envolvendo alunos, professores e famílias.
  • Programar o micro:bit para funcionar como um "crachá digital", exibindo o nome do aluno na matriz de LEDs.
  • Criar memórias afetivas que reforcem a autoestima e o senso de pertencimento.
  • Desenvolver uma animação especial de formatura na matriz de LEDs.
📚 Conteúdo Programático

Ritos de Passagem:

  • Cerimônias de formatura e celebração de conquistas
  • Significado dos ritos de passagem em diferentes culturas
  • A transição para o 6º ano

Reconhecimento e Premiação:

  • Valorização do esforço e da criatividade
  • Diferentes tipos de premiação (certificados, troféus, menções honrosas)

Expressão Artística:

  • Música, teatro, discursos
  • Decoração do ambiente para a cerimônia

Empatia e Cooperação:

  • Celebrar as conquistas do outro
  • A importância do apoio da família e dos colegas

Matriz de LEDs:

  • Exibir texto: basic.showString()
  • Exibir animações: basic.showLeds(), basic.showIcon()
  • Criar sequências de exibição
📋 Habilidades BNCC e RCP-PR
Descrição Código
Produzir textos com coesão e coerência (discursos, cartas) EF05LP07 - BNCC Língua Portuguesa
Ouvir e compreender apresentações orais (discursos, depoimentos) EF35LP11 - BNCC Língua Portuguesa
Expressão artística - músicas, teatro, performances EF05AR04 - BNCC Artes
Utilizar unidades de medida de tempo (organização da cerimônia) EF05MA20 - BNCC Matemática
Empatia e cooperação - celebrar as conquistas dos outros Competência 9 - BNCC Socioemocional
Celebração de conquistas Autoria - RCP-PR
Agir com empatia e respeito Competência 10 - RCP-PR
Cooperar e celebrar as conquistas do outro Empatia - CG-BNCC
🛠️ Materiais

Certificados e Prêmios:

Certificados impressos (base + especiais) já preparados "Mouse de Ouro" (mouse velho pintado de dourado) Fitas ou laços para enfeitar os certificados Pasta ou envelope para entregar os certificados

Ambiente:

Sala ou pátio decorado com balões (opcional) Cartaz com fotos do ano Caixa de som para música Projetor para vídeo (se houver)

Confraternização:

Bolo ou salgados (combinar com as famílias) Bebidas (suco, água) Copos, pratos, guardanapos

Crachá Digital:

Micro:bits para cada aluno (um por aluno) Cabo USB para programação Fitas para pendurar o crachá
🔧 Montagem do Hardware

Crachá Digital:

  1. Conectar o micro:bit ao computador via cabo USB
  2. Programar com o nome do aluno (substituir "SEU_NOME")
  3. Desconectar e pendurar como um crachá usando a fita

Esquema de Conexão:

  • Apenas o micro:bit (sem componentes externos)
  • A matriz de LEDs exibirá o nome e a animação
💻 Código Micro:bit (Crachá Digital + Animação de Formatura)
// ==============================================================
// PROJETO: CRACHÁ DIGITAL + ANIMAÇÃO DE FORMATURA
// DESCRIÇÃO: Exibe o nome do aluno na matriz de LEDs e uma
// animação especial de formatura.
// AUTOR: Equipe Robô na Veia
// VERSÃO: 1.0
// ==============================================================

// ==============================================================
// 1. CONFIGURAÇÕES INICIAIS
// ==============================================================

// Substitua "SEU_NOME" pelo nome do aluno
// AQUI criamos uma variável chamada 'nomeAluno' para guardar um texto (string).
// Variáveis são como "caixinhas" onde guardamos informações para usar depois.
// O texto entre aspas é o valor que será exibido no display.
// IMPORTANTE: Troque "SEU_NOME" pelo seu nome para personalizar o crachá.
let nomeAluno = "SEU_NOME"

// ==============================================================
// 2. FUNÇÃO PARA EXIBIR O NOME
// ==============================================================

/*
Função que exibe o nome do aluno na matriz de LEDs.
UMA FUNÇÃO é um bloco de instruções que damos um nome.
Podemos "chamar" (executar) esse bloco várias vezes sem precisar reescrever o código.
Aqui, criamos uma função chamada 'exibirNome' para deixar o código mais organizado.
*/
function exibirNome() {
  // basic.showString() é um comando do Micro:bit que rola um texto
  // na matriz de LEDs, letra por letra, da esquerda para a direita.
  // Estamos passando para ele o conteúdo da variável 'nomeAluno'.
  basic.showString(nomeAluno)
  
  // basic.pause() faz o programa "dormir" por um determinado tempo,
  // medido em milissegundos (1 segundo = 1000 ms).
  // Aqui, paramos por 500 ms (meio segundo) para dar tempo de visualizar
  // o nome completo antes de apagar a tela.
  basic.pause(500)
  
  // basic.clearScreen() apaga TODOS os LEDs da matriz, deixando a tela
  // completamente escura. Isso garante que não fique nenhum "rastro"
  // de luz atrapalhando a próxima imagem.
  basic.clearScreen()
}

// ==============================================================
// 3. FUNÇÃO PARA ANIMAÇÃO DE FORMATURA
// ==============================================================

/*
Função que exibe uma animação especial de formatura.
Inclui chapéu de formatura, fogos de artifício e corações.
Criamos uma função separada para a animação porque ela é um bloco
independente que pode ser executado quando quisermos (por exemplo, ao ligar).
*/
function animacaoFormatura() {
  // Animação 1: Chapéu de formatura (simplificado)
  // basic.showLeds() permite desenhar uma imagem personalizada na matriz de 5x5 LEDs.
  // Cada linha entre aspas representa uma fileira de LEDs.
  // O ponto (.) significa LED apagado. O sustenido (#) significa LED aceso.
  // Neste projeto, o desenho está VAZIO (todos os pontos), mas a intenção
  // didática é que o aluno substitua por um desenho de chapéu.
  // Exemplo de chapéu: ".#.#.", "#####", etc.
  basic.showLeds(`
    . . . . .
    . . . . .
    . . . . .
    . . . . .
    . . . . .
  `)
  // Pausa de 500 ms para mostrar o chapéu (mesmo que vazio) antes de prosseguir.
  basic.pause(500)

  // Animação 2: Fogos de artifício (simplificado) usando um laço de repetição.
  // for (let i = 0; i < 3; i++) é uma estrutura de repetição (laço).
  // Ela executa o bloco de código dentro das chaves 3 vezes.
  // A variável 'i' começa em 0, vai até 2 (pois i < 3), e a cada volta aumenta 1 (i++).
  for (let i = 0; i < 3; i++) {
    // basic.showIcon() exibe um ícone pré-definido pelo Micro:bit.
    // IconNames.Stars mostra um desenho de estrelas (simulando fogos).
    basic.showIcon(IconNames.Stars)
    // Pausa de 300 ms (quase 1/3 de segundo) para vermos as estrelas.
    basic.pause(300)
    
    // IconNames.Heart exibe um coração, representando o carinho pela conquista.
    basic.showIcon(IconNames.Heart)
    basic.pause(300)
    
    // IconNames.Happy exibe uma carinha feliz, celebrando a formatura.
    basic.showIcon(IconNames.Happy)
    basic.pause(300)
  } // Aqui o laço se repete. Quando termina, seguimos para a próxima linha.
  
  // Após terminar os 3 ciclos de fogos, limpamos a tela para deixar tudo escuro
  // e pronto para a próxima etapa (exibir o nome).
  basic.clearScreen()
}

// ==============================================================
// 4. LOOP PRINCIPAL (A EXECUÇÃO DO PROGRAMA)
// ==============================================================

// Quando o micro:bit é ligado ou reiniciado, o código executa de cima para baixo.
// A primeira coisa que fazemos é chamar a função de animação de formatura.
// Isso garante que, ao dar energia, o Micro:bit já comece com a "festa".
animacaoFormatura()

// Depois que a animação terminar, chamamos a função que exibe o nome do aluno.
// O nome será rolado uma vez na tela.
exibirNome()

// basic.forever() é um bloco especial que executa o código dentro dele
// REPETIDAMENTE, para sempre, enquanto o Micro:bit estiver ligado.
// É como um loop infinito que mantém o programa vivo e reagindo.
// Diferente do código que roda apenas uma vez (como o de cima), este roda sem parar.
basic.forever(function () {
  // Dentro do loop infinito, primeiro chamamos 'exibirNome()' novamente.
  // Isso faz o nome rolar na tela.
  exibirNome()
  
  // Depois de mostrar o nome, exibimos um ícone de coração fixo na tela.
  // Isso dá um efeito intercalado: mostra o nome, depois um coração,
  // depois o nome de novo, e assim por diante.
  basic.showIcon(IconNames.Heart)
  
  // Damos uma pausa de 1000 ms (1 segundo) para o coração ficar visível
  // por um tempo agradável antes de apagar.
  basic.pause(1000)
  
  // Apagamos a tela completamente para limpar o coração antes de recomeçar o ciclo.
  basic.clearScreen()
  
  // Pequena pausa de 500 ms para dar um "respiro" entre o coração apagado
  // e a próxima exibição do nome, evitando que as imagens se misturem.
  basic.pause(500)
  // Após essa pausa, o loop volta para o início (chama 'exibirNome()' de novo)
  // e repete esse ciclo para sempre: Nome -> Coração -> (limpa) -> Nome -> ...
})
⏱️ Detalhamento Minuto a Minuto (1h30 de evento)
0-10 min
Abertura "Vídeo de Melhores Momentos" - Professor projeta um vídeo de 3-5 minutos com fotos das aulas, da construção, dos bugs, da feira. Música emocionante ao fundo. Momento de silêncio e emoção.
10-20 min
Discurso do Professor - "Há 40 semanas, vocês mal sabiam o que era uma função. Hoje, vocês são programadores, engenheiros, comunicadores e, acima de tudo, pessoas que não desistem. Cada bug foi uma lição, cada sensor foi uma vitória. Estou mais orgulhoso do que um pôster de feira pode expressar."
20-40 min
Entrega de Certificados - Chamar cada aluno pelo nome, um a um. Explicar o motivo do certificado. Ordem: 1) Arquiteto de Software 5º ano (todos), 2) Mestre dos Sensores, 3) Caçador de Bugs Lendário, 4) Embaixador da Robótica. Momento surpresa: "Mouse de Ouro" para a equipe mais criativa.
40-45 min
Entrega do Crachá Digital - Cada aluno recebe seu micro:bit programado com seu nome. Penduram como um crachá. Momento para todos ligarem os crachás ao mesmo tempo - um show de luzes!
45-50 min
Momento dos Alunos - Em círculo, cada aluno fala uma palavra que resume o ano. Exemplos: "divertido", "desafiador", "incrível", "inesquecível", "gratificante".
50-60 min
Parabéns Coletivo - Cortar o bolo com formato de robô (ou cupcakes decorados). Tirar fotos individuais e coletivas. Gritar "Robótica!" na hora da foto.
60-90 min
Confraternização Livre - Famílias conversam, alunos brincam, professores descansam. Momento de trocar abraços e agradecimentos.
📊 Critérios Operacionais de Avaliação (com pontuação)
Critério Pontuação Máxima Indicadores
Esteve presente, participou com entusiasmo? 25 pts Participação na cerimônia
O crachá digital exibe o nome do aluno corretamente? 25 pts Programação do crachá
Cumprimentou as famílias com cordialidade? 20 pts Recepção das famílias
Ajudou na organização e na arrumação? 15 pts Organização do evento
Interagiu de forma respeitosa e afetuosa? 15 pts Interação com os colegas
TOTAL 100 pts
Frase do dia: "Hoje a gente coloca o ponto final no código do 5º ano. Mas a função principal ainda não acabou: a vida continua, com mais loops, mais bugs e mais vitórias."

🎯 Objetivos Operacionais
  • Compreender o conceito de arrays (listas) para armazenar sequências de dados.
  • Programar um jogo da memória onde o micro:bit mostra uma sequência de LEDs e o jogador deve repeti-la.
  • Utilizar funções para organizar o código (ex: gerarSequencia(), mostrarSequencia(), lerJogada()).
  • Aplicar conceitos de interação (botões) e feedback (LEDs e som).
  • Utilizar a matriz de LEDs para exibir a sequência e o feedback do jogador.
  • Desenvolver uma versão com níveis de dificuldade crescentes.
📚 Conteúdo Programático

Arrays:

  • O que são arrays (listas) e para que servem
  • Como criar e manipular arrays: let lista: number[] = []
  • Adicionar elementos: array.push(valor)
  • Acessar elementos: array[indice]
  • Percorrer arrays: for (let i = 0; i < array.length; i++)

Funções:

  • Dividir o código em partes menores e reutilizáveis
  • Criar funções com parâmetros e retorno
  • Organizar a lógica do jogo em funções

Interatividade:

  • Usar botões para entrada do usuário
  • Capturar eventos: input.onButtonPressed()
  • Gerenciar o fluxo do jogo com estados

Lógica de Jogo:

  • Sequência: gerar, mostrar, ler, verificar
  • Níveis de dificuldade: aumentar o tamanho da sequência
  • Game over: quando o jogador erra

Matriz de LEDs:

  • Controlar LEDs individuais: led.plot(x, y), led.unplot(x, y)
  • Acender LED por posição (0-24): calcular coordenadas (x, y)
  • Exibir padrões e animações

Game Design:

  • Feedback visual (LEDs) e sonoro (buzzer)
  • Níveis de dificuldade progressivos
  • Pontuação (score)
📋 Habilidades BNCC e RCP-PR
Descrição Código
Explorar fenômenos da vida cotidiana - propriedades físicas dos materiais EF05CI01 - BNCC Ciências
Relatar experiências (documentar o projeto do jogo) EF05LP10 - BNCC Língua Portuguesa
Produzir textos com coesão e coerência (documentação) EF05LP07 - BNCC Língua Portuguesa
Interpretar dados estatísticos (análise de desempenho no jogo) EF05MA24 - BNCC Matemática
Realizar pesquisa envolvendo variáveis categóricas e numéricas EF05MA25 - BNCC Matemática
Projetos futuros - criar algo novo a partir do conhecimento Autoria - RCP-PR
Autoconhecimento - entender os próprios limites e superá-los Competência 8 - RCP-PR
Investigar e testar hipóteses Pensamento Científico - CG-BNCC
🛠️ Materiais

Hardware:

1 x Computador com acesso à internet 1 x BBC micro:bit 1 x Cabo USB 1 x Buzzer (opcional)

Software:

Editor MakeCode para micro:bit Navegador web

Outros:

Diário de Bordo Folhas para anotações Tabela para registrar níveis alcançados
🔧 Montagem do Hardware

Esta semana utilizamos apenas o micro:bit (sem componentes externos):

  • A matriz de LEDs exibirá as sequências
  • Os botões A e B controlam o jogo
  • O buzzer integrado fornece feedback sonoro

Conexão:

  1. Conectar o micro:bit ao computador via cabo USB
  2. Abrir o MakeCode
  3. Programar o jogo
  4. Testar no próprio micro:bit
💻 Código Micro:bit (Jogo da Memória Completo)
// ==============================================================
// PROJETO: JOGO DA MEMÓRIA COM MICRO:BIT
// DESCRIÇÃO: O micro:bit mostra uma sequência de LEDs que o
// jogador deve repetir. Versão com níveis.
// AUTOR: Equipe Robô na Veia
// VERSÃO: 1.0
// ==============================================================

// ==============================================================
// 1. VARIÁVEIS GLOBAIS
// ==============================================================

// Array para armazenar a sequência de LEDs (0 a 24)
// Cada número representa a posição de um LED na matriz 5x5
// Exemplo: posição 0 = canto superior esquerdo, 24 = canto inferior direito
let sequencia: number[] = []

// Nível atual do jogo (começa em 1)
// Cada novo nível adiciona mais um LED à sequência
let nivel = 0

// Índice da jogada atual (qual LED o jogador deve acertar)
// Controla em qual posição da sequência o jogador está
let jogadaAtual = 0

// Flag para controle do jogo (true = jogando, false = parado)
// Indica se o jogo está ativo ou não
let jogando = false

// Tempo entre os LEDs (ms) - controla a velocidade do jogo
// Quanto menor o valor, mais rápida a exibição da sequência
let tempoEspera = 500

// Pontuação do jogador
// A cada nível concluído com sucesso, ganha-se 10 pontos
let pontos = 0

// ==============================================================
// 2. FUNÇÃO PARA GERAR UMA SEQUÊNCIA ALEATÓRIA
// ==============================================================

/*
Gera um novo LED aleatório e o adiciona ao final da sequência.
A posição do LED é um número entre 0 e 24.
*/
function gerarSequencia() {
  // Gera um número aleatório entre 0 e 24 (posição de um LED)
  // Math.randomRange(0, 24) retorna um inteiro aleatório no intervalo fechado [0, 24]
  let novoLED = Math.randomRange(0, 24)
  // Adiciona o novo LED ao final da sequência usando o método push do array
  // Assim, a sequência cresce a cada nível
  sequencia.push(novoLED)
}

// ==============================================================
// 3. FUNÇÃO PARA MOSTRAR A SEQUÊNCIA NA MATRIZ DE LEDS
// ==============================================================

/*
Exibe a sequência de LEDs na matriz, um por vez.
Cada LED acende por um breve período, acompanhado de um som.
O jogador deve prestar atenção para depois repetir a ordem.
*/
function mostrarSequencia() {
  // Limpa a matriz de LEDs, apagando todos os pontos acesos
  basic.clearScreen()

  // Para cada LED armazenado na sequência (do primeiro ao último)
  for (let i = 0; i < sequencia.length; i++) {
    let posicao = sequencia[i] // Pega o número da posição (0 a 24)

    // Calcula as coordenadas x e y a partir da posição (0 a 24)
    // x = coluna (0-4), y = linha (0-4)
    let x = posicao % 5 // Resto da divisão por 5 -> dá um valor entre 0 e 4
    let y = Math.floor(posicao / 5) // Divisão inteira por 5 -> também entre 0 e 4
    // Exemplo: posição 7 => x = 7%5 = 2, y = floor(7/5) = 1 -> LED na coluna 2, linha 1

    // Acende o LED na posição (x, y) – plot acende o ponto
    led.plot(x, y)

    // Toca um som para cada LED (frequência varia com a posição)
    // Frequência: 500 Hz + (posição * 20 Hz) – cria um efeito sonoro diferente para cada LED
    // music.playTone(frequencia, duração em ms) – toca um tom puro
    music.playTone(500 + posicao * 20, 200)

    // Aguarda o tempo definido para que o jogador veja o LED aceso
    basic.pause(tempoEspera)

    // Apaga o LED (unplot apaga o ponto)
    led.unplot(x, y)

    // Aguarda um curto intervalo antes do próximo LED para dar um respiro
    basic.pause(200)
  }
}

// ==============================================================
// 4. FUNÇÃO PARA INICIAR O JOGO
// ==============================================================

/*
Função que inicia o jogo, resetando todas as variáveis.
É chamada quando o botão A é pressionado e o jogo está parado.
*/
function iniciarJogo() {
  // Reseta a sequência (começa vazia), o nível e a pontuação
  sequencia = []
  nivel = 1
  pontos = 0
  jogando = true      // Ativa o jogo
  jogadaAtual = 0     // Começa do primeiro LED da sequência

  // Mostra o nível atual no display de LED (exibe "N1")
  basic.showString("N" + nivel)
  basic.pause(500)    // Pausa para leitura
  basic.clearScreen() // Limpa a tela

  // Gera a primeira sequência (apenas um LED aleatório)
  gerarSequencia()
  // Mostra a sequência para o jogador
  mostrarSequencia()

  // Após mostrar, avisa que é a vez do jogador
  basic.showString("SUA VEZ")
  basic.pause(500)
  basic.clearScreen()
}

// ==============================================================
// 5. FUNÇÃO PARA VERIFICAR A JOGADA
// ==============================================================

/*
Função que verifica a jogada do jogador.
O jogador usa os botões para confirmar a posição do LED.
(Versão simplificada - em uma versão completa, o jogador
usaria os botões para navegar e confirmar a posição)
Aqui, a verificação é automática: sempre que o jogador pressiona B,
consideramos que ele acertou o LED atual e avançamos.
*/
function verificarJogada() {
  // Verifica se o jogador acertou todos os LEDs
  // (Nesta versão simplificada, assumimos que o jogador acertou)
  // Em uma versão completa, o jogador usaria os botões para confirmar

  // Avança para o próximo nível
  nivel++
  // Incrementa a pontuação em 10 pontos
  pontos += 10

  // Mostra o novo nível
  basic.showString("N" + nivel)
  basic.pause(500)
  basic.clearScreen()

  // Gera um novo LED aleatório e adiciona à sequência (aumenta a dificuldade)
  gerarSequencia()
  // Mostra a sequência completa novamente (incluindo o novo LED)
  mostrarSequencia()

  // Avisa que é a vez do jogador novamente
  basic.showString("SUA VEZ")
  basic.pause(500)
  basic.clearScreen()
}

// ==============================================================
// 6. FUNÇÃO DE GAME OVER
// ==============================================================

/*
Função que exibe a tela de Game Over.
Ela é chamada quando o jogador erra (nesta versão simplificada, nunca é chamada,
pois sempre consideramos acerto, mas está aqui para ser usada em versões futuras).
*/
function gameOver() {
  // Mostra um X na matriz (ícone "No" representa um "X")
  basic.showIcon(IconNames.No)
  // Toca um som grave e longo para indicar o fim
  music.playTone(200, 500)
  basic.pause(1000)

  // Mostra a pontuação final precedida de "P:"
  basic.showString("P:" + pontos)
  basic.pause(1000)
  basic.clearScreen()

  // Para o jogo (desativa a flag)
  jogando = false
}

// ==============================================================
// 7. CONTROLE DO JOGO
// ==============================================================

// Botão A: Inicia o jogo (se não estiver rodando)
// input.onButtonPressed é um evento que executa a função quando o botão é pressionado
input.onButtonPressed(Button.A, function () {
  // Se o jogo não estiver ativo, inicia
  if (!jogando) {
    iniciarJogo()
  }
})

// Botão B: Jogada do jogador (versão simplificada)
// Em uma versão completa, o botão B confirmaria a posição escolhida pelo jogador
input.onButtonPressed(Button.B, function () {
  // Se o jogo estiver ativo, chama a verificação (que assume acerto)
  if (jogando) {
    verificarJogada()
  }
})

// Botão A+B (pressionados simultaneamente): Interrompe o jogo
input.onButtonPressed(Button.AB, function () {
  if (jogando) {
    jogando = false                 // Para o jogo
    basic.showString("PAUSA")       // Mostra "PAUSA" no display
    basic.pause(500)
    basic.clearScreen()
  }
})

// ==============================================================
// 8. INICIALIZAÇÃO
// ==============================================================

// Quando o micro:bit é ligado (ou reiniciado), mostra a tela inicial
// basic.showString exibe caracteres rolando no display de LEDs
basic.showString("MEMORIA")
basic.pause(500)
basic.clearScreen()

// Instrução para o usuário: pressionar o botão A para iniciar
basic.showString("A=INICIAR")
basic.pause(1000)
basic.clearScreen()

// ==============================================================
// 9. LOOP PRINCIPAL (PARA MOSTRAR O STATUS)
// ==============================================================

// basic.forever executa um bloco de código repetidamente enquanto o micro:bit estiver ligado
basic.forever(function () {
  // Se o jogo não está rodando, exibe a mensagem de instrução periodicamente
  if (!jogando) {
    basic.showString("A=INICIAR")
    basic.pause(2000) // Espera 2 segundos para não ficar piscando muito rápido
    basic.clearScreen()
  }
  // Se o jogo estiver rodando, o forever não faz nada (apenas espera eventos)
})
⏱️ Detalhamento Minuto a Minuto (50 min)
0-5 min
Aquecimento "O Desafio da Memória" - Professor: "Quem aqui tem boa memória? Vamos testar! Hoje, vocês vão programar um jogo da memória no micro:bit. O robô vai mostrar uma sequência de LEDs e vocês vão ter que repetir. Preparados?" Demonstrar o jogo funcionando.
5-15 min
Explicação do Código "Arrays e Funções" - Professor explica o conceito de arrays (listas) e funções. Mostra o código no MakeCode, destacando cada parte: let sequencia: number[] = [] (array), gerarSequencia() (função), mostrarSequencia() (função), verificarJogada() (função). Analogia: "Array é como uma fila de números"
15-30 min
Programação "Mão na Massa" - Alunos digitam o código no MakeCode. Professor circula, ajudando com a sintaxe e a lógica. Dica: Usar a interface de blocos para alunos iniciantes. Desafio: ajustar tempoEspera para diferentes dificuldades.
30-40 min
Teste e Depuração - Cada equipe testa o jogo no micro:bit. Professor ajuda a corrigir bugs. Desafio: ajustar a velocidade do jogo. Perguntas: "O que acontece se você mudar o valor de tempoEspera?" "Como você faria para aumentar o número de LEDs por nível?"
40-45 min
Desafios Extras - Alunos que terminaram podem: 1) Adicionar um som diferente para cada LED, 2) Criar um modo "difícil" com LEDs piscando mais rápido, 3) Adicionar um placar (score).
45-50 min
Registro no Diário de Bordo - Perguntas: 1) "O que é um array e como ele é usado no jogo?" 2) "Qual foi a parte mais difícil de programar?" 3) "Se eu tivesse mais tempo, melhoraria o jogo adicionando..." 4) "Desenhe a sequência de LEDs que o jogo mostrou para você."
♿ Orientações para Adaptações e Inclusão
Adaptação Necessidade
Fornecer o código já parcialmente escrito, com as partes principais comentadas. O aluno preenche as lacunas. TEA
Dividir a programação em partes com timer: 5 min para o array, 5 min para a função, 5 min para o teste. TDAH
O aluno pode descrever o funcionamento do jogo oralmente, em vez de escrever o código. Usar o som como feedback principal. Deficiência Visual
O aluno pode ditar o código para um colega ou professor. Deficiência Física
Desafiar o aluno a criar um jogo com mais de 5 níveis, com padrões de LEDs, ou com ranking de pontuação. Altas Habilidades
📊 Critérios Operacionais de Avaliação (com pontuação)
Critério Pontuação Máxima Indicadores
O jogo inicia, mostra a sequência e permite a interação? 25 pts Funcionamento do jogo
O aluno explica o que é um array e como ele é usado? 20 pts Compreensão de arrays
O código usa funções para organizar a lógica? 20 pts Organização do código
O aluno adicionou elementos extras (sons, níveis, animações)? 15 pts Criatividade
O aluno conseguiu testar e depurar o código? 10 pts Capacidade de teste
As respostas são completas e reflexivas? 10 pts Registro no Diário
TOTAL 100 pts
Frase do dia: "A memória é o primeiro array que a gente programa. E o melhor jogo é aquele que a gente joga com a cabeça e o coração."

🎯 Objetivos Operacionais
  • Encerrar o ano letivo com uma celebração descontraída e emocionante, celebrando todas as conquistas do ano.
  • Assistir ao vídeo de melhores momentos (produzido ao longo do ano) como recordação afetiva.
  • Distribuir as lembrancinhas finais (broches de circuito impresso) e os diários de bordo encadernados.
  • Promover um momento de despedida que reforce o sentimento de pertencimento e orgulho.
  • Programar uma animação de despedida na matriz de LEDs do micro:bit.
  • Criar um "show de luzes" coletivo, onde todos os micro:bits piscam juntos.
📚 Conteúdo Programático

Culminância Festiva:

  • Celebração do encerramento do projeto anual
  • Reconhecimento de todas as conquistas

Memória e Afeto:

  • Registro audiovisual das experiências vividas
  • O poder das lembranças na construção da identidade

Rito de Despedida:

  • Transição emocional para o 6º ano
  • Encerramento de um ciclo e início de outro

Autoria e Protagonismo:

  • Reconhecimento do próprio trabalho
  • Orgulho do que foi construído

Animações com LEDs:

  • Criar uma sequência de imagens na matriz
  • Sincronizar vários micro:bits para um show de luzes
📋 Habilidades BNCC e RCP-PR
Descrição Código
Produzir textos com coesão e coerência (mensagens finais, cartas) EF05LP07 - BNCC Língua Portuguesa
Ouvir e compreender apresentações orais (despedidas, discursos) EF35LP11 - BNCC Língua Portuguesa
Interpretar dados estatísticos (balanço do ano) EF05MA24 - BNCC Matemática
Utilizar unidades de medida de tempo (organização do evento) EF05MA20 - BNCC Matemática
Culminância festiva e celebração Autoria - RCP-PR
Uso de linguagens digital e visual Competência 4 - RCP-PR
Autoconhecimento - reflexão sobre a jornada Competência 8 - RCP-PR
Integradas na celebração final Todas as competências BNCC
🛠️ Materiais

Multimídia:

Vídeo editado de 5-10 minutos com fotos e vídeos curtos de todas as semanas Projetor ou TV para exibição Caixa de som para música ambiente

Lembrancinhas:

Diários de bordo encadernados (um por aluno) Broches de circuito impresso (um por aluno) Certificados (já entregues na formatura)

Confraternização:

Bolo decorado com tema robótico Bebidas (suco, refrigerante) Copos, pratos, guardanapos Balões decorativos (opcional)

Micro:bits:

Todos os micro:bits (um por aluno) com o código da animação de despedida carregado
🔧 Montagem do Hardware

Animação de Despedida:

  1. Conectar o micro:bit ao computador via cabo USB
  2. Programar com o código da animação
  3. Testar a animação
  4. Repetir para todos os micro:bits

Show de Luzes Coletivo:

  • Todos os alunos ligam seus micro:bits ao mesmo tempo
  • As animações devem estar sincronizadas (opcional)
  • O professor pode fazer uma contagem regressiva para o "show"
💻 Código Micro:bit (Animação de Despedida + Show de Luzes)
// ==============================================================
// PROJETO: ANIMAÇÃO DE DESPEDIDA + SHOW DE LUZES
// DESCRIÇÃO: Exibe uma animação especial de despedida na
// matriz de LEDs, seguida de um show de luzes.
// AUTOR: Equipe Robô na Veia
// VERSÃO: 1.0
// ==============================================================

// ==============================================================
// 1. FUNÇÃO PARA ANIMAÇÃO DE DESPEDIDA
// ==============================================================

/*
Função que exibe uma animação de despedida na matriz de LEDs.
Inclui coração grande, coração pequeno, estrela e "FIM".
*/
function animacaoDespedida() {
  // ------------------------------------------------------------
  // Animação 1: Coração grande (ocupando toda a matriz)
  // A matriz de LEDs do micro:bit tem 5 linhas e 5 colunas.
  // Cada caractere '#' representa um LED aceso, '.' representa um LED apagado.
  // O desenho abaixo forma um coração grande, preenchendo quase toda a tela.
  // ------------------------------------------------------------
  basic.showLeds(`
    . # # # .
    # # # # #
    # # # # #
    . # # # .
    . . # . .
  `)                    // Exibe o padrão de LEDs na matriz
  basic.pause(500)      // Pausa a execução por 500 milissegundos (meio segundo)
                        // para que o desenho fique visível antes de mudar

  // ------------------------------------------------------------
  // Animação 2: Coração pequeno (no centro)
  // Aqui usamos um padrão vazio para limpar a tela,
  // mas a intenção é exibir um coração pequeno (no centro).
  // O código atual está mostrando uma tela vazia, o que pode ser
  // um erro de digitação, pois não forma um coração.
  // Na prática, o efeito é uma tela apagada por 500ms.
  // ------------------------------------------------------------
  basic.showLeds(`
    . . . . .
    . . . . .
    . . . . .
    . . . . .
    . . . . .
  `)                    // Exibe tela completamente apagada
  basic.pause(500)      // Pausa por 500ms

  // ------------------------------------------------------------
  // Animação 3: Estrela
  // O micro:bit possui ícones pré-definidos. 'IconNames.Stars'
  // representa o ícone de uma estrela (com vários pontinhos).
  // ------------------------------------------------------------
  basic.showIcon(IconNames.Stars)  // Exibe o ícone de estrela
  basic.pause(500)                 // Pausa por 500ms

  // ------------------------------------------------------------
  // Animação 4: Feliz
  // Ícone de um rosto feliz (sorriso).
  // ------------------------------------------------------------
  basic.showIcon(IconNames.Happy)  // Exibe o ícone de rosto feliz
  basic.pause(500)                 // Pausa por 500ms

  // ------------------------------------------------------------
  // Animação 5: Palavra "FIM"
  // A função showString exibe caracteres em sequência na matriz,
  // rolando o texto da esquerda para a direita (ou mostrando letra por letra).
  // Aqui exibirá "F" "I" "M" um após o outro.
  // ------------------------------------------------------------
  basic.showString("FIM")          // Exibe a string "FIM" na matriz
  basic.pause(500)                 // Pausa por 500ms após terminar a exibição
}

// ==============================================================
// 2. FUNÇÃO PARA SHOW DE LUZES
// ==============================================================

/*
Função que exibe um show de luzes na matriz de LEDs.
Inclui pisca-pisca e onda de LEDs.
*/
function showDeLuzes() {
  // ------------------------------------------------------------
  // Fase 1: Pisca-pisca rápido
  // Este loop repete 10 vezes o acendimento e apagamento de todos os LEDs.
  // ------------------------------------------------------------
  for (let i = 0; i < 10; i++) {   // i é o contador, vai de 0 a 9 (10 iterações)
    // Acende todos os LEDs da matriz 5x5
    // Para isso, percorremos todas as coordenadas x (coluna) de 0 a 4
    // e y (linha) de 0 a 4.
    for (let x = 0; x < 5; x++) {   // x representa a coluna (0 a 4)
      for (let y = 0; y < 5; y++) { // y representa a linha (0 a 4)
        led.plot(x, y)              // Acende o LED na posição (x, y)
      }                             // Fim do loop y
    }                               // Fim do loop x
    basic.pause(100)                // Mantém todos acesos por 100ms

    // Apaga todos os LEDs
    for (let x = 0; x < 5; x++) {
      for (let y = 0; y < 5; y++) {
        led.unplot(x, y)            // Apaga o LED na posição (x, y)
      }
    }
    basic.pause(100)                // Mantém todos apagados por 100ms
  }                                 // Fim do loop de 10 repetições

  // ------------------------------------------------------------
  // Fase 2: Onda de LEDs
  // Percorre cada linha (y) e dentro de cada linha, cada coluna (x),
  // acendendo um LED por vez em ordem, criando um efeito de "onda".
  // ------------------------------------------------------------
  for (let linha = 0; linha < 5; linha++) {   // linha varia de 0 a 4
    for (let coluna = 0; coluna < 5; coluna++) { // coluna varia de 0 a 4
      led.plot(coluna, linha)   // Acende o LED na posição (coluna, linha)
      basic.pause(50)           // Pausa de 50ms para cada LED, criando efeito de movimento
    }                           // Fim do loop coluna
    basic.pause(100)            // Após completar uma linha, pausa de 100ms
  }                             // Fim do loop linha

  // ------------------------------------------------------------
  // Limpa a tela
  // Após o show, apaga todos os LEDs para preparar a próxima parte.
  // ------------------------------------------------------------
  basic.clearScreen()           // Desliga todos os LEDs da matriz
}

// ==============================================================
// 3. LOOP PRINCIPAL
// ==============================================================

// Quando o micro:bit é ligado (ou resetado), o código executa
// as funções na ordem em que aparecem.
// A primeira função chamada é a animação de despedida.
animacaoDespedida()   // Executa a animação de despedida (corações, estrela, "FIM")

// Depois que a animação termina, executa o show de luzes.
showDeLuzes()         // Executa o show com pisca-pisca e onda

// Após a execução das funções acima, o programa entra em um loop infinito
// que mantém o micro:bit mostrando um coração piscando.
// A função basic.forever executa o bloco de código repetidamente enquanto
// o micro:bit estiver ligado.
basic.forever(function () {
  // Exibe o ícone de coração (preenchido)
  basic.showIcon(IconNames.Heart)   // Mostra o coração na matriz
  basic.pause(1000)                 // Aguarda 1 segundo (1000ms) com o coração aceso

  // Apaga a tela (remove o coração)
  basic.clearScreen()               // Desliga todos os LEDs
  basic.pause(1000)                 // Aguarda 1 segundo com a tela apagada

  // O loop se repete: coração aceso, apagado, aceso, apagado...
})   // Fim do bloco forever
⏱️ Detalhamento Minuto a Minuto (50 min)
0-5 min
Chegada e Acomodação - Música ambiente tocando. Alunos sentam em roda ou em semicírculo. Professor prepara o projetor para o vídeo. Clima: descontraído, com um toque de nostalgia.
5-15 min
Exibição do Vídeo "Nossa Jornada" - Professor projeta o vídeo de 5-10 minutos com fotos e vídeos curtos de todas as semanas. Música emocionante ao fundo. Conteúdo: início (conhecendo o micro:bit), meio (bugs e superação), clímax (a feira), final (formatura). Reação esperada: risos, suspiros, lágrimas.
15-25 min
Entrega dos Diários e Broches - Professor chama um a um para entregar: o Diário de Bordo encadernado e o Broche de circuito impresso. Ao chamar cada aluno, dizer algo pessoal: "João, você começou o ano com medo de errar. Hoje é um Caçador de Bugs Lendário." "Maria, sua criatividade no pôster inspirou a turma toda."
25-30 min
Palavra Final do Professor - Discurso de coração, com emoção: "Vocês são mais espertos que muito adulto por aí. Vocês sabem programar, sabem trabalhar em equipe, sabem não desistir. O mundo precisa de mais gente como vocês."
30-35 min
Show de Luzes com os Micro:bits - Professor pede que todos liguem seus micro:bits ao mesmo tempo. Contagem regressiva: "3, 2, 1... LUZES!" Todos os micro:bits executam a animação de despedida e o show de luzes. Momento mágico: a sala se enche de luzes piscando em sincronia.
35-45 min
Bolo e Confraternização - Cortar o bolo com formato de robô (ou cupcakes decorados). Alunos podem tirar fotos com o bolo. Momento de comer, conversar, trocar abraços.
45-50 min
Despedida e Último Grito - Professor: "Vamos fazer a última chamada de função do ano. A função encerrar() chama o quê?" Alunos gritam: "FELIZES E ORGULHOSOS!" Abraços, tchau, e fim de ano letivo. 🚀
📊 Critérios Operacionais de Avaliação (com pontuação)
Critério Pontuação Máxima Indicadores
Esteve presente, participou com entusiasmo? 20 pts Participação no encerramento
Recebeu com gratidão e valorizou o material? 20 pts Recepção dos diários e broches
O micro:bit executa a animação de despedida corretamente? 20 pts Programação da animação
Participou do show de luzes com entusiasmo? 15 pts Show de luzes
O aluno escreveu uma mensagem significativa? 15 pts Mensagem final
Interagiu com os colegas de forma respeitosa e afetuosa? 10 pts Confraternização
TOTAL 100 pts
Frase do dia (Última!): "Loop não é macarrão! Loop é repetição! Loop é poder! E agora vocês são Mestres do Loop!"

🏆 CERTIFICADOS DE CONCLUSÃO

"MESTRE DA ROBÓTICA"

🏆 CERTIFICADO DE CONCLUSÃO - 5º ANO

"ARQUITETO DO CAOS ORGANIZADO"

🤖 CERTIFICADO ROBÔMESTRES

Certificamos que

[NOME DO ALUNO]

concluiu com êxito o 5º ANO - ROBÓTICA EDUCACIONAL
Dominando os conceitos de:
🔁 LOOP (repetição inteligente)
📦 VARIÁVEL (o bolso mágico do robô)
🐛 DEPURAÇÃO (caça aos bugs)
🤖 PROJETO AUTORAL (Robô de Sucata)
🎯 HARDWARE (LEDs, resistores, micro:bit)


RobôMestres do Paraná • 2026

"Loop não é macarrão! Variável não é coisa de velho! Depurar não é xingamento!"

🔧 Ass: Robô Zé 3.0

Visualização ao selecionar aluno

Cadastro de Alunos

📋 Lista de Programadores 0

📋 FECHAMENTO DO BIMESTRE

O ÚLTIMO SHOW: ROBÔS, BUGS E GLÓRIA!
♿ ADAPTAÇÕES ESPECÍFICAS BIMESTRE 4 (Caos Acessível para Todos)
📌 Para TEA (Transtorno do Espectro Autista)
  • Use checklist visual com etapas (1. Conectar, 2. Programar, 3. Testar).
  • Prefira ambientes com menos estímulos sonoros para a montagem do hardware.
  • Na feira (semanas 35-36), ofereça um espaço de "pausa" para momentos de sobrecarga.
  • 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 10-15 minutos para cada bloco de programação.
  • Hiperfoco recompensado: o aluno que terminar o código primeiro pode ser o "testador oficial".
  • Divida a montagem do hardware em partes curtas com recompensas visuais.
📌 Para Deficiência Física
  • Comando por voz: o aluno pode ser o "programador-mor" e ditar os comandos para os colegas digitarem.
  • Para a montagem (semana 31), o aluno pode orientar os colegas sobre onde conectar os fios.
  • Use componentes maiores ou pré-montados para facilitar o manuseio.
📌 Para Deficiência Visual
  • Materiais em braille ou áudio para os códigos.
  • Use o som do buzzer como feedback principal em vez do visual.
  • Descrição verbal detalhada dos circuitos e conexões.
📌 Para Deficiência Auditiva
  • Feedback visual intenso (matriz de LEDs piscando) em vez do buzzer.
  • Legendagem em tempo real nas explicações.
  • Materiais visuais com diagramas claros e setas.
📌 Para Altas Habilidades
  • Loopception: Desafie-os a criar sistemas com múltiplos níveis de loop.
  • Modo Noturno Avançado: Criar um semáforo com temporização ajustável via botões.
  • Detector de Mentiras Avançado: Adicionar gráficos dos valores do sensor na matriz.
  • Jogo da Memória: Criar versão com ranking de pontuação e padrões personalizados.

“SE o robô não funcionar, ENTÃO a gente declara Dia do Bug; SENÃO a gente comemora com fogos de LED.”

💬 MENSAGEM FINAL PARA O PROFESSOR

Caro(a) professor(a),

Você chegou ao fim de uma jornada de 40 semanas.

Teve dias de bug, dias de glória, dias em que o sensor não funcionou e dias em que tudo deu certo. Teve alunos que descobriram que são capazes, alunos que superaram medos, alunos que descobriram um talento que nem sabiam que tinham.

Mas o que fica não são os códigos.

O que fica são as caras de orgulho na feira. As famílias emocionadas. Os alunos que descobriram que errar é parte do processo. Os alunos que aprenderam a trabalhar em equipe. Os alunos que descobriram que programar é legal.

Você não ensinou só robótica.

Você ensinou resiliência, trabalho em equipe, criatividade e, acima de tudo, que errar é parte do processo. Seus alunos vão para o 6º ano não só sabendo tabuada, mas sabendo programar o futuro.

E quando eles forem engenheiros, cientistas, professores ou o que quer que sejam, vão lembrar do ano em que construíram um robô com sensores de papel alumínio e descobriram que eles podiam tudo.

Parabéns, Professor(a)! Você formou uma turma de pequenos grandes programadores! 🎉

"A função mais importante que você aprendeu não está no código, está na vida: quebrar problemas grandes em pedaços pequenos, decidir com lógica e nunca ter medo de errar porque o bug é só um amigo que pede ajuda."

Agora é com você, professor(a)!

Vista a camisa do Robô na Veia, prepare os sensores de papel alumínio, e faça desse bimestre uma experiência inesquecível. Seus alunos do 5º ano vão para o 6º ano não só sabendo tabuada, mas sabendo programar o futuro.

🚀 ROBÔ NA VEIA!

"O melhor robô não é o que tem mais LEDs - é o que faz as pessoas sorrirem."

📚 REFERÊNCIAS BIBLIOGRÁFICAS (ABNT)

DOCUMENTOS OFICIAIS
BRASIL. Ministério da Educação. Base Nacional Comum Curricular (BNCC). Brasília: MEC, 2018.
PARANÁ. Secretaria de Estado da Educação. Referencial Curricular do Paraná: Princípios, Direitos e Orientações. Curitiba: SEED, 2018.

MICRO:BIT E PROGRAMAÇÃO
MICRO:BIT EDUCATIONAL FOUNDATION. Micro:bit MakeCode Documentation.
MICRO:BIT EDUCATIONAL FOUNDATION. Micro:bit Hardware Documentation.
MICRO:BIT EDUCATIONAL FOUNDATION. Micro:bit Lessons and Projects.

METODOLOGIA E ENSINO
BACICH, Lilian; MORAN, José (Orgs.). Metodologias ativas para uma educação inovadora. Porto Alegre: Penso, 2018.
PAPERT, Seymour. Logo: computadores e educação. São Paulo: Brasiliense, 1985.

ROBÓTICA EDUCACIONAL
RESNICK, Mitchel. Lifelong Kindergarten: cultivando a criatividade. Cambridge: MIT Press, 2017.
BLIKSTEIN, Paulo. Robótica Educacional: a tecnologia que constrói conhecimento. São Paulo: PUC-SP, 2011.

PSICOLOGIA E INCLUSÃO
MANTOAN, Maria Teresa Eglér. Inclusão escolar: o que é? Por quê? Como fazer?. São Paulo: Moderna, 2003.
SASSAKI, Romeu Kazumi. Inclusão: construindo uma sociedade para todos. Rio de Janeiro: WVA, 1997.