Programação aplicada com C e Arduino – Plano de Aulas
Plano de Aula da disciplina Programação aplicada com C e Arduino (Automação e Eletrônica).
Kit portátil: VS Code + C + Arduino
Instalado nos computadores do laboratório (Linux), sem precisar de administrador. O kit traz o VS Code em português, o seu próprio compilador C (gcc) e o arduino-cli com a placa Arduino Uno, além de todos os exemplos das aulas. O professor copia o kit do pendrive para a Área de Trabalho e roda bash instalar.sh uma vez em cada computador.
- Abra Kit C e Arduino no menu de aplicativos. O VS Code abre a pasta
C-e-Arduino, comexemplos(todas as aulas) etrabalhos. - Em
trabalhos, crie uma pasta com o seu nome e salve nela os seus programas. A conta do laboratório é compartilhada: no fim da aula, copie a sua pasta para o seu pendrive. - Arquivos
.c(C no computador): clique em ▶ ou F5 para compilar e rodar. Arquivos.ino(Arduino): ▶ compila e, com a placa conectada pelo USB, envia e abre o Monitor Serial. Comece seus sketches com#include <Arduino.h>para o editor reconhecer as funções do Arduino.
Enviar para a placa exige que o usuário do laboratório esteja no grupo dialout (vale também para a Arduino IDE): a tarefa Arduino: verificar placa e permissão mostra se está liberado. Enquanto não estiver, teste os sketches no Wokwi.
Ferramentas
- C programas no computador, compilados com o gcc do kit
- Arduino sketches para o Arduino Uno, enviados pelo kit (arduino-cli)
- Wokwi simulador on-line do Arduino, para quem estiver sem placa (wokwi.com)
- Monitor Serial conversa com a placa; o Plotter Serial mostra gráficos das leituras
Exemplos das aulas (três níveis cada: 1 Básico, 2 Intermediário, 3 Avançado): já estão na pasta exemplos do kit, ou em exemplos-progarduino.zip. No Wokwi: abra um projeto Arduino Uno novo, cole o sketch no sketch.ino e o conteúdo do diagram.json na aba diagram.json: o circuito aparece montado.
Unidade 1 Fundamentos de C e primeiros passos com Arduino
Kit portátil, variáveis, entrada e saída, operadores, lógica e decisões, sistemas numéricos e PWM: em C no computador e no Arduino Uno.
1 Apresentação, kit portátil e primeiro programa CArduino
Objetivo
Instalar e abrir o kit portátil, compilar e executar o primeiro programa em C e enviar o primeiro sketch para o Arduino.
Material
- Kit C e Arduino: extrair na pasta pessoal, abrir com
abrir-vscode.sh, rodar com ▶ ou F5. - Estrutura de um programa em C:
#include,main,printf,return 0. - Arduino Uno:
setup()roda uma vez,loop()repete para sempre;pinMode,digitalWrite,delay. - Wokwi: simulador on-line para quem estiver sem placa.
Código em C
- Nível 1 Olá, mundo ver código baixar .c
- Nível 2 Várias linhas, \n e \t ver código baixar .c
- Nível 3 Cartão com moldura ver código baixar .c
Arduino abrir o Wokwi
- Nível 1 Pisca o LED da placa (só a placa) ver sketch circuito (diagram.json)
- Nível 2 LED externo com tempos diferentes (LED) ver sketch circuito (diagram.json)
- Nível 3 SOS em código Morse (LED) ver sketch circuito (diagram.json)
Atividade em sala · 40 min
Primeiro contato. Extraia o kit, rode o Olá, mundo em C e altere a mensagem. Depois faça o LED piscar na placa (ou no Wokwi) com tempos diferentes para aceso e apagado.
Exercícios propostos
Nível 1 Básico
- Imprima seu nome, curso e turma, um em cada linha.
- Faça o LED da placa piscar 1 vez por segundo.
Nível 2 Intermediário
- Imprima uma tabela de 3 linhas alinhada com
\t. - Pisque um LED externo no pino 8 com 1 s aceso e 0,2 s apagado.
Nível 3 Avançado
- Imprima um cartão com moldura e o símbolo
%(use%%). - Pisque seu nome em código Morse (pesquise o alfabeto).
2 Variáveis, tipos e o Monitor Serial CArduino
Objetivo
Declarar variáveis int, float e char, mostrar valores com printf e com Serial.print, e conhecer o tamanho dos tipos.
Material
- Tipos e formatos do
printf:%d,%f,%.2f,%c,%zu. sizeofe os limites (limits.h): no computador ointtem 4 bytes, no Arduino Uno só 2.- Monitor Serial:
Serial.begin(9600),Serial.print,Serial.println.
Código em C
- Nível 1 Três tipos de variável ver código baixar .c
- Nível 2 Área e perímetro de uma placa ver código baixar .c
- Nível 3 Tamanho e limites dos tipos ver código baixar .c
Arduino abrir o Wokwi
- Nível 1 Variáveis no Monitor Serial (só a placa) ver sketch circuito (diagram.json)
- Nível 2 Contador de segundos (só a placa) ver sketch circuito (diagram.json)
- Nível 3 Tipos no Arduino e estouro do int (só a placa) ver sketch circuito (diagram.json)
Atividade em sala · 35 min
Placa de circuito. Calcule em C a área e o perímetro de uma placa de 10,5 × 7,2 cm. No Arduino, mostre no Monitor Serial um contador de segundos e observe o que acontece quando um int passa de 32767.
Exercícios propostos
Nível 1 Básico
- Declare três variáveis (inteira, decimal e caractere) e imprima as três.
Nível 2 Intermediário
- Calcule a área de um círculo de raio 2,5 cm com 3 casas decimais.
- Mostre no Monitor Serial a temperatura, a umidade e o nome de um sensor guardados em variáveis.
Nível 3 Avançado
- Mostre o tamanho de todos os tipos com
sizeofem C e no Arduino e explique as diferenças. - Faça um contador
intno Arduino estourar e explique o número negativo.
3 Entrada de dados: scanf e Monitor Serial CArduino
Objetivo
Ler valores do teclado com scanf e do Monitor Serial com Serial.parseInt/parseFloat, aplicando-os em cálculos de circuitos.
Material
scanf("%f", &variavel): o&indica onde guardar.- Resistores em série e em paralelo; lei de Ohm (
I = V / R) e potência (P = V × I). Serial.available(),Serial.parseInt(),Serial.parseFloat()e a limpeza do Enter.
Código em C
- Nível 1 Ler um número ver código baixar .c
- Nível 2 Resistores em série e em paralelo ver código baixar .c
- Nível 3 Lei de Ohm e potência ver código baixar .c
Arduino abrir o Wokwi
- Nível 1 Eco de números (só a placa) ver sketch circuito (diagram.json)
- Nível 2 Piscar N vezes (LED) ver sketch circuito (diagram.json)
- Nível 3 Lei de Ohm pelo Monitor Serial (só a placa) ver sketch circuito (diagram.json)
Atividade em sala · 40 min
Calculadora de Ohm. Em C, leia tensão e resistência e mostre corrente (A e mA) e potência. No Arduino, faça o mesmo pelo Monitor Serial e use o resultado para piscar um LED tantas vezes quanto a corrente em mA (limite a 10).
Exercícios propostos
Nível 1 Básico
- Leia a idade e mostre quantos anos a pessoa terá daqui a 10 anos.
Nível 2 Intermediário
- Leia R1 e R2 e mostre a resistência em série e em paralelo.
- No Arduino, leia um número pelo Monitor Serial e pisque o LED essa quantidade de vezes.
Nível 3 Avançado
- Leia V e R e mostre I e P; depois diga qual resistor de 1/4 W aguenta.
- No Arduino, receba
tensão resistêncianuma só linha e responda corrente e potência.
4 Operadores, math.h e conversão analógica CArduino
Objetivo
Usar operadores aritméticos, math.h e conversões entre int e float; ler sinais analógicos no Arduino e convertê-los em tensão e porcentagem.
Material
- Divisão inteira × decimal (
17 / 5×17 / 5.0), resto%,sqrt,pow,ceil,floor(compile com-lm). - Conversor analógico-digital do Uno:
analogReaddevolve 0 a 1023 para 0 a 5 V. map()para trocar de escala.
Código em C
- Nível 1 Os operadores ver código baixar .c
- Nível 2 Hipotenusa com math.h ver código baixar .c
- Nível 3 int × float, teto e piso ver código baixar .c
Arduino abrir o Wokwi
- Nível 1 Ler o potenciômetro (potenciômetro) ver sketch circuito (diagram.json)
- Nível 2 Leitura em volts (potenciômetro) ver sketch circuito (diagram.json)
- Nível 3 Porcentagem com map e o perigo do int (potenciômetro) ver sketch circuito (diagram.json)
Atividade em sala · 45 min
Voltímetro. Monte o potenciômetro no A0 e mostre leitura bruta, tensão com 2 casas e porcentagem. Em C, reproduza a conversão para as leituras 0, 256, 512, 768 e 1023 e compare com a placa.
Exercícios propostos
Nível 1 Básico
- Mostre o resultado de
+ - * / %para dois inteiros lidos. - Mostre a leitura do potenciômetro no Plotter Serial.
Nível 2 Intermediário
- Calcule a hipotenusa de um triângulo com
sqrtepow. - Converta a leitura analógica em volts.
Nível 3 Avançado
- Mostre por que
dias * (1 + 12 / 100)dá errado e conserte. - Compare no Arduino a porcentagem calculada com
int, comfloate commap.
5 Expressões lógicas, tabela-verdade e portas lógicas CArduino
Objetivo
Avaliar comparações e expressões com &&, || e !, montar tabelas-verdade e implementar portas lógicas com botões e LEDs.
Material
- Em C, uma comparação vale 1 (verdadeiro) ou 0 (falso).
- Tabelas-verdade de E, OU, NÃO, implicação e OU exclusivo.
- Botões com
INPUT_PULLUP: solto = HIGH, apertado = LOW.
Código em C
- Nível 1 Comparações valem 0 ou 1 ver código baixar .c
- Nível 2 Tabela-verdade de E e OU ver código baixar .c
- Nível 3 Implicação e OU exclusivo ver código baixar .c
Arduino abrir o Wokwi
- Nível 1 Ler um botão (botão) ver sketch circuito (diagram.json)
- Nível 2 Porta E com dois botões (2× botão, LED) ver sketch circuito (diagram.json)
- Nível 3 Portas OU e OU exclusivo (2× botão, 2 LEDs) ver sketch circuito (diagram.json)
Atividade em sala · 40 min
Portas lógicas na prática. Monte dois botões e dois LEDs: um LED faz a porta E e o outro a porta OU exclusivo. Preencha a tabela-verdade testando as 4 combinações e confira com o programa em C.
Exercícios propostos
Nível 1 Básico
- Imprima o resultado de 4 comparações com o mesmo valor.
- Mostre no Monitor Serial o estado de um botão.
Nível 2 Intermediário
- Imprima a tabela-verdade completa de E, OU e NÃO.
- Faça um LED acender só com os dois botões apertados.
Nível 3 Avançado
- Leia p e q e mostre p → q e p XOR q.
- Implemente com dois botões as portas OU, E e XOR ao mesmo tempo em 3 LEDs.
6 Decisão simples e composta: if / else CArduino
Objetivo
Tomar decisões com if/else em C e no Arduino, incluindo a leitura de sensores com limiar e histerese.
Material
- Blocos
if (condição) { ... } else { ... }e chaves obrigatórias para mais de uma instrução. - Bhaskara: decidir pelo sinal do delta.
- Sensor de luz (LDR) no A0; limiar e histerese para evitar o LED piscando no limite.
Código em C
- Nível 1 Par ou ímpar ver código baixar .c
- Nível 2 Série ou paralelo à escolha ver código baixar .c
- Nível 3 Bhaskara com teste do delta ver código baixar .c
Arduino abrir o Wokwi
- Nível 1 Botão acende o LED (botão, LED) ver sketch circuito (diagram.json)
- Nível 2 Luz automática com LDR (LDR, LED) ver sketch circuito (diagram.json)
- Nível 3 Luz automática com histerese (LDR, LED) ver sketch circuito (diagram.json)
Atividade em sala · 45 min
Luz automática. Monte o LDR e um LED: o LED acende quando escurece. Ajuste o limiar olhando o Monitor Serial e depois troque por dois limiares (histerese). Em C, implemente Bhaskara tratando delta negativo.
Exercícios propostos
Nível 1 Básico
- Leia um número e diga se é par ou ímpar.
- Acenda o LED enquanto o botão estiver apertado.
Nível 2 Intermediário
- Escolha série ou paralelo para dois resistores fixos.
- Acenda o LED quando o LDR indicar escuro.
Nível 3 Avançado
- Resolva a equação do 2º grau com todos os casos.
- Implemente a luz automática com histerese e mostre o estado no Monitor Serial.
7 Decisões encadeadas e switch CArduino
Objetivo
Tratar várias faixas com else if e escolher entre casos com switch, em programas de computador e em indicadores com LEDs.
Material
if / else if / else: só o primeiro caso verdadeiro executa.switch (variavel) { case ...: break; default: }para valores exatos (números e caracteres).- Código de cores de resistores.
Código em C
- Nível 1 Faixas de temperatura ver código baixar .c
- Nível 2 Calculadora com switch ver código baixar .c
- Nível 3 Valor do resistor pelas faixas ver código baixar .c
Arduino abrir o Wokwi
- Nível 1 Três faixas, três LEDs (potenciômetro, 3 LEDs) ver sketch circuito (diagram.json)
- Nível 2 Barra de 5 LEDs (potenciômetro, 5 LEDs) ver sketch circuito (diagram.json)
- Nível 3 Comandos por letra com switch (LED) ver sketch circuito (diagram.json)
Atividade em sala · 45 min
Semáforo de nível. Com o potenciômetro e 3 LEDs, acenda verde, amarelo ou vermelho conforme a faixa. Depois troque por uma barra de 5 LEDs. Em C, calcule o valor de um resistor a partir das três faixas de cores.
Exercícios propostos
Nível 1 Básico
- Classifique uma temperatura em frio, agradável ou quente.
- Acenda 1 de 3 LEDs conforme a faixa do potenciômetro.
Nível 2 Intermediário
- Faça uma calculadora com
switch(+ - * /) que evita divisão por zero. - Monte uma barra de 5 LEDs proporcional ao potenciômetro.
Nível 3 Avançado
- Converta as faixas de cor de um resistor no valor em ohms, kohms ou Mohms.
- Controle o LED com as letras L, D e P enviadas pelo Monitor Serial.
8 Sistemas numéricos: binário, decimal e bits CArduino
Objetivo
Converter entre decimal e binário com / e %, usar operadores bit a bit e mostrar números em binário com LEDs.
Material
- Pesos dos bits: 1, 2, 4, 8, 16…
- Operadores
&,|,^,<<,>>e a máscara& 1. - No Arduino:
bitRead(numero, bit)eSerial.println(n, BIN).
Código em C
- Nível 1 Decimal para 4 bits ver código baixar .c
- Nível 2 Binário de 5 bits para decimal ver código baixar .c
- Nível 3 Operadores bit a bit ver código baixar .c
Arduino abrir o Wokwi
- Nível 1 Um número em 4 LEDs (4 LEDs) ver sketch circuito (diagram.json)
- Nível 2 Contador binário (4 LEDs) ver sketch circuito (diagram.json)
- Nível 3 Do Monitor Serial para os LEDs (4 LEDs) ver sketch circuito (diagram.json)
Atividade em sala · 45 min
Contador binário. Monte 4 LEDs (pinos 2 a 5) e faça a contagem de 0 a 15. Depois receba um número pelo Monitor Serial e mostre-o nos LEDs. Em C, converta 5 bits para decimal e confira com os LEDs.
Exercícios propostos
Nível 1 Básico
- Mostre um número de 0 a 15 em 4 bits usando
/e%. - Mostre um número fixo em binário em 4 LEDs.
Nível 2 Intermediário
- Leia 5 bits e mostre o valor decimal.
- Faça o contador binário de 0 a 15.
Nível 3 Avançado
- Mostre o resultado de
& | ^ << >>entre dois bytes e explique bit a bit. - Mostre nos LEDs o número digitado no Monitor Serial usando
>>e&.
9 Constantes, estouro de capacidade e PWM CArduino
Objetivo
Usar #define e const, entender o estouro dos tipos e controlar o brilho de LEDs com PWM (analogWrite).
Material
#define(pré-processador) ×const(variável que não muda).- Estouro:
unsigned charvai até 255;short/intdo Uno até 32767. - PWM nos pinos com
~(3, 5, 6, 9, 10, 11):analogWrite(pino, 0..255); LED RGB.
Código em C
- Nível 1 Constantes com #define ver código baixar .c
- Nível 2 Conversões com const ver código baixar .c
- Nível 3 Estouro de capacidade ver código baixar .c
Arduino abrir o Wokwi
- Nível 1 Brilho fixo com PWM (LED) ver sketch circuito (diagram.json)
- Nível 2 Dimmer com potenciômetro (potenciômetro, LED) ver sketch circuito (diagram.json)
- Nível 3 Cores com LED RGB (LED RGB) ver sketch circuito (diagram.json)
Atividade em sala · 40 min
Dimmer. Controle o brilho de um LED com o potenciômetro. Depois misture cores num LED RGB e crie 5 cores com #define para cada uma.
Exercícios propostos
Nível 1 Básico
- Calcule a área da seção de um fio usando
#define PI. - Deixe um LED com brilho fixo de 25%.
Nível 2 Intermediário
- Calcule a resolução em mV de um conversor de 10 bits.
- Faça um dimmer com potenciômetro.
Nível 3 Avançado
- Mostre 3 estouros diferentes (char, short e int) e explique.
- Faça o LED RGB passar suavemente por todas as cores (fade).
10 Revisão integradora: circuitos e alarmes CArduino
Objetivo
Combinar entrada, cálculo, decisão e saída em programas completos: divisor de tensão, resistor de LED e alarmes com buzzer.
Material
- Divisor de tensão
Vout = Vin × R2 / (R1 + R2)e o limite de 5 V das entradas do Arduino. - Resistor para LED:
R = (Vfonte − Vled) / I. tone(pino, frequência, duração)enoTone.
Código em C
- Nível 1 Lei de Ohm com validação ver código baixar .c
- Nível 2 Divisor de tensão ver código baixar .c
- Nível 3 LED: qual resistor usar? ver código baixar .c
Arduino abrir o Wokwi
- Nível 1 Um bip com o buzzer (buzzer) ver sketch circuito (diagram.json)
- Nível 2 Alarme com botão (botão, buzzer, LED) ver sketch circuito (diagram.json)
- Nível 3 Termômetro simulado com alarme (potenciômetro, 3 LEDs, buzzer) ver sketch circuito (diagram.json)
Atividade em sala · 50 min
Termômetro com alarme. O potenciômetro simula um sensor de 0 a 100 °C: 3 LEDs indicam a faixa e o buzzer apita acima de 70 °C. Em C, calcule o resistor comercial para o LED usado.
Exercícios propostos
Nível 1 Básico
- Calcule a corrente pela lei de Ohm validando a resistência.
- Toque uma nota de 440 Hz por meio segundo.
Nível 2 Intermediário
- Calcule a saída de um divisor de tensão e avise se passar de 5 V.
- Faça um alarme: botão apertado liga LED e sirene.
Nível 3 Avançado
- Calcule o resistor de um LED e escolha o valor comercial.
- Monte o termômetro simulado com 3 faixas e alarme sonoro.
11 Avaliação da Unidade 1 CArduino
Objetivo
Avaliar variáveis, entrada e saída, operadores, decisões e as primeiras montagens com Arduino.
Material
- Prova prática no kit: questões em C e uma montagem no Arduino (placa ou Wokwi).
- Os exemplos desta aula são simulados no formato da prova.
Código em C
- Nível 1 Simulado: conversão de unidades ver código baixar .c
- Nível 2 Simulado: classificar a corrente ver código baixar .c
- Nível 3 Simulado: potência no resistor ver código baixar .c
Arduino abrir o Wokwi
- Nível 1 Simulado: pisca com dois tempos (LED) ver sketch circuito (diagram.json)
- Nível 2 Simulado: botão e potenciômetro (botão, potenciômetro, LED) ver sketch circuito (diagram.json)
- Nível 3 Simulado: semáforo de nível (potenciômetro, 3 LEDs) ver sketch circuito (diagram.json)
Atividade em sala · 50 min
Questão principal da prova. Programa em C com entrada, cálculo e decisão encadeada, e sketch que lê um sensor analógico e decide a saída.
Exercícios propostos
Nível 1 Básico
- Refaça, sem consultar, dois exemplos de nível 1 das aulas 2 a 10.
Nível 2 Intermediário
- Simulado: resolva um exercício de nível 2 de cada aula da unidade.
Nível 3 Avançado
- Simulado: termômetro com faixas e alarme, em C e no Arduino.
12 Reavaliação da Unidade 1 CArduino
Objetivo
Dar uma nova oportunidade a quem não atingiu a média, revisando os pontos com mais erros.
Material
- Correção comentada da avaliação (primeira parte da aula).
- Nova prova para quem não atingiu a média; desafios para os demais.
Código em C
- Nível 1 Revisão: média de duas leituras ver código baixar .c
- Nível 2 Revisão: faixa segura ver código baixar .c
- Nível 3 Revisão: byte em binário ver código baixar .c
Arduino abrir o Wokwi
- Nível 1 Revisão: tensão no Serial (potenciômetro) ver sketch circuito (diagram.json)
- Nível 2 Revisão: liga e desliga com um toque (botão, LED) ver sketch circuito (diagram.json)
- Nível 3 Revisão: binário com PWM (4 LEDs, potenciômetro) ver sketch circuito (diagram.json)
Atividade em sala · 40 min
Desafio para quem já foi aprovado: contador de toques que mostra o total em binário nos LEDs e zera com um toque longo.
Exercícios propostos
Nível 1 Básico
- Refaça as questões que você errou na avaliação.
Nível 2 Intermediário
- Resolva a nova prova (quem não atingiu a média).
Nível 3 Avançado
- Desafio: byte em binário com operadores bit a bit, em C e nos LEDs.
Unidade 2 Repetição, temporização e sensores
Laços for, while e do-while, acumuladores e contadores, números aleatórios, millis(), sensor ultrassônico, calibração, servo e o projeto de nível de tanque.
13 Repetição com for CArduino
Objetivo
Repetir instruções com for em C e no Arduino, inclusive para configurar e acender sequências de pinos.
Material
for (início; condição; passo)e o passo negativo.- Laços para configurar vários pinos com
pinMode. - Tabelas alinhadas com
%3d,%12.1f.
Código em C
- Nível 1 Contar de 0 a 9 ver código baixar .c
- Nível 2 Soma dos ímpares ver código baixar .c
- Nível 3 Tabela de resistores em série ver código baixar .c
Arduino abrir o Wokwi
- Nível 1 Piscar 5 vezes no início (LED) ver sketch circuito (diagram.json)
- Nível 2 Sequência de LEDs (5 LEDs) ver sketch circuito (diagram.json)
- Nível 3 Vai e volta (efeito scanner) (5 LEDs, potenciômetro) ver sketch circuito (diagram.json)
Atividade em sala · 40 min
Scanner de LEDs. Monte 5 LEDs e faça a luz ir e voltar com velocidade controlada pelo potenciômetro. Em C, gere a tabela de resistência equivalente para 1 a 6 resistores iguais.
Exercícios propostos
Nível 1 Básico
- Mostre os números de 0 a 9.
- Pisque o LED 5 vezes no
setup.
Nível 2 Intermediário
- Some os ímpares de 1 a 199.
- Acenda os LEDs dos pinos 2 a 6 em sequência.
Nível 3 Avançado
- Gere a tabela série/paralelo para N resistores iguais.
- Faça o efeito de ida e volta sem repetir as pontas.
14 Acumuladores e médias CArduino
Objetivo
Usar acumuladores para somas, juros e médias, e reduzir ruído de sensores com média e média móvel.
Material
- Acumulador começa em 0 (soma) ou 1 (produto).
- Juros compostos mês a mês.
- Média simples e média móvel com vetor circular; Plotter Serial para comparar.
Código em C
- Nível 1 Soma de 1 a 100 ver código baixar .c
- Nível 2 Juros compostos ver código baixar .c
- Nível 3 Média de N medições ver código baixar .c
Arduino abrir o Wokwi
- Nível 1 Média de 10 leituras (potenciômetro) ver sketch circuito (diagram.json)
- Nível 2 Média móvel (LDR suavizado) (LDR) ver sketch circuito (diagram.json)
- Nível 3 Mínimo, máximo e média de 50 leituras (potenciômetro) ver sketch circuito (diagram.json)
Atividade em sala · 45 min
Leitura estável. Compare no Plotter Serial a leitura bruta do LDR com a média móvel de 8 leituras. Em C, calcule a média de N medições digitadas.
Exercícios propostos
Nível 1 Básico
- Some os números de 1 a 100.
- Mostre a média de 10 leituras do potenciômetro.
Nível 2 Intermediário
- Simule juros compostos mês a mês.
- Implemente a média móvel do LDR.
Nível 3 Avançado
- Leia N medições e mostre a média.
- Mostre mínimo, máximo e média de cada bloco de 50 leituras.
15 Repetição com while e do-while CArduino
Objetivo
Repetir enquanto uma condição for verdadeira, quando não se sabe quantas voltas serão necessárias, e medir tempos com millis().
Material
while (condição)testa antes;do { } while (condição);executa pelo menos uma vez.- Menus com validação de entrada.
- No Arduino,
whileprende o programa: use com cuidado.
Código em C
- Nível 1 Somar até chegar a 42 ver código baixar .c
- Nível 2 Treino para a maratona ver código baixar .c
- Nível 3 Menu com do-while e validação ver código baixar .c
Arduino abrir o Wokwi
- Nível 1 Enquanto o botão estiver apertado (botão, LED) ver sketch circuito (diagram.json)
- Nível 2 Esperar escurecer (LDR, LED) ver sketch circuito (diagram.json)
- Nível 3 Quanto tempo o botão ficou apertado? (botão) ver sketch circuito (diagram.json)
Atividade em sala · 40 min
Cronômetro de botão. Meça por quanto tempo o botão ficou apertado e mostre em ms. Em C, simule o treino para a maratona com treinos 10% maiores a cada 3 dias.
Exercícios propostos
Nível 1 Básico
- Some valores lidos até a soma chegar a 42.
- Mantenha o LED aceso enquanto o botão estiver apertado.
Nível 2 Intermediário
- Simule a maratona e mostre em que dia ela acontece.
- Espere escurecer para piscar o LED 3 vezes.
Nível 3 Avançado
- Faça um menu com
do-whilee opção inválida. - Meça a duração do toque com
millis().
16 Contadores, maior e menor, detecção de borda CArduino
Objetivo
Contar ocorrências, encontrar extremos e contar toques de botão corretamente (borda e debounce).
Material
- Contador com
++dentro de umif. - Maior e menor iniciados com a primeira leitura.
- Borda de descida (solto → apertado) e debounce de 50 ms.
Código em C
- Nível 1 Contar pares de 1 a 50 ver código baixar .c
- Nível 2 Monitoramento de tensão ver código baixar .c
- Nível 3 Maior, menor e média ver código baixar .c
Arduino abrir o Wokwi
- Nível 1 Contar toques (botão) ver sketch circuito (diagram.json)
- Nível 2 Contar toques sem repique (botão) ver sketch circuito (diagram.json)
- Nível 3 Contador em binário com reset (botão, 4 LEDs) ver sketch circuito (diagram.json)
Atividade em sala · 45 min
Contador de peças. Cada toque no botão é uma peça: mostre o total em binário nos LEDs e zere com um toque longo. Em C, calcule o percentual de leituras de tensão dentro da faixa.
Exercícios propostos
Nível 1 Básico
- Conte os pares de 1 a 50.
- Conte os toques no botão.
Nível 2 Intermediário
- Calcule o percentual de leituras de tensão entre 200 e 240 V.
- Conte toques com debounce.
Nível 3 Avançado
- Mostre maior, menor e média de N temperaturas.
- Contador binário com reset por toque longo.
17 Números aleatórios e jogos CArduino
Objetivo
Gerar números aleatórios com rand/srand e random/randomSeed e usá-los em jogos.
Material
srand(time(NULL))erand() % 6 + 1.randomSeed(analogRead(A5))erandom(1, 7)no Arduino.- Medição de tempo de reação com
millis().
Código em C
- Nível 1 Jogar um dado ver código baixar .c
- Nível 2 Jogo de contas até errar ver código baixar .c
- Nível 3 Pedra, papel e tesoura ver código baixar .c
Arduino abrir o Wokwi
- Nível 1 Dado no Monitor Serial (botão) ver sketch circuito (diagram.json)
- Nível 2 Dado com 6 LEDs (botão, 6 LEDs) ver sketch circuito (diagram.json)
- Nível 3 Teste de reflexo (botão, LED) ver sketch circuito (diagram.json)
Atividade em sala · 45 min
Teste de reflexo. O LED acende depois de um tempo aleatório e o jogador aperta o botão: mostre o tempo de reação e detecte a largada queimada. Em C, faça o pedra, papel e tesoura.
Exercícios propostos
Nível 1 Básico
- Jogue um dado no computador.
- Jogue um dado com o botão e mostre no Monitor Serial.
Nível 2 Intermediário
- Jogo de contas de soma até errar.
- Dado com 6 LEDs.
Nível 3 Avançado
- Pedra, papel e tesoura contra o computador.
- Teste de reflexo com largada queimada.
18 Laços aninhados: tabelas, primos e MDC CArduino
Objetivo
Combinar laços dentro de laços e com decisões para gerar tabelas, primos, MDC e padrões de LEDs.
Material
- Laço de fora (linhas) e laço de dentro (colunas).
- Teste de primo até a raiz; algoritmo de Euclides.
breakpara sair cedo.
Código em C
- Nível 1 Tabuada completa (laço aninhado) ver código baixar .c
- Nível 2 Primos até N ver código baixar .c
- Nível 3 MDC e MMC ver código baixar .c
Arduino abrir o Wokwi
- Nível 1 Padrão com laços aninhados (LED) ver sketch circuito (diagram.json)
- Nível 2 Primos no Monitor Serial (só a placa) ver sketch circuito (diagram.json)
- Nível 3 Contagem regressiva na barra de LEDs (5 LEDs) ver sketch circuito (diagram.json)
Atividade em sala · 40 min
Primos e padrões. Mostre no Monitor Serial os primos até 200 e faça a contagem regressiva numa barra de 5 LEDs. Em C, calcule o MDC e o MMC de dois números.
Exercícios propostos
Nível 1 Básico
- Mostre a tabuada completa de 1 a 10.
- Pisque 3 séries de 2 piscadas.
Nível 2 Intermediário
- Mostre os primos até N.
- Mostre os primos até 200 no Arduino.
Nível 3 Avançado
- Calcule MDC e MMC.
- Faça a contagem regressiva na barra e um efeito final.
19 Temporização: time.h e millis() CArduino
Objetivo
Medir e controlar o tempo em C (time, sleep, clock) e no Arduino sem travar o programa (millis).
Material
time,localtime,strftime,sleep,clockeCLOCKS_PER_SEC.delaytrava o Arduino;millis()permite fazer várias coisas ao mesmo tempo.- Máquina de estados.
Código em C
- Nível 1 Que horas são? ver código baixar .c
- Nível 2 Contagem regressiva com sleep ver código baixar .c
- Nível 3 Cronômetro de processamento ver código baixar .c
Arduino abrir o Wokwi
- Nível 1 Piscar sem delay (LED) ver sketch circuito (diagram.json)
- Nível 2 Dois LEDs, dois ritmos (2 LEDs) ver sketch circuito (diagram.json)
- Nível 3 Semáforo com botão de pedestre (botão, 3 LEDs) ver sketch circuito (diagram.json)
Atividade em sala · 50 min
Semáforo inteligente. Implemente o semáforo com millis() e máquina de estados, com botão de pedestre que encurta o verde. Em C, meça quanto tempo um laço pesado leva.
Exercícios propostos
Nível 1 Básico
- Mostre a data e a hora atuais.
- Pisque o LED sem
delay.
Nível 2 Intermediário
- Faça uma contagem regressiva com
sleep. - Pisque dois LEDs em ritmos diferentes.
Nível 3 Avançado
- Cronometre um cálculo com
clock. - Semáforo com botão de pedestre.
20 Sensor ultrassônico HC-SR04 CArduino
Objetivo
Converter o tempo de eco em distância, classificar distâncias e construir alarmes de aproximação.
Material
- Velocidade do som: 0,0343 cm/µs; ida e volta: divide por 2.
pulseIn(ECHO, HIGH, limite)e o pulso de 10 µs no TRIG.- Variação da velocidade do som com a temperatura.
Código em C
- Nível 1 Do tempo de eco à distância ver código baixar .c
- Nível 2 Classificar uma série de leituras ver código baixar .c
- Nível 3 Velocidade do som e temperatura ver código baixar .c
Arduino abrir o Wokwi
- Nível 1 Distância com o HC-SR04 (HC-SR04) ver sketch circuito (diagram.json)
- Nível 2 Alarme de aproximação (HC-SR04, LED) ver sketch circuito (diagram.json)
- Nível 3 Sensor de estacionamento (HC-SR04, buzzer) ver sketch circuito (diagram.json)
Atividade em sala · 50 min
Sensor de estacionamento. Bipes mais rápidos quanto mais perto, e som contínuo abaixo de 10 cm. No Wokwi, mude a distância do sensor clicando nele. Em C, monte a tabela eco × distância.
Exercícios propostos
Nível 1 Básico
- Converta um tempo de eco em centímetros.
- Mostre a distância medida no Monitor Serial.
Nível 2 Intermediário
- Classifique N leituras em livre, perto e PARE.
- Acenda o LED abaixo de 20 cm.
Nível 3 Avançado
- Mostre a distância corrigida para 0 a 40 °C.
- Sensor de estacionamento com buzzer.
21 Sensores analógicos, map e calibração CArduino
Objetivo
Converter leituras com map/constrain, calibrar sensores pelo mínimo e máximo e acionar um servo.
Material
- A fórmula do
mape o cuidado com a divisão inteira. - Calibração automática nos primeiros segundos.
- Servo: biblioteca
Servo.h,attachewrite(ângulo).
Código em C
- Nível 1 A conta do map ver código baixar .c
- Nível 2 Calibração por mínimo e máximo ver código baixar .c
- Nível 3 Sensor LM35: tensão em temperatura ver código baixar .c
Arduino abrir o Wokwi
- Nível 1 Luz em porcentagem (LDR) ver sketch circuito (diagram.json)
- Nível 2 Calibração automática (LDR, LED) ver sketch circuito (diagram.json)
- Nível 3 Servo segue o potenciômetro (potenciômetro, servo) ver sketch circuito (diagram.json)
Atividade em sala · 45 min
Servo controlado. Faça o servo seguir o potenciômetro e depois a luz do LDR calibrado. Em C, converta leituras do sensor LM35 em temperatura.
Exercícios propostos
Nível 1 Básico
- Implemente a conta do
map. - Mostre a escuridão em porcentagem.
Nível 2 Intermediário
- Calibre leituras pelo mínimo e máximo.
- Calibre o LDR automaticamente nos primeiros 5 s.
Nível 3 Avançado
- Converta leituras do LM35 em °C.
- Servo seguindo o potenciômetro.
22 Projeto da unidade: nível de tanque CArduino
Objetivo
Integrar sensor, laços, decisões e atuadores num sistema de controle de nível com histerese.
Material
- Simulação do tanque em C: entrada, consumo e limites.
- Ultrassônico como sensor de nível; barra de LEDs; bomba representada por LED (ou relé).
- Histerese: liga abaixo de 30%, desliga acima de 90%.
Código em C
- Nível 1 Tanque enchendo ver código baixar .c
- Nível 2 Tanque com consumo ver código baixar .c
- Nível 3 Bomba com histerese ver código baixar .c
Arduino abrir o Wokwi
- Nível 1 Nível do tanque em % (HC-SR04) ver sketch circuito (diagram.json)
- Nível 2 Nível do tanque na barra de LEDs (HC-SR04, 5 LEDs) ver sketch circuito (diagram.json)
- Nível 3 Bomba automática com histerese (HC-SR04, LED, buzzer) ver sketch circuito (diagram.json)
Atividade em sala · 50 min
Controle de nível. Monte o sistema completo no Arduino (nível em %, barra de LEDs, bomba com histerese e alarme de tanque quase vazio) e valide a lógica antes com a simulação em C.
Exercícios propostos
Nível 1 Básico
- Simule um tanque enchendo até 500 L.
- Mostre o nível em %.
Nível 2 Intermediário
- Simule entrada e consumo variável.
- Mostre o nível numa barra de 5 LEDs.
Nível 3 Avançado
- Simule a bomba com histerese.
- Bomba automática com alarme.
23 Avaliação da Unidade 2 CArduino
Objetivo
Avaliar repetição, acumuladores, contadores, aleatoriedade, temporização e sensores.
Material
- Prova prática no kit: questões em C com laços e um sketch com sensor e atuador.
- Os exemplos desta aula são simulados no formato da prova.
Código em C
- Nível 1 Simulado: tabuada de N ver código baixar .c
- Nível 2 Simulado: média até digitar negativo ver código baixar .c
- Nível 3 Simulado: quantos primos? ver código baixar .c
Arduino abrir o Wokwi
- Nível 1 Simulado: N piscadas pelo potenciômetro (potenciômetro, botão, LED) ver sketch circuito (diagram.json)
- Nível 2 Simulado: média de 20 leituras do LDR (LDR) ver sketch circuito (diagram.json)
- Nível 3 Simulado: distância em 3 faixas (HC-SR04, 3 LEDs) ver sketch circuito (diagram.json)
Atividade em sala · 50 min
Questão principal da prova. Laço com acumulador ou contador em C, e sketch que classifica a distância do ultrassônico em 3 faixas.
Exercícios propostos
Nível 1 Básico
- Refaça, sem consultar, dois exemplos de nível 1 das aulas 13 a 22.
Nível 2 Intermediário
- Simulado: resolva um exercício de nível 2 de cada aula da unidade.
Nível 3 Avançado
- Simulado: distância em 3 faixas com LEDs e média de leituras.
24 Reavaliação da Unidade 2 CArduino
Objetivo
Dar uma nova oportunidade a quem não atingiu a média, revisando os pontos com mais erros.
Material
- Correção comentada da avaliação (primeira parte da aula).
- Nova prova para quem não atingiu a média; desafios para os demais.
Código em C
- Nível 1 Revisão: contagem de 10 em 10 ver código baixar .c
- Nível 2 Revisão: dados até sair 6 ver código baixar .c
- Nível 3 Revisão: tabela de eco ver código baixar .c
Arduino abrir o Wokwi
- Nível 1 Revisão: pisca com millis e potenciômetro (potenciômetro, LED) ver sketch circuito (diagram.json)
- Nível 2 Revisão: contador de toques com limite (botão, LED) ver sketch circuito (diagram.json)
- Nível 3 Revisão: servo pelo ultrassom (HC-SR04, servo) ver sketch circuito (diagram.json)
Atividade em sala · 40 min
Desafio para quem já foi aprovado: servo que aponta para a distância medida pelo ultrassônico (5 a 50 cm → 0 a 180°).
Exercícios propostos
Nível 1 Básico
- Refaça as questões que você errou na avaliação.
Nível 2 Intermediário
- Resolva a nova prova (quem não atingiu a média).
Nível 3 Avançado
- Desafio: jogue dados até sair 6 e conte as jogadas, em C e no Arduino.
Unidade 3 Vetores, funções, ponteiros e projeto
Vetores, busca e ordenação, strings, funções, ponteiros, memória, matrizes, struct e o projeto final: uma estação de monitoramento.
25 Vetores CArduino
Objetivo
Guardar vários valores num vetor, percorrê-lo com for e usar vetores de pinos e de notas musicais.
Material
- Declaração
int v[10], índices de 0 a 9,sizeof(v) / sizeof(v[0]). - Decimal para binário guardando os restos num vetor.
- Vetores de pinos e de notas no Arduino.
Código em C
- Nível 1 Ler e mostrar um vetor ver código baixar .c
- Nível 2 Ordem inversa e soma ver código baixar .c
- Nível 3 Decimal para binário com vetor ver código baixar .c
Arduino abrir o Wokwi
- Nível 1 Vetor de pinos (4 LEDs) ver sketch circuito (diagram.json)
- Nível 2 Melodia com vetores (buzzer) ver sketch circuito (diagram.json)
- Nível 3 Guardar 10 leituras (potenciômetro, botão) ver sketch circuito (diagram.json)
Atividade em sala · 45 min
Melodia. Toque uma melodia com dois vetores (notas e durações) e acenda um LED diferente para cada nota. Em C, converta decimal para binário usando um vetor.
Exercícios propostos
Nível 1 Básico
- Leia 5 valores e mostre o vetor.
- Pisque LEDs guardados num vetor de pinos.
Nível 2 Intermediário
- Mostre um vetor ao contrário e a soma.
- Toque uma melodia com vetores.
Nível 3 Avançado
- Converta decimal para binário com vetor.
- Guarde 10 leituras com o botão e mostre todas.
26 Busca, maior/menor e ordenação CArduino
Objetivo
Buscar valores, encontrar posições de extremos e ordenar vetores; aplicar a ordenação no filtro de mediana.
Material
- Busca sequencial com parada antecipada.
- Bubble sort: trocas entre vizinhos.
- Mediana: ordena e pega o elemento do meio; elimina picos de ruído.
Código em C
- Nível 1 Maior e menor do vetor ver código baixar .c
- Nível 2 Busca sequencial ver código baixar .c
- Nível 3 Ordenação (bubble sort) ver código baixar .c
Arduino abrir o Wokwi
- Nível 1 Maior de 10 leituras (potenciômetro) ver sketch circuito (diagram.json)
- Nível 2 Filtro de mediana (LDR) ver sketch circuito (diagram.json)
- Nível 3 Mediana × média (LDR) ver sketch circuito (diagram.json)
Atividade em sala · 45 min
Filtro de mediana. Compare no Plotter Serial a média e a mediana de leituras do LDR com picos simulados. Em C, ordene um vetor com bubble sort e mostre cada passada.
Exercícios propostos
Nível 1 Básico
- Encontre o maior e o menor de um vetor e suas posições.
- Mostre a maior de 10 leituras.
Nível 2 Intermediário
- Procure um resistor no estoque.
- Implemente a mediana de 5 leituras.
Nível 3 Avançado
- Ordene com bubble sort.
- Compare média e mediana com ruído.
27 Strings e comandos por texto CArduino
Objetivo
Ler e manipular textos com fgets e string.h e controlar o Arduino com comandos de texto pelo Monitor Serial.
Material
char texto[100], o terminador'\0',fgets,strlen,strncmp,strcspn.Serial.readStringUntil('\n'),trim,toUpperCase,indexOf,substring,toInt.
Código em C
- Nível 1 Ler uma frase e contar letras ver código baixar .c
- Nível 2 Palíndromo ver código baixar .c
- Nível 3 Quantas vezes a palavra aparece? ver código baixar .c
Arduino abrir o Wokwi
- Nível 1 Ler uma linha do Monitor Serial (só a placa) ver sketch circuito (diagram.json)
- Nível 2 Comandos LIGA e DESLIGA (LED) ver sketch circuito (diagram.json)
- Nível 3 Comando com parâmetro (LED, buzzer) ver sketch circuito (diagram.json)
Atividade em sala · 50 min
Controle por comandos. Implemente PISCA n e BIP frequência no Arduino. Em C, conte quantas vezes uma palavra aparece num texto.
Exercícios propostos
Nível 1 Básico
- Conte os caracteres de uma frase.
- Responda ao nome digitado no Monitor Serial.
Nível 2 Intermediário
- Diga se uma palavra é palíndromo.
- Comandos LIGA, DESLIGA e ESTADO.
Nível 3 Avançado
- Conte as ocorrências de uma palavra.
- Comandos com parâmetro numérico.
28 Funções CArduino
Objetivo
Organizar programas em funções com parâmetros e retorno, em C e no Arduino.
Material
- Tipo de retorno, parâmetros,
returnevoid. - Funções que chamam funções (paralelo de 3 resistores).
- No Arduino: funções para piscar, medir distância e tocar notas.
Código em C
- Nível 1 Minha primeira função ver código baixar .c
- Nível 2 Funções para resistores ver código baixar .c
- Nível 3 Função e_primo ver código baixar .c
Arduino abrir o Wokwi
- Nível 1 Função piscar(pino, vezes) (2 LEDs) ver sketch circuito (diagram.json)
- Nível 2 Função que mede a distância (HC-SR04) ver sketch circuito (diagram.json)
- Nível 3 Funções para tocar música (buzzer, LED) ver sketch circuito (diagram.json)
Atividade em sala · 45 min
Biblioteca de funções. Crie piscar(pino, vezes), distancia_cm() e tocar(nota, tempos) e use as três num mesmo sketch. Em C, crie serie e paralelo e calcule associações mistas.
Exercícios propostos
Nível 1 Básico
- Crie a função
perimetro(raio). - Crie
piscar(pino, vezes).
Nível 2 Intermediário
- Crie
serieeparalelopara resistores. - Crie
distancia_cm().
Nível 3 Avançado
- Crie
e_primo(n)e liste os primos até N. - Toque uma música com funções.
29 Funções com vetores CArduino
Objetivo
Passar vetores para funções e devolver estatísticas, ordenar e acender barras de LEDs.
Material
- Vetor como parâmetro (
int v[], int n): a função altera o original. - Funções de soma, média, maior, ordenação e impressão.
- Mediana sobre uma cópia do vetor.
Código em C
- Nível 1 Soma de um vetor numa função ver código baixar .c
- Nível 2 Média e maior em funções ver código baixar .c
- Nível 3 Ordenar e imprimir com funções ver código baixar .c
Arduino abrir o Wokwi
- Nível 1 Função media(vetor, n) (potenciômetro) ver sketch circuito (diagram.json)
- Nível 2 Função que acende a barra (potenciômetro, 5 LEDs) ver sketch circuito (diagram.json)
- Nível 3 Função mediana (LDR) ver sketch circuito (diagram.json)
Atividade em sala · 45 min
Painel de leituras. Escreva media, mediana e acender_barra e combine-as: a barra de LEDs mostra a mediana do LDR. Em C, ordene e imprima com funções.
Exercícios propostos
Nível 1 Básico
- Some um vetor numa função.
- Calcule a média de 8 leituras numa função.
Nível 2 Intermediário
- Crie
mediaemaior. - Crie
acender_barra(nivel).
Nível 3 Avançado
- Crie
ordenareimprimir. - Crie
medianasem alterar o vetor original.
30 Ponteiros CArduino
Objetivo
Entender endereços e ponteiros, alterar variáveis dentro de funções e devolver mais de um resultado.
Material
&(endereço de) e*(valor apontado);%p.- Passagem por referência:
trocar(&a, &b). - Funções com várias saídas:
min_max(v, n, &menor, &maior).
Código em C
- Nível 1 Endereço e conteúdo ver código baixar .c
- Nível 2 Trocar dois valores ver código baixar .c
- Nível 3 Função com duas respostas ver código baixar .c
Arduino abrir o Wokwi
- Nível 1 Endereços na memória do Arduino (só a placa) ver sketch circuito (diagram.json)
- Nível 2 Uma leitura, duas respostas (LDR) ver sketch circuito (diagram.json)
- Nível 3 Trocar o estado de dois LEDs (botão, 2 LEDs) ver sketch circuito (diagram.json)
Atividade em sala · 45 min
Duas respostas. Escreva ler_luz(&leitura, &volts) no Arduino e min_max em C, e explique no caderno por que os parâmetros precisam ser ponteiros.
Exercícios propostos
Nível 1 Básico
- Mostre o endereço e o valor de uma variável.
- Mostre o endereço de uma variável no Arduino.
Nível 2 Intermediário
- Troque dois valores com uma função.
- Devolva leitura e tensão por ponteiros.
Nível 3 Avançado
- Devolva o menor e o maior por ponteiros.
- Troque o estado de dois LEDs com ponteiros.
31 Ponteiros, vetores e memória CArduino
Objetivo
Percorrer vetores com aritmética de ponteiros, alocar memória com malloc e conhecer os limites de memória do Uno.
Material
vé o endereço dev[0];p + iavança i elementos.malloc,freee o teste deNULL.- Uno: 2 KB de RAM;
F()guarda textos na flash; memória livre.
Código em C
- Nível 1 Ponteiro andando pelo vetor ver código baixar .c
- Nível 2 Vetor do tamanho que o usuário quiser ver código baixar .c
- Nível 3 Contar vogais com ponteiro ver código baixar .c
Arduino abrir o Wokwi
- Nível 1 Quanto ocupa cada tipo (só a placa) ver sketch circuito (diagram.json)
- Nível 2 Percorrer um vetor com ponteiro (só a placa) ver sketch circuito (diagram.json)
- Nível 3 Memória livre (só a placa) ver sketch circuito (diagram.json)
Atividade em sala · 40 min
Quanto cabe no Uno? Meça a memória livre antes, durante e depois de uma função com um vetor grande. Em C, leia N valores num vetor alocado com malloc.
Exercícios propostos
Nível 1 Básico
- Percorra um vetor com ponteiro mostrando os endereços.
- Mostre o tamanho dos tipos no Arduino.
Nível 2 Intermediário
- Aloque um vetor do tamanho pedido.
- Percorra um vetor com ponteiro no Arduino.
Nível 3 Avançado
- Conte vogais andando com um ponteiro pela string.
- Mostre a memória livre.
32 Matrizes CArduino
Objetivo
Usar matrizes (vetores de duas ou mais dimensões) para tabelas, jogos e animações.
Material
int m[3][3], laços aninhados por linha e coluna.- Médias por linha e por coluna.
- Matriz de notas e de quadros de animação.
Código em C
- Nível 1 Matriz 3 × 3 ver código baixar .c
- Nível 2 Leituras de 3 sensores por 4 horas ver código baixar .c
- Nível 3 Jogo da velha ver código baixar .c
Arduino abrir o Wokwi
- Nível 1 Melodia numa matriz (buzzer) ver sketch circuito (diagram.json)
- Nível 2 Padrões de LEDs numa matriz (4 LEDs) ver sketch circuito (diagram.json)
- Nível 3 Animações escolhidas pelo botão (botão, 4 LEDs) ver sketch circuito (diagram.json)
Atividade em sala · 50 min
Animações. Crie 3 animações de 4 LEDs numa matriz e troque de animação com o botão. Em C, jogue uma partida do jogo da velha.
Exercícios propostos
Nível 1 Básico
- Mostre uma matriz 3 × 3 e a diagonal.
- Toque uma melodia guardada numa matriz.
Nível 2 Intermediário
- Calcule médias por sensor e por hora.
- Mostre quadros de animação em LEDs.
Nível 3 Avançado
- Jogo da velha completo.
- Animações escolhidas pelo botão.
33 Estruturas (struct) CArduino
Objetivo
Agrupar dados com struct, usar vetores de structs e passá-los para funções.
Material
struct,typedef, acesso com.e com->(ponteiro).- Vetor de structs.
- No Arduino: um struct por LED com seu próprio ritmo.
Código em C
- Nível 1 Um struct para um ponto ver código baixar .c
- Nível 2 Vetor de leituras de sensores ver código baixar .c
- Nível 3 Cadastro de componentes ver código baixar .c
Arduino abrir o Wokwi
- Nível 1 Um struct para um LED (LED) ver sketch circuito (diagram.json)
- Nível 2 Vetor de structs: vários LEDs (3 LEDs) ver sketch circuito (diagram.json)
- Nível 3 Struct de estatísticas (potenciômetro) ver sketch circuito (diagram.json)
Atividade em sala · 45 min
LEDs independentes. Descreva cada LED por um struct (pino, período, último instante, estado) e faça 3 LEDs piscarem em ritmos diferentes com uma única função. Em C, cadastre componentes num vetor de structs.
Exercícios propostos
Nível 1 Básico
- Calcule a distância entre dois pontos com struct.
- Pisque um LED descrito por um struct.
Nível 2 Intermediário
- Mostre um vetor de leituras de sensores.
- Pisque 3 LEDs com um vetor de structs.
Nível 3 Avançado
- Cadastre componentes e some as quantidades.
- Acumule estatísticas num struct.
34 Projeto final: estação de monitoramento CArduino
Objetivo
Desenvolver uma estação que mede, registra em CSV, gera alarmes e aceita comandos, integrando tudo o que foi visto.
Material
- Saída CSV pelo Monitor Serial (cole no Google Planilhas e faça gráficos).
- Em C: vetor de structs, estatísticas e gravação em arquivo (
fopen,fprintf,fclose). - Comandos de configuração e leitura sem travar (
millis).
Código em C
- Nível 1 Registro de medições em vetor de struct ver código baixar .c
- Nível 2 Estatísticas do registro ver código baixar .c
- Nível 3 Salvar o registro em CSV ver código baixar .c
Arduino abrir o Wokwi
- Nível 1 Estação: leituras em CSV (LDR, potenciômetro) ver sketch circuito (diagram.json)
- Nível 2 Estação com alarmes (LDR, potenciômetro, 2 LEDs, buzzer) ver sketch circuito (diagram.json)
- Nível 3 Estação com comandos e struct (LDR, potenciômetro, LED, buzzer) ver sketch circuito (diagram.json)
Atividade em sala · 50 min
Estação completa. Monte a estação (luz e temperatura simulada), configure o limite de alarme por comando e registre 2 minutos de dados em CSV. Em C, leia o registro e salve as estatísticas em arquivo.
Exercícios propostos
Nível 1 Básico
- Registre medições num vetor de structs.
- Envie as leituras em CSV.
Nível 2 Intermediário
- Mostre estatísticas e alertas do registro.
- Adicione alarmes de escuro e temperatura.
Nível 3 Avançado
- Salve o registro em
medicoes.csv. - Configure limite e intervalo por comandos.
35 Avaliação da Unidade 3 CArduino
Objetivo
Avaliar vetores, strings, funções, ponteiros, matrizes e structs, em C e no Arduino.
Material
- Prova prática no kit: programa em C com funções e vetores e sketch com vetor e comandos.
- Os exemplos desta aula são simulados no formato da prova.
Código em C
- Nível 1 Simulado: vetor e média ver código baixar .c
- Nível 2 Simulado: função que conta ver código baixar .c
- Nível 3 Simulado: struct e ponteiro ver código baixar .c
Arduino abrir o Wokwi
- Nível 1 Simulado: vetor de pinos (3 LEDs) ver sketch circuito (diagram.json)
- Nível 2 Simulado: função de média com mediana (LDR) ver sketch circuito (diagram.json)
- Nível 3 Simulado: comando e struct (LED) ver sketch circuito (diagram.json)
Atividade em sala · 50 min
Questão principal da prova. Função sobre vetor em C e sketch com struct controlado por comando.
Exercícios propostos
Nível 1 Básico
- Refaça, sem consultar, dois exemplos de nível 1 das aulas 25 a 34.
Nível 2 Intermediário
- Simulado: resolva um exercício de nível 2 de cada aula da unidade.
Nível 3 Avançado
- Simulado: struct e ponteiro em C; comando e struct no Arduino.
36 Reavaliação da Unidade 3 CArduino
Objetivo
Dar uma nova oportunidade a quem não atingiu a média e fechar a disciplina.
Material
- Correção comentada da avaliação (primeira parte da aula).
- Nova prova para quem não atingiu a média; desafios para os demais.
- Fechamento: próximos passos (ESP32, IoT, sensores digitais).
Código em C
- Nível 1 Revisão: inverter uma string ver código baixar .c
- Nível 2 Revisão: matriz identidade ver código baixar .c
- Nível 3 Revisão: malloc e ordenação ver código baixar .c
Arduino abrir o Wokwi
- Nível 1 Revisão: maior leitura com função (potenciômetro) ver sketch circuito (diagram.json)
- Nível 2 Revisão: semáforo com vetor de structs (3 LEDs) ver sketch circuito (diagram.json)
- Nível 3 Revisão: registro CSV com média móvel (LDR) ver sketch circuito (diagram.json)
Atividade em sala · 40 min
Desafio para quem já foi aprovado: registro CSV com média móvel e semáforo descrito por vetor de structs.
Exercícios propostos
Nível 1 Básico
- Refaça as questões que você errou na avaliação.
Nível 2 Intermediário
- Resolva a nova prova (quem não atingiu a média).
Nível 3 Avançado
- Desafio: ordenação com
malloceqsort, e registro CSV com média móvel no Arduino.