Você está na página 1de 4

21/6/2014 Criando suas prprias bibliotecas para Arduino - Embarcados - Sua fonte de informaes sobre Sistemas Embarcados

http://www.embarcados.com.br/criando-suas-proprias-bibliotecas-para-arduino/ 1/4
por Fbio Souza em sexta-feira, 13 de junho de 2014.
A plataforma Arduino trouxe a facilidade de criar projetos com microcontroladores, principalmente para
iniciantes, devido abstrao de cdigo de baixo nvel. Quando voc utiliza uma funo para escrita ou
leitura de um sinal digital, voc no precisa se preocupar com a correta manipulao dos registradores
internos do microcontrolador que est utilizando em seu projeto. Essa abstrao apresenta vantagens,
como a portabilidade de cdigo, e desvantagens, como, por exemplo, o possvel aumento do cdigo de
programa gerado e o consequente atraso para manipulao de sinais.

Outra vantagem de se utilizar bibliotecas a abstrao de hardware, uma vez que voc pode manipular o
hardware com mtodos mais prximos nossa linguagem.

Nesse tutorial vamos apresentar como criar uma biblioteca para manipular um pino de sada de forma mais
alto nvel.

As bibliotecas para Arduino so feitas em C++. Inicialmente deve-se criar uma pasta com o mesmo nome
que vai ser chamada a biblioteca, contendo o seguinte contedo:
A pasta examples conter os exemplos que apareceram na IDE do Arduino. O Arquivo keywords.txt servir
para as palavras da biblioteca mudarem de cor na IDE. Os arquivos Saida.h e Saida.cpp contero os cdigos
da biblioteca. Vamos comear a estruturar nossa biblioteca Saida.

Inicialmente vamos pensar nas aes que uma sada digital poder demonstrar:
ligar;
desligar;
inverter o seu estado.

Agora temos que editar o arquivo Saida.h, que o arquivo de cabealho da nossa biblioteca. Primeiro
vamos inserir as seguintes diretivas de compilao:

1
2
3
4
5
6
#ifndef SAIDA_H
#define SAIDA_H



#endif
21/6/2014 Criando suas prprias bibliotecas para Arduino - Embarcados - Sua fonte de informaes sobre Sistemas Embarcados
http://www.embarcados.com.br/criando-suas-proprias-bibliotecas-para-arduino/ 2/4

Essas diretivas no deixaro as declaraes/definies da biblioteca serem inseridas mais de uma vez em
um projeto.

Para ter acesso s funes do Arduino, necessrio fazer uso da biblioteca Arduino, inserindo o arquivo de
cabealho Arduino.h:


Agora vamos criar a classe Saida:

Como pode ser observado, a classe Saida possui um construtor que recebe como parmetro o pino
correspondente a sada. Possui tambm 3 mtodos pblicos que podero ser acessados por quem for
utilizar a biblioteca e um atributo privado que s poder ser acessado dentro da classe.
Vamos agora para a codificao dos mtodos da classe no arquivo Saida.cpp:

1
2
3
4
5
6
7
8
#ifndef SAIDA_H
#define SAIDA_H

#include <Arduino.h>



#endif
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#ifndef SAIDA_H
#define SAIDA_H

#include <Arduino.h>

class Saida
{
public:
Saida(int pin);
void liga();
void desliga();
void inverte();

private:
int pino;
};

#endif
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include"Saida.h"

Saida::Saida(int pin)
{
pinMode(pin, OUTPUT);
pino = pin;
}

void Saida::liga()
{
digitalWrite(pino,HIGH);
}

void Saida::desliga()
{
21/6/2014 Criando suas prprias bibliotecas para Arduino - Embarcados - Sua fonte de informaes sobre Sistemas Embarcados
http://www.embarcados.com.br/criando-suas-proprias-bibliotecas-para-arduino/ 3/4

O construtor Saida::Saida(int pin) configura o pino passado como parmetro como sada e depois atribui o
seu valor varivel privada pino, de modo que esse pino possa ser utilizado pelos mtodos da classe
futuramente.

Os mtodos demonstram as aes que os seus nomes propem, fazendo uso das funes da biblioteca
Arduino.

O arquivo keywords.txt deve ficar da seguinte forma:

O nome da classe deve estar na linha de KEYWORD1 e os mtodos sero KEYWORD2.

Agora que nossa biblioteca est pronta, basta adicionar a pasta libraries no diretrio do Arduino e vamos
criar dois exemplos para testes. Esses exemplos devem ser salvos na pasta examples da nossa biblioteca.

O primeiro exemplo SaidaBlink, que consiste em piscar um led em intervalos de 1 segundo:

No segundo exemplo criada uma sada chamada rele, que inverte seu estado quando uma tecla for
pressionada:

16
17
18
19
20
21
22
digitalWrite(pino,LOW);
}

void Saida::inverte()
{
digitalWrite(pino, !digitalRead(pino));
}
1
2
3
4
Saida KEYWORD1
liga KEYWORD2
desliga KEYWORD2
inverte KEYWORD2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <Saida.h>

// Instancia um objeto chamado LED no pino 13
Saida LED(13);

void setup(){
}

void loop()
{
LED.liga(); // liga o led
delay(1000); // aguarda 1 segundo
LED.desliga(); // desliga o Led
delay(1000); // aguarda 1 segundo
}
1
2
3
4
5
6
7
8
#include <Saida.h>



// Cria um rele passando como parmetro o pino no qual est ligado

Saida rele(8);
const byte tecla = 2;
21/6/2014 Criando suas prprias bibliotecas para Arduino - Embarcados - Sua fonte de informaes sobre Sistemas Embarcados
http://www.embarcados.com.br/criando-suas-proprias-bibliotecas-para-arduino/ 4/4



O exemplo apresentado para criao de bibliotecas foi bem simples e servir de base para que voc possa
criar as suas prprias bibliotecas, ou caso voc queira entender como uma biblioteca criada. Voc pode
adicionar outros mtodos a essa biblioteca e testar com o seu hardware, por exemplo, um mtodo que
retorne o estado atual de uma sada, etc.
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26

// Configura arduino

void setup()
{
pinMode(tecla, INPUT);
}


// Loop principal
void loop()
{
if (digitalRead(tecla) == LOW)
{
while (digitalRead(tecla) == LOW); // Aguada tecla ser liberada
rele.inverte();
}
}