VARIANDO A SAÍDA, PORTA "PWM", INSTRUÇÕES "for" E "analogWrite"
O sinal de saída pode ser modulado, isto é, "quebrado" em pequenas partes. Deste modo não teremos uma corrente correspondente aos 5 V, mas uma média fracionada. Isto ocorre nas portas PWM, identificadas por um sinal "~" gravado na placa. São os pinos 3, 5, 6, 9, 10 e 11.
Neste caso não indicamos HIGH, mas sim um valor entre 0 e 255. A energia de saída será proporcional a este valor.
Vamos voltar à montagem anterior (SAÍDAS) para testar este conceito.
Carregue o programa abaixo.
int partes; //valor parcial para a porta PWM
int pinLED = 11; //número do pino que será conectado um LED
void setup() //inicio do bloco de setup
{ //inicia o bloco de instruções do setup
pinMode (pinLED, OUTPUT); // informa que o pinLED é saída
} //finaliza o bloco do setup
void loop() //inicio do bloco de instruções do loop
{ //inicia o bloco de instruções do loop
for (partes = 1; partes <= 255; partes++)
{ //inicio da rotina de contagem "partes" de 0 a 255, de 1 em 1
analogWrite (pinLED, partes); //coloca tensao proporcional no LED no valor "partes"
delay(20); //tempo de espera necessario a percepcao visual
} //final da rotina de contagem
} //finaliza o bloco de instruções do loop
Observe que os parâmetros da instrução "for" (ou "para"), separados por "ponto-e-vírgula", determinam (o inicio da contagem; o fim da contagem; a variação do valor) que o valor "partes" vai assumir.
A instrução "partes++" faz com que o valor seja acrescido em uma unidade. Para diminuir basta colocar "--". Outra maneira seria escrever "partes = partes + 1". Podemos variar em valores maiores, como "partes = partes + 12".
A instrução "digitalWrite" foi mudada para "analogWrite", que permite o fracionamento do sinal HIGH.
Foi colocado uma delay(20); para que nosso visão consiga perceber a mudança de luminosidade. Altere este valor e reflita sobre o que acontece.
DESAFIO:
faça com que o LED diminua gradativamente o brilho após ter atingido o máximo. Dica: acrescente outra contagem decrescente.