Como funciona um LED?
Um LED (Light Emitting Diode) é um díodo que emite luz quando atravessado por corrente. Tem polaridade: a perna mais longa é o ânodo (+) e a mais curta é o cátodo (−).
⚠️
Nunca liges um LED diretamente ao Arduino sem resistência! A corrente sem limite destrói o LED e pode danificar o pino do Arduino. Usa sempre uma resistência de 220Ω a 470Ω em série.
Exercício 1 — LED Simples
Ligar um LED e fazê-lo piscar com intervalo variável.
🔌 Ligações
| Arduino | → | Componente |
|---|---|---|
| Pino 13 | → | Resistência 220Ω → Ânodo LED (+) |
| GND | → | Cátodo LED (−) |
ex1_led_piscar.ino
const int LED = 13;
void setup() {
pinMode(LED, OUTPUT);
}
void loop() {
digitalWrite(LED, HIGH); // Liga
delay(500); // 500ms ligado
digitalWrite(LED, LOW); // Desliga
delay(500); // 500ms desligado
}
// Experimenta alterar os valores de delay() para
// mudar a velocidade de piscar!
🎯
Desafio: Altera o código para que o LED pisque 3 vezes rápido, pause 1 segundo, e repita — como um sinal de SOS!
Exercício 2 — Brilho com PWM
Controlar o brilho do LED gradualmente usando PWM. Usa o pino 9 (ou qualquer pino com ~).
🔌 Ligações
| Arduino | → | Componente |
|---|---|---|
| Pino 9 (~) | → | Resistência 220Ω → Ânodo LED (+) |
| GND | → | Cátodo LED (−) |
ex2_led_fade.ino
const int LED = 9; // Pino PWM (~)
int brilho = 0;
int passo = 5;
void setup() {
pinMode(LED, OUTPUT);
}
void loop() {
analogWrite(LED, brilho); // 0 = apagado, 255 = máximo
brilho += passo;
// Inverte direção ao atingir os limites
if (brilho <= 0 || brilho >= 255) {
passo = -passo;
}
delay(15); // Velocidade do fade
}
Exercício 3 — Sequência de Cores
Liga 3 LEDs de cores diferentes e anima-os em sequência.
🔌 Ligações
| Arduino | → | Componente |
|---|---|---|
| Pino 11 | → | Resistência 220Ω → LED Vermelho (+) |
| Pino 12 | → | Resistência 220Ω → LED Amarelo (+) |
| Pino 13 | → | Resistência 220Ω → LED Verde (+) |
| GND | → | Cátodo dos 3 LEDs (−) |
ex3_sequencia.ino
int leds[] = {11, 12, 13}; // Vermelho, Amarelo, Verde
int numLeds = 3;
void setup() {
for (int i = 0; i < numLeds; i++) {
pinMode(leds[i], OUTPUT);
}
}
void loop() {
// Sequência ida
for (int i = 0; i < numLeds; i++) {
digitalWrite(leds[i], HIGH);
delay(200);
digitalWrite(leds[i], LOW);
}
// Sequência volta
for (int i = numLeds - 1; i >= 0; i--) {
digitalWrite(leds[i], HIGH);
delay(200);
digitalWrite(leds[i], LOW);
}
}
🎯
Desafio: Adiciona um botão (ex. pino 2) para alternar entre diferentes padrões de animação — sequência, todos juntos, ou aleatório!