Go Down

Topic: Comment créer sa propre librairire en fonction d'une autre (Read 300 times) previous topic - next topic

pierrot10

Bonjour à tous,
Je me replonge dans Arduino :P :)
J'ai utilisé une grande librarire qui consiste en plusieurs fichiers. Il est bien mais beaucoup de code est inutile et prend de la mémoire. En plus c'est un peu le cheni.

J'aimerais refaire "la mienne" en reprennant uniquement ce que j'ai besoin, et j'aimerais avoir tout dans un fichier .cpp et .h.

Auriez-vous un tutorial qui explique comme on crée une librarie?
Auriez-vous des info à me donner?

Merci beaucoup
Il ne suffit pas de tout savoir, la persévérance, c'est déjà presque tout!

pierrot10

Il ne suffit pas de tout savoir, la persévérance, c'est déjà presque tout!

derder9161

Il suffit de commenter les fonctions qui ne te conviennent pas :)

pierrot10

Voilà, j'ai lu le tuto, mais je penne à faire marcher un truc qui semble bien etre simple

J'ai créé deux fichiers sous
/libraries/Sim908/Sim908.h
Code: [Select]

/*
  Sim908.h - Library
*/

#ifndef Sim908_h
#define Sim908_h

#include "Arduino.h"

class Sim908{
public:
Sim908();
void blinkLed(int lPin, int nBlink, int msec);

private:
};

#endif


/libraries/Sim908/Sim908.cpp
Code: [Select]

#include "Arduino.h"
#include "Sim908.h"

Sim908::Sim908(){

}

void Sim908::blinkLed(int lPin, int nBlink, int msec) {
   if (nBlink) {
     for (int i = 0; i < nBlink; i++) {
       digitalWrite(lPin, HIGH);
       delay(msec);
       digitalWrite(lPin, LOW);
       delay(msec);
     }
   }
}


Et j'ai aussi fait un fichier Sim908.ino
Code: [Select]

#include <Sim908.h>

Sim908 sim908;

int green = 12;


void setup()
{
  pinMode(green, OUTPUT);
}


void loop()
{
  sim908.blinkLed(green,1,1000);
  delay(3000);
}


Quand je compile j'ai ce message d'erreur:
Quote

sim908_v6.cpp.o: In function `__static_initialization_and_destruction_0':
/Applications/sim908_v6.ino:3: undefined reference to `Sim908::Sim908()'
sim908_v6.cpp.o: In function `loop':
/Applications/sim908_v6.ino:16: undefined reference to `Sim908::blinkLed(int, int, int)'

Je ne comprends pas la premiere erreur, ou ai-je manqué une chose __static_initialization_and_destruction_0
et aussi la deuxième :
undefined reference to `Sim908::blinkLed(int, int, int)

Pourriez-vous me dire l'erreur(s) commises?
Il ne suffit pas de tout savoir, la persévérance, c'est déjà presque tout!

jean-I

sur quel os tourne tu?
quel version de l'ide utilise tu?
dans Fichiers/preferences, coche "afficher les resultats détaillés pendant la compilation"



pierrot10

Hello,
Je suis sur OS 10.9
L'IDE est Arduino 1.0.5 . Es-ce qu'il y autre chose de mieux, pour Mac?
Je ne trouve pas Fichier/preference, mais ca c'est peut être parce que je suis sous Mac..

Merci
Il ne suffit pas de tout savoir, la persévérance, c'est déjà presque tout!

Jimbow

Salut!

Bizzard le message d'erreur mais tu as néanmoin fait une erreur. j'ai tester ton code et ca compile.

Dans ton .INO en tete tu as écris:
       #include <Sim908.h>

C'est faux!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! On utilise les <> pour dire au compilateur d'aller chercher la libraire dans les includes du compilateur lui même. si c'est toi qui a fait la librairie utilise les " " . De même tu range le .cpp et le .h dans le meme dossier que le .ino

Donc dans ton .ino tu met en tete:
         #include <Arduino.h>
         #include "Sim908.h" 

Avec les GUILLEMET!

Sinon chez moi ca compile...

Go Up