Índice:
2025 Autor: John Day | [email protected]. Última modificação: 2025-01-13 06:58
As etapas a seguir são experimentos para ilustrar como os LEDs funcionam. Eles ilustram como diminuir a intensidade de um LED em uma taxa uniforme e como aumentar e diminuir a intensidade do brilho.
Você vai precisar de:
- Arduino (usei um duo)
- Tábua de pão
- LED vermelho de 5 mm
- 330 Ω Resistor (não crítico 330-560 Ω funcionará.)
- Fio de conexão sólido calibre 22
As peças necessárias para esses experimentos estão incluídas em todos os kits de inicialização do Arduino.
Etapa 1: Explicada a modulação de pulso
Os LEDs sempre funcionam com a mesma voltagem, independentemente do brilho. O brilho é determinado por um oscilador de onda quadrada e a quantidade de tempo que a tensão fica alta determina o brilho. Isso é chamado de modulação por largura de pulso (PWM). Isso é controlado pela função analogWrite (pin, n) do Arduino, onde n tem um valor de 0 a 255. O analogWrite () produz PWM, não o analógico verdadeiro. Se n = 2, o LED será duas vezes mais brilhante do que n = 1. O brilho sempre dobra quando n dobra. Portanto, n = 255 será duas vezes mais brilhante do que n = 128.
O valor de n é geralmente expresso como uma porcentagem chamada de ciclo de trabalho. As imagens mostram os traçados do osciloscópio para ciclos de trabalho de 25, 50 e 75%.
Etapa 2: escurecimento uniforme
Construa o circuito como no diagrama. Isso é como o circuito para piscar um LED. Ele usa o pino 9 porque você precisa usar um pino habilitado para PWM.
Copie / cole o esboço abaixo no IDE do Arduino e execute-o.
Você notará que quanto mais brilhante o LED é, mais devagar ele escurece. À medida que fica mais escuro, ele vai ficando mais escuro muito rápido.
void setup ()
{pinMode (9, SAÍDA); } void loop () {int pin = 9; para (int i = 255; i> -1; i--) {analogWrite (pino, i); atraso (10); } para (int i = 0; i <256; i ++) {analogWrite (pin, i); atraso (10); }}
}
A próxima etapa mostra como diminuir o brilho do LED em uma taxa constante e em um para declaração.
Etapa 3: para cima e para baixo em um para ()
Para que o LED diminua a uma taxa constante, o atraso () deve aumentar a uma taxa exponencial porque metade do ciclo de trabalho sempre produzirá metade do brilho. Meu primeiro pensamento foi tentar usar a função map (), mas é linear.
A linha:
int d = (16-i / 16) ^ 2;
calcula o quadrado inverso do brilho para determinar a duração do atraso.
Copie / cole o esboço abaixo no IDE do Arduino e você verá que o LED acenderá e apagará a uma taxa constante.
void setup ()
{pinMode (9, SAÍDA); } void loop () {int x = 1; pino interno = 9; para (int i = 0; i> -1; i = i + x) {int d = (16-i / 16) ^ 2; analogWrite (pin, i); atraso (d); se (i == 255) x = -1; // mudar de direção no pico}}