Bancada: protoboard, jumper e alimentacao — Arduino e IoT — semana 6 do 1o trimestre
Semana 6 de 13· 1o trimestre · 01/02 a 30/04
Bancada: protoboard, jumper e alimentacao
Tudo que da errado na bancada esta aqui: trilhas, pull-up, fonte e o jumper que fica solto.
Aula 1 — Como a protoboard funciona: trilhas, colunas e jumper
Objetivos
- Desenhar no papel a matriz de contatos de uma protoboard de 830 pontos e dizer o que cada trilha conecta.
- Escolher o tipo de jumper certo para cada ligação: macho-macho, macho-fêmea e fêmea-fêmea.
- Montar uma ligação na protoboard conferindo, pela luz do LED, que o circuito realmente fechou.
- Diagnosticar, pela leitura do pino, um jumper que ficou fora da coluna.
Material
- 1 ESP32 DevKit V1 por aluno, com o cabo USB
- 1 protoboard de 830 pontos por aluno
- 1 jogo de jumpers macho-macho, macho-fêmea e fêmea-fêmea por aluno
- 2 a 5 LEDs de 3,3 V e 2 a 5 resistores de 330 Ω por aluno
- 1 módulo de alimentação MB102 por dupla
- Folha com o desenho da protoboard para desenhar, uma por aluno
Conceitos
O que há dentro da protoboard
Uma protoboard de 830 pontos tem, sob o plástico, uma matriz de contatos metálicos elásticos. Nada é gravado, nada é soldado: cada ponto é uma mola de metal que aperta e solta quando você enfia a perna de um componente.
Duas direções de organização:
- Trilha horizontal, indicada por letras (
a,b,c,d,e): os cinco pontos da linha estão ligados entre si, exceto na linha central, onde há um corte. - Coluna vertical, indicada por números (1 a 63): cada ponto da coluna é um contato sozinho.
A linha central é a peça que o aluno mais esquece. Ela existe justamente para permitir dois circuitos independentes na mesma protoboard, sem um jumper de corte.
O corte no meio
Na fileira central, os cinco pontos da esquerda e os cinco da direita não se tocam. Isso significa que um resistor entre a1 e b1 não tem ligação nenhuma com um jumper entre a10 e b10.
O erro clássico é montar o circuito atravessando a linha central sem perceber, e aí o professor passa dez minutos procurando fio faltando num circuito que está inteiro.
Os três tipos de jumper
| Tipo | Serve para | Erro típico |
|---|---|---|
| macho-macho | de uma placa para outra, ou pinos | dois machos na mesma fileira da protoboard |
| macho-fêmea | da placa para a protoboard | o macho entra no plástico e não no contato |
| fêmea-fêmea | pular dois pontos da protoboard | achar que ele faz contacto com o plástico |
O jumper não entra pela lateral da protoboard. Ele entra pela frente, pelo buraco, e a ponta traseira não precisa atravessar nada: o contato fecha por pressão.
Perna de componente entra na coluna
Resistor e LED com perna precisam ocupar dois pontos da mesma coluna (ou dois pontos unidos por um jumper). A perna não "viaja" pela trilha horizontal; ela ocupa uma coluna e fecha com o que estiver na mesma coluna.
É esse detalhe que explica o defeito mais comum da bancada: o aluno liga o LED na trilha + da protoboard e diz que "está na linha vermelha", mas o pino do resistor está na coluna 15 e o LED na coluna 20. Não estão juntos, e o circuito não fecha.
Montagem por trilhas, não por fio a fio
A prática do dia: distribua a alimentação em trilhas, e use colunas para as ligações de sinal. Duas trilhas de alimentação (+ e -) alimentam a protoboard inteira, e cada componente ganha uma coluna só para ele. Com essa disciplina, o professor acha qualquer falha em dez segundos.
Atividade
Montagem:
- Resistor de 330 Ω com uma perna na coluna 1 e a outra na coluna 10.
- Jumper fêmea-fêmea ligando a coluna 1 à trilha
+da protoboard. - LED com a perna mais longa na coluna 10 e a mais curta na coluna 11.
- Jumper fêmea-fêmea ligando a coluna 11 à trilha
-da protoboard. - Jumper macho-fêmea do
GPIO2da placa para a coluna 10.
Note que o GPIO2, o resistor e o anodo do LED estão todos na coluna 10. O catodo do LED vai para o -.
- Desenhe no papel a matriz da protoboard, marcando a linha central e a posição das colunas 1 a 63. Marque no desenho onde ficaram o resistor, o LED e os três jumpers.
- Grave a resolução e confirme que o LED pisca no ritmo da linha
--- testes rapidos na bancada ---do serial. - Teste na bancada: junte dois pontos da mesma letra e depois dois pontos de letras diferentes. Escreva no caderno, em duas linhas, o que aconteceu em cada caso e por quê.
- Desligue o jumper do
GPIO2e confirme que o LED apaga. Depois reconecte-o pelo centro da linha, e não pela borda, e veja se o circuito ainda fecha. Explique o que aconteceu. - Desloque o jumper do
GPIO2uma coluna para o lado, de propósito, e meça a leitura no serial. Diga o que mudou e qual foi o ponto do circuito que ficou aberto. - Refaça a mesma ligação usando jumper macho-fêmea no lugar do fêmea-fêmea na coluna 10. Diga se o circuito ainda fecha e por que.
Nota: 10 pontos. Critério de fim: o desenho está no caderno, o LED acende com o circuito completo e o item 5 está medido e escrito.
Resolucao
// Aula 1 do dia 6: como a protoboard funciona. // // A protoboard não é uma placa de circuito: é uma matriz de contatos de metal // escondidos sob o plástico. Este sketch não usa hardware nenhum — ele explica // as trilhas no monitor serial, para o professor passar a apontar com a // protoboard na mão enquanto a turma acompanha a figura. #include <Arduino.h> // Nenhuma peça é montada nesta aula: o sketch é o mapa. O LED só existe para // dar um sinal de vida no começo e no fim, e prova que a placa está rodando. const int PINO_LED = 2; const int INTERVALO_MS = 3000; const int NUMERO_DE_COLUNAS = 63; // matriz de 64 contatos, numerados de 1 a 64 void setup() { pinMode(PINO_LED, OUTPUT); Serial.begin(115200); Serial.println(); Serial.println("=== dia 6, aula 1: o mapa da protoboard ==="); Serial.println(); Serial.println("linha 1"); Serial.println(" - - - + + + - - -"); Serial.println("linha 5 ^ ^ ^ corte no meio: os dois"); Serial.println(" | | barramentos nao se tocam"); Serial.println("linha 1 a b c a b c sao TRILHAS diferentes"); Serial.println(" - - - + + + - - -"); Serial.println(); Serial.println("Regras da bancada:"); Serial.println(" 1. Trilha em T (letra) atravessa a linha inteira sem corte."); Serial.println(" 2. Coluna (numero) e um contato so."); Serial.println(" 3. O espaco do meio separa dois barramentos que nao falam."); Serial.println(" 4. Perna do resistor e do LED andam na COLUNA, nao na trilha."); Serial.println(); Serial.print("Colunas por linha: "); Serial.println(NUMERO_DE_COLUNAS); Serial.println(); Serial.println("Sabendo disso, monte a trilha: 5V -> pino 13, pino 13 -> resistor."); } void loop() { digitalWrite(PINO_LED, HIGH); Serial.println(); Serial.println("--- testes rapidos na bancada ---"); Serial.println("a) Jumpere dois pontos da MESMA letra. Os dois pinos falam."); Serial.println("b) Jumpere a letra A com a letra F. Nao falam: sao trilhas distintas."); Serial.println("c) Cruze dois jumpers num ponto so da coluna. Isso faz curto entre eles."); Serial.println(); delay(INTERVALO_MS); digitalWrite(PINO_LED, LOW); }
Por que assim e não de outro jeito. Esta aula não tem sensor nem peça nova: o sketch é um mapa que o professor lê em voz alta enquanto passa a protoboard na mão. O LED só pisca para dar sinal de vida entre uma parte e outra, e o delay(3000) dá tempo de o professor falar sem o serial atropelar.
O número de colunas vem de uma constante, e não de um 63 solto no meio do código. Na semana letiva, a protoboard de alguns alunos tem 400 pontos e de outros tem 830; quem escreve o número na hora em vez de declarar a constante tem dois códigos diferentes no mesmo trimestre.
O sketch não promete medir a protoboard. Ele imprime o que o professor está fazendo na bancada e o que a turma precisa testar com as próprias mãos. O que é verificável na prova de hoje é a montagem e o desenho, e o portão compila o mapa só para o professor ter o texto na tela durante a explicação.
Criterios de correcao
| Critério | Pontos |
|---|---|
| Desenho da matriz no caderno com linha central e colunas marcadas | 3 pontos |
GPIO2, resistor e ânodo do LED na mesma coluna | 3 pontos |
| Item 3 com os dois testes de trilha anotados | 2 pontos |
| Item 5 com a leitura medida e o ponto aberto identificado | 2 pontos |
Erros comuns
| Erro | Como aparece | Correcao |
|---|---|---|
| Confundir linha com coluna | Aluno joga o jumper na letra A e na coluna 10 ao mesmo tempo | "A linha e toda horizional e letra. A coluna e toda vertical e número. Não se cruzam em nada." |
| Ignorar o corte da linha central | Circuito que não fecha e "fio faltando" inexistente | "A fileira do meio tem corte. Os dois lados não se tocam sem jumper." |
| Colocar as duas pernas do resistor na mesma trilha | Resistor que "sumiu" da montagem | "As duas pernas precisam de duas colunas diferentes. Trilha e para distribuicao de alimentacao." |
| Inserir jumper pela lateral da protoboard | Jumper frouxo, sem contato | "O jumper entra pelo buraco, pela frente. Pela lateral não fecha." |
| Usar fêmea-fêmea de ponta reta num Arduino | Fio não alcanca o pino | "Femea-femea e para pular entre dois pontos da protoboard. Para a placa, use macho-femea." |
| Cisar jumper contra jumper no mesmo ponto | Curto entre dois sinais | "Dois fios no mesmo ponto da coluna se tornam um no. Isso é um curto entre os dois circuitos." |
| Achar que a protoboard tem circuito | Aluno pede para o professor "arrumar" o placa | "Não ha circuito. Ha contatos de metal. Quem liga um no outro e o jumper." |
Desafio extra
Monte na mesma protoboard dois circuitos independentes, um em cima da linha central e outro embaixo, usando apenas a linha central como separação. Diga no caderno por que os dois não se misturam mesmo sem nenhum jumper entre eles, e explique o que aconteceria se você colocasse uma ponte de jumper atravessando o corte.
>A resolucao, compilada
// Aula 1 do dia 6: como a protoboard funciona. // // A protoboard não é uma placa de circuito: é uma matriz de contatos de metal // escondidos sob o plástico. Este sketch não usa hardware nenhum — ele explica // as trilhas no monitor serial, para o professor passar a apontar com a // protoboard na mão enquanto a turma acompanha a figura. #include <Arduino.h> // Nenhuma peça é montada nesta aula: o sketch é o mapa. O LED só existe para // dar um sinal de vida no começo e no fim, e prova que a placa está rodando. const int PINO_LED = 2; const int INTERVALO_MS = 3000; const int NUMERO_DE_COLUNAS = 63; // matriz de 64 contatos, numerados de 1 a 64 void setup() { pinMode(PINO_LED, OUTPUT); Serial.begin(115200); Serial.println(); Serial.println("=== dia 6, aula 1: o mapa da protoboard ==="); Serial.println(); Serial.println("linha 1"); Serial.println(" - - - + + + - - -"); Serial.println("linha 5 ^ ^ ^ corte no meio: os dois"); Serial.println(" | | barramentos nao se tocam"); Serial.println("linha 1 a b c a b c sao TRILHAS diferentes"); Serial.println(" - - - + + + - - -"); Serial.println(); Serial.println("Regras da bancada:"); Serial.println(" 1. Trilha em T (letra) atravessa a linha inteira sem corte."); Serial.println(" 2. Coluna (numero) e um contato so."); Serial.println(" 3. O espaco do meio separa dois barramentos que nao falam."); Serial.println(" 4. Perna do resistor e do LED andam na COLUNA, nao na trilha."); Serial.println(); Serial.print("Colunas por linha: "); Serial.println(NUMERO_DE_COLUNAS); Serial.println(); Serial.println("Sabendo disso, monte a trilha: 5V -> pino 13, pino 13 -> resistor."); } void loop() { digitalWrite(PINO_LED, HIGH); Serial.println(); Serial.println("--- testes rapidos na bancada ---"); Serial.println("a) Jumpere dois pontos da MESMA letra. Os dois pinos falam."); Serial.println("b) Jumpere a letra A com a letra F. Nao falam: sao trilhas distintas."); Serial.println("c) Cruze dois jumpers num ponto so da coluna. Isso faz curto entre eles."); Serial.println(); delay(INTERVALO_MS); digitalWrite(PINO_LED, LOW); }
Sem saída de compilação gravada. Rode python3 validar.py -t 1 dia06 aula1.
Aula 2 — Alimentacao: MB102, 5 V, 3,3 V e GND
Objetivos
- Identificar as três saídas do módulo MB102 e dizer o que cada uma entrega.
- Separar, no circuito, o que é sinal de 3,3 V e o que é sinal de 5 V.
- Explicar o papel do
GNDcomo caminho de volta da corrente, e não como "fio negativo". - Medir a tensão com a própria entrada analógica da placa e comparar com o valor que o professor leu no multímetro.
Material
- 1 ESP32 DevKit V1 por aluno, com o cabo USB
- 1 protoboard de 830 pontos e 1 jogo de jumpers por aluno
- 1 módulo de alimentação MB102 por dupla
- 2 a 5 LEDs de 3,3 V e 2 a 5 resistores de 330 Ω por aluno
- 1 multímetro de bancada, um para cada dupla
- Folha com a ponte de resistores desenhada, uma por dupla
Conceitos
O módulo MB102
O MB102 não é uma bateria nem um carregador: é um repetidor de alimentação. Ele recebe uma tensão de entrada e oferece essa mesma energia em barramentos prontos para a protoboard, com um regulador interno que faz a conversão para 3,3 V.
As saídas que importam:
| Marca | O que é | Para que usar |
|---|---|---|
5V | a tensão que entrou | alimentar LED, motor, relé |
3V3 | saída do regulador | sinal do ESP32 e circuitos de 3,3 V |
GND | referência de zero volts | volta de toda corrente |
Com a placa ligada na USB, a entrada do MB102 é o próprio 5V da placa. Sem fonte externa, o módulo não tem o que alimentar: é por isso que o LED de energia dele só acende com a USB conectada.
5 V e 3,3 V: qual usar onde
A regra do curso inteiro cabe em uma frase: 5V alimenta, 3V3 é sinal.
Alimentar significa dar energia para um componente que vai consumir corrente: LED, motor, módulo de relé. Sinal significa o valor que entra e sai dos pinos de dados: botão, potenciômetro, divisor de tensão do ADC.
Colocar sinal de 5 V num pino do ESP32 é o caminho para queimar o pino: os pinos funcionam com 3,3 V, e 5 V é mais do que eles suportam. É a razão de o kit ter um conversor de nível lógico, que entra justamente nas aulas de display e sensor.
GND não é "negativo"
Corrente precisa de caminho de ida e de volta. A energia sai do 5V, atravessa o componente, e volta pelo GND. Sem o GND ligado, o circuito não fecha: o componente não tem por onde a corrente voltar, e não trabalha.
Duas consequências práticas que o aluno vai usar a semana toda:
- Tudo compartilha o mesmo
GND. Placa, MB102, sensor e protoboard precisam estar ligados no mesmoGND, ou a referência de tensão não é a mesma dos dois lados. GNDerrado é sintoma de "não funciona". Se o sensor responde com número maluco, a primeira coisa a conferir é se os doisGNDs estão ligados juntos.
Ponte de resistores: o divisor de tensão
O ADC do ESP32 mede com segurança até perto de 3,3 V, mas com atenuação padrão chega a ler bem menos. Para medir uma tensão maior sem queimar o pino, usa-se um divisor de tensão: dois resistores em série entre a tensão e o GND, e a leitura sai do ponto onde eles se encontram.
tensaoReal = tensaoNoPino * (R1 + R2) / R2;
Com dois resistores iguais, o ponto do meio fica em exatamente metade da tensão de entrada. É o circuito mais usado do curso inteiro: ele aparece na medição da fonte, na leitura do LDR do dia 8 e na ponte do HC-SR04 do dia 11.
O erro do divisor é sempre o mesmo: colocar o resistor no lugar errado e o ponto de leitura sai no lugar errado. O lado de cada resistor importa.
Medir com a própria placa
analogReadMilliVolts devolve a leitura do ADC já convertida em milivolts, usando a referência interna medida da placa — e não um 3,3 V chutado no código. Por isso o número da placa raramente bate exatamente com o multímetro, e a diferença é esperada: as duas referências são diferentes, e a do ADC tem tolerância.
O número que importa para o aluno é a ordem de grandeza e a estabilidade: se a ponte estiver firme, o número fica parado; se o jumper estiver solto, o número pula.
Atividade
Montagem:
- MB102 com a entrada
5Vligado ao5Vda placa. - Jumper fêmea-fêmea levando
3V3do MB102 até a trilha+da protoboard. - Jumper fêmea-fêmea levando
GNDdo MB102 até a trilha-da protoboard. - Resistor de 330 Ω da coluna 1 à coluna 5.
- Segundo resistor de 330 Ω da coluna 5 à coluna 9.
- Jumper do
GPIO35para a coluna 5, que é o ponto do meio da ponte. - Jumper da coluna 9 para o
GND.
Os dois resistores de 330 Ω iguais formam a ponte. O pino mede o ponto do meio, que deve ficar em cerca de metade da tensão da fonte.
- Meça com o multímetro a tensão entre
5VeGND, entre3V3eGNDe entre as colunas 1 e 9. Anote os três valores na folha. - Meça com o multímetro o ponto do meio, na coluna 5. Diga quanto falta para ser exatamente a metade da tensão medida no item 1 entre as colunas 1 e 9, e justifique a diferença.
- Grave a resolução e compare o número do
mVque aparece no serial com a sua medida do item 2. Diga qual dos dois está mais perto do valor do3V3do item 1. - Desconecte apenas o jumper do
GNDda coluna 9 e observe o serial por dez segundos. Anote o que aconteceu com o número e diga por que. - Troque o resistor da coluna 5 por um de 1 kΩ e grave. Anote o novo valor de
mVe calcule, no caderno, quanto vale a soma dos dois resistores e quanto vale a razão entre eles. - Escreva no caderno a linha que converte a tensão do meio da ponte na tensão real da fonte, usando a fórmula do divisor. Diga o que aconteceria se você usasse essa linha com dois resistores de valores muito diferentes.
Nota: 10 pontos. Critério de fim: a ponte está montada, o serial mostra um valor estável de milivolts e os itens 4 e 5 estão medidos e escritos.
Resolucao
// Aula 2 do dia 6: alimentação, MB102, 5 V, 3,3 V e GND. // // Último dia do bloco de C++. O sketch não mede nada que a placa não consiga // medir: ele lê a própria fonte de alimentação pela entrada analógica, que é // exatamente o que o professor faz com um multímetro. O valor numérico do // ambiente não importa — o que importa é a diferença entre o que a fonte diz // e o que a placa leu. #include <Arduino.h> const int PINO_MEDICAO = 35; // GPIO35 é só entrada e não tem pull-up interno const int LED_5V = 2; const int LED_3V3 = 4; // Precisa do divisor de tensão do kit: um resistor de 330 e um de 330, ou // 10 kΩ e 10 kΩ, formam a ponte que leva 3,3 V para dentro da faixa do ADC. const float TENSAO_REFERENCIA = 3.3; const int LEITURA_MAXIMA_ADC = 4095; unsigned long instanteDaLeitura = 0; void setup() { pinMode(LED_5V, OUTPUT); pinMode(LED_3V3, OUTPUT); // O GPIO35 não tem resistor de pull-up interno, como o GPIO34. Deixá-lo // como INPUT flutuante faz a leitura vir qualquer coisa. pinMode(PINO_MEDICAO, INPUT); analogReadResolution(12); analogSetPinAttenuation(PINO_MEDICAO, ADC_11db); Serial.begin(115200); Serial.println(); Serial.println("=== dia 6, aula 2: alimentacao e medicao ==="); Serial.println(); Serial.println("Alimente o MB102, faca a ponte de resistores e leia o numero."); Serial.println("O valor lido vem da sua bancada, nao de um numero pronto."); Serial.println(); Serial.println("cru | mV"); } void loop() { unsigned long agora = millis(); if (agora - instanteDaLeitura >= 1000) { instanteDaLeitura = agora; int cru = analogRead(PINO_MEDICAO); // analogReadMilliVolts converte a leitura em milivolts usando a // referência interna do ADC. E mais preciso que multiplicar por 3.3 na // mão, porque ele usa a referência medida da placa e não um 3.3 fixo. int milivolts = analogReadMilliVolts(PINO_MEDICAO); Serial.print(cru); Serial.print(" | "); Serial.println(milivolts); // Os dois LEDs marcam as duas trilhas do MB102. Qualquer um acender // prova que a alimentação está chegando na protoboard — e os dois // apagados é o sintoma de jumper solto, não de placa queimada. digitalWrite(LED_5V, cru > 0 ? HIGH : LOW); digitalWrite(LED_3V3, cru > 0 ? HIGH : LOW); } // Nada de delay aqui: o laço fica livre e o professor pode aproximar a // mão da ponte de resistores para ver o número variar na hora. }
Por que assim e não de outro jeito. O sketch mede a própria fonte de alimentação pela entrada analógica. É a mesma coisa que o professor faz com o multímetro, só que com a placa: o aluno aprende que o analogRead serve para qualquer tensão, inclusive a que alimenta o circuito.
O pino é o GPIO35 e não o GPIO34 por um motivo específico: o GPIO34 tem resistor de pull-up interno, e deixar essa ligação em paralelo com o pull-up carrega a ponte e falseia a leitura. O GPIO35 é entrada pura, sem nada interno, e a ponte manda no número.
A ponte de dois resistores iguais aparece porque é a menor prova de que o ADC mede o ponto que a turma manda medir. Com dois resistores de 330 Ω, o ponto do meio fica em metade da tensão, e o número do serial tem de concordar com o multímetro dentro da tolerância da referência do ADC.
Os dois LEDs não estão ali por decoração: eles são o indicador de "chegou alimentação na protoboard". Os dois apagados é o sintoma de jumper solto, e essa é a primeira coisa que o professor olha antes de suspectar da ponte.
O loop não tem delay. O aluno aproxima a mão dos resistores e o número muda na hora, e essa é a prova de que a medição está lendo de verdade e não repetindo um valor guardado.
Criterios de correcao
| Critério | Pontos |
|---|---|
MB102 com 3V3 e GND distribuídos nas trilhas da protoboard | 3 pontos |
| Ponte de dois resistores iguais com leitura no ponto do meio | 3 pontos |
pinMode(PINO_MEDICAO, INPUT) e ADC_11db presentes | 2 pontos |
| Itens 4 e 5 medidos e escritos no caderno | 2 pontos |
Erros comuns
| Erro | Como aparece | Correcao |
|---|---|---|
5V do MB102 ligado no pino de sinal | Sensor maluco, pino quente ao toque | "5V alimenta, 3V3 e sinal. Pino de dado não leva 5 V." |
Esquecer de ligar os dois GND | Leitura instavel, sensor respondendo nada | "Corrente precisa voltar. Sem GND comum, não ha circuito fechado." |
Achar que GND e positivo e 5V e negativo | Aluno inverte a ponte e a leitura satura | "GND e o caminho de volta. Pensa na corrente como agua: sai por um cano e volta pelo outro." |
| Ler a ponte no lugar errado | Número sempre no mesmo valor | "A leitura vai no ponto do meio, onde os dois resistores se encontram." |
Usar GPIO34 na ponte | Leitura mais baixa que a do multímetro | "O GPIO34 tem pull-up interno, e ele carrega a ponte. Use o GPIO35 ou outro sem pull-up." |
| Somar os dois resistores e dividir por um só | Tensão calculada maior que a real | "No divisor, o denominador e o resistor de baixo. Confira qual esta em cima e qual esta embaixo." |
Não usar ADC_11db | Leitura satura em 4095 antes da metade do curso | "Sem atenuacao, o ADC ve pouco mais de 1 V. A ponte de 3,3 V precisa de ADC_11db." |
| Confundir número do serial com valor exato | Item 3 respondido "esta errado" | "A referência interna do ADC tem tolerancia. Compare a ordem de grandeza e a estabilidade, não o digito." |
Desafio extra
Substitua a ponte por uma de três resistores iguais em série, com a leitura na emenda entre o primeiro e o segundo. Meça, calcule a tensão prevista e compare com o serial. Depois escreva no caderno por que a leitura de uma ponte de três resistores iguais é diferente da ponte de dois, e qual delas daria menos erro de leitura na mesma fonte.
>A resolucao, compilada
// Aula 2 do dia 6: alimentação, MB102, 5 V, 3,3 V e GND. // // Último dia do bloco de C++. O sketch não mede nada que a placa não consiga // medir: ele lê a própria fonte de alimentação pela entrada analógica, que é // exatamente o que o professor faz com um multímetro. O valor numérico do // ambiente não importa — o que importa é a diferença entre o que a fonte diz // e o que a placa leu. #include <Arduino.h> const int PINO_MEDICAO = 35; // GPIO35 é só entrada e não tem pull-up interno const int LED_5V = 2; const int LED_3V3 = 4; // Precisa do divisor de tensão do kit: um resistor de 330 e um de 330, ou // 10 kΩ e 10 kΩ, formam a ponte que leva 3,3 V para dentro da faixa do ADC. const float TENSAO_REFERENCIA = 3.3; const int LEITURA_MAXIMA_ADC = 4095; unsigned long instanteDaLeitura = 0; void setup() { pinMode(LED_5V, OUTPUT); pinMode(LED_3V3, OUTPUT); // O GPIO35 não tem resistor de pull-up interno, como o GPIO34. Deixá-lo // como INPUT flutuante faz a leitura vir qualquer coisa. pinMode(PINO_MEDICAO, INPUT); analogReadResolution(12); analogSetPinAttenuation(PINO_MEDICAO, ADC_11db); Serial.begin(115200); Serial.println(); Serial.println("=== dia 6, aula 2: alimentacao e medicao ==="); Serial.println(); Serial.println("Alimente o MB102, faca a ponte de resistores e leia o numero."); Serial.println("O valor lido vem da sua bancada, nao de um numero pronto."); Serial.println(); Serial.println("cru | mV"); } void loop() { unsigned long agora = millis(); if (agora - instanteDaLeitura >= 1000) { instanteDaLeitura = agora; int cru = analogRead(PINO_MEDICAO); // analogReadMilliVolts converte a leitura em milivolts usando a // referência interna do ADC. E mais preciso que multiplicar por 3.3 na // mão, porque ele usa a referência medida da placa e não um 3.3 fixo. int milivolts = analogReadMilliVolts(PINO_MEDICAO); Serial.print(cru); Serial.print(" | "); Serial.println(milivolts); // Os dois LEDs marcam as duas trilhas do MB102. Qualquer um acender // prova que a alimentação está chegando na protoboard — e os dois // apagados é o sintoma de jumper solto, não de placa queimada. digitalWrite(LED_5V, cru > 0 ? HIGH : LOW); digitalWrite(LED_3V3, cru > 0 ? HIGH : LOW); } // Nada de delay aqui: o laço fica livre e o professor pode aproximar a // mão da ponte de resistores para ver o número variar na hora. }
Sem saída de compilação gravada. Rode python3 validar.py -t 1 dia06 aula2.
