Brincando com LEDs [parte 1]

Entrada e Saída analógica no Arduino.

1- Preparar o circuito para um LED

Comecemos por ligar um LED monocromático a um dos pinos PWM. Na placa placa arduino, alguns pinos digitais estão marcados com as iniciais PWM [pulse width modulation] que lhes permite gerar um sinal analógico (contínuo e arbitrário entre 0 e 255). O pino que escolhémos para este exemplo é nº 11 e, a partir deste, iremos controlar a intensidade do LED de forma variável.

– Ligue o pino gnd do arduino à linha ground da placa de matriz de contactos (matriz), que na maioria dos casos é representada por uma linha azul.

– Conecte o pino +5v do arduino à linha (+) da matriz, geralmente assinalada a vermelho. Iremos usar os 5V mais adiante quanto incorporarmos o potenciómetro.

– Introduza a resistência (220R ou 330R) e e o LED.

– O LED é um componente polarizado, por essa razão, certifique-se que a perna maior é ligada ao pino nº11 do arduino enquanto que a perna menor é conectada à linha ground (-) da matriz através da resistência.

2- Variar a intensidade do brilho do LED.


int LED=11;

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

void loop() {
  analogWrite(LED, 0);
  delay(1000);
  analogWrite(LED, 50);
  delay(1000);
  analogWrite(LED, 100);
  delay(1000);
  analogWrite(LED, 150);
  delay(1000);
  analogWrite(LED, 200);
  delay(1000);
  analogWrite(LED, 250);
  delay(1000);
}

A instrução analogWrite aceita dois parâmetros: o nº do pin digital e a intensidade que se pretende aplicar nele (0-255). Ao executar o código do exemplo acima o LED irá ver o seu brilho aumentar a cada intervalo de 1 segundo.

3- Fade in, Fade out.

O seguinte exemplo implementa no LED um fade in – fade out. A sua velocidade é controlada pela duração da pausa definida no argumento da instruçaõ delay.

int LED=11;

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

int v=0;
int incremento=1;

void loop() {
  v=v+incremento;
  if (v==255) incremento=-1;
  if (v==0) incremento=1;
  delay(1);
  analogWrite(LED,v);
}

4 – Controlar o brilho a partir do terminal.

int LED=11;
int v=0;
void setup() {
Serial.begin(9600);
pinMode(LED, OUTPUT);
}
void loop() {
  analogWrite(LED, v);
     while (Serial.available()> 0) {
         v = Serial.parseInt();
     }
}

Neste exemplo o brilho do LED é controlado a partir do valor que é enviado do computador através de um terminal. O programa espera que os dados cheguem por via do porto série [Serial COM] e, sempre que tal acontece, o comando Serial.parseInt converte num número inteiro a representação ASCII dos bytes enviados. O número inteiro é então guardado na variável v e posteriomente utilizado na instrução analogWrite que gera o sinal analógico no LED que se encontra conectado ao pino 11;

Após compilar e realizar o upload do código, abra o programa terminal (botão Serial Monitor) e insira valores entre 0 e 255.

5 – Regular intensidade do brilho com potenciómetro

No próximo exemplo iremos permitir que um potenciómetro possa controlar directa e autonomamente a intensidade do LED. Para tal, introduzimos no circuito, um potenciómetro [exemplo com potenciómetro] conectado ao pino de entrada analógica nº0.

O potenciómetro possui 3 pinos; fazemos passar uma corrente pelas duas extremidades e realizamos a leitura do cursor no pino do meio. Assim, os pinos correspondentes  às extermidades são ligados a gnd e +5V. O pino do meio deverá ser conectado ao pino analógico nº 0 do arduino.

O programa faz a leitura do valor analógico do pino 0 através da instrução analogRead. Esta função aceita como único parâmetro o nº do pino analógico e retorna o seu valor. A voltagem é então internamente medida pelo arduino e depois convertida num valor que poderá variar num intervalo de 0 e 1023 (10 bits).

O valor é então dividido por 4, de forma a variar entre 0 e 255 assim servir de valor de entrada para instrução analogWright que, como vimos anteriormente, controla a intensidade do LED no pino digital nº 11 (pela técnica PWM).

int LED=11;
int POT=0;
void setup() {
  pinMode(LED, OUTPUT);
}
void loop() {
  int v=analogRead(POT)/4;
  analogWrite(LED, v);
}

Execute e teste o código manipulando o brilho do LED através do cursor do Potenciómentro.

Segunda parte.

 

Anúncios