2010-08-14

Biblioteca LCD Pinguino!

Finalmente consegui, migrar o código wiring do pinguino para SDCC e transformei em uma biblioteca .c/.h. A biblioteca é composta de dois arquivos lcdta de dois arquivos lcdlib.c e lcdlib.h, também modifiquei o exemplo do post anterior (Pinguino Clock com a mini animação do jogo pong)


Apenas uma pequena explicação de como transformar um arquivo .pde em uma biblioteca pinguino:
  1. Compile o arquivo .pde da sua biblioteca.
  2. Edite o arquivo source/user.c
  3. Crie sua biblioteca com base neste arquivo.

Como usar a biblioteca:
  1. Lembre-se que digitalwrite, e os comandos de delay do arduino não fazem parte do pacote SDCC, e que o pinguino não os adiciona as includes para esses, ou os adicionará ao final do arquivo tmp/define.h o que gerará erros de compilação na IDE Pinguino/SDCC.

Assim  temos um problema de ordenação das includes que não pode ser resolvido somente via biblioteca, para resolver isso temos de fazer os includes que a IDE pinguino faria, manualmente, como no trecho de código abaixo (código completo no zip acima):

// Remove line above if you using a pinguino with PIC18F2550, need this define before include digitalw.c

#define PIC18F4550
#include <stdlib.h>
//Include libraries used on you user lib, before include that, pinguino IDE works well on it.

#include <delay.h>

#include <arduinodelay.c>

#include <digitalw.c>
//LCD library

#include <lcdlib.c>

Reparem que a minha nova biblioteca, compatível com os códigos arduino em 99%, só é chamada após carregarmos as bibliotecas necessárias, caso deixássemos por conta da IDE, esta include viria na frente das outras no arquivo define.h

OBS: Esta versão só funciona com a Pinguino IDE beta8 ou maior. Outra versão será lançada junto com a IDE beta9

2 comentários:

Unknown disse...

Hi,

Yesterday I tried to use the library as a 4 bit display usind the lcd command with last 4 bits defined as 0, but i had no luck.

Any advice on this?.

Regards

Unknown disse...

Hi,

By the way, using the library in 8 bit mode works fine!

The only change I red that is necessary to change the mode is setting last 4 bits to 0... is any other configuration needed?.

Best Regards