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
!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); } }