← Cursos

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.

  1. Abra Kit C e Arduino no menu de aplicativos. O VS Code abre a pasta C-e-Arduino, com exemplos (todas as aulas) e trabalhos.
  2. 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.
  3. 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

  1. Nível 1 Olá, mundo ver código baixar .c
  2. Nível 2 Várias linhas, \n e \t ver código baixar .c
  3. Nível 3 Cartão com moldura ver código baixar .c

Arduino abrir o Wokwi

  1. Nível 1 Pisca o LED da placa (só a placa) ver sketch circuito (diagram.json)
  2. Nível 2 LED externo com tempos diferentes (LED) ver sketch circuito (diagram.json)
  3. 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

  1. Imprima seu nome, curso e turma, um em cada linha.
  2. Faça o LED da placa piscar 1 vez por segundo.

Nível 2 Intermediário

  1. Imprima uma tabela de 3 linhas alinhada com \t.
  2. Pisque um LED externo no pino 8 com 1 s aceso e 0,2 s apagado.

Nível 3 Avançado

  1. Imprima um cartão com moldura e o símbolo % (use %%).
  2. 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.
  • sizeof e os limites (limits.h): no computador o int tem 4 bytes, no Arduino Uno só 2.
  • Monitor Serial: Serial.begin(9600), Serial.print, Serial.println.

Código em C

  1. Nível 1 Três tipos de variável ver código baixar .c
  2. Nível 2 Área e perímetro de uma placa ver código baixar .c
  3. Nível 3 Tamanho e limites dos tipos ver código baixar .c

Arduino abrir o Wokwi

  1. Nível 1 Variáveis no Monitor Serial (só a placa) ver sketch circuito (diagram.json)
  2. Nível 2 Contador de segundos (só a placa) ver sketch circuito (diagram.json)
  3. 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

  1. Declare três variáveis (inteira, decimal e caractere) e imprima as três.

Nível 2 Intermediário

  1. Calcule a área de um círculo de raio 2,5 cm com 3 casas decimais.
  2. Mostre no Monitor Serial a temperatura, a umidade e o nome de um sensor guardados em variáveis.

Nível 3 Avançado

  1. Mostre o tamanho de todos os tipos com sizeof em C e no Arduino e explique as diferenças.
  2. Faça um contador int no 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

  1. Nível 1 Ler um número ver código baixar .c
  2. Nível 2 Resistores em série e em paralelo ver código baixar .c
  3. Nível 3 Lei de Ohm e potência ver código baixar .c

Arduino abrir o Wokwi

  1. Nível 1 Eco de números (só a placa) ver sketch circuito (diagram.json)
  2. Nível 2 Piscar N vezes (LED) ver sketch circuito (diagram.json)
  3. 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

  1. Leia a idade e mostre quantos anos a pessoa terá daqui a 10 anos.

Nível 2 Intermediário

  1. Leia R1 e R2 e mostre a resistência em série e em paralelo.
  2. No Arduino, leia um número pelo Monitor Serial e pisque o LED essa quantidade de vezes.

Nível 3 Avançado

  1. Leia V e R e mostre I e P; depois diga qual resistor de 1/4 W aguenta.
  2. No Arduino, receba tensão resistência numa 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: analogRead devolve 0 a 1023 para 0 a 5 V.
  • map() para trocar de escala.

Código em C

  1. Nível 1 Os operadores ver código baixar .c
  2. Nível 2 Hipotenusa com math.h ver código baixar .c
  3. Nível 3 int × float, teto e piso ver código baixar .c

Arduino abrir o Wokwi

  1. Nível 1 Ler o potenciômetro (potenciômetro) ver sketch circuito (diagram.json)
  2. Nível 2 Leitura em volts (potenciômetro) ver sketch circuito (diagram.json)
  3. 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

  1. Mostre o resultado de + - * / % para dois inteiros lidos.
  2. Mostre a leitura do potenciômetro no Plotter Serial.

Nível 2 Intermediário

  1. Calcule a hipotenusa de um triângulo com sqrt e pow.
  2. Converta a leitura analógica em volts.

Nível 3 Avançado

  1. Mostre por que dias * (1 + 12 / 100) dá errado e conserte.
  2. Compare no Arduino a porcentagem calculada com int, com float e com map.
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

  1. Nível 1 Comparações valem 0 ou 1 ver código baixar .c
  2. Nível 2 Tabela-verdade de E e OU ver código baixar .c
  3. Nível 3 Implicação e OU exclusivo ver código baixar .c

Arduino abrir o Wokwi

  1. Nível 1 Ler um botão (botão) ver sketch circuito (diagram.json)
  2. Nível 2 Porta E com dois botões (2× botão, LED) ver sketch circuito (diagram.json)
  3. 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

  1. Imprima o resultado de 4 comparações com o mesmo valor.
  2. Mostre no Monitor Serial o estado de um botão.

Nível 2 Intermediário

  1. Imprima a tabela-verdade completa de E, OU e NÃO.
  2. Faça um LED acender só com os dois botões apertados.

Nível 3 Avançado

  1. Leia p e q e mostre p → q e p XOR q.
  2. 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

  1. Nível 1 Par ou ímpar ver código baixar .c
  2. Nível 2 Série ou paralelo à escolha ver código baixar .c
  3. Nível 3 Bhaskara com teste do delta ver código baixar .c

Arduino abrir o Wokwi

  1. Nível 1 Botão acende o LED (botão, LED) ver sketch circuito (diagram.json)
  2. Nível 2 Luz automática com LDR (LDR, LED) ver sketch circuito (diagram.json)
  3. 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

  1. Leia um número e diga se é par ou ímpar.
  2. Acenda o LED enquanto o botão estiver apertado.

Nível 2 Intermediário

  1. Escolha série ou paralelo para dois resistores fixos.
  2. Acenda o LED quando o LDR indicar escuro.

Nível 3 Avançado

  1. Resolva a equação do 2º grau com todos os casos.
  2. 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

  1. Nível 1 Faixas de temperatura ver código baixar .c
  2. Nível 2 Calculadora com switch ver código baixar .c
  3. Nível 3 Valor do resistor pelas faixas ver código baixar .c

Arduino abrir o Wokwi

  1. Nível 1 Três faixas, três LEDs (potenciômetro, 3 LEDs) ver sketch circuito (diagram.json)
  2. Nível 2 Barra de 5 LEDs (potenciômetro, 5 LEDs) ver sketch circuito (diagram.json)
  3. 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

  1. Classifique uma temperatura em frio, agradável ou quente.
  2. Acenda 1 de 3 LEDs conforme a faixa do potenciômetro.

Nível 2 Intermediário

  1. Faça uma calculadora com switch (+ - * /) que evita divisão por zero.
  2. Monte uma barra de 5 LEDs proporcional ao potenciômetro.

Nível 3 Avançado

  1. Converta as faixas de cor de um resistor no valor em ohms, kohms ou Mohms.
  2. 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) e Serial.println(n, BIN).

Código em C

  1. Nível 1 Decimal para 4 bits ver código baixar .c
  2. Nível 2 Binário de 5 bits para decimal ver código baixar .c
  3. Nível 3 Operadores bit a bit ver código baixar .c

Arduino abrir o Wokwi

  1. Nível 1 Um número em 4 LEDs (4 LEDs) ver sketch circuito (diagram.json)
  2. Nível 2 Contador binário (4 LEDs) ver sketch circuito (diagram.json)
  3. 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

  1. Mostre um número de 0 a 15 em 4 bits usando / e %.
  2. Mostre um número fixo em binário em 4 LEDs.

Nível 2 Intermediário

  1. Leia 5 bits e mostre o valor decimal.
  2. Faça o contador binário de 0 a 15.

Nível 3 Avançado

  1. Mostre o resultado de & | ^ << >> entre dois bytes e explique bit a bit.
  2. 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 char vai até 255; short/int do Uno até 32767.
  • PWM nos pinos com ~ (3, 5, 6, 9, 10, 11): analogWrite(pino, 0..255); LED RGB.

Código em C

  1. Nível 1 Constantes com #define ver código baixar .c
  2. Nível 2 Conversões com const ver código baixar .c
  3. Nível 3 Estouro de capacidade ver código baixar .c

Arduino abrir o Wokwi

  1. Nível 1 Brilho fixo com PWM (LED) ver sketch circuito (diagram.json)
  2. Nível 2 Dimmer com potenciômetro (potenciômetro, LED) ver sketch circuito (diagram.json)
  3. 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

  1. Calcule a área da seção de um fio usando #define PI.
  2. Deixe um LED com brilho fixo de 25%.

Nível 2 Intermediário

  1. Calcule a resolução em mV de um conversor de 10 bits.
  2. Faça um dimmer com potenciômetro.

Nível 3 Avançado

  1. Mostre 3 estouros diferentes (char, short e int) e explique.
  2. 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) e noTone.

Código em C

  1. Nível 1 Lei de Ohm com validação ver código baixar .c
  2. Nível 2 Divisor de tensão ver código baixar .c
  3. Nível 3 LED: qual resistor usar? ver código baixar .c

Arduino abrir o Wokwi

  1. Nível 1 Um bip com o buzzer (buzzer) ver sketch circuito (diagram.json)
  2. Nível 2 Alarme com botão (botão, buzzer, LED) ver sketch circuito (diagram.json)
  3. 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

  1. Calcule a corrente pela lei de Ohm validando a resistência.
  2. Toque uma nota de 440 Hz por meio segundo.

Nível 2 Intermediário

  1. Calcule a saída de um divisor de tensão e avise se passar de 5 V.
  2. Faça um alarme: botão apertado liga LED e sirene.

Nível 3 Avançado

  1. Calcule o resistor de um LED e escolha o valor comercial.
  2. 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

  1. Nível 1 Simulado: conversão de unidades ver código baixar .c
  2. Nível 2 Simulado: classificar a corrente ver código baixar .c
  3. Nível 3 Simulado: potência no resistor ver código baixar .c

Arduino abrir o Wokwi

  1. Nível 1 Simulado: pisca com dois tempos (LED) ver sketch circuito (diagram.json)
  2. Nível 2 Simulado: botão e potenciômetro (botão, potenciômetro, LED) ver sketch circuito (diagram.json)
  3. 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

  1. Refaça, sem consultar, dois exemplos de nível 1 das aulas 2 a 10.

Nível 2 Intermediário

  1. Simulado: resolva um exercício de nível 2 de cada aula da unidade.

Nível 3 Avançado

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

  1. Nível 1 Revisão: média de duas leituras ver código baixar .c
  2. Nível 2 Revisão: faixa segura ver código baixar .c
  3. Nível 3 Revisão: byte em binário ver código baixar .c

Arduino abrir o Wokwi

  1. Nível 1 Revisão: tensão no Serial (potenciômetro) ver sketch circuito (diagram.json)
  2. Nível 2 Revisão: liga e desliga com um toque (botão, LED) ver sketch circuito (diagram.json)
  3. 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

  1. Refaça as questões que você errou na avaliação.

Nível 2 Intermediário

  1. Resolva a nova prova (quem não atingiu a média).

Nível 3 Avançado

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

  1. Nível 1 Contar de 0 a 9 ver código baixar .c
  2. Nível 2 Soma dos ímpares ver código baixar .c
  3. Nível 3 Tabela de resistores em série ver código baixar .c

Arduino abrir o Wokwi

  1. Nível 1 Piscar 5 vezes no início (LED) ver sketch circuito (diagram.json)
  2. Nível 2 Sequência de LEDs (5 LEDs) ver sketch circuito (diagram.json)
  3. 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

  1. Mostre os números de 0 a 9.
  2. Pisque o LED 5 vezes no setup.

Nível 2 Intermediário

  1. Some os ímpares de 1 a 199.
  2. Acenda os LEDs dos pinos 2 a 6 em sequência.

Nível 3 Avançado

  1. Gere a tabela série/paralelo para N resistores iguais.
  2. 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

  1. Nível 1 Soma de 1 a 100 ver código baixar .c
  2. Nível 2 Juros compostos ver código baixar .c
  3. Nível 3 Média de N medições ver código baixar .c

Arduino abrir o Wokwi

  1. Nível 1 Média de 10 leituras (potenciômetro) ver sketch circuito (diagram.json)
  2. Nível 2 Média móvel (LDR suavizado) (LDR) ver sketch circuito (diagram.json)
  3. 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

  1. Some os números de 1 a 100.
  2. Mostre a média de 10 leituras do potenciômetro.

Nível 2 Intermediário

  1. Simule juros compostos mês a mês.
  2. Implemente a média móvel do LDR.

Nível 3 Avançado

  1. Leia N medições e mostre a média.
  2. 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, while prende o programa: use com cuidado.

Código em C

  1. Nível 1 Somar até chegar a 42 ver código baixar .c
  2. Nível 2 Treino para a maratona ver código baixar .c
  3. Nível 3 Menu com do-while e validação ver código baixar .c

Arduino abrir o Wokwi

  1. Nível 1 Enquanto o botão estiver apertado (botão, LED) ver sketch circuito (diagram.json)
  2. Nível 2 Esperar escurecer (LDR, LED) ver sketch circuito (diagram.json)
  3. 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

  1. Some valores lidos até a soma chegar a 42.
  2. Mantenha o LED aceso enquanto o botão estiver apertado.

Nível 2 Intermediário

  1. Simule a maratona e mostre em que dia ela acontece.
  2. Espere escurecer para piscar o LED 3 vezes.

Nível 3 Avançado

  1. Faça um menu com do-while e opção inválida.
  2. 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 um if.
  • Maior e menor iniciados com a primeira leitura.
  • Borda de descida (solto → apertado) e debounce de 50 ms.

Código em C

  1. Nível 1 Contar pares de 1 a 50 ver código baixar .c
  2. Nível 2 Monitoramento de tensão ver código baixar .c
  3. Nível 3 Maior, menor e média ver código baixar .c

Arduino abrir o Wokwi

  1. Nível 1 Contar toques (botão) ver sketch circuito (diagram.json)
  2. Nível 2 Contar toques sem repique (botão) ver sketch circuito (diagram.json)
  3. 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

  1. Conte os pares de 1 a 50.
  2. Conte os toques no botão.

Nível 2 Intermediário

  1. Calcule o percentual de leituras de tensão entre 200 e 240 V.
  2. Conte toques com debounce.

Nível 3 Avançado

  1. Mostre maior, menor e média de N temperaturas.
  2. 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)) e rand() % 6 + 1.
  • randomSeed(analogRead(A5)) e random(1, 7) no Arduino.
  • Medição de tempo de reação com millis().

Código em C

  1. Nível 1 Jogar um dado ver código baixar .c
  2. Nível 2 Jogo de contas até errar ver código baixar .c
  3. Nível 3 Pedra, papel e tesoura ver código baixar .c

Arduino abrir o Wokwi

  1. Nível 1 Dado no Monitor Serial (botão) ver sketch circuito (diagram.json)
  2. Nível 2 Dado com 6 LEDs (botão, 6 LEDs) ver sketch circuito (diagram.json)
  3. 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

  1. Jogue um dado no computador.
  2. Jogue um dado com o botão e mostre no Monitor Serial.

Nível 2 Intermediário

  1. Jogo de contas de soma até errar.
  2. Dado com 6 LEDs.

Nível 3 Avançado

  1. Pedra, papel e tesoura contra o computador.
  2. 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.
  • break para sair cedo.

Código em C

  1. Nível 1 Tabuada completa (laço aninhado) ver código baixar .c
  2. Nível 2 Primos até N ver código baixar .c
  3. Nível 3 MDC e MMC ver código baixar .c

Arduino abrir o Wokwi

  1. Nível 1 Padrão com laços aninhados (LED) ver sketch circuito (diagram.json)
  2. Nível 2 Primos no Monitor Serial (só a placa) ver sketch circuito (diagram.json)
  3. 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

  1. Mostre a tabuada completa de 1 a 10.
  2. Pisque 3 séries de 2 piscadas.

Nível 2 Intermediário

  1. Mostre os primos até N.
  2. Mostre os primos até 200 no Arduino.

Nível 3 Avançado

  1. Calcule MDC e MMC.
  2. 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, clock e CLOCKS_PER_SEC.
  • delay trava o Arduino; millis() permite fazer várias coisas ao mesmo tempo.
  • Máquina de estados.

Código em C

  1. Nível 1 Que horas são? ver código baixar .c
  2. Nível 2 Contagem regressiva com sleep ver código baixar .c
  3. Nível 3 Cronômetro de processamento ver código baixar .c

Arduino abrir o Wokwi

  1. Nível 1 Piscar sem delay (LED) ver sketch circuito (diagram.json)
  2. Nível 2 Dois LEDs, dois ritmos (2 LEDs) ver sketch circuito (diagram.json)
  3. 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

  1. Mostre a data e a hora atuais.
  2. Pisque o LED sem delay.

Nível 2 Intermediário

  1. Faça uma contagem regressiva com sleep.
  2. Pisque dois LEDs em ritmos diferentes.

Nível 3 Avançado

  1. Cronometre um cálculo com clock.
  2. 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

  1. Nível 1 Do tempo de eco à distância ver código baixar .c
  2. Nível 2 Classificar uma série de leituras ver código baixar .c
  3. Nível 3 Velocidade do som e temperatura ver código baixar .c

Arduino abrir o Wokwi

  1. Nível 1 Distância com o HC-SR04 (HC-SR04) ver sketch circuito (diagram.json)
  2. Nível 2 Alarme de aproximação (HC-SR04, LED) ver sketch circuito (diagram.json)
  3. 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

  1. Converta um tempo de eco em centímetros.
  2. Mostre a distância medida no Monitor Serial.

Nível 2 Intermediário

  1. Classifique N leituras em livre, perto e PARE.
  2. Acenda o LED abaixo de 20 cm.

Nível 3 Avançado

  1. Mostre a distância corrigida para 0 a 40 °C.
  2. 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 map e o cuidado com a divisão inteira.
  • Calibração automática nos primeiros segundos.
  • Servo: biblioteca Servo.h, attach e write(ângulo).

Código em C

  1. Nível 1 A conta do map ver código baixar .c
  2. Nível 2 Calibração por mínimo e máximo ver código baixar .c
  3. Nível 3 Sensor LM35: tensão em temperatura ver código baixar .c

Arduino abrir o Wokwi

  1. Nível 1 Luz em porcentagem (LDR) ver sketch circuito (diagram.json)
  2. Nível 2 Calibração automática (LDR, LED) ver sketch circuito (diagram.json)
  3. 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

  1. Implemente a conta do map.
  2. Mostre a escuridão em porcentagem.

Nível 2 Intermediário

  1. Calibre leituras pelo mínimo e máximo.
  2. Calibre o LDR automaticamente nos primeiros 5 s.

Nível 3 Avançado

  1. Converta leituras do LM35 em °C.
  2. 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

  1. Nível 1 Tanque enchendo ver código baixar .c
  2. Nível 2 Tanque com consumo ver código baixar .c
  3. Nível 3 Bomba com histerese ver código baixar .c

Arduino abrir o Wokwi

  1. Nível 1 Nível do tanque em % (HC-SR04) ver sketch circuito (diagram.json)
  2. Nível 2 Nível do tanque na barra de LEDs (HC-SR04, 5 LEDs) ver sketch circuito (diagram.json)
  3. 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

  1. Simule um tanque enchendo até 500 L.
  2. Mostre o nível em %.

Nível 2 Intermediário

  1. Simule entrada e consumo variável.
  2. Mostre o nível numa barra de 5 LEDs.

Nível 3 Avançado

  1. Simule a bomba com histerese.
  2. 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

  1. Nível 1 Simulado: tabuada de N ver código baixar .c
  2. Nível 2 Simulado: média até digitar negativo ver código baixar .c
  3. Nível 3 Simulado: quantos primos? ver código baixar .c

Arduino abrir o Wokwi

  1. Nível 1 Simulado: N piscadas pelo potenciômetro (potenciômetro, botão, LED) ver sketch circuito (diagram.json)
  2. Nível 2 Simulado: média de 20 leituras do LDR (LDR) ver sketch circuito (diagram.json)
  3. 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

  1. Refaça, sem consultar, dois exemplos de nível 1 das aulas 13 a 22.

Nível 2 Intermediário

  1. Simulado: resolva um exercício de nível 2 de cada aula da unidade.

Nível 3 Avançado

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

  1. Nível 1 Revisão: contagem de 10 em 10 ver código baixar .c
  2. Nível 2 Revisão: dados até sair 6 ver código baixar .c
  3. Nível 3 Revisão: tabela de eco ver código baixar .c

Arduino abrir o Wokwi

  1. Nível 1 Revisão: pisca com millis e potenciômetro (potenciômetro, LED) ver sketch circuito (diagram.json)
  2. Nível 2 Revisão: contador de toques com limite (botão, LED) ver sketch circuito (diagram.json)
  3. 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

  1. Refaça as questões que você errou na avaliação.

Nível 2 Intermediário

  1. Resolva a nova prova (quem não atingiu a média).

Nível 3 Avançado

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

  1. Nível 1 Ler e mostrar um vetor ver código baixar .c
  2. Nível 2 Ordem inversa e soma ver código baixar .c
  3. Nível 3 Decimal para binário com vetor ver código baixar .c

Arduino abrir o Wokwi

  1. Nível 1 Vetor de pinos (4 LEDs) ver sketch circuito (diagram.json)
  2. Nível 2 Melodia com vetores (buzzer) ver sketch circuito (diagram.json)
  3. 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

  1. Leia 5 valores e mostre o vetor.
  2. Pisque LEDs guardados num vetor de pinos.

Nível 2 Intermediário

  1. Mostre um vetor ao contrário e a soma.
  2. Toque uma melodia com vetores.

Nível 3 Avançado

  1. Converta decimal para binário com vetor.
  2. 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

  1. Nível 1 Maior e menor do vetor ver código baixar .c
  2. Nível 2 Busca sequencial ver código baixar .c
  3. Nível 3 Ordenação (bubble sort) ver código baixar .c

Arduino abrir o Wokwi

  1. Nível 1 Maior de 10 leituras (potenciômetro) ver sketch circuito (diagram.json)
  2. Nível 2 Filtro de mediana (LDR) ver sketch circuito (diagram.json)
  3. 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

  1. Encontre o maior e o menor de um vetor e suas posições.
  2. Mostre a maior de 10 leituras.

Nível 2 Intermediário

  1. Procure um resistor no estoque.
  2. Implemente a mediana de 5 leituras.

Nível 3 Avançado

  1. Ordene com bubble sort.
  2. 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

  1. Nível 1 Ler uma frase e contar letras ver código baixar .c
  2. Nível 2 Palíndromo ver código baixar .c
  3. Nível 3 Quantas vezes a palavra aparece? ver código baixar .c

Arduino abrir o Wokwi

  1. Nível 1 Ler uma linha do Monitor Serial (só a placa) ver sketch circuito (diagram.json)
  2. Nível 2 Comandos LIGA e DESLIGA (LED) ver sketch circuito (diagram.json)
  3. 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

  1. Conte os caracteres de uma frase.
  2. Responda ao nome digitado no Monitor Serial.

Nível 2 Intermediário

  1. Diga se uma palavra é palíndromo.
  2. Comandos LIGA, DESLIGA e ESTADO.

Nível 3 Avançado

  1. Conte as ocorrências de uma palavra.
  2. 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, return e void.
  • 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

  1. Nível 1 Minha primeira função ver código baixar .c
  2. Nível 2 Funções para resistores ver código baixar .c
  3. Nível 3 Função e_primo ver código baixar .c

Arduino abrir o Wokwi

  1. Nível 1 Função piscar(pino, vezes) (2 LEDs) ver sketch circuito (diagram.json)
  2. Nível 2 Função que mede a distância (HC-SR04) ver sketch circuito (diagram.json)
  3. 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

  1. Crie a função perimetro(raio).
  2. Crie piscar(pino, vezes).

Nível 2 Intermediário

  1. Crie serie e paralelo para resistores.
  2. Crie distancia_cm().

Nível 3 Avançado

  1. Crie e_primo(n) e liste os primos até N.
  2. 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

  1. Nível 1 Soma de um vetor numa função ver código baixar .c
  2. Nível 2 Média e maior em funções ver código baixar .c
  3. Nível 3 Ordenar e imprimir com funções ver código baixar .c

Arduino abrir o Wokwi

  1. Nível 1 Função media(vetor, n) (potenciômetro) ver sketch circuito (diagram.json)
  2. Nível 2 Função que acende a barra (potenciômetro, 5 LEDs) ver sketch circuito (diagram.json)
  3. 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

  1. Some um vetor numa função.
  2. Calcule a média de 8 leituras numa função.

Nível 2 Intermediário

  1. Crie media e maior.
  2. Crie acender_barra(nivel).

Nível 3 Avançado

  1. Crie ordenar e imprimir.
  2. Crie mediana sem 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

  1. Nível 1 Endereço e conteúdo ver código baixar .c
  2. Nível 2 Trocar dois valores ver código baixar .c
  3. Nível 3 Função com duas respostas ver código baixar .c

Arduino abrir o Wokwi

  1. Nível 1 Endereços na memória do Arduino (só a placa) ver sketch circuito (diagram.json)
  2. Nível 2 Uma leitura, duas respostas (LDR) ver sketch circuito (diagram.json)
  3. 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

  1. Mostre o endereço e o valor de uma variável.
  2. Mostre o endereço de uma variável no Arduino.

Nível 2 Intermediário

  1. Troque dois valores com uma função.
  2. Devolva leitura e tensão por ponteiros.

Nível 3 Avançado

  1. Devolva o menor e o maior por ponteiros.
  2. 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 de v[0]; p + i avança i elementos.
  • malloc, free e o teste de NULL.
  • Uno: 2 KB de RAM; F() guarda textos na flash; memória livre.

Código em C

  1. Nível 1 Ponteiro andando pelo vetor ver código baixar .c
  2. Nível 2 Vetor do tamanho que o usuário quiser ver código baixar .c
  3. Nível 3 Contar vogais com ponteiro ver código baixar .c

Arduino abrir o Wokwi

  1. Nível 1 Quanto ocupa cada tipo (só a placa) ver sketch circuito (diagram.json)
  2. Nível 2 Percorrer um vetor com ponteiro (só a placa) ver sketch circuito (diagram.json)
  3. 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

  1. Percorra um vetor com ponteiro mostrando os endereços.
  2. Mostre o tamanho dos tipos no Arduino.

Nível 2 Intermediário

  1. Aloque um vetor do tamanho pedido.
  2. Percorra um vetor com ponteiro no Arduino.

Nível 3 Avançado

  1. Conte vogais andando com um ponteiro pela string.
  2. 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

  1. Nível 1 Matriz 3 × 3 ver código baixar .c
  2. Nível 2 Leituras de 3 sensores por 4 horas ver código baixar .c
  3. Nível 3 Jogo da velha ver código baixar .c

Arduino abrir o Wokwi

  1. Nível 1 Melodia numa matriz (buzzer) ver sketch circuito (diagram.json)
  2. Nível 2 Padrões de LEDs numa matriz (4 LEDs) ver sketch circuito (diagram.json)
  3. 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

  1. Mostre uma matriz 3 × 3 e a diagonal.
  2. Toque uma melodia guardada numa matriz.

Nível 2 Intermediário

  1. Calcule médias por sensor e por hora.
  2. Mostre quadros de animação em LEDs.

Nível 3 Avançado

  1. Jogo da velha completo.
  2. 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

  1. Nível 1 Um struct para um ponto ver código baixar .c
  2. Nível 2 Vetor de leituras de sensores ver código baixar .c
  3. Nível 3 Cadastro de componentes ver código baixar .c

Arduino abrir o Wokwi

  1. Nível 1 Um struct para um LED (LED) ver sketch circuito (diagram.json)
  2. Nível 2 Vetor de structs: vários LEDs (3 LEDs) ver sketch circuito (diagram.json)
  3. 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

  1. Calcule a distância entre dois pontos com struct.
  2. Pisque um LED descrito por um struct.

Nível 2 Intermediário

  1. Mostre um vetor de leituras de sensores.
  2. Pisque 3 LEDs com um vetor de structs.

Nível 3 Avançado

  1. Cadastre componentes e some as quantidades.
  2. 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

  1. Nível 1 Registro de medições em vetor de struct ver código baixar .c
  2. Nível 2 Estatísticas do registro ver código baixar .c
  3. Nível 3 Salvar o registro em CSV ver código baixar .c

Arduino abrir o Wokwi

  1. Nível 1 Estação: leituras em CSV (LDR, potenciômetro) ver sketch circuito (diagram.json)
  2. Nível 2 Estação com alarmes (LDR, potenciômetro, 2 LEDs, buzzer) ver sketch circuito (diagram.json)
  3. 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

  1. Registre medições num vetor de structs.
  2. Envie as leituras em CSV.

Nível 2 Intermediário

  1. Mostre estatísticas e alertas do registro.
  2. Adicione alarmes de escuro e temperatura.

Nível 3 Avançado

  1. Salve o registro em medicoes.csv.
  2. 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

  1. Nível 1 Simulado: vetor e média ver código baixar .c
  2. Nível 2 Simulado: função que conta ver código baixar .c
  3. Nível 3 Simulado: struct e ponteiro ver código baixar .c

Arduino abrir o Wokwi

  1. Nível 1 Simulado: vetor de pinos (3 LEDs) ver sketch circuito (diagram.json)
  2. Nível 2 Simulado: função de média com mediana (LDR) ver sketch circuito (diagram.json)
  3. 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

  1. Refaça, sem consultar, dois exemplos de nível 1 das aulas 25 a 34.

Nível 2 Intermediário

  1. Simulado: resolva um exercício de nível 2 de cada aula da unidade.

Nível 3 Avançado

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

  1. Nível 1 Revisão: inverter uma string ver código baixar .c
  2. Nível 2 Revisão: matriz identidade ver código baixar .c
  3. Nível 3 Revisão: malloc e ordenação ver código baixar .c

Arduino abrir o Wokwi

  1. Nível 1 Revisão: maior leitura com função (potenciômetro) ver sketch circuito (diagram.json)
  2. Nível 2 Revisão: semáforo com vetor de structs (3 LEDs) ver sketch circuito (diagram.json)
  3. 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

  1. Refaça as questões que você errou na avaliação.

Nível 2 Intermediário

  1. Resolva a nova prova (quem não atingiu a média).

Nível 3 Avançado

  1. Desafio: ordenação com malloc e qsort, e registro CSV com média móvel no Arduino.