23 de mar de 2011

Instalando e configurando seu Arduino

Os Arduinos, são a nova sensação do mercado de microcontroladores. Uma das plataformas mais versáteis de usar até o momento com uma incrível documentação e com diversos fóruns pelo mundo a fora não há como se arrepender ao embarcar nesta jornada de aprendizado.


Arduino é uma plataforma "open source" baseada em uma placa simples com INPUTS E OUTPUTS (Entradas e Saídas) vulgo I/O. A placa pode ser comprada em diversos locais, sendo a versão oficial encontrada em www.arduino.cc que alias é o site ofícial do Arduino.

Algumas das vantagens do Arduino:
O arduino funciona em várias plataformas como Windows, Linux e Mac OS.
O arduino é programável pela porta USB, ao contrário de vários outros dispositivos que ainda utilizam a já ultrapassada porta serial (COM).
O hardware é barato, custando por volta de R$70,00 ( no mercadolivre).
A comunidade é muito atuante, então existem diversas pessoas dispostas a te ajudar.

Instalando o Arduino:

O primeiro passo é baixar o software no site oficial http://arduino.cc/en/Main/Software escolha a versão para o seu sistema operacional, no meu caso Windows (XP).
Após baixar o arquivo compactado extraia-o de preferência em um lugar de fácil como C:\.
Ligue seu arduino a porta usb do seu micro e espere o aviso do Windows que um novo hardware foi encontrado, e indique o seguinte caminho para a instalação do driver D:\AVR\ARDUINO\Arduino\arduino-0022\drivers


Depois de instalado vá ao seu gerenciador de dispositivo e veja em qual porta de comunicação seu Arduino foi instalado.


Pronto agora podemos abrir o compilador do Arduino (arduino.exe), se você instalou em C:\ ele estará nesse endereço C:\ARDUINO\Arduino\arduino-0022\arduino.exe
Precisamos configurar a porta que vimos no gerenciador de dipositivo no compilador para isso iremos em
Tools >Serial Port


Depois selecione o modelo do seu Arduino em Tools>Board ( no meu caso uso um Arduino UNO).
Pronto já terminamos todas as configurações necessárias agora vamos fazer um programinha simples para piscar um LED apenas para testar se tudo deu certo.
Copie e cole este código (em itálico) no seu compilador ou preferencialmente o digite:

#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);
}


Este código apenas fara o LED que jpa existe na placa do Arduino (indicado pela letra L) piscar alternadamente a cada 1 segundo.
Para confirmar se o código funciona vá em Sketch >Verify Compile se ocorrer algum erro, procure por erros de digitação ou cole o código.
Para enviar o código para o seu Arduino vá em File>Upload to I/O Board
Se nenhum erro ocorrer o LED começará a piscar alternadamente a cada 1 segundo.

Qualquer dúvida utilizem os comentários.

USANDO O ECLIPSE COMO IDE PARA O WINAVR

Por que usar o Eclipse como IDE para o WINAVR?
Eclipse é uma IDE muito moderna, com muitas funções. E sendo uma IDE de código aberto ela é muito suportada e documentada por muita gente e muitas outras características como o plugin que usaremos existem para estender ainda mais sua funcionalidade.
Outra grande vantagem é escapar do incomodo makefiles, usando o Eclipse sua aplicação é automaticamente criada e até gravada no microcontrolador com o auxílio do AVRdude.
Para usarmos o ECLIPSE utilizaremos um plugin que nos permite utilizar o AVR-GCC como compilador. Mais informações sobre o plugin podem ser achadas na página do desenvolvedor Thomas Holland.

Instalando o WinAVR, Eclipse e o plugin.
Faça download dos seguintes softwares:

ECLIPSE
PLUGIN PARA UTILIZAR O WINAVR-GCC COMO COMPILADOR PARA O ECLIPSE
WINAVR
JAVA

O primeiro passo é instalar o WinAVR no diretório padrão c:\winavr\xxxxx o procedimento é de sempre clique em avançar/ok até a conclusão da instalação.
Agora instalaremos o ECLIPSE, ele não vem com um setup é só extrair em qualquer local. Por preferências pessoais eu instalei na pasta C:\
O plugin também não requer nenhuma atenção especial, somente extraia ele na pasta do ECLIPSE  que no meu caso é C:\eclipse-cpp-helios-win32\eclipse\
A maioria dos computadores já possui a run time do JAVA instalada, se você não tiver ou caso não saiba que tem é só executar o executável na pasta do Eclipse, caso uma mensagem de erro aparecer instale o JAVA e novamente tente abrir o ECLIPSE o procedimento para instalar o JAVA é o de sempre clique em avançar/ok até a conclusão da instalação.
Agora poderemos começar a trabalhar com nossa nova IDE, vá na pasta do ECLIPSE e execute o programa eclipse.exe.

Assim que o programa carregar clique me  File > New e então selecione C Project.
Selecione AVR Cross Target Application, no lado direito você verá o AVR-GCC como Toolchain, em Project name  coloque pisca e clique em next para mudar para a próxima janela.


 
Na nova janela só desmarque a opção de DEBUG e clique em finish.
Mudanças posteriores serão feitas em Project > Properties.
A janela de trabalho será está:

 
Nosso próximo passo e criar um arquivo.c para darmos inícios ao trabalho, clique com o botão direito em pisca e vá em New > File e digite como nome pisca.c
Clique agora no menu superior Project > Properties
E faça as seguintes alterações:
Selecione C/C+++  Build na lista a esquerda
A sua direita mude a configuração para Release como mostrado na figura abaixo


 
No menu a esquerda clique em AVR > Target Hardware e escolha o micro que você deseja trabalhar e seu clock. No meu caso será um ATmega16 a 1Mhz.

 
Agora no mesmo menu a esquerda clique em AVR > AVRDude clique em edit e selecione o seu programador ou o protocolo que ele segue, novamente no meu caso será o STK500, conforme imagem abaixo:






Clique em OK e OK novamente para sair das configurações.
Cole o seguinte código no editor:
#include <avr/io.h>
#include <avr/delay.h> // Header da função delay

void main (void)
{
DDRB=0xFF; // Data Direction Register porta D setada como output

                while(1) // O bloco do while se repetira eternamente enquanto for verdadeiro
                {

                               for (signed int i=1; i<=128; i*=2) // Inicia uma contagem e executa as declarações do bloco enquanto verdadeiro
                               {
                                               PORTB=i;
                                               _delay_loop_2(5000);
                                               _delay_loop_2(5000);
                                               _delay_loop_2(5000);
                                               _delay_loop_2(5000);
                                               _delay_loop_2(5000);
                                               _delay_loop_2(5000);
                                               _delay_loop_2(5000);
                                               _delay_loop_2(5000);
                                               _delay_loop_2(5000);
                                               _delay_loop_2(5000);
                                               _delay_loop_2(5000);
                                               _delay_loop_2(5000);
                                               _delay_loop_2(5000);
                                               _delay_loop_2(5000);
                                               _delay_loop_2(5000);
                                               _delay_loop_2(5000);
                               }

                               for (signed int i=1; i<=128; i*=2) // Inicia uma contagem e executa as declarações do bloco enquanto verdadeiro
                               {
                                               PORTB=~i; // ~ comlementa os bits da porta. Exemplo i=0011   ~i=1100
                                               _delay_loop_2(5000);
                                               _delay_loop_2(5000);
                                               _delay_loop_2(5000);
                                               _delay_loop_2(5000);
                                               _delay_loop_2(5000);
                                               _delay_loop_2(5000);
                                               _delay_loop_2(5000);
                                               _delay_loop_2(5000);
                                               _delay_loop_2(5000);
                                               _delay_loop_2(5000);
                                               _delay_loop_2(5000);
                                               _delay_loop_2(5000);
                                               _delay_loop_2(5000);
                                               _delay_loop_2(5000);
                                               _delay_loop_2(5000);
                                               _delay_loop_2(5000);
                               }

                }
}


Salve tudo clicando no ícone Save All e depois vá em Project > Build Configurations > Set Active > Release e finalmente  compile clicando no ícone Build All. Aparecerá 3 Warnings, as desconsidere.
Agora você tem duas opções ou grava no microcontrolador utilizando direto o AVRDude pelo eclipse ou use o AVR Studio ou outro programa similar. Para gravar direto com o AVRDude clique no ícone

 
Resultado final no meu Kit STK500

Video YouTube: