2 de abr de 2011

PRIMEIRO PROJETO COM O ARDUINO, PISCA LED.

INICIANDO COM O ARDUINO, FAZENDO UM LED PISCAR AUTOMATICAMENTE E AO APERTAR UM BOTÃO.

A plataforma arduino vem se mostrando a de mais fácil aprendizado e a de maior poder, procurando pela internet podemos encontrar um miríade de projetos e instruções básicas, para não fugir do padrão começarei da forma mais básica possível é o que é mais básico do que fazer um led piscar?

Observe a imagem abaixo e monte o circuito exatamente como apresentado.
Não se esqueça que o lado chanfrado do LED é o negativo e portanto deve ser ligado ao GND (terra) e o lado positivo deve ser ligado a um resistor para limitar a corrente algo em torno de 10mA a 20mA  procure não ultrapassar o último limite. Para calcular a corrente utilize a lei de OHM.

Código fonte: (em itálico)

#define LED 13

void setup()
{
  pinMode(LED, OUTPUT); //seta o pino como output
}

void loop()
{
  digitalWrite(LED, HIGH);
  delay(1000);
  digitalWrite (LED, LOW);
  delay(1000);
}


O código acima é escrito em linguagem C, e faz uso de bibliotecas integradas do arduino como por exemplo a função pinMode que seta o tipo de função do pino a ser usado, como um LED é um elemento de saída ele é setado como OUTPUT.
Na pasta de instalação do arduino subpasta reference podemos consultar uma explicação básica em inglês de todas as funções padrões, vou pegar a função digitalWrite para exemplificar.

digitalWrite()

Description

Write a HIGH or a LOW value to a digital pin.
If the pin has been configured as an OUTPUT with pinMode(), its voltage will be set to the corresponding value: 5V (or 3.3V on 3.3V boards) for HIGH, 0V (ground) for LOW.
If the pin is configured as an INPUT, writing a HIGH value with digitalWrite() will enable an internal 20K pullup resistor (see the tutorial on digital pins). Writing LOW will disable the pullup. The pullup resistor is enough to light an LED dimly, so if LEDs appear to work, but very dimly, this is a likely cause. The remedy is to set the pin to an output with the pinMode() function.
NOTE: Digital pin 13 is harder to use as a digital input than the other digital pins because it has an LED and resistor attached to it that's soldered to the board on most boards. If you enable its internal 20k pull-up resistor, it will hang at around 1.7 V instead of the expected 5V because the onboard LED and series resistor pull the voltage level down, meaning it always returns LOW. If you must use pin 13 as a digital input, use an external pull down resistor.

Syntax

digitalWrite(pin, value)

Parameters

pin: the pin number
value: HIGH or LOW

digitalWrite()

Escreve ALTO(HIGH) ou BAIXO(LOW) a um pino previamente definido digitalWrite(pin, value) 

Neste exemplo:
digitalWrite(LED, HIGH) fara com que o LED se acenda
Para criarmos um efeito de pisca acendemos o LED aguardamos um tempo delay(1000) e o apagamos, para apagar usaremos digitalWrite(LED, LOW).

PARTE 2: Usando um botão para ligar um LED.

Novamente monte o circuito de acordo com o apresentado abaixo (resistor do botão de 10K ohms):


Código fonte: (em itálico)

#define LED 13 // Define LED como o pino 13
#define BOTAO 7 // Define BOTAO como o pino 7

int var = 0; // Var é a variável que armazenará o estado do botao(pressionado ou não)

void setup()
{
  pinMode(LED, OUTPUT); // Define o LED como saída
  pinMode(BOTAO, INPUT); // Define a chave como entrada
}

void loop()
{
 var = digitalRead(BOTAO); // Lê o estado do botão pressionado = 1 solta = 0

if (var==HIGH) { // Se 1 ou Alto ou 5 Volts
 digitalWrite(LED, HIGH); // O LED acende
}
else{ // Senão
  digitalWrite(LED,LOW); // O LED fica apagado
}
}


Neste exemplo foi adicionado um mecânismo de entrada de dados digitais o BOTAO ou CHAVE,
como o botão é usado para informar um estado ele deve ser declarado como INPUT.
pinMode(BOTAO, INPUT); // Define a chave como entrada
Não basta somente declarar o botão como uma entrada é necessário também ler o estado desse botão
que pode ser Alto ou Baixo / High ou Low. Para lermos o estado do botão usamos a função digitalRead(BOTAO).
var = digitalRead(BOTAO); // Lê o estado do botão pressionado = 1(HIGH) solto = 0 (LOW)

Como funciona a chave ou botão? 
Isso é muito simples, quando a chave está aberta a tensão fica entre seus terminais portanto no pino 7 do arduino ( o fio que vai par ao pino 7 é o mesmo que está ligado ao voltimetro na figura) teremos 0 Volts, agora quando fechamos a chave a tensão de 5 Volts fica entre os pinos do resistor portanto nível alto no pino 7.
Para melhor entendimento veja a imagem abaixo:



Resultado final



Caso ainda não esteja familiarizado com a linguagem C recomendo procurar algumas apostilas pela internet ou consultar o seguinte livro  "Teach Yourself C++ in 21 Days" em inglês.
No site www.4shared.com pode-se encontrar muita coisa mesmo, sempre vale a pena olhar nele até mesmo antes do google.

Interessado em entrar no mundo Arduino? Confira meus produtos no mercado livre:

http://produto.mercadolivre.com.br/MLB-231090632-arduino-duemilanove-microcontrolador-avr-_JM
http://produto.mercadolivre.com.br/MLB-231096670-sensor-de-fumaca-para-arduino-pic-avr-8051-_JM
http://produto.mercadolivre.com.br/MLB-231098016-matriz-de-led-8x8-para-arduino-pic-avr-8051-_JM

2 comentários:

  1. que programa é usado para desenhar esses esquemas?

    ResponderExcluir
  2. O programa é chamado Fritzing
    você pode baixar em http://fritzing.org/

    ResponderExcluir