Nossos conhecimentos até aqui
Depois dessas primeiras aulas já sabemos trabalhar com saídas digitais para manipular leds e entradas digitais para manipular botões. Também já vimos a possibilidade de se trabalhar de forma analógica com entradas e saídas. Isso já nos permite fazer muitas coisas, aumentando o número de componentes no projeto.
No entanto isso nos gera outro problema: Como conectar vários componentes na placa, sem gerar uma grande bagunça de conexões? Além disso, no mundo físico fora dos simuladores, na forma como estamos fazendo as conexões até agora, precisaríamos soldar os elementos.
É ai que entram as protoboards também chamadas de placas de ensaio. Elas são placas de material plásticos, com um determinado número de furos dispostos em linhas e colunas, de forma organizada, que estão conectados entre si, de maneira que podemos conectar vários componentes a ela, dispensando o uso de soldas.
Conhecendo as protoboards
Você encontrará as protoboards no mercado em três tamanhos, dependendo do número de conexões ou furos:
- Full: com 830 pontos de conexão
- Half: com 400 pontos de conexão
- Mini: com 170 pontos de conexão
![]() |
Protoboard Half de 400 pontos |
Nas duas seções centrais temos trilhas identificadas por números e letras. Nessa parte as trilhas percorrem internamente a placa no sentido horizontal da imagem, até o sulco que as separam, assim qualquer ponto conectado a mesma linha até o sulco terá o mesmo sinal.
Por exemplo, os pontos A1, B1, C1, D1 e E1 terão a mesma conexão. Os pontos F1, G1, H1, I1 e J1 compartilharão uma mesma conexão, mas que será diferentes da conexão anterior de A1. O mesmo vale para as linhas 2, 3, 4, etc. Lembre-se então de não colocar dois terminais do mesmo componente em uma mesma linha. Caso contrário ficarão em curto. Segue abaixo uma imagem de orientação:
![]() |
Exemplos de conexões válidas em verde e inválidas em vermelho |
Na protoboard de 400 pontos também temos quatro barramentos para alimentação, assinalados pelos símbolos de + e de -, indicando onde se conecta o VCC+ e GND-, respectivamente. Esses barramentos percorrem toda a placa internamente, no sentido de seu lado mais comprido, assim em qualquer ponto que for conectado, o componente terá o VCC ou o GND.
Em projeto pequenos, com poucos componentes, quem fornece essa alimentação é o Arduino, mas se não quisermos problemas com alimentação insuficiente, podemos conectar a placa uma fonte ajustável para protoboard.
![]() |
Fonte ajustável para protoboard |
As conexões são feitas através de fios de ligação conhecidos como jumpers que podem ter nas suas extremidades conectores macho ou fêmea. Assim temos jumpers macho-macho, femea-femea e macho-femea.
![]() |
Tipos de jumpers para conexão em protoboards |
Projeto de hoje
Tendo explicado o que é uma protoboard e como utilizá-la, faremos o projeto de hoje que é um exemplo clássico mostrado em todo curso básico de Arduino: um semáforo para carros feito com três leds vermelho, amarelo e verde.
Para isso clique no link para criar um novo projeto de Arduino no Wokwi:
https://wokwi.com/projects/new/arduino-uno
Montagem
Ao acessar a plataforma clique no botão SAVE e salve por exemplo com o nome de Framework Arduino Básico Aula 06: Semáforo. Precisaremos de três leds, um para cada cor do semáforo e três resistores de 330 Ω.
Por isso preciso que você clique no botão + para adicionar esses componentes no Wokwi. Também precisaremos de uma protoboard, por isso depois de clicar no botão +, digite board no campo de pesquisa de componentes e dê um clique na Half Breadboard.
![]() |
Botão para adicionar componentes no Wokwi |
![]() |
Adicionando uma protoboard half no Wokwi |
Para ajustar os resistores para 330 Ω basta clicar em cada um deles e mudar o item value para 330 e item Unit para Ω . Aproveite para rotacionar o resistor deixando o de pé.
![]() |
Ajustando o valor de resistência e orientação do resistor |
![]() |
Layout sugerido para montagem do semáforo |
Verifique que os terminais positivos do leds estão conectados aos resistores que estão nas trilhas após o sulco. Os terminais negativos dos leds estão conectados ao barramento negativo da protoboard e este barramento está recebendo a conexão do GND do Arduino.
Cada um dos resistores está conectado a um pino digital do Arduino, sendo que o do led vermelho está no pino 13, o do led amarelo no pino 12 e por último o do led verde está no pino 11. Certifique-se de estar tudo conectado corretamente antes de codificar o sketch.
Fazendo o Sketch
Para facilitar, estou criando variáveis inteiras para cada um dos pinos que controlará um led com o nome de suas cores. Lembrando que vamos precisar configurar na função setup() esses pinos como saída com a função pinMode().
O esquema de funcionamento de um farol varia dependendo do fluxo da via e da velocidade máxima praticada no local, mas nos semáforos comuns costuma ficar uns 30 segundos em verde, depois de 3 a 5 segundos em amarelo, para depois ficar em vermelho o tempo suficiente para cobrir o verde e o amarelo da outra via do cruzamento.
Para não ficar muito demorado nessa simulação, vamos combinar que o nosso semáforo ficará 4 segundos em verde, 2 segundos em amarelo e 6 segundos em vermelho. Lembrando que para acender um led eu uso a função digitalWrite() em estado HIGH e para apagar digitalWrite() em estado LOW.
O tempo de duração pode ser especificado com a função delay(), mas lembre-se que ela trabalha em milissegundos. Tudo isso ficará na função loop(), pois deverá funcionar em um looping infinitor. Assim teremos o seguinte código que você poderá copiar e colar no seu Sketch ou pegar direto indo ao nosso link:
- int vermelho=13;
- int amarelo=12;
- int verde=11;
- void setup() {
- pinMode(vermelho, OUTPUT);
- pinMode(amarelo, OUTPUT);
- pinMode(verde, OUTPUT);
- }
- void loop() {
- digitalWrite(vermelho, LOW);
- digitalWrite(amarelo, LOW);
- digitalWrite(verde, HIGH);
- delay(4000);
- digitalWrite(amarelo, HIGH);
- digitalWrite(verde, LOW);
- delay(2000);
- digitalWrite(vermelho, HIGH);
- digitalWrite(amarelo, LOW);
- delay(6000);
- }
Agora que você viu como faz um semáforo, que tal colocar outro semáforo para controlar o transito na rua que faz cruzamento com o primeiro semáforo? Isso significa que, enquanto o primeiro semáforo está verde e amarelo, o segundo semáforo deverá ficar vermelho e vice-versa. Como ficaria?
Antes de mais nada, comece salvando uma cópia do projeto com outro nome para não estragar o projeto atual. Que tal usar o nome Framework Arduino Básico Aula 06: Semáforo duplo?
Dica: Você pode copiar e colar componentes no Wokwi assim consegue duplicá-los sem ter que adicionar manualmente e depois ajustar cor e resistência. Experimente. Só tome cuidado porque o Wokwi costuma colar os componentes no canto superior esquerdo da tela, ficando bem escondido.
Mudança no layout
Eu sugiro que você use os pinos 10, 9 e 8 para os resistores dos leds vermelho, amarelo e verde do segundo semáforo. Não esqueça de aterrar, isto é, ligar os terminais negativos dos leds no barramento do GND. Assim, nosso layout poderia ser desse jeito:
Mudando o Sketch
Seguindo a lógica anterior, eu criei novas variáveis para o semáforo2 e para facilitar o entendimento dos estudantes usei o mesmo nome das cores, porém acrescentando um "2" em seus nomes e atribui às variáveis o respectivo número dos pinos digitais.
Também precisei configurar esses novos pinos como saída na função setup() com pinMode(). Depois foi só acrescentar as instruções com a função digitalWrite() para acender e apagar os leds dos segundo farol, respeitando a sincronia com o primeiro. Também foi necessário alterar alguns delays.
O Sketch ficou desse jeito e você pode copiar e colar no seu projeto ou se preferir abrir diretamente o nosso link:
- int vermelho=13;
- int amarelo=12;
- int verde=11;
- int vermelho2=10;
- int amarelo2=9;
- int verde2=8;
- void setup() {
- pinMode(vermelho, OUTPUT);
- pinMode(amarelo, OUTPUT);
- pinMode(verde, OUTPUT);
- pinMode(vermelho2, OUTPUT);
- pinMode(amarelo2, OUTPUT);
- pinMode(verde2, OUTPUT);
- }
- void loop() {
- digitalWrite(vermelho, LOW);
- digitalWrite(amarelo, LOW);
- digitalWrite(verde, HIGH);
- digitalWrite(vermelho2, HIGH);
- digitalWrite(amarelo2, LOW);
- digitalWrite(verde2, LOW);
- delay(4000);
- digitalWrite(amarelo, HIGH);
- digitalWrite(verde, LOW);
- delay(2000);
- digitalWrite(verde2, HIGH);
- digitalWrite(vermelho2, LOW);
- digitalWrite(vermelho, HIGH);
- digitalWrite(amarelo, LOW);
- delay(4000);
- digitalWrite(amarelo2, HIGH);
- digitalWrite(verde2, LOW);
- delay(2000);
- }
link do projeto: https://wokwi.com/projects/412094021094529025
Esperamos que as explicações e exemplos com protoboard tenham sido válidas. Aula que vem continuaremos nesse projeto.
Referências
ARDUINO DOCS. Arduino Documentation. Disponível em: <https://docs.arduino.cc/> Acesso em 05 ago. 2024.
OLIVEIRA, Cláudio Luis Vieira et al. Aprenda Arduino: Uma abordagem prática. Duque de Caixas: Katzen Editora, 2018. 181p. Disponível em: <https://www.fatecjd.edu.br/fatecino/material/ebook-aprenda-arduino.pdf> Acesso em 05 ago. 2024.
OLIVEIRA, Cláudio Luis Vieira. Arduino Descomplicado - Como Elaborar Projetos de Eletrônica. São Paulo: Editora Érica, 2015. 287p.
TINKERCAD. Centro de Aprendizagem. Disponível em: <https://www.tinkercad.com/learn> Acesso em 05 ago. 2024.
WOKWI. Referência do wokwi-arduino-uno. Disponível em: <https://docs.arduino.cc/> Acesso em 05 ago. 2024.