Pages: [1]   Go Down
Author Topic: L'exemple de la bibliothèque 'Morse'  (Read 686 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 16
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged

Offline Offline
Sr. Member
****
Karma: 12
Posts: 303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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 ?
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 16
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Merci de ta réponse. Il s'agit du Tutorial de Arduino : http://arduino.cc/en/Hacking/LibraryTutorial
Je le poste :

Morse.h :

Code:
#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:
#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:
#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.
« Last Edit: July 03, 2013, 09:24:26 am by AlexandreJ » Logged

Offline Offline
Sr. Member
****
Karma: 12
Posts: 303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 16
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.


* Untitled.jpg (46.27 KB, 554x364 - viewed 26 times.)
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 16
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Offline Offline
Sr. Member
****
Karma: 12
Posts: 303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 16
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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).
Logged

Offline Offline
Sr. Member
****
Karma: 12
Posts: 303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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 ?
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 16
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

Offline Offline
Sr. Member
****
Karma: 12
Posts: 303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged

Paris
Offline Offline
Sr. Member
****
Karma: 2
Posts: 368
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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  smiley-wink

En image, le répertoire :


Et l'IDE :
Logged

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 !

Pages: [1]   Go Up
Jump to: