Outils pour utilisateurs

Outils du site


start:arduino:librairies:creation

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Prochaine révision
Révision précédente
start:arduino:librairies:creation [2020/12/07 12:34] – créée gerardadminstart:arduino:librairies:creation [2023/01/27 16:08] (Version actuelle) – modification externe 127.0.0.1
Ligne 1: Ligne 1:
 ======== Ecrire une bibliothèque pour Arduino======== ======== Ecrire une bibliothèque pour Arduino========
 +
 +Traduit de la page : https://www.arduino.cc/en/Hacking/LibraryTutorial
  
  
Ligne 43: Ligne 45:
 Si vous exécutez ce croquis, il clignotera le code pour SOS (un appel de détresse) sur la broche 13. Si vous exécutez ce croquis, il clignotera le code pour SOS (un appel de détresse) sur la broche 13.
  
-L'esquisse comporte quelques parties différentes que nous devrons apporter dans notre bibliothèque. Premièrement, bien sûr, nous avons les fonctions dot () et dash () qui clignotent. Deuxièmement, il y a la variable ledPin que les fonctions utilisent pour déterminer la broche à utiliser. Enfin, il y a l'appel à pinMode () qui initialise la broche en tant que sortie.+L'esquisse comporte quelques parties différentes que nous devrons apporter dans notre bibliothèque. 
  
-Commençons à transformer le croquis en bibliothèque!+Premièrement, bien sûr, nous avons les fonctions dot () et dash () qui clignotent. 
 + 
 +Deuxièmement, il y a la variable ledPin que les fonctions utilisent pour déterminer la broche à utiliser.  
 + 
 +Enfin, il y a l'appel à pinMode () qui initialise la broche en tant que sortie. 
 + 
 + 
 +__Commençons à transformer le croquis en bibliothèque!__
  
 Vous avez besoin d'au moins deux fichiers pour une bibliothèque: un fichier d'en-tête (avec l'extension .h) et le fichier source (avec l'extension .cpp). Le fichier d'en-tête a des définitions pour la bibliothèque: essentiellement une liste de tout ce qui se trouve à l'intérieur; tandis que le fichier source a le code réel. Nous appellerons notre bibliothèque "Morse", donc notre fichier d'en-tête sera Morse.h. Jetons un coup d'œil à ce qui s'y passe. Cela peut sembler un peu étrange au début, mais cela aura plus de sens une fois que vous verrez le fichier source qui va avec. Vous avez besoin d'au moins deux fichiers pour une bibliothèque: un fichier d'en-tête (avec l'extension .h) et le fichier source (avec l'extension .cpp). Le fichier d'en-tête a des définitions pour la bibliothèque: essentiellement une liste de tout ce qui se trouve à l'intérieur; tandis que le fichier source a le code réel. Nous appellerons notre bibliothèque "Morse", donc notre fichier d'en-tête sera Morse.h. Jetons un coup d'œil à ce qui s'y passe. Cela peut sembler un peu étrange au début, mais cela aura plus de sens une fois que vous verrez le fichier source qui va avec.
Ligne 51: Ligne 60:
 Le cœur du fichier d'en-tête se compose d'une ligne pour chaque fonction de la bibliothèque, enveloppée dans une classe avec toutes les variables dont vous avez besoin: Le cœur du fichier d'en-tête se compose d'une ligne pour chaque fonction de la bibliothèque, enveloppée dans une classe avec toutes les variables dont vous avez besoin:
  
 +
 +<code c classMorse.ino>
 class Morse class Morse
 { {
Ligne 60: Ligne 71:
     int _pin ;     int _pin ;
 } ; } ;
-[Obtenir le code]+</code>
  
 Une classe est simplement une collection de fonctions et de variables qui sont toutes conservées ensemble au même endroit. Ces fonctions et variables peuvent être publiques , ce qui signifie qu'elles sont accessibles aux personnes utilisant votre bibliothèque, ou privées , ce qui signifie qu'elles ne sont accessibles qu'à partir de la classe elle-même. Chaque classe a une fonction spéciale appelée constructeur , qui est utilisée pour créer une instance de la classe. Le constructeur a le même nom que la classe et aucun type de retour. Une classe est simplement une collection de fonctions et de variables qui sont toutes conservées ensemble au même endroit. Ces fonctions et variables peuvent être publiques , ce qui signifie qu'elles sont accessibles aux personnes utilisant votre bibliothèque, ou privées , ce qui signifie qu'elles ne sont accessibles qu'à partir de la classe elle-même. Chaque classe a une fonction spéciale appelée constructeur , qui est utilisée pour créer une instance de la classe. Le constructeur a le même nom que la classe et aucun type de retour.
  
-Vous avez besoin de quelques autres éléments dans le fichier d'en-tête. L'une est une instruction #include qui vous donne accès aux types et constantes standard du langage Arduino (cela est automatiquement ajouté aux esquisses normales, mais pas aux bibliothèques). Cela ressemble à ceci (et va au-dessus de la définition de classe donnée précédemment):+Vous avez besoin de quelques autres éléments dans le fichier d'en-tête. L'une est une instruction **#include** qui vous donne accès aux types et constantes standard du langage Arduino (cela est automatiquement ajouté aux esquisses normales, mais pas aux bibliothèques). Cela ressemble à ceci (et va au-dessus de la définition de classe donnée précédemment):
  
 +
 +<code c>
 #include "Arduino.h" #include "Arduino.h"
-[Obtenir le code] 
  
-Enfin, il est courant d'envelopper tout le fichier d'en-tête dans une construction étrange:+ 
 +//Enfin, il est courant d'envelopper tout le fichier d'en-tête dans une construction étrange:
  
 #ifndef Morse_h #ifndef Morse_h
Ligne 77: Ligne 90:
  
 #endif #endif
-[Obtenir le code]+</code>
  
 Fondamentalement, cela évite les problèmes si quelqu'un # inclut accidentellement votre bibliothèque deux fois. Fondamentalement, cela évite les problèmes si quelqu'un # inclut accidentellement votre bibliothèque deux fois.
Ligne 85: Ligne 98:
 Jetons un coup d'œil au fichier d'en-tête complet: Jetons un coup d'œil au fichier d'en-tête complet:
  
 +<code c >
 / * / *
   Morse.h - Bibliothèque pour faire clignoter le code Morse.   Morse.h - Bibliothèque pour faire clignoter le code Morse.
Ligne 106: Ligne 120:
  
 #fin si #fin si
-[Obtenir le code]+</code>
  
 Passons maintenant en revue les différentes parties du fichier source, Morse.cpp. Passons maintenant en revue les différentes parties du fichier source, Morse.cpp.
Ligne 112: Ligne 126:
 Viennent d'abord quelques déclarations #include. Celles-ci donnent au reste du code accès aux fonctions Arduino standard et aux définitions de votre fichier d'en-tête: Viennent d'abord quelques déclarations #include. Celles-ci donnent au reste du code accès aux fonctions Arduino standard et aux définitions de votre fichier d'en-tête:
  
 +<code c>
 #include "Arduino.h" #include "Arduino.h"
 #include "Morse.h" #include "Morse.h"
-[Obtenir le code]+</code>
  
 Puis vient le constructeur. Encore une fois, cela explique ce qui doit se passer lorsque quelqu'un crée une instance de votre classe. Dans ce cas, l'utilisateur spécifie la broche qu'il souhaite utiliser. Nous configurons la broche en tant que sortie, enregistrez-la dans une variable privée pour une utilisation dans les autres fonctions: Puis vient le constructeur. Encore une fois, cela explique ce qui doit se passer lorsque quelqu'un crée une instance de votre classe. Dans ce cas, l'utilisateur spécifie la broche qu'il souhaite utiliser. Nous configurons la broche en tant que sortie, enregistrez-la dans une variable privée pour une utilisation dans les autres fonctions:
  
 +<code c>
 Morse :: Morse ( int pin ) Morse :: Morse ( int pin )
 { {
Ligne 123: Ligne 139:
   _pin = broche ;   _pin = broche ;
 } }
-[Obtenir le code]+</code>
  
 Il y a quelques choses étranges dans ce code. Le premier est le Morse :: avant le nom de la fonction. Cela dit que la fonction fait partie de la classe Morse . Vous le verrez à nouveau dans les autres fonctions de la classe. La deuxième chose inhabituelle est le trait de soulignement dans le nom de notre variable privée, _pin . Cette variable peut en fait avoir le nom de votre choix, à condition qu'elle corresponde à la définition du fichier d'en-tête. L'ajout d'un trait de soulignement au début du nom est une convention courante pour indiquer clairement quelles variables sont privées, et aussi pour distinguer le nom de celui de l'argument de la fonction ( pin dans ce cas). Il y a quelques choses étranges dans ce code. Le premier est le Morse :: avant le nom de la fonction. Cela dit que la fonction fait partie de la classe Morse . Vous le verrez à nouveau dans les autres fonctions de la classe. La deuxième chose inhabituelle est le trait de soulignement dans le nom de notre variable privée, _pin . Cette variable peut en fait avoir le nom de votre choix, à condition qu'elle corresponde à la définition du fichier d'en-tête. L'ajout d'un trait de soulignement au début du nom est une convention courante pour indiquer clairement quelles variables sont privées, et aussi pour distinguer le nom de celui de l'argument de la fonction ( pin dans ce cas).
Ligne 129: Ligne 145:
 Vient ensuite le code réel du croquis que vous transformez en bibliothèque (enfin!). Cela ressemble à peu près au même, sauf avec Morse :: devant les noms des fonctions, et _pin au lieu de pin : Vient ensuite le code réel du croquis que vous transformez en bibliothèque (enfin!). Cela ressemble à peu près au même, sauf avec Morse :: devant les noms des fonctions, et _pin au lieu de pin :
  
 +<code c>
 void Morse :: dot ( ) void Morse :: dot ( )
 { {
Ligne 144: Ligne 161:
   retard ( 250 ) ;   retard ( 250 ) ;
 } }
-[Obtenir le code]+</code>
  
 Enfin, il est courant d'inclure également l'en-tête de commentaire en haut du fichier source. Voyons le tout: Enfin, il est courant d'inclure également l'en-tête de commentaire en haut du fichier source. Voyons le tout:
  
 +<code c>
 / * / *
   Morse.cpp - Bibliothèque pour faire clignoter le code Morse.   Morse.cpp - Bibliothèque pour faire clignoter le code Morse.
Ligne 178: Ligne 196:
   retard ( 250 ) ;   retard ( 250 ) ;
 } }
-[Obtenir le code]+</code>
  
 Et c'est tout ce dont vous avez besoin (il y a d'autres trucs optionnels intéressants, mais nous en reparlerons plus tard). Voyons comment vous utilisez la bibliothèque. Et c'est tout ce dont vous avez besoin (il y a d'autres trucs optionnels intéressants, mais nous en reparlerons plus tard). Voyons comment vous utilisez la bibliothèque.
Ligne 186: Ligne 204:
 Voyons comment nous pouvons répliquer notre ancienne esquisse SOS en utilisant la nouvelle bibliothèque: Voyons comment nous pouvons répliquer notre ancienne esquisse SOS en utilisant la nouvelle bibliothèque:
  
 +<code c>
 #include <Morse.h> #include <Morse.h>
  
Ligne 201: Ligne 220:
   retard ( 3000 ) ;   retard ( 3000 ) ;
 } }
-[Obtenir le code]+</code>
  
 Il y a quelques différences avec l'ancienne esquisse (outre le fait qu'une partie du code a été déplacée vers une bibliothèque). Il y a quelques différences avec l'ancienne esquisse (outre le fait qu'une partie du code a été déplacée vers une bibliothèque).
Ligne 209: Ligne 228:
 Deuxièmement, nous créons maintenant une instance de la classe Morse appelée morse : Deuxièmement, nous créons maintenant une instance de la classe Morse appelée morse :
  
 +<code c>
 Morse morse ( 13 ) ; Morse morse ( 13 ) ;
-[Obtenir le code]+</code>
  
 Lorsque cette ligne est exécutée (ce qui se produit en fait même avant la fonction setup () ), le constructeur de la classe Morse sera appelé et passera l'argument que vous avez donné ici (dans ce cas, seulement 13 ). Lorsque cette ligne est exécutée (ce qui se produit en fait même avant la fonction setup () ), le constructeur de la classe Morse sera appelé et passera l'argument que vous avez donné ici (dans ce cas, seulement 13 ).
Ligne 218: Ligne 238:
 Enfin, pour appeler les fonctions dot () et dash () , nous devons les préfixer avec morse. - le nom de l'instance que nous voulons utiliser. Nous pourrions avoir plusieurs instances de la classe Morse, chacune sur sa propre broche stockée dans la variable privée _pin de cette instance. En appelant une fonction sur une instance particulière, nous spécifions les variables d'instance à utiliser lors de cet appel à une fonction. Autrement dit, si nous avions les deux: Enfin, pour appeler les fonctions dot () et dash () , nous devons les préfixer avec morse. - le nom de l'instance que nous voulons utiliser. Nous pourrions avoir plusieurs instances de la classe Morse, chacune sur sa propre broche stockée dans la variable privée _pin de cette instance. En appelant une fonction sur une instance particulière, nous spécifions les variables d'instance à utiliser lors de cet appel à une fonction. Autrement dit, si nous avions les deux:
  
 +<code c>
 Morse morse ( 13 ) ; Morse morse ( 13 ) ;
 Morse morse2 ( 12 ) ; Morse morse2 ( 12 ) ;
-[Obtenir le code]+</code>
  
 puis à l'intérieur d'un appel à morse2.dot () , _pin serait 12. puis à l'intérieur d'un appel à morse2.dot () , _pin serait 12.
Ligne 226: Ligne 247:
 Si vous avez essayé la nouvelle esquisse, vous avez probablement remarqué que rien de notre bibliothèque n'était reconnu par l'environnement et mis en évidence en couleur. Malheureusement, le logiciel Arduino ne peut pas automatiquement déterminer ce que vous avez défini dans votre bibliothèque (même si ce serait une fonctionnalité intéressante à avoir), vous devez donc lui donner un peu d'aide. Pour ce faire, créez un fichier appelé keywords.txt dans le répertoire Morse. Ça devrait ressembler à ça: Si vous avez essayé la nouvelle esquisse, vous avez probablement remarqué que rien de notre bibliothèque n'était reconnu par l'environnement et mis en évidence en couleur. Malheureusement, le logiciel Arduino ne peut pas automatiquement déterminer ce que vous avez défini dans votre bibliothèque (même si ce serait une fonctionnalité intéressante à avoir), vous devez donc lui donner un peu d'aide. Pour ce faire, créez un fichier appelé keywords.txt dans le répertoire Morse. Ça devrait ressembler à ça:
  
 +<code c>
 Morse KEYWORD1 Morse KEYWORD1
 tiret KEYWORD2 tiret KEYWORD2
 dot KEYWORD2 dot KEYWORD2
-[Obtenir le code]+</code>
  
 Chaque ligne porte le nom du mot-clé, suivi d'une tabulation (pas d'espaces), suivi du type de mot-clé. Les classes doivent être KEYWORD1 et sont de couleur orange; les fonctions doivent être KEYWORD2 et seront marron. Vous devrez redémarrer l'environnement Arduino pour qu'il reconnaisse les nouveaux mots-clés. Chaque ligne porte le nom du mot-clé, suivi d'une tabulation (pas d'espaces), suivi du type de mot-clé. Les classes doivent être KEYWORD1 et sont de couleur orange; les fonctions doivent être KEYWORD2 et seront marron. Vous devrez redémarrer l'environnement Arduino pour qu'il reconnaisse les nouveaux mots-clés.
/home/chanteri/www/fablab37110/data/attic/start/arduino/librairies/creation.1607340846.txt.gz · Dernière modification : 2023/01/27 16:08 (modification externe)