Conheça o Arduino, uma plataforma de hardware microcontrolada baseada no conceito de software e hardware livres para criação de protótipos de Eletronica.


                                                                                                         contato

 

Um módulo de desenvolvimento
para o ARDUINO

by João Alexandre da Silveira

modDesevArduino_02

Introdução

Em 1978 foi publicado o primeiro livro sobre linguagem C, “The C programming Language”, onde seus autores, Kernighan e Ritche, sugerem que o único caminho para aprender uma nova linguagem de programação é escrever programas nessa linguagem. Seguindo essa ideia poderíamos dizer que a melhor ferramenta para aprender microcontroladores é um módulo de desenvolvimento, uma plataforma de hardware que serve para testar os principais comandos da linguagem de programação do microcontrolador.

Existe no mercado muitos modelos de módulos de desenvolvimento para microcontroladores PIC, Atmel e outros que em suas versões mais simples possuem um conjunto de chaves mecanicas e potenciometros como entradas e um ou dois grupos de 8 LEDs mais mostradores de 7 segmentos e LCD como saídas para o microcontrolador embarcado no módulo.

Nesse artigo propomos a montagem de um pequeno módulo de desenvolvimento para o leitor se familiarizar com a linguagem do Arduino.

Hardware

Os blocos de software no mundo do Arduino são chamadas de sketches, os de hardware são chamados de shields. Os shields são feitos de modo que se encaixem sobre os conectores fêmea do Arduino e deste recebam alimentação e acesso a todos os pinos digitais e analógicos e tambem ao pino de reset. Essa placa de interface, ou shield, que propomos ao leitor montar contem somente dois potenciometros de 10Kohms, quatro minichaves mecanicas e quatro LEDs de 5 mm. Utilizamos em nossa montagem uma placa de fibra de vidro de 65x52 mm com perfuração padrão de 2,54 mm entre os furos. Os componentes são interligados por pequenos pedaços de fios no lado oposto, o lado de solda da placa.

Existe porem um problema com essa solução simples de se montar um shield: a distancia entre os dois conectores digitais no Arduino não obedece ao padrão 2,54mm da placa, porisso abrimos mão do conector digital da esquerda e montamos somente o conector da direita e os conectores analógico e de alimentação. Veja na figura 1 como ficou nossa montagem encaixada no Arduino Duemilanove.

modDesenv_02

figura 1

No diagrama do circuito na figura 2 vemos as quatro chaves conectadas aos pinos digitais 2 a 5 (os pinos 0 e 1 são pinos reservados para a comunicação serial) e os cursores dos dois potenciometros ligados nos pinos analógicos 14 e 15. Os quatro LEDs são ligados aos outros quatro pinos analógicos 16 a 19. Foi incluido na montagem uma chave de reset e um LED vermelho de 3 mm somente para indicar que o Arduino está alimentado. Os pinos 6 e 7 não são aqui utilizados.


modDesenv_03

figura 2


A montagem desse shield é bastante simples pois os únicos componentes que devem ser observados quanto à polarização são os LEDs. Na placa perfurada observe a correta distancia entre as barras de pinos digital e analógica para que se encaixem corretamente nos conectores fêmea do Arduino. Depois de montado o módulo e conferida cada ligação encaixe o shield no Arduino. A alimentação para o circuito virá do seu computador  pelo cabo USB, por onde o Arduino e o PC tambem vão se comunicar.


Lista de componentes
R1 a R4 e R9
Resistor 270 ohms x 1/8W
R5 a R8
Resistor 10Kohms x 1/8 W
P1 e P2
Potenciometro linear 10Kohms
LED1 a LED4
Led vermelho 5 mm
LED5
Led vermelho 3 mm
S1 a S5
Chave miniatura 1/0
C1 a C3
Barras de pinos 2,54mm
Outros
Placa CI perfuração padrão

Software

Podemos testar as funções digitalRead( ) e digitalWrite( ) de entrada e saída digitais da linguagem do Arduino junto com as chaves e os LEDs do módulo com o sketch da listagem 1 abaixo.

Listagem 1

int pinSwitch=2;      
int pinLed=16;        
void setup() {
pinMode(pinLed,OUTPUT); 

void loop() {
(digitalRead(pinSwitch) == HIGH)?
digitalWrite(pinLed,HIGH):
digitalWrite(pinLed,LOW);
}

 

A variáveis  pinSwitch e pinLed indicam os pinos no Arduino onde estão conectados uma chave mecanica e um LED, respectivamente. O estado de pinSwitch é testado pelo operador ternário ‘?’ que via fazer ou não o LED acender. Note que nesse sketch o pino analógico 16 é configurado como saída e o pino 2, por default configurado como entrada; se a chave no pino 2 for fechada o LED no pino 16 vai apagar.

A função analogRead( ) da linguagem do Arduino pode ser testada com um dos potenciometros do módulo com o sketch da listagem 2, abaixo.  A variável pinSensor guarda a posição do cursor do potenciometro. A resistencia do potenciometro depois de digitalizada pela função analogRead( ) serve de parametro para a função delay( ) que marca o tempo das piscadas do LED na variável pinLed. O LED vai estar aceso ou apagado de acordo com o valor da variável statusLed, que a cada ciclo muda de estado.

Listagem 2

 

int pinSensor=14;
int pinLed=16; 
int statusLed=LOW;
void setup() {
pinMode(pinLed,OUTPUT);
}

void loop() {
delay(analogRead(pinSensor)); 
digitalWrite(pinLed,statusLed); 
statusLed=!statusLed;
}

 

Acrescentando ao sketch acima um comando for para configurar de uma só vez como saída os quatro pinos com LEDs e um outro comando for com a mesma estrutura para selecionar um LED de cada vez podemos criar um bargraph para testar os quatro LEDs com um só potenciometro. Veja a listagem 3. 

Listagem 3

 

int pinSensor=14;
int statusLed=LOW;
void setup() {
for(int i=16; i<=19; i++) {
pinMode(i,OUTPUT);
}

void loop() {
for (int i=16; i<=19; i++) {
int pinLed=i;
delay(analogRead(pinSensor)); 
digitalWrite(pinLed,statusLed); 
statusLed=!statusLed;
}

 

 

Experimente modificar o sketch acima para inverter a sequencia de acionamento dos LEDs ou tente escrever um outro que utilize tambem as quatro chaves no mesmo código.

 


home