Este exemplo demonstra o uso da função analogWrite() para apagar um LED em fade. AnalogWrite usa um pulso PWM, alternando o pino digital on e off rapidamente, criando o efeito de fade.

Componentes necessários:

  • Arduino
  • 1 LED
  • 1 resistor 330Ω
  • Protoboard
  • Jumpers
  • 1 Cabo USB

Circuito

Conecte a perna mais longa do LED no pino digital 9 de seu Arduino através de um resistor de 330Ω. Conecte a perna mais curta do LED diretamente ao terra.

Arduino Exemplos: Fading

Esquema

Código

Após definir que o pino 9 será seu ledPin, nada mais deverá ser feito na função setup() do código.

A função analogWrite() que você vai usar no loop principal do código requer dois argumentos: um deles informando à função qual pino deve acionar, e outra indicando qual valor PWM utilizar.

Para executar o fade no LED, gradualmente aumente o valor PWM de 0 (totalmente desligado) a 255 (totalmente ligado), e depois diminua novamente a 0 para completar o ciclo. No código abaixo, o valor PWM é definido usando uma variável chamada brightness. Cada vez que o loop roda ele aumenta o valor da variável de acordo com o fadeAmount.

Se brightness é definida entre os valores extremos (0 ou 255), então fadeAmount muda para seu negativo. Por exemplo, se fadeAmount é 5, em seguida ele é definido como -5. Se é -5, então seria definido 5. A próxima vez que rodar o loop esta mudança causa que o incremento de brightness mude também de direção.

analogWrite() pode mudar o valor PWM muito rapidamente, então o delay no final do código controla a velocidade do fade. Tente modificar o valor do delay e veja como isso muda o programa.

/*
 Fade
 
 This example shows how to fade an LED on pin 9
 using the analogWrite() function.
 
 This example code is in the public domain.
 */


int led = 9;           // the pin that the LED is attached to
int brightness = 0;    // how bright the LED is
int fadeAmount = 5;    // how many points to fade the LED by

// the setup routine runs once when you press reset:
void setup()  {
  // declare pin 9 to be an output:
  pinMode(led, OUTPUT);
}

// the loop routine runs over and over again forever:
void loop()  {
  // set the brightness of pin 9:
  analogWrite(led, brightness);    

  // change the brightness for next time through the loop:
  brightness = brightness + fadeAmount;

  // reverse the direction of the fading at the ends of the fade:
  if (brightness == 0 || brightness == 255) {
    fadeAmount = -fadeAmount ;
  }    
  // wait for 30 milliseconds to see the dimming effect    
  delay(30);                            
}


O conteúdo desta página é uma tradução para o português a partir do site original do Arduino.