Em 2025 trabalhamos com várias atividades utilizando o Arduino. Vamos revisar alguns conceitos.
O ambiente de programação do Arduino possui duas funções principais:
void setup() {
}
void loop() {
}
A função ‘setup‘ é utilizada para informar ao Arduino as condições de trabalho, estabelecendo, por exemplo, endereços de controle e valores iniciais. Ela é executada uma única vez, quando a alimentação é fornecida (ou, se ocorrer um ‘reset’ da plaquinha).
A função ‘loop‘, ou laço, é uma função de repetição: os comandos colocados nesta função serão executados em sequência e, após execução do último, o primeiro é executado novamente, depois o segundo… até o último, repetindo este ciclo enquanto houver energia (ou enquanto não for realizado um ‘reset‘).
LEDs
O LED são um tipo especial de diodo, que ao ser percorrido pela corrente elétrica emitem luz ( veja aqui ).
Um primeiro contato com o Arduino é realizado por meio do controle de LEDs.
A placa do Arduino possui um LED que pode ser utilizado para experimentos iniciais. Para controlar o LED da placa, temos que:
void setup(){
  pinMode(13, OUTPUT);
}
void loop(){
 digitalWrite(13, 1);
  delay(800);
 digitalWrite(13, 0);
  delay(300);
}
Podemos ligar um LED externo ao Arduino e aproveitar o código já realizado:

Como o LED foi ligado na porta 13, ele piscará juntamente com o LED da placa, sem que precisemos fazer mais nada (pois o código já estava OK). Há três observações a colocar aqui: 1) no exemplo o LED usado emite cor vermelha, o seu poderá ser desta cor ou de outra cor; 2) o LED é um componente polarizado. Isto quer dizer que ele tem uma forma certa de conectar a energia positiva e negativa, há um jeito certo de fazer com que a corrente elétrica circule. Ele possui dois terminais, um maior que é o lado positivo, e um menor, que é o lado negativo (veja aqui). Ligue-os corretamente. No exemplo, o lado maior está ligado na porta do Arduino, e o menor, por meio do resistor, está ligado ao GND; 3) há um resistor ligado em série com o LED. Isto é obrigatório, para limitar a corrente do LED (sob pena de queimar sua plaquinha Arduino). No exemplo foi utilizado um resistor de 220 ohms (vermelho, vermelho, marrom), mas você pode utilizar outros valores, por exemplo: marrom, verde marrom (150 ohms); laranja, laranja, marrom (330 ohms); amarelo, violeta, marrom (470 ohms); marrom, preto, vermelho (1000 ohms, ou 1k) – estes são os mais comuns, mas existem muitos outros – veja valores clicando aqui.
Teste!
Depois, podemos ligar o LED em outra porta (neste exemplo, na 12):

Não funciona de imediato, pois embora a conexão esteja correta nosso controle está sendo executado para a porta 13 (o LED da placa continua piscando).
Vamos mudar:
void setup(){
  pinMode(12, OUTPUT);
}
void loop(){
 digitalWrite(12, 1);
 delay(800);
 digitalWrite(12, 0);
 delay(300);
}
Agora o LED externo estará piscando. MAS, o LED da placa não pisca mais, pois modificamos o número da porta.
E se quisermos que os dois pisquem juntos novamente, mas mantendo o LED externo na porta 12? Poderia ficar assim:
void setup(){
pinMode(12, OUTPUT);
pinMode(13, OUTPUT);
}
void loop(){
 digitalWrite(12, 1);
 digitalWrite(13, 1);
 delay(800);
 digitalWrite(12, 0);
 digitalWrite(13, 1);
 delay(300);
}
E se quisermos que eles pisquem alternadamente (primeiro o externo e depois o da placa? poderia ser assim:
void setup(){
pinMode(12, OUTPUT);
pinMode(13, OUTPUT);
}
void loop(){
 digitalWrite(12, 1);
 digitalWrite(13, 0);
 delay(800);
 digitalWrite(12, 0);
 digitalWrite(13, 1);
 delay(300);
}
E se quisermos que eles pisquem alternadamente (primeiro o da placa e depois o externo? poderia ser assim:
void setup(){
pinMode(12, OUTPUT);
pinMode(13, OUTPUT);
}
void loop(){
 digitalWrite(12, 0);
 digitalWrite(13, 1);
 delay(800);
 digitalWrite(12, 1);
 digitalWrite(13, 0);
 delay(300);
}
Perceba que o que controla a sequência é sua programação. O que determina qual porta será usada é o seu projeto (você pode escolher a porta – com exceção do LED da placa que está conectado na porta 13 por meio da construção da plaquinha).
Na sequência, podemos acrescentar mais LEDs na plaquinha externa (não esqueça dos resistores…).
Coloque 6 (seis) LEDs na plaquinha e faça um código para fazer um sinaleiro simples.

No meu exemplo usei as portas 12, 10, 8, 4, 3 e 2 – você pode usar outras, mas não esqueça de ajustar o código.
Para a programação, vamos introduzir uma novidade: vamos utilizar um uma diretiva: #define.
Isto permite que nós possamos dar ‘nomes’ para as portas, ao invés de números – a vantagem é que nomes são mais úteis ao pensamento de raciocÃnio do que os números de portas. Também podemos usar para outros valores, como ligado e desligado. Vamos ver:
#define LedVermelho1Â Â 12 #define LedAmarelo1Â Â 10 #define LedVerde1Â Â 8 #define LedVermelho2Â Â 4 #define LedAmarelo2Â Â 3 #define LedVerde2Â Â 2 #define desligado 0 #define ligado 1
As diretivas devem ficar antes de seu uso, no inÃcio do programa.
Desta forma, podemos usar isso no código, por exemplo:
 digitalWrite(LedVermelho1, desligado);  digitalWrite(LedVerde2, ligado);
Então, nosso código agora poderia ser assim:
#define LedVermelho1 12
#define LedAmarelo1 10
#define LedVerde1 8
#define LedVermelho2 4
#define LedAmarelo2 3
#define LedVerde2 2
#define desligado 0
#define ligado 1
void setup() {
pinMode(LedVermelho1, OUTPUT);
pinMode(LedAmarelo1, OUTPUT);
pinMode(LedVerde1, OUTPUT);
pinMode(LedVermelho2, OUTPUT);
pinMode(LedAmarelo2, OUTPUT);
pinMode(LedVerde2, OUTPUT);
}
void loop() {
digitalWrite(LedVermelho1, ligado);
digitalWrite(LedAmarelo1, desligado);
digitalWrite(LedVerde1, desligado);
digitalWrite(LedVermelho2, desligado);
digitalWrite(LedAmarelo2, desligado);
digitalWrite(LedVerde2, ligado);
delay(1000);
digitalWrite(LedVermelho1, ligado);
digitalWrite(LedAmarelo1, desligado);
digitalWrite(LedVerde1, desligado);
digitalWrite(LedVermelho2, desligado);
digitalWrite(LedAmarelo2, ligado);
digitalWrite(LedVerde2, desligado);
delay(1000);
digitalWrite(LedVermelho1, desligado);
digitalWrite(LedAmarelo1, desligado);
digitalWrite(LedVerde1, ligado);
digitalWrite(LedVermelho2, ligado);
digitalWrite(LedAmarelo2, desligado);
digitalWrite(LedVerde2, desligado);
delay(1000);
digitalWrite(LedVermelho1, desligado);
digitalWrite(LedAmarelo1, ligado);
digitalWrite(LedVerde1, desligado);
digitalWrite(LedVermelho2, ligado);
digitalWrite(LedAmarelo2, desligado);
digitalWrite(LedVerde2, desligado);
delay(1000);
}
O que revisamos?
Código
– comandos
– lógica
Ligação elétrica
– pinos
– energia