Arduino, Eletrônica

Arduino – Programa Fade

Esquema elétrico para o programa FADE

FADE

Em nosso 3º programa a ser analisado vamos aprender como utilizar o PWM do Arduino. PWM vem de Pulse Width Modulation (Modulação por largura de pulso). Pra que serve? Bem, existem casos em que se deseja controlar alguma saída de forma analógica ao invés de simplesmente liga-la ou desliga-la. Quando usamos a função digitalWrite(pino,  valor); podemos apenas ligar ou desligar um pino. Mas quando queremos que ele fique com tensões intermediarias podemos  usar a função analogWrite(pino, valor);

Lembrando que sempre que for usar uma função de saída, o pino já deverá ter sido configurado lá no setup com a função pinMode(pino, OUTPUT);.E lembrando ainda mais… só podemos usar pwm nos pinos que possuem essa função, no Arduino Uno são os pinos 3,5,6,9,10 e 11.

Ligação elétrica:

Esquema elétrico para o programa FADE

Esquema elétrico para o programa FADE

Detalhando:

analogWrite(pino, valor);

pino: é nome do pino que será usado.

valor: é um numero entre 0 e 255, ou seja, 0 representa 0v e 255 representa 5v. Com isso colocando qualquer valor entre esses limites teremos na saída uma tensão proporcional. Digamos que seja colocado 128. Como é a metade teremos lá no pino uma tensão de 2,5v. Para mais informações sobre PWM e como fazer a conversão da escala pra tensão vá ate o final desta página.

Logo abaixo temos o código do programa FADE idêntico ao que encontramos em (File>Examples>01.Basics>Fade) a única mudança que fiz foi a tradução e complementos nos comentários.

/*
Fade
Este exemplo mostra o efeito fade (transição)  em um LED conectado no pino 9
utilizando a função analogWrite().
Este código exemplo é de domínio público.
*/
int led = 9; // o pino 9 o qual o LED está conectado
int brightness = 0; // guarda o nível de luminosidade do LED
int fadeAmount = 5; //quantos níveis de brilho por vez
// A rotina setup roda apenas uma vez quando o reset é pressionado:
void setup() {
// declando que o pino 9 será uma saída:
pinMode(led, OUTPUT);
}
// A rotina loop roda continuamente sem parar… para sempre:
void loop() {
// escreve no pino 9 o brilho( a tensão ) desejado:
analogWrite(led, brightness);
// agora muda a luminosidade para que no próximo ciclo do loop aconteça a mudança:
//fazemos isso somando ao brilho atual mais alguns níveis de brilho (tensão).
brightness = brightness + fadeAmount;
// testando se ja chegou ao máximo (0=0volt totalmente apagado ou 255=5volts //totalmente aceso) então revertemos o ciclo mudando o sinal dos incrementos:
if (brightness == 0 || brightness == 255) {
fadeAmount = -fadeAmount ;
}
// agora espera 30 milissegundos para podermos ver o efeito da transição
delay(30);
}

 

até a próxima 😉

Leave a Reply