6. Bibliotecas
Last updated
Last updated
A biblioteca é um arquivo que possui um conjunto de funções, variáveis e outras bibliotecas que possuem a capacidade de ajudar a organizar, visualizar, corrigir, criar protótipos e funções, além de facilitar a criação do próprio código. Ela tem como objetivo configurar e armazenar tudo que não há necessidade de estar presente no arquivo main (principal). Dessa forma, despoluindo esse arquivo e já permitindo que todo o pré-processamento já seja feito somente por incluir a biblioteca em seu main.
O Header ou cabeçalho é uma biblioteca que contém as chamadas de outras bibliotecas e estruturas de dados necessárias para o funcionamento dos arquivos source code ou código fonte. Alguns exemplos desses arquivos são: stdio.h (biblioteca padrão da linguagem C), plib.h, attribs.h, arduino.h, math.h e outras. Como é perceptível, na linguagem C, todos os arquivos Header possuem a terminação “.h”, sendo isso o que indica o seu tipo de arquivo. Um bom arquivo header deve inicializar as configurações do pic (com o uso de pragmas, por exemplo), além de chamar todas as outras bibliotecas que serão usadas no decorrer do código, como a do microcontrolador que está sendo usado ou a do compilador.
Criar uma biblioteca com funções específicas, necessárias para o seu código, pode facilitar muito na hora de programar.
Para criar uma biblioteca, primeiro é preciso criar um arquivo Header (com terminação “.h”). A biblioteca deve ser criada dentro da pasta Header, para isso, seguem-se os seguintes passos:
Clicar com o botão direito em cima desta pasta
Criar um novo arquivo com a extensão “.h”
Para criar uma biblioteca própria o programador deve ter em mente as funções necessárias para o seu código.
Por exemplo, se um programa utiliza constantemente uma função que calcula a média aritmética de três números, ao invés de adicionar a função ao arquivo principal (com terminação “.c”), podemos colocar a função no arquivo header, incluir a biblioteca criada no arquivo principal com o comando #include (inserir hiperlink para pré-processamento) e chamar a função apenas quando nos convém, organizando o programa.
Exemplo de como incluir uma biblioteca:
O source code ou código fonte são os arquivos com extensão “.c” ou “.cpp” que possuem o script propriamente dito, ou seja, o algoritmo que se deseja compilar no processador. Dessa forma, o robô realiza as instruções programadas no source code. A forma correta de estruturar um arquivo de código fonte é colocando primeiramente a biblioteca e seguir com a criação e inicialização de variáveis (obs.: é de extrema importância inicializar todas as variáveis para evitar futuros problemas com os valores destas) .
A biblioteca deve iniciar com um cabeçalho, contendo: a instituição da qual o autor faz parte, o intuito da biblioteca, o nome dela, quem é o autor e os editores, a data de modificação ou criação da biblioteca e outras informações adicionais como o compilador e a IDE usadas. Segue-se o exemplo:
Logo em seguida, deve-se colocar os includes das bibliotecas usadas e necessárias para o funcionamento do código. Importante salientar que todos os includes das bibliotecas necessárias devem ser colocados no arquivo header, evitando a necessidade da sua utilização no arquivo principal.
Após isso, deve-se colocar os pragmas, que são instruções para o compilador associar ou fazer no processo de pré-compilação. Segue-se o exemplo:
#pragma config IOL1WAY = OFF // Peripheral Pin Select
#pragma config FPLLIDIV = DIV_2 // PLL Input Divider
#pragma config FPLLMUL = MUL_20 // PLL Multiplier
#pragma config FPLLODIV = DIV_2 // System PLL Output Clock
#pragma
config PWP = OFF // Program Flash Write Protect
#pragma config BWP = OFF // Boot Flash Write Protect bit
#pragma config CP = OFF // Code Protect
Em conseguinte devemos programar os defines, que servem para simplificar o entendimento do código e do uso dos pinos e portas que o microcontrolador dispõe. Ao utilizar um define, é de extrema importância manter a organização o código por meio dos comentários, responsáveis por indicar a função e nomeação de cada definição.
Veja como foi feito na biblioteca do seguidor:
Com o processo de pré-processamento pronto, agora segue-se uma parte de criar os protótipos das funções e documentá-las, pois, dessa forma, todos que lerem a biblioteca poderão entender o uso delas e saberão aplicá-las no código. Além disso, vem a criação de variáveis e também a documentação de structs. Exemplo dos protótipos na biblioteca do seguidor:
Após declarar as variáveis, structs e os protótipos das funções, segue a criação das mesmas:
Conseguinte, temos a configuração do pinos e bits do microcontrolador, que é integralmente feita no arquivo header a fim de remover a necessidade de colocá-los no arquivo principal. Toda a configuração é feita separando os bits por funções, como na configuração dos leds, buzzer, botão, sensores e demais bits no exemplo abaixo:
Por fim, tendo a biblioteca pronta, basta inclui-la ao programa principal
utilizando a diretiva #define
.
As bibliotecas ou arquivos header (.h), são arquivos capazes de facilitar na criação do código removendo do mesmo todas as configurações que ocupariam muito espaço no código principal e realocando-as para um outro arquivo, deixando tudo muito mais organizado. E seguindo as dicas aqui presentes, será capaz criar uma biblioteca organizada, bem feita e capaz de organizar o código.