Pesquisar este blog

segunda-feira, 17 de maio de 2010

Programação - Acender LED Arduino

Na interface de programação (levemente introduzida em posts passados) é possível programar o Arduino e linguagem C/C++.

Para quem conhece essa linguagem, aqui é as mesma coisa em termos de estrutura (inclusão de bibliotecas, funções, estrutura...).

Antes de começar, a programação do Arduino é dividida em 2 blocos: void setup() e void loop().
  • void setup(): bloco de inicialização, ou seja, é aqui se coloca os valores iniciais de variáveis, condições de entradas e saídas dos pinos, entre outras. Esse bloco é executado somente uma vez quando a placa é ligada e toda vez que a mesma é "resetada".
  • void loop(): popularmente é o programa principal, depois de passar pelo void setup() o microcontrolador vai ficar executando esse bloco em loop infinito, por isso é aqui "que se faz as mágicas" de controle e programação.
Pode parecer meio confuso de inicio mas quem já tem prática em programação de microprocessadores e microcontroladores vai entender e se acostumar facilmente.

Programa Piscar LED

Para entender melhor a programação, segue abaixo um exemplo comentado.

Descrição: acende e apaga (pisca) um LED num determinado período de tempo. O LED é ligado na porta 13 (digital) do Arduino.

Observação: o LED não pode receber tensão diretamente entre seus terminais, uma vez que a corrente deve ser limitada. Assim, usa-se um resistor em série com o LED. Para calcular o valor do resistor usa-se a seguinte fórmula: R = (Vfonte - Vled) / Iled.

A tensão de um LED varia de 1,8-3V com c orrentes entre 12-30mA. Nesse exemplo o LED trabalha com VLed = 2V, Iled = 15mA:

R = (5 - 2) / 0,015
R = 200 Ohms

Com isso a ligação fica da seguinte forma:


Programação:

// pino digital de controle do LED
int ledPin = 13;
// tempo de delay
int tempo;

void setup()
{
// configura ledPin como saída
pinMode(ledPin, OUTPUT);
tempo = 1000; // 1000ms = 1s
}

void loop()
{
// ledPin vai para nível alto (acende LED)
digitalWrite(ledPin, HIGH);
// espera 1s
delay(tempo);
// ledPin vai para nível baixo (apaga LED)
digitalWrite(ledPin, LOW);
// espera 1s
delay(tempo);
}

Para fazer o download do programa clique aqui

2 comentários:

  1. Olá amigo,
    Apenas uma correção, o resistor no pino 13 é desnecessário pois o mesmo já possui um resistor bem como um LED SMD o que não justifica a utilização deste led neste pino, você pode usar esta configuração sem problemas nos outros 12 pinos digitais do arduino, mas no pino 13 é desnecessário.

    Um abraço, até mais

    ResponderExcluir