Go Down

Topic: L'exemple de la bibliothèque 'Morse' (Read 757 times) previous topic - next topic

Bonjour,
Je viens vous solliciter parce qu'étant débutant en Arduino, j'ai souhaité comprendre les bibliothèques.
Je me suis retrouvé face à un problème que je ne sais pas résoudre.

'Morse does not name a type'.

Je ne comprends pourquoi cela ne fonctionne pas.
De plus, mes fichiers Morse.h et Morse.cpp, qui sont bien dans le menu Sketchbook, sont en fait des fichiers Morse_h.ino et Morse_cpp.ino

Je ne comprends pas pourquoi.
Quelqu'un aurait la solution à mon problème ?!


Alex.

haifger

Bonjour,

il nous manque quelques détails pour pouvoir répondre efficacement :


  • quelle est cette librairie « Morse » dont tu parles ? Où l'as tu récupérée ?

  • quelle version de l'environnement Arduino ?


#2
Jul 03, 2013, 03:52 pm Last Edit: Jul 03, 2013, 04:24 pm by AlexandreJ Reason: 1
Merci de ta réponse. Il s'agit du Tutorial de Arduino : http://arduino.cc/en/Hacking/LibraryTutorial
Je le poste :

Morse.h :

Code: [Select]
#ifndef Morse_h
#define Morse_h

#include "Arduino.h"

class Morse
{
 public:
   Morse(int pin);
   void dot();
   void dash();
 private:
   int _pin;
};

#endif


Morse.cpp :


Code: [Select]
#include "Arduino.h"
#include "Morse.h"

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

void Morse::dot()
{
 digitalWrite(_pin, HIGH);
 delay(250);
 digitalWrite(_pin, LOW);
 delay(250);  
}

void Morse::dash()
{
 digitalWrite(_pin, HIGH);
 delay(1000);
 digitalWrite(_pin, LOW);
 delay(250);
}


Loop function :

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

Morse morse(13);

void setup()
{
}

void loop()
{
 morse.dot(); morse.dot(); morse.dot();
 morse.dash(); morse.dash(); morse.dash();
 morse.dot(); morse.dot(); morse.dot();
 delay(3000);
}


Je suis sur la version 1.0.5 de l'environnement Arduino.

haifger

Alors, pour que cela fonctionne, tu doit avoir dans ton répertoire sketchbook un sous-répertoire libraries, et dans celui-ci un autre sous-répertoire nommé Morse.

Dans ce dernier tu dois placer tes deux fichiers Morse.h et Morse.cpp, qui doivent bel et bien s'appeler comme ça et pas Morse_h.ino.

Ce qui doit donner :

  • .../sketchbook/libraries/Morse/Morse.h

  • .../sketchbook/libraries/Morse/Morse.cpp



Ensuite, dans l'IDE Arduino, tu colles le contenu de ce que tu appelle « Loop function », et la compilation ne devrait pas poser de problème.

Je t'attache ce que j'ai dans mon sketchbook.

Donc mon problème serait donc bien le fait que le programme Arduino enregistre mon fichier en .ino
Lorsque j'enregistre mon fichier .h, je tape juste le nom du fichier que je souhaite c'est-a-dire 'Morse.h' mais lorsque je vérifie, ce fichier a bien ete remplacé par un 'Morse_h.ino' et c'est justement cela que je ne sais pas résoudre.

Cela serait-il dû à l'environnement Arduino 1.0.5 ?!?

haifger

Haaaan, ok... Je dois avouer que je n'utilise presque jamais l'IDE Arduino en lui-même, mais à ce qu'il me semble, il est avant tout destiné à créer des « sketchs », et pas nécessairement les librairies, et c'est probablement la raison pour laquelle il insiste à vouloir enregistrer les fichiers en leur ajoutant l'extension .ino.

Il est possible de lui faire gérer des fichiers .h ou .cpp en créant de nouveaux onglets mais ceux-ci seront stockés dans le même répertoire que ton sketch, et ce n'est pas ce dont tu as besoin.

Le plus simple à mon avis, si les fichiers sont bien au bon endroit, c'est de les renommer « à la main », et tout devrait rentrer dans l'ordre.

Mais le problème est bien là.
En changeant 'à la main' le fichier, il est bien mis en .h et .cpp avec les p'tites images d'un h et C++ qui apparaissent mais mes 2 fichiers n'apparaissent plus maintenant dans le sketchbook.

C'est vraiment un problème qui me pèse parce que tous mes programmes ont besoin de bibliothèques mais si je n'arrive pas à les créer . . .

(encore merci de tes réponses haifger).

haifger

Nan mais ça ok, mais ton sketch « loop function », il compile ou pas ? tu as toujours le même message d'erreur qu'au début ?

Après un shut down complet de l'ordinateur, CA Y EST !!!
Le changement à la main semble avoir fonctionné même si la bibliothèque Morse n'apparait plus.

Un grand merci à toi haifger. =D

haifger

Elle n'apparaît plus, elle n'apparaît plus, faut pas être défaitiste comme ça :)

Normalement, si tu va dans le menu Sketch > Import library... elle doit apparaître dans la liste. C'est le signe qu'elle est correctement installée et reconnue.

Après, effectivement, tu ne peut pas en éditer le contenu directement, il va te falloir un autre éditeur pour ça. D'un autre côté, comme je l'ai dit auparavant, je ne suis pas un expert de l'IDE Arduino que j'utilise très peu, il y a peut-être des astuces que je ne connais pas et que d'autres t'indiquerons.

UniseV

Pour faire simple, quand tu crées un sketch, tu dois avoir un fichier MonSketch.ino dans un répertoire MonSketch, du même nom.

Ensuite pour l'exemple de la librairie Morse, je te suggère pour commencer de mettre tes 2 fichiers Morse.h & Morse.cpp dans ton répertoire MonSketch, comme ça quand tu ouvrira "MonSketch.ino", ça ouvrira le h et le cpp de morse en même temps et tu pourras tout compiler d'un coup  ;)

En image, le répertoire :


Et l'IDE :
EN: Libraries are my Gurus, they make me believe anything they want !
FR: Les librairies sont mes gourous, elles me font croire ce qu'elles veulent !

Go Up