Controlando o brilho da lâmpada

Vamos ensinar controlar o brilho da lâmpada e para isso vamos utilizar a função analogWrite().

!Informações Importantes

Saídas analógicas são comuns e amplamente utilizadas no acionamento de dispositivos. Ao contrário de saídas digitais, que apenas têm dois valores possíveis, saídas analógicas têm uma grande quantidade de valores possíveis.

A função analogWrite() nos permite passar valores que variam de 0 a 255. No nosso exemplo, 0 significará que a lâmpada está desligada e 255 indicará que está no seu brilho máximo.

!Identificando os Componentes

Lâmpada

!Componentes de código

Uma nova saída, um mundo de possibilidades...

Analog Output: analogWrite([pino], [0-255])

A função analogWrite() tem um formato parecido ao digitalWrite(). Como primeiro parâmetro, dizemos o pino que devemos utilizar, mas no segundo parâmetro em vez de uma opção binária de saída digital como HIGH ou LOW, nós podemos escolher qualquer número entre 0 e 255.

A saída 0 fornecerá uma intensidade nula, já 255 fornecerá a máxima intensidade, 128 fornecerá uma intensidade mediana e assim por diante.

Atenção! Nem todos os pinos do Arduino disponibilizam esse recurso, somente os pinos sinalizados na placa com o "#" possuem esse recurso (D3, D5, D6, D9, D10, D11), portanto a função analogWrite() somente pode ser utilizada com um deles.

!Executando no Arduino

Execute o código abaixo no seu Arduino. Com ele você muda o brilho da lampada para valores pré-definidos.

int lamp = 3;

void setup()
{
  pinMode(lamp, OUTPUT);
}

void loop() 
{ 
  analogWrite(lamp, 5);
  delay(500);
  analogWrite(lamp, 55);
  delay(500);
  analogWrite(lamp, 105);
  delay(500);
  analogWrite(lamp, 155);
  delay(500);
  analogWrite(lamp, 205);
  delay(500);
  analogWrite(lamp, 255);
  delay(500);
}

!Sua vez!

Tente modificar o código acima de forma que a lâmpada seja acesa com brilho gradual. O objetivo é que a lâmpada inicie apagada e vá aumentando de brilho até o valor máximo e depois apague (use o comando for()).

Resposta

int lamp = 3;
int min_value = 0;
int max_value = 255;

void setup()
{
  pinMode(lamp, OUTPUT);
}


void loop() 
{
  for (int i = min_value; i <= max_value; i ++)
  {
    analogWrite(lamp, i);
    delay(10);
  }
}