← Mundo bit Byte

Apostila Técnica Interativa — Arduino: 5 Projetos Iniciais com Circuitos Reais

Professor Ronaldo Lavestein
Fundamentos de Eletricidade, Eletrônica e Arduino

Bem-vindo ao mundo Arduino

Você está começando uma jornada prática em que programação, eletricidade e eletrônica trabalham juntas. A partir daqui, o código deixa de ficar apenas na tela e passa a controlar componentes físicos reais: LEDs, botões, buzzers, potenciômetros, sensores e atuadores.

Programa
Pino
Sinal elétrico
Ação física

1. O que é o Arduino?

O Arduino é uma plataforma de prototipagem eletrônica. Na prática, ele funciona como um pequeno computador programável especializado em interagir com o mundo físico.

Em vez de trabalhar apenas com teclado, mouse e monitor, ele pode ler sinais de sensores e controlar componentes como LEDs, buzzers, motores e displays.

2. Sistema embarcado

Um sistema embarcado é um sistema eletrônico programado para executar uma tarefa específica.

SemáforoAlarmeCarroRobóticaAutomação

3. Software controlando hardware

O programa enviado ao Arduino define o que os pinos devem fazer: enviar sinal, ler sinal, ligar, desligar, medir ou controlar algum componente.

5V alimentação positiva usada em muitos circuitos simples.
GND referência negativa e caminho de retorno da corrente.
Resistor limita a corrente e protege componentes como LEDs.
Protoboard permite montar circuitos sem solda, usando trilhas internas.

4. Como a eletricidade percorre o circuito

Para um componente funcionar, a corrente precisa percorrer um caminho fechado. Em muitos projetos iniciais, esse caminho começa no 5V ou em um pino digital, passa pelo componente e retorna ao GND.

5V / PinoComponenteGND

5. Entrada e saída

Entrada é aquilo que envia informação para o Arduino, como um botão ou potenciômetro. Saída é aquilo que o Arduino controla, como LED ou buzzer.

Entradasbotão, potenciômetro, sensores
SaídasLED, buzzer, motor, display

6. Digital e analógico

Um sinal digital trabalha com dois estados: HIGH ou LOW, ligado ou desligado. Um sinal analógico pode variar gradualmente dentro de uma faixa de valores.

7. PWM

PWM é uma técnica que liga e desliga um sinal muito rapidamente para simular níveis intermediários. É assim que o Arduino consegue controlar o brilho de um LED em pinos PWM.

Pulsos rápidosbrilho variável

Como os projetos irão evoluir

A sequência foi organizada para que cada projeto acrescente uma ideia nova sem abandonar o que já foi aprendido.

LED protegido Blink Botão com LED Buzzer Potenciômetro com PWM

Preparação para a prática

A partir do primeiro projeto, cada montagem irá unir eletricidade, eletrônica e programação. O LED protegido será o ponto de partida: simples, visual e essencial para entender circuito fechado, polaridade e proteção por resistor.

Eletricidade + Eletrônica + Programação = Automação

Fundamentos elétricos e primeiros circuitos

Antes de começar a programar o Arduino, é importante entender como a eletricidade percorre um circuito e como os componentes eletrônicos trabalham juntos.

Analogia da água

Uma forma simples de entender tensão, corrente e resistência é imaginar a eletricidade como água passando por um cano.

Analogia hidráulica

A tensão elétrica funciona como a força que empurra a água. A corrente elétrica representa o fluxo em movimento. Já a resistência elétrica dificulta a passagem da corrente.

Tensão, corrente e resistência

Tensão corrente e resistência

A tensão elétrica é medida em volts. A corrente elétrica é medida em ampere. A resistência elétrica é medida em ohms.

Fluxo de elétrons

Para que a corrente elétrica passe pelo circuito, ele precisa estar fechado.

Lei de Ohm

Lei de Ohm

A Lei de Ohm relaciona tensão, corrente e resistência elétrica. Ela será utilizada frequentemente nos projetos com Arduino.

LED e resistor

LED e resistores

O resistor limita a corrente elétrica e protege o LED.

LED sem resistor

Quando o LED é ligado diretamente em uma bateria sem resistor, ele pode ser danificado devido ao excesso de corrente elétrica.

Polaridade do LED

Polaridade do LED

O LED possui polaridade. O terminal maior normalmente representa o positivo. O menor representa o negativo.

Circuitos em série e paralelo

Circuito em série e paralelo

No circuito em série, os componentes ficam no mesmo caminho da corrente elétrica. Se um componente falhar, o circuito para de funcionar.

No circuito em paralelo, existem ramificações diferentes. Assim, uma parte do circuito pode continuar funcionando mesmo que outra apresente problema.

Componentes que serão utilizados nos projetos

Kit de componentes

Ao longo dos projetos, serão utilizados LEDs, resistores, botões, sensores, buzzer, potenciômetro, display e diversos outros componentes eletrônicos.

Primeiros passos no Tinkercad

O Tinkercad será utilizado para montar, testar e simular os circuitos eletrônicos.

  1. Acesse o site tinkercad.com
  2. Clique em inscrever-se
  3. Crie uma conta pessoal
  4. Entre com sua conta Google
  5. Clique em criar
  6. Escolha a opção circuitos
  7. Arraste os componentes para a área de trabalho
  8. Utilize fios para interligar os componentes
  9. Clique em iniciar simulação
Ambiente Tinkercad

No ambiente Tinkercad é possível movimentar componentes, criar circuitos, alterar fios e testar montagens eletrônicas.

Código no Tinkercad

Além da montagem dos circuitos, o Tinkercad também permite programar placas Arduino e executar simulações em tempo real.

P1

Projeto 1 — LED protegido

O Arduino funciona apenas como fonte de 5V e GND para alimentar o LED protegido por resistor.

Montagem do circuito

Projeto 1 — LED protegido: o Arduino Uno R3 fornece 5V e GND aos barramentos da protoboard; o resistor de 300 Ω fica em série com o LED.
Projeto 1 — LED protegido: o Arduino Uno R3 fornece 5V e GND aos barramentos da protoboard; o resistor de 300 Ω fica em série com o LED.

1. Objetivo do projeto

Montar um circuito simples com LED protegido por resistor, usando o Arduino Uno R3 apenas como fonte de alimentação. Na imagem, o Arduino fornece 5V ao barramento positivo da protoboard e GND ao barramento negativo. O LED acende continuamente porque há um caminho elétrico fechado passando pelo resistor de 300 Ω e pelo LED.

2. Lista exata de componentes

  • 1 Arduino Uno R3
  • 1 cabo USB para alimentar o Arduino
  • 1 protoboard
  • 1 LED comum de 5 mm
  • 1 resistor de 300 Ω
  • 2 jumpers macho-macho

3. Tabela de ligação

Ponto inicialPonto finalObservação
Pino 5V do ArduinoBarramento positivo da protoboardFio vermelho da imagem; fornece alimentação positiva ao circuito.
Pino GND do ArduinoBarramento negativo da protoboardFio preto da imagem; fornece a referência negativa do circuito.
Barramento positivo da protoboardUma extremidade do resistor de 300 ΩO resistor recebe alimentação positiva a partir do trilho positivo.
Outra extremidade do resistorAnodo do LEDO resistor fica em série antes do LED, limitando a corrente.
Catodo do LEDBarramento negativo da protoboardFecha o caminho de retorno até o GND.

4. Explicação da montagem

Na imagem, o Arduino não controla nenhum pino digital. Ele é usado somente como fonte de energia. O fio vermelho leva o 5V do Arduino até o barramento positivo da protoboard. O fio preto leva o GND do Arduino até o barramento negativo.

A partir do barramento positivo, a corrente passa pelo resistor de 300 Ω, depois entra no anodo do LED. O catodo do LED retorna ao barramento negativo, fechando o circuito no GND.

O caminho elétrico representado na imagem é: 5V → barramento positivo → resistor de 300 Ω → LED → barramento negativo → GND.

5. Descrição textual do circuito visual

A imagem mostra o Arduino Uno R3 à direita e a protoboard à esquerda. O fio vermelho sai do pino 5V do Arduino e alimenta o barramento positivo da protoboard. O fio preto sai do GND do Arduino e chega ao barramento negativo. O resistor de 300 Ω está em série com o LED. A polaridade do LED deve ser respeitada: o anodo recebe o sinal que vem do resistor e o catodo retorna ao GND.

Neste projeto, não há ligação em pinos digitais, pois o Arduino funciona apenas como fonte de alimentação.

6. Código completo

// Projeto 1: LED protegido
// Neste projeto, o Arduino Uno R3 funciona apenas como fonte de 5V.
// Não há programação funcional obrigatória.

void setup() {
  // Nenhuma configuração é necessária neste projeto.
}

void loop() {
  // Nenhum comando é necessário neste projeto.
}

7. Explicação linha por linha

// Projeto 1: LED protegido — comentário com o nome do projeto.

// Neste projeto... — explica que o Arduino não controlará o LED por programação.

void setup() — função executada uma única vez quando o Arduino liga.

// Nenhuma configuração... — indica que nenhum pino será configurado.

void loop() — função que normalmente se repete continuamente.

// Nenhum comando... — reforça que o funcionamento depende apenas da montagem elétrica.

8. O que foi trabalhado

  • Alimentação de 5V do Arduino
  • Uso do GND como referência elétrica
  • Polaridade do LED
  • Resistor em série
  • Proteção contra excesso de corrente
  • Circuito elétrico fechado
  • Diferença entre montagem elétrica e programação

9. Resultado esperado

Ao conectar o Arduino ao computador pelo cabo USB, o LED deve acender continuamente. Ele não pisca e não depende do código, porque está alimentado diretamente pelo 5V do Arduino através do resistor de 300 Ω.

10. Erros comuns

ErroConsequência
Ligar o LED sem resistorPode queimar o LED.
Inverter anodo e catodo do LEDO LED não acende.
Ligar 5V diretamente no GNDGera curto-circuito perigoso.
Colocar o resistor em uma linha que não esteja conectada ao LEDO circuito fica aberto e o LED não funciona.
Não ligar o GND do Arduino ao barramento negativoNão há caminho completo para a corrente retornar.
Confundir os barramentos positivo e negativo da protoboardO circuito pode não funcionar ou pode ser ligado de forma incorreta.

11. Exercício proposto

Monte o circuito do LED protegido usando resistor de 300 Ω. Depois, com o Arduino desligado, inverta o LED na protoboard e ligue novamente. Por que o LED acende em uma posição e não acende na outra?

P2

Projeto 2 — Blink com LED externo

O LED externo deixa de ser ligado diretamente ao 5V e passa a ser controlado pelo pino digital 8.

Montagem do circuito

Projeto 2 — Blink: o pino digital 8 controla o LED externo; o retorno do circuito é feito pelo GND da protoboard.
Projeto 2 — Blink: o pino digital 8 controla o LED externo; o retorno do circuito é feito pelo GND da protoboard.

1. Objetivo do projeto

Fazer um LED externo piscar usando o pino digital 8 do Arduino Uno R3. No Projeto 1, o LED acendia porque estava ligado diretamente ao 5V. Neste projeto, o LED pisca porque o Arduino controla o pino digital por programação.

2. Lista exata de componentes

  • 1 Arduino Uno R3
  • 1 cabo USB
  • 1 protoboard
  • 1 LED comum de 5 mm
  • 1 resistor de 300 Ω
  • 2 jumpers macho-macho

3. Tabela de ligação

Ponto inicialPonto finalObservação
Pino digital 8 do ArduinoUma extremidade do resistor de 300 ΩFio vermelho da imagem; agora o LED é alimentado pelo pino digital, não pelo 5V direto.
Outra extremidade do resistorAnodo do LEDO resistor fica em série antes do LED.
Catodo do LEDBarramento negativo da protoboardRetorno do LED para o GND.
Barramento negativo da protoboardPino GND do ArduinoFio preto da imagem; fecha o circuito elétrico.

4. Explicação da montagem

Na imagem, o fio vermelho não vem do pino 5V. Ele sai do pino digital 8 do Arduino e chega à região do resistor na protoboard. O resistor de 300 Ω fica em série com o LED, protegendo-o contra excesso de corrente.

O catodo do LED retorna ao barramento negativo da protoboard, e esse barramento está ligado ao GND do Arduino pelo fio preto. Assim, o caminho do LED é: pino digital 8 → resistor de 300 Ω → LED → GND.

Quando o código coloca o pino 8 em HIGH, o LED acende. Quando coloca em LOW, o LED apaga.

5. Descrição textual do circuito visual

A imagem deve ser lida da seguinte forma: o Arduino Uno R3 fica à direita, a protoboard à esquerda, o fio vermelho sai do pino digital 8 e vai até o resistor de 300 Ω. O resistor está em série com o LED. O retorno do LED é feito para o barramento negativo da protoboard, que está ligado ao GND do Arduino pelo fio preto.

Este circuito visual mostra claramente a transição do Projeto 1 para o Projeto 2: agora o LED não recebe 5V fixo; ele recebe comando do pino digital 8.

6. Código completo

// Projeto 2: Blink com LED externo
// O LED será controlado pelo pino digital 8 do Arduino.

int pinoLed = 8;

void setup() {
  pinMode(pinoLed, OUTPUT);
}

void loop() {
  digitalWrite(pinoLed, HIGH);
  delay(1000);

  digitalWrite(pinoLed, LOW);
  delay(1000);
}

7. Explicação linha por linha

int pinoLed = 8; — cria uma variável com o número do pino usado no circuito.

pinMode(pinoLed, OUTPUT); — configura o pino 8 como saída.

digitalWrite(pinoLed, HIGH); — envia tensão pelo pino 8 e acende o LED.

delay(1000); — mantém o LED aceso por 1 segundo.

digitalWrite(pinoLed, LOW); — para de enviar tensão pelo pino 8 e apaga o LED.

delay(1000); — mantém o LED apagado por 1 segundo.

loop() — repete o ciclo continuamente.

8. O que foi trabalhado

  • Uso de pino digital como saída
  • Controle de LED por programação
  • Diferença entre ligação direta no 5V e controle por pino digital
  • Variável inteira para representar o pino usado
  • pinMode()
  • digitalWrite()
  • HIGH e LOW
  • delay()
  • Repetição contínua com loop()
  • Resistor em série para proteger o LED

9. Resultado esperado

Ao enviar o código para o Arduino, o LED externo deve acender por 1 segundo, apagar por 1 segundo e repetir esse comportamento continuamente.

10. Erros comuns

ErroConsequência
Ligar o LED no 5V em vez do pino 8O LED fica sempre aceso e não obedece ao código.
Usar pino diferente no circuito e no códigoO LED não pisca como esperado.
Esquecer o resistor de 300 ΩPode queimar o LED.
Inverter o LEDO LED não acende.
Não ligar o retorno ao GNDO circuito fica aberto e o LED não funciona.
Colocar resistor e LED em linhas desconectadas da protoboardO caminho elétrico não se completa.

11. Exercício proposto

Altere o tempo do pisca-pisca trocando delay(1000); por delay(300);. O LED pisca mais rápido ou mais devagar? Por quê?

P3

Projeto 3 — Botão com LED

O botão é lido no pino digital 2 e o LED é acionado pelo pino digital 8 somente enquanto o botão estiver pressionado.

Montagem do circuito

Projeto 3 — Botão com LED: LED no pino 8 e botão no pino 2 usando INPUT_PULLUP, com o botão ligado ao GND quando pressionado.
Projeto 3 — Botão com LED: LED no pino 8 e botão no pino 2 usando INPUT_PULLUP, com o botão ligado ao GND quando pressionado.

1. Objetivo do projeto

Fazer um botão controlar um LED. O LED deve acender somente enquanto o botão estiver pressionado. O aluno deve compreender entrada digital, saída digital, leitura de botão, digitalRead(), if/else e a lógica do INPUT_PULLUP.

2. Lista exata de componentes

  • 1 Arduino Uno R3
  • 1 cabo USB
  • 1 protoboard
  • 1 LED comum de 5 mm
  • 1 resistor de 300 Ω para o LED
  • 1 botão tátil de 4 terminais
  • jumpers macho-macho

3. Tabela de ligação

Parte do circuitoPonto inicialPonto finalObservação
LEDPino digital 8 do ArduinoResistor de 300 ΩSaída digital que controla o LED.
LEDResistor de 300 ΩAnodo do LEDResistor em série para limitar a corrente.
LEDCatodo do LEDGND do Arduino / barramento negativoFecha o circuito do LED.
BotãoUm terminal do botãoPino digital 2 do ArduinoEntrada digital lida pelo programa.
BotãoTerminal oposto do botãoGNDCom INPUT_PULLUP, pressionar o botão liga o pino 2 ao GND.

4. Explicação da montagem

A parte do LED segue a mesma lógica do Blink: o pino digital 8 alimenta o resistor de 300 Ω, o resistor vai ao anodo do LED e o catodo retorna ao GND.

Na imagem, o botão tátil está atravessando o vão central da protoboard. Essa posição é importante para evitar que os terminais fiquem ligados de forma errada. Um lado do botão está ligado ao pino digital 2; o lado oposto está ligado ao GND.

Como o código usa INPUT_PULLUP, não é necessário resistor externo no botão. O Arduino mantém o pino 2 em HIGH quando o botão está solto. Quando o botão é pressionado, ele conecta o pino 2 ao GND, e a leitura passa a ser LOW.

5. Descrição textual do circuito visual

A imagem mostra dois circuitos simples funcionando juntos. O primeiro é a saída: LED no pino digital 8, com resistor de 300 Ω em série e retorno ao GND. O segundo é a entrada: botão tátil na protoboard, com um lado ligado ao pino digital 2 e o outro lado ligado ao GND.

O desenho precisa deixar claro que o botão não recebe 5V diretamente. Ele trabalha com o resistor interno de pull-up do Arduino. Por isso, neste projeto, botão pressionado significa leitura LOW.

6. Código completo

// Projeto 3: Botão com LED
// O LED acende somente enquanto o botão estiver pressionado.
// O botão usa INPUT_PULLUP, portanto pressionado = LOW.

int pinoLed = 8;
int pinoBotao = 2;

void setup() {
  pinMode(pinoLed, OUTPUT);
  pinMode(pinoBotao, INPUT_PULLUP);
}

void loop() {
  int estadoBotao = digitalRead(pinoBotao);

  if (estadoBotao == LOW) {
    digitalWrite(pinoLed, HIGH);
  } else {
    digitalWrite(pinoLed, LOW);
  }
}

7. Explicação linha por linha

int pinoLed = 8; — guarda o pino usado pelo LED.

int pinoBotao = 2; — guarda o pino usado pelo botão.

pinMode(pinoLed, OUTPUT); — configura o LED como saída digital.

pinMode(pinoBotao, INPUT_PULLUP); — configura o botão como entrada e ativa o resistor interno de pull-up.

digitalRead(pinoBotao); — lê HIGH ou LOW no pino do botão.

if (estadoBotao == LOW) — verifica se o botão está pressionado, pois com INPUT_PULLUP pressionado = LOW.

digitalWrite(pinoLed, HIGH); — liga o LED enquanto o botão está pressionado.

else / digitalWrite(pinoLed, LOW); — desliga o LED quando o botão está solto.

8. O que foi trabalhado

  • Entrada digital
  • Saída digital
  • Diferença entre entrada e saída
  • Botão como sensor simples
  • LED como atuador simples
  • digitalRead()
  • digitalWrite()
  • INPUT_PULLUP
  • Lógica invertida do botão com pull-up interno
  • if/else
  • HIGH e LOW
  • Circuito sem resistor externo para o botão
  • GND comum para referência elétrica

9. Resultado esperado

Com o Arduino ligado e o código enviado, o LED fica apagado quando o botão está solto, acende enquanto o botão está pressionado e apaga novamente ao soltar.

10. Erros comuns

ErroConsequência
Colocar o botão sem atravessar corretamente o vão centralO botão pode ficar sempre ligado ou nunca funcionar.
Ligar os dois fios no mesmo lado elétrico do botãoO pino 2 pode ficar sempre em LOW ou nunca mudar.
Esperar que botão pressionado seja HIGHA lógica fica invertida, pois com INPUT_PULLUP pressionado = LOW.
Usar INPUT em vez de INPUT_PULLUPO botão pode apresentar leitura flutuante.
Trocar os pinos 2 ou 8 no circuito sem alterar o códigoO botão ou o LED não funcionam.
Esquecer o resistor do LEDPode queimar o LED.

11. Exercício proposto

Altere o comportamento para o contrário: botão solto = LED aceso; botão pressionado = LED apagado. Por que, neste circuito com INPUT_PULLUP, o botão pressionado é lido como LOW?

P4

Projeto 4 — Buzzer

O buzzer ativo é controlado pelo pino digital 8, emitindo som intermitente por programação.

Montagem do circuito

Projeto 4 — Buzzer: buzzer ativo ligado ao pino digital 8 e ao GND, funcionando como saída sonora.
Projeto 4 — Buzzer: buzzer ativo ligado ao pino digital 8 e ao GND, funcionando como saída sonora.

1. Objetivo do projeto

Fazer o Arduino controlar um buzzer ativo, emitindo som de forma intermitente. Na imagem, o buzzer está ligado diretamente entre o pino digital 8 e o GND. O aluno deve perceber que o buzzer é uma saída sonora, assim como o LED era uma saída visual.

2. Lista exata de componentes

  • 1 Arduino Uno R3
  • 1 cabo USB
  • 1 protoboard
  • 1 buzzer ativo 5V
  • 2 jumpers macho-macho

3. Tabela de ligação

Ponto inicialPonto finalObservação
Terminal positivo (+) do buzzer ativoPino digital 8 do ArduinoFio vermelho da imagem; saída controlada pelo programa.
Terminal negativo (-) do buzzer ativoPino GND do ArduinoFio preto da imagem; fecha o circuito elétrico.

4. Explicação da montagem

Na imagem, o buzzer ativo está colocado na protoboard. O terminal positivo, indicado pelo símbolo +, é ligado ao pino digital 8 do Arduino. O terminal negativo, indicado pelo símbolo -, é ligado ao GND.

O caminho elétrico é simples: pino digital 8 → buzzer ativo → GND. Quando o programa aciona o pino 8 com tone(), o buzzer emite som. Quando o programa executa noTone(), o som é interrompido.

5. Descrição textual do circuito visual

A imagem mostra o Arduino Uno R3 à direita e a protoboard à esquerda. O buzzer ativo aparece com polaridade identificada. O fio vermelho liga o terminal positivo do buzzer ao pino digital 8. O fio preto liga o terminal negativo ao GND. Não há LED nem resistor neste projeto.

O desenho deve destacar que o buzzer é uma saída sonora controlada por programação.

6. Código completo

// Projeto 4: Buzzer ativo
// O Arduino controla um buzzer no pino digital 8.
// O som liga e desliga de forma intermitente.

int pinoBuzzer = 8;

void setup() {
  pinMode(pinoBuzzer, OUTPUT);
}

void loop() {
  tone(pinoBuzzer, 1000);
  delay(1000);

  noTone(pinoBuzzer);
  delay(1000);
}

7. Explicação linha por linha

int pinoBuzzer = 8; — guarda o número do pino usado pelo buzzer.

pinMode(pinoBuzzer, OUTPUT); — configura o pino 8 como saída digital.

tone(pinoBuzzer, 1000); — aciona o buzzer no pino 8 usando frequência de 1000 Hz. Em buzzer ativo, serve principalmente como acionamento didático.

delay(1000); — mantém o som por 1 segundo.

noTone(pinoBuzzer); — interrompe o som no pino 8.

delay(1000); — mantém o buzzer em silêncio por 1 segundo.

loop() — repete som e silêncio continuamente.

8. O que foi trabalhado

  • Buzzer como dispositivo de saída
  • Diferença entre saída visual e saída sonora
  • Controle de som por programação
  • Pino digital como saída
  • tone()
  • noTone()
  • Controle de tempo com delay()
  • Repetição contínua com loop()
  • Polaridade do buzzer ativo
  • Ligação entre pino digital e GND

9. Resultado esperado

Ao enviar o código para o Arduino, o buzzer deve emitir som por 1 segundo, ficar em silêncio por 1 segundo e repetir continuamente.

10. Erros comuns

ErroConsequência
Inverter positivo e negativo do buzzerO buzzer pode não funcionar.
Ligar o positivo em pino diferente do códigoO buzzer não toca.
Esquecer o GNDO circuito não fecha.
Ligar o buzzer direto no 5VEle fica ligado continuamente, sem obedecer ao código.
Usar buzzer ativo esperando notas musicais precisasO controle de frequência pode não ser fiel, pois o buzzer ativo já possui oscilador interno.
Remover os delaysO som pode parecer contínuo ou rápido demais.

11. Exercício proposto

Troque os dois delay(1000); por delay(300);. O buzzer ficou mais rápido ou mais lento? O que o delay() está controlando neste projeto?

P5

Projeto 5 — Potenciômetro com PWM

O potenciômetro é lido no A0 e controla o brilho do LED ligado ao pino PWM 9.

Montagem do circuito

Projeto 5 — Potenciômetro com PWM: potenciômetro ligado a 5V, GND e A0; LED ligado ao pino PWM 9 com resistor de 300 Ω.
Projeto 5 — Potenciômetro com PWM: potenciômetro ligado a 5V, GND e A0; LED ligado ao pino PWM 9 com resistor de 300 Ω.

1. Objetivo do projeto

Controlar o brilho de um LED usando um potenciômetro de 10 kΩ. O aluno deve perceber a relação entre entrada analógica e saída PWM, usando analogRead(), map() e analogWrite().

2. Lista exata de componentes

  • 1 Arduino Uno R3
  • 1 cabo USB
  • 1 protoboard
  • 1 LED comum de 5 mm
  • 1 resistor de 300 Ω
  • 1 potenciômetro de 10 kΩ
  • jumpers macho-macho

3. Tabela de ligação

ComponentePonto inicialPonto finalObservação
PotenciômetroUm terminal lateral5V do ArduinoFio vermelho da imagem; alimenta uma extremidade do potenciômetro.
PotenciômetroOutro terminal lateralGND do ArduinoFio preto da imagem; fornece a referência negativa.
PotenciômetroTerminal centralPino analógico A0Fio amarelo da imagem; envia ao Arduino a tensão variável.
LEDPino PWM 9 do ArduinoResistor de 300 ΩSaída PWM que controla o brilho do LED.
LEDResistor de 300 ΩAnodo do LEDResistor em série com o LED.
LEDCatodo do LEDGNDFecha o circuito do LED.

4. Explicação da montagem

Na imagem, o potenciômetro está encaixado na protoboard e usa três ligações. Um terminal lateral vai ao 5V, o outro terminal lateral vai ao GND e o terminal central vai ao pino analógico A0. O terminal central é o cursor do potenciômetro: ele entrega ao Arduino uma tensão variável conforme o eixo é girado.

A parte do LED usa o pino PWM 9. O sinal sai do pino 9, passa pelo resistor de 300 Ω, entra no anodo do LED e retorna pelo catodo ao GND.

O Arduino lê o valor variável do potenciômetro no A0 com analogRead() e usa esse valor para controlar o brilho do LED no pino 9 com analogWrite().

5. Descrição textual do circuito visual

A imagem mostra dois blocos conectados ao Arduino. O primeiro bloco é a entrada analógica: potenciômetro de 10 kΩ com uma lateral em 5V, outra lateral em GND e terminal central no A0. O segundo bloco é a saída PWM: LED ligado ao pino 9, passando por resistor de 300 Ω e retornando ao GND.

O desenho deve deixar evidente que o potenciômetro não acende o LED diretamente. Ele envia uma leitura analógica ao Arduino, e o Arduino controla o brilho do LED por PWM.

6. Código completo

// Projeto 5: Potenciômetro com PWM
// O potenciômetro controla o brilho de um LED.
// Potenciômetro no A0 e LED no pino PWM 9.

int pinoPotenciometro = A0;
int pinoLed = 9;

int leituraPotenciometro = 0;
int brilhoLed = 0;

void setup() {
  pinMode(pinoLed, OUTPUT);
}

void loop() {
  leituraPotenciometro = analogRead(pinoPotenciometro);

  brilhoLed = map(leituraPotenciometro, 0, 1023, 0, 255);

  analogWrite(pinoLed, brilhoLed);
}

7. Explicação linha por linha

int pinoPotenciometro = A0; — representa o pino analógico usado pelo potenciômetro.

int pinoLed = 9; — representa o pino PWM usado pelo LED.

int leituraPotenciometro = 0; — guarda a leitura de 0 a 1023.

int brilhoLed = 0; — guarda o valor PWM de 0 a 255.

pinMode(pinoLed, OUTPUT); — configura o pino do LED como saída.

analogRead(pinoPotenciometro); — lê a tensão variável no A0 e converte em número de 0 a 1023.

map(leituraPotenciometro, 0, 1023, 0, 255); — converte a faixa da entrada analógica para a faixa do PWM.

analogWrite(pinoLed, brilhoLed); — envia PWM ao LED. Quanto maior o valor, maior o brilho.

8. O que foi trabalhado

  • Entrada analógica
  • Diferença entre entrada digital e analógica
  • Potenciômetro como divisor de tensão
  • analogRead()
  • Faixa analógica de 0 a 1023
  • Saída PWM
  • Controle de brilho de LED
  • map()
  • analogWrite()
  • Pino PWM no Arduino Uno
  • Relação entre sensor de entrada e atuador de saída

9. Resultado esperado

Ao girar o potenciômetro, o brilho do LED deve variar gradualmente: apagado ou quase apagado em uma extremidade, intermediário no meio e máximo na outra extremidade.

10. Erros comuns

ErroConsequência
Ligar o terminal central do potenciômetro no 5V ou GNDA leitura não varia corretamente.
Não ligar o terminal central ao A0O Arduino não lê a posição do potenciômetro.
Esquecer o GND do potenciômetroA leitura fica instável ou incorreta.
Usar pino diferente de A0 no circuito sem mudar o códigoO controle não funciona.
Ligar o LED em pino sem PWMO brilho pode não variar corretamente com analogWrite().
Usar pino diferente do 9 sem mudar o códigoO LED não responde ao PWM esperado.
Esquecer o resistor de 300 Ω do LEDPode queimar o LED.
Inverter o LEDO LED não acende.

11. Exercício proposto

Inverta o controle do brilho trocando map(leituraPotenciometro, 0, 1023, 0, 255) por map(leituraPotenciometro, 0, 1023, 255, 0). O que mudou no comportamento do LED ao girar o potenciômetro?

P6

Projeto 6 — Fotoresistor (LDR)

O Arduino lê a luminosidade do ambiente pelo LDR e acende o LED automaticamente quando estiver escuro.

Projeto 6 — Fotoresistor LDR: Arduino Uno com LDR na entrada A0 e LED na porta digital 7.
Projeto 6 — Fotoresistor (LDR): o sensor de luz é lido na entrada analógica A0; o LED é controlado pela porta digital 7.

1. OBJETIVO DO PROJETO

Montar um circuito que percebe a luminosidade do ambiente usando um fotoresistor, também chamado de LDR.

Quando o ambiente estiver escuro, o Arduino acende o LED. Quando houver luz suficiente, o LED permanece apagado.

2. LISTA EXATA DE COMPONENTES

  • 1 Arduino Uno R3
  • 1 cabo USB para alimentar o Arduino
  • 1 protoboard
  • 1 LED comum de 5 mm
  • 1 resistor de 300 Ω para o LED
  • 1 fotoresistor (LDR)
  • 1 resistor de 10 kΩ para o LDR
  • Jumpers macho-macho

3. MONTAGEM DO CIRCUITO

O LED é ligado à porta digital 7 do Arduino. O LDR é ligado à entrada analógica A0, permitindo que o Arduino leia a variação da luz.

O resistor do LED limita a corrente elétrica. O resistor de 10 kΩ participa da leitura analógica do LDR.

4. COMO FUNCIONA

O comando analogRead(pinoLDR) lê o valor do sensor na entrada A0.

Se a leitura for menor que 40, o programa entende que há pouca luz e acende o LED.

5. CÓDIGO COMPLETO

const int pinoLDR = A0;
const int pinoLED = 7;
int leitura = 0;

void setup() {
  pinMode(pinoLDR, INPUT); 
  pinMode(pinoLED, OUTPUT);
  Serial.begin(9600);
}

void loop() {
  leitura = analogRead(pinoLDR);

  Serial.print("Leitura:");
  Serial.println(leitura);

  if(leitura < 40){
    digitalWrite(pinoLED,HIGH);
  }
  else {
    digitalWrite(pinoLED,LOW);
  }

  delay(100);
}

6. MONITOR SERIAL

O monitor serial mostra o valor lido pelo LDR. Isso permite observar como a leitura muda quando o sensor recebe mais ou menos luz.

7. TESTE PRÁTICO

Cubra o LDR com a mão e observe se o LED acende. Depois ilumine o sensor e verifique se o LED apaga.

99

99 — Exercícios

Esta seção reúne exercícios de revisão e aprofundamento dos fundamentos e dos cinco projetos iniciais. As atividades estão organizadas por tema e misturam múltipla escolha interativa, questões abertas, completar código, interpretação de código e análise técnica. As questões abertas e os códigos não exibem gabarito.

Fundamentos de Arduino, eletricidade e protoboard

Revise a base conceitual antes dos projetos: alimentação, GND, circuito fechado, resistor, protoboard, entrada, saída, digital, analógico e PWM.

Questionário interativo — 10 questões de múltipla escolha

Clique em uma alternativa. Após a escolha, a questão será bloqueada e o sistema informará se a resposta está certa ou errada.
  1. FácilQual é a função principal do GND em um circuito com Arduino?
  2. FácilPor que usamos resistor em série com LED?
  3. FácilO que significa circuito fechado?
  4. IntermediárioNa protoboard, qual cuidado é essencial?
  5. FácilO que é uma saída no Arduino?
  6. FácilO que é uma entrada no Arduino?
  7. FácilQual opção representa melhor um sinal digital?
  8. IntermediárioQual opção representa melhor leitura analógica no Arduino Uno?
  9. IntermediárioO que o PWM permite fazer?
  10. FácilPor que começar pelo LED?

Questões abertas

  1. FácilExplique com suas palavras a diferença entre 5V e GND.
  2. FácilPor que o resistor é considerado um componente de proteção no circuito do LED?
  3. IntermediárioDescreva o que pode acontecer se o 5V for ligado diretamente ao GND.
  4. IntermediárioExplique a diferença entre sensor e atuador usando exemplos do material.
  5. DifícilExplique por que PWM não é a mesma coisa que saída analógica verdadeira.

Complete o código

Como pensar: Leia a descrição do circuito e procure no material qual pino ou comando corresponde à função pedida. Não tente adivinhar pelo nome da variável: pense primeiro no papel de cada parte do circuito.

Circuito usado: LED externo em um pino digital. Objetivo: configurar um pino como saída e ligar o LED.

// Complete o código conceitual.
// Pense: qual pino está ligado ao LED?
// Pense: qual modo permite controlar um componente de saída?

int pinoLed = ____;

void setup() {
  pinMode(____, OUTPUT);
}

void loop() {
  digitalWrite(pinoLed, ____);
}

Interpretação de código

Explique o que esse código faz, que tipo de componente poderia estar ligado ao A0 e que tipo de valores apareceriam no Monitor Serial.

int valor = 0;

void setup() {
  Serial.begin(9600);
}

void loop() {
  valor = analogRead(A0);
  Serial.println(valor);
  delay(500);
}

Projeto 1 — LED protegido

Exercícios sobre alimentação elétrica, polaridade, resistor em série e uso do Arduino apenas como fonte de 5V e GND.

Questionário interativo — 10 questões de múltipla escolha

Clique em uma alternativa. Após a escolha, a questão será bloqueada e o sistema informará se a resposta está certa ou errada.
  1. FácilNeste projeto, qual é a função do Arduino?
  2. FácilO LED protegido acende porque:
  3. FácilO resistor de 300 Ω deve ficar:
  4. FácilSe o LED for invertido, o mais provável é:
  5. FácilO anodo do LED normalmente é:
  6. FácilO catodo do LED normalmente é:
  7. IntermediárioQual ligação seria perigosa?
  8. FácilPor que este projeto não precisa de programação funcional?
  9. FácilO que observar neste primeiro projeto?
  10. FácilQual conceito aparece neste projeto?

Questões abertas

  1. FácilExplique o caminho da corrente neste circuito.
  2. FácilPor que o LED precisa respeitar polaridade?
  3. IntermediárioExplique por que o resistor deve estar em série com o LED.
  4. FácilDescreva um erro de montagem que faria o LED não acender.
  5. IntermediárioExplique por que este projeto é importante antes do Blink.

Complete o código

Como pensar: Observe que este projeto não depende de comandos para ligar o LED. As lacunas devem reforçar a ideia de que o funcionamento vem da montagem elétrica, não da programação.

Circuito usado: LED protegido ligado diretamente ao 5V e GND. Objetivo: reconhecer que não há controle por programação neste projeto.

void setup() {
  // Nenhuma configuração é ______________ neste projeto.
}

void loop() {
  // Nenhum comando é ______________ neste projeto.
}

Interpretação de código

Explique por que esse código vazio ainda é coerente com o Projeto 1, desde que o circuito esteja montado corretamente.

void setup() {
}

void loop() {
}

Projeto 3 — Botão com LED

Exercícios sobre entrada digital, saída digital, botão tátil, INPUT_PULLUP, digitalRead, if/else e lógica invertida.

Questionário interativo — 10 questões de múltipla escolha

Clique em uma alternativa. Após a escolha, a questão será bloqueada e o sistema informará se a resposta está certa ou errada.
  1. FácilO botão está ligado ao:
  2. FácilO LED está ligado ao:
  3. FácilQual configuração é usada para o botão?
  4. FácilCom INPUT_PULLUP, botão solto é:
  5. FácilCom INPUT_PULLUP, botão pressionado é:
  6. FácilQual comando lê o botão?
  7. FácilO if é usado para:
  8. IntermediárioPor que o botão atravessa o vão central?
  9. IntermediárioEsperar pressionado = HIGH nesse circuito indica:
  10. FácilIdeia principal do projeto:

Questões abertas

  1. FácilExplique com suas palavras o que é uma entrada digital.
  2. IntermediárioExplique por que o botão pressionado é LOW neste projeto.
  3. FácilDescreva o que acontece quando o botão é pressionado.
  4. FácilQual é a diferença entre pino de entrada e pino de saída neste projeto?
  5. DifícilExplique como inverter a lógica para o LED acender quando o botão estiver solto.

Complete o código

Como pensar: Para completar, olhe primeiro a montagem: descubra qual pino recebe a informação do botão e qual pino controla o LED. Depois lembre que INPUT_PULLUP inverte a leitura: pressionado não é HIGH.

Circuito usado: botão no pino 2 e LED no pino 8. Objetivo: acender o LED somente enquanto o botão está pressionado.

int pinoLed = ____;
int pinoBotao = ____;

void setup() {
  pinMode(pinoLed, ______);
  pinMode(pinoBotao, ____________);
}

void loop() {
  int estadoBotao = digitalRead(__________);

  if (estadoBotao == ______) {
    digitalWrite(pinoLed, HIGH);
  } else {
    digitalWrite(pinoLed, LOW);
  }
}

Interpretação de código

Explique o comportamento desse código. O LED acende quando o botão está pressionado ou solto? Justifique com base no INPUT_PULLUP.

int pinoLed = 8;
int pinoBotao = 2;

void setup() {
  pinMode(pinoLed, OUTPUT);
  pinMode(pinoBotao, INPUT_PULLUP);
}

void loop() {
  int estadoBotao = digitalRead(pinoBotao);

  if (estadoBotao == HIGH) {
    digitalWrite(pinoLed, HIGH);
  } else {
    digitalWrite(pinoLed, LOW);
  }
}

Projeto 4 — Buzzer

Exercícios sobre saída sonora, buzzer ativo, pino digital 8, tone(), noTone() e controle de tempo com delay().

Questionário interativo — 10 questões de múltipla escolha

Clique em uma alternativa. Após a escolha, a questão será bloqueada e o sistema informará se a resposta está certa ou errada.
  1. FácilO buzzer está ligado ao:
  2. FácilO buzzer é dispositivo de:
  3. FácilA saída do buzzer é:
  4. FácilQual comando inicia som?
  5. FácilQual comando interrompe som?
  6. Fácildelay() controla:
  7. IntermediárioBuzzer ligado direto no 5V tende a:
  8. FácilCuidado elétrico importante no buzzer ativo:
  9. IntermediárioPor que usar tone() didaticamente?
  10. FácilComportamento esperado:

Questões abertas

  1. FácilExplique a diferença entre saída visual e saída sonora.
  2. FácilDescreva o ciclo de funcionamento do buzzer.
  3. FácilExplique a função do noTone().
  4. FácilO que acontece se reduzir os delays de 1000 para 300?
  5. DifícilExplique por que buzzer ativo não é ideal para notas musicais precisas.

Complete o código

Como pensar: Neste exercício, pense no buzzer como uma saída sonora. A lacuna do pino deve combinar com o circuito, e as lacunas dos comandos devem indicar quando o som começa e quando ele para.

Circuito usado: buzzer ativo no pino digital 8. Objetivo: emitir som intermitente.

int pinoBuzzer = ____;

void setup() {
  pinMode(pinoBuzzer, ______);
}

void loop() {
  ______(pinoBuzzer, 1000);
  delay(1000);

  ______(pinoBuzzer);
  delay(1000);
}

Interpretação de código

Explique como será o som produzido. O tempo de som será maior ou menor que o tempo de silêncio?

int pinoBuzzer = 8;

void setup() {
  pinMode(pinoBuzzer, OUTPUT);
}

void loop() {
  tone(pinoBuzzer, 1000);
  delay(200);
  noTone(pinoBuzzer);
  delay(1200);
}

Projeto 5 — Potenciômetro com PWM

Exercícios sobre entrada analógica, potenciômetro, analogRead, map, PWM, analogWrite e controle gradual de brilho.

Questionário interativo — 10 questões de múltipla escolha

Clique em uma alternativa. Após a escolha, a questão será bloqueada e o sistema informará se a resposta está certa ou errada.
  1. FácilO potenciômetro está ligado ao:
  2. FácilO LED está ligado ao:
  3. FácilanalogRead(A0) retorna:
  4. FácilanalogWrite() usa PWM na faixa:
  5. FácilQual função converte escalas?
  6. FácilTerminal central do potenciômetro vai para:
  7. IntermediárioPWM no Arduino Uno é:
  8. IntermediárioLED em pino sem PWM pode causar:
  9. IntermediárioInverter 5V e GND nas laterais do potenciômetro:
  10. FácilIdeia central:

Questões abertas

  1. FácilExplique a diferença entre entrada digital e entrada analógica.
  2. FácilExplique como o potenciômetro altera o brilho do LED.
  3. FácilPor que usamos map() neste projeto?
  4. IntermediárioExplique por que analogWrite() é usado mesmo o LED estando em um pino digital.
  5. DifícilDescreva a diferença entre valor lido em A0 e valor enviado ao pino 9.

Complete o código

Como pensar: Para preencher, identifique primeiro qual componente fornece a entrada e qual componente recebe a saída. Depois compare as faixas: a entrada analógica não usa a mesma escala da saída PWM.

Circuito usado: potenciômetro no A0 e LED no pino PWM 9. Objetivo: controlar o brilho do LED.

int pinoPotenciometro = ____;
int pinoLed = ____;

int leituraPotenciometro = 0;
int brilhoLed = 0;

void setup() {
  pinMode(pinoLed, ______);
}

void loop() {
  leituraPotenciometro = __________(pinoPotenciometro);

  brilhoLed = map(leituraPotenciometro, 0, ____, 0, ____);

  __________(pinoLed, brilhoLed);
}

Interpretação de código

Explique o que mudou em relação ao controle normal do brilho. O LED aumenta ou diminui o brilho quando a leitura do potenciômetro aumenta?

int pinoPotenciometro = A0;
int pinoLed = 9;

void setup() {
  pinMode(pinoLed, OUTPUT);
}

void loop() {
  int leitura = analogRead(pinoPotenciometro);
  int brilho = map(leitura, 0, 1023, 255, 0);
  analogWrite(pinoLed, brilho);
}

Projeto 6 — Fotoresistor (LDR)

Revise a leitura analógica do LDR, o controle do LED, o uso do monitor serial e a decisão feita com o comando if.

Questionário interativo — 6 questões de múltipla escolha

Clique em uma alternativa. Após a escolha, a questão será bloqueada e o sistema informará se a resposta está certa ou errada.
  1. FácilQual é a função do LDR no projeto?
  2. FácilEm qual entrada o LDR é lido no código?
  3. FácilQual porta controla o LED?
  4. MédioO que acontece quando a leitura fica menor que 40?
  5. MédioPara que serve o monitor serial neste projeto?
  6. MédioQual comando faz a leitura analógica do LDR?

Questões abertas

  1. Explique com suas palavras como o LDR ajuda o Arduino a perceber se o ambiente está claro ou escuro.
  2. Por que o LED não deve ser ligado sem resistor?
  3. O que você mudaria no código para o LED acender com outro nível de luminosidade?

Completar código

Complete mentalmente as partes que fazem a leitura do LDR e acendem o LED.

leitura = __________(pinoLDR);

if(leitura < 40){
  digitalWrite(pinoLED, ______);
}
else {
  digitalWrite(pinoLED, ______);
}