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:
- Compile o arquivo .pde da sua biblioteca.
- Edite o arquivo source/user.c
- Crie sua biblioteca com base neste arquivo.
Como usar a biblioteca:
- 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