Go Down

Topic: [RESOLVIDO]Dúvida:Criar BiBlioteca Arduino (Read 4976 times) previous topic - next topic

vasr

Sep 22, 2013, 01:55 am Last Edit: Sep 22, 2013, 08:29 pm by vasr Reason: 1
Estou a tentar criar uma biblioteca para o arduino e tentei fazer um exemplo que encontrei.
Este foi o exemplo:
http://www.youtube.com/watch?v=B2jSbLbFKQs
Segui também este artigo:
http://arduino.cc/en/Hacking/LibraryTutorial
Extrato do meu código em seguida.
Luz.h:
Code: [Select]
#ifndef Luz_h
#define Luz_h

class Luz
{
   public:
   Luz(int pin);
   void acende();
   void apaga();
   private:
   int _pin;
};
#endif


Luz.cpp:
Code: [Select]
#include "Luz.h"
#include <WProgram.h>

Luz::Luz(int pin)
{
 pinMode(pin,OUTPUT);
 _pin=pin;
}

void Luz::acende(){
 
 digitalWrite(_pin,HIGH);
}

void Luz::apaga(){
 digitalWrite(_pin,LOW);
}


keywords.txt:
(com tab e não espaço)
Code: [Select]
Luz KEYWORD1
acende KEYWORD2
apaga KEYWORD2


Programa para usar a biblioteca criada:

Code: [Select]
#include<Luz.h>

Luz luz(13);

void setup(){}

void loop(){}


Apenas este código já dá erro.O que faço de errado?

bubulindo

Que erro é que te dá?

Onde guardaste os ficheiros Luz.h e cpp?

Reiniciaste a IDE do Arduino?
This... is a hobby.

vasr

#2
Sep 22, 2013, 04:50 am Last Edit: Sep 22, 2013, 04:54 am by vasr Reason: 1
Guardei no diretório C:\Program Files\Arduino\libraries e reiniciei,aliás aparece que a reconhece.
O erro tem haver com o "constructor e destructor" e não consigo perceber.
Também já me deu este erro:
C:\Program Files\Arduino/sketch_sep22a.ino:3: undefined reference to `Luz::Luz(int)'

bubulindo

Leste bem o artigo que postaste aqui???

Em lado algum referem o ficheiro WProgram.h...

Referem sim o Arduino.h... e esse não se encontra em lado nenhum. Dá lá uma vista de olhos ao link que meteste... está tudo lá.
This... is a hobby.

vasr

Continua o mesmo erro,ocorre os erros que descrevi.Alguma sugestão?

vasr

Já fiz o download nesta página:
http://renatoaloi.blogspot.pt/2012/11/criando-bibliotecas-no-arduino.html
E ocorre outro erro, que é este:
C:\Program Files\Arduino\libraries\Morse/Morse.h:10:21: error: WProgram.h: No such file or directory
Porisso que anteriormente inclui #include<WProgram.h>.

bubulindo

Desculpa lá... estás a gozar com a gente????

O código que colocaste funciona sem erros se trocares o WProgram.h por Arduino.h.

Foi isso que te disse no post em baixo... para ires ver a página oficial do Arduino que estava tudo lá.

Depois vens aqui dizer que tens um erro no ficheiro Morse.h... onde car**** é que está esse ficheiro no código que postaste inicialmente????
This... is a hobby.

vasr

Antes demais, não estou a gozar com qualquer pessoa que seja. Estou a expor as minhas dúvidas e agradeço a ajuda dada.
Eu fiz as substituição,que foi a seguinte:
Luz.cpp:
(Substitui WProgram.h por Arduino.h)
Code: [Select]
#include "Luz.h"
#include "Arduino.h"
Luz::Luz(int pin)
{
  pinMode(pin,OUTPUT);
  _pin=pin;
}

void Luz::acende(){
 
  digitalWrite(_pin,HIGH);
}

void Luz::apaga(){
  digitalWrite(_pin,LOW);
}

A mim o erro mantem-se:
sketch_sep22a.cpp.o: In function `__static_initialization_and_destruction_0':
C:\Program Files\Arduino/sketch_sep22a.ino:3: undefined reference to `Luz::Luz(int)'
Em relação Morse.h foi o código que fiz download do link postado, nada tem haver com o código transcrito.

hugo007

#8
Sep 22, 2013, 05:39 pm Last Edit: Sep 22, 2013, 05:42 pm by HugoPT Reason: 1
Amigo nao ha nada de errado na tua lib.So podes estar a coloca-la no local errado e nao deve estar a ser importada.
Em anexo tens a tua lib com o exemplo a compilar e a funcionar correctamente.
Code: [Select]

#include <Luz.h>
Luz aminhaLampada(13);

void setup()
{
 Serial.begin(9600);
}
void loop()
{
delay(1000);
aminhaLampada.acende();
delay(1000);
aminhaLampada.apaga();

}

So tens de descomptactar o arquivo em anexo para a pasta das bibliotecas do arduino e reniciar a IDE.
Depois copia e cola o codigo acima e faz upload
Debian,Mint,Ubuntu
Arduino Mega 2560
Arduino Nano
Arduino Duemilanove
MAC OS Montain Lion
Raspberry PI Model B

vasr

Obrigado HugoPT já percebi meu erro.Estava a colocar o ficheiro Luz.cpp não trasncrito pelo bloco de notas mas guardado diretamento pelo software do arduino.

Go Up