Pour éditer le wiki, il faut demander un compte à un Lapin !

Difference between revisions of "Introduction au CPP pour Arduino"

From Le L∞p's Wiki
Jump to: navigation, search
m (testing Gesi extension: <syntaxhighlight lang="cpp">)
Line 5: Line 5:
  
 
Un programme minimal Arduino ressemble à ça:
 
Un programme minimal Arduino ressemble à ça:
 
+
<syntaxhighlight lang="cpp">
 
  void setup() {
 
  void setup() {
 
       // ici on prépare le programme (donc tout ce qui doit être exécuté une seule fois)
 
       // ici on prépare le programme (donc tout ce qui doit être exécuté une seule fois)
Line 13: Line 13:
 
       // ici on effectue les traitements (donc on lit ce qui se passe, et on réagit aux évènements)
 
       // ici on effectue les traitements (donc on lit ce qui se passe, et on réagit aux évènements)
 
  }
 
  }
 +
</syntaxhighlight>
  
 
=== commentaire ===
 
=== commentaire ===
  
 
les commentaires servent à mieux comprendre ce que fait un programme :
 
les commentaires servent à mieux comprendre ce que fait un programme :
 
+
<syntaxhighlight lang="cpp">
 
  // ceci est un commentaire
 
  // ceci est un commentaire
 
  /* ceci est un autre  
 
  /* ceci est un autre  
 
       commentaire, mais sur plusieurs lignes */
 
       commentaire, mais sur plusieurs lignes */
+
</syntaxhighlight>
 +
 
 
=== variables ===
 
=== variables ===
  
 
une variable sert à stocker une valeur pour la réutiliser plus tard :
 
une variable sert à stocker une valeur pour la réutiliser plus tard :
 
+
<syntaxhighlight lang="cpp">
 
  /* ... */
 
  /* ... */
 
  int value;
 
  int value;
Line 31: Line 33:
 
  Serial.println(value);
 
  Serial.println(value);
 
  /* ... */
 
  /* ... */
 +
</syntaxhighlight>
  
 
ici on récupère une valeur sur la PIN analogique 0, et on l'écrit sur le port série (cf ci-dessous pour les fonctions)
 
ici on récupère une valeur sur la PIN analogique 0, et on l'écrit sur le port série (cf ci-dessous pour les fonctions)
Line 37: Line 40:
  
 
les types correspondent aux nombres de cases mémoires utilisés pour stocker une valeur. Il y a plusieurs types défini par le langage :
 
les types correspondent aux nombres de cases mémoires utilisés pour stocker une valeur. Il y a plusieurs types défini par le langage :
 
+
<syntaxhighlight lang="cpp">
 
  char, int, long, float, double
 
  char, int, long, float, double
 +
</syntaxhighlight>
  
 
* char prend une case mémoire (1 octet)  
 
* char prend une case mémoire (1 octet)  
Line 53: Line 57:
  
 
Une fonction prend des valeurs en paramètre et retourne une valeur en sortie, cela se note :
 
Une fonction prend des valeurs en paramètre et retourne une valeur en sortie, cela se note :
 
+
<syntaxhighlight lang="cpp">
 
  int maFonction(int valeur1, int valeur2);
 
  int maFonction(int valeur1, int valeur2);
 +
</syntaxhighlight>
  
 
==== utiliser des fonctions ====
 
==== utiliser des fonctions ====
  
 
la fonction « maFonction » peut s'utiliser comme suit :
 
la fonction « maFonction » peut s'utiliser comme suit :
 
+
<syntaxhighlight lang="cpp">
 
  Serial.println(maFonction(analogRead(0), analogRead(1)));
 
  Serial.println(maFonction(analogRead(0), analogRead(1)));
 +
</syntaxhighlight>
  
 
==== définir une fonction ====
 
==== définir une fonction ====
 
+
<syntaxhighlight lang="cpp">
 
  int add(int i, int j) {
 
  int add(int i, int j) {
 
     return i+j;
 
     return i+j;
 
  }
 
  }
 +
</syntaxhighlight>
  
 
cette fonction prend deux paramètre, i et j, et retourne la somme des deux paramètres.
 
cette fonction prend deux paramètre, i et j, et retourne la somme des deux paramètres.

Revision as of 20:21, 17 March 2011

Voici un ensemble succinct d'explications sur le langage C++ appliqué à l'Arduino. J'étofferai cette page au fur et à mesure des ateliers.

Structures de base

La référence officielle d’Arduino (en français)

Un programme minimal Arduino ressemble à ça:

 void setup() {
      // ici on prépare le programme (donc tout ce qui doit être exécuté une seule fois)
 }
 
 void loop() {
      // ici on effectue les traitements (donc on lit ce qui se passe, et on réagit aux évènements)
 }

commentaire

les commentaires servent à mieux comprendre ce que fait un programme :

 // ceci est un commentaire
 /* ceci est un autre 
      commentaire, mais sur plusieurs lignes */

variables

une variable sert à stocker une valeur pour la réutiliser plus tard :

 /* ... */
 int value;
 value = analogRead(0);
 Serial.println(value);
 /* ... */

ici on récupère une valeur sur la PIN analogique 0, et on l'écrit sur le port série (cf ci-dessous pour les fonctions)

types

les types correspondent aux nombres de cases mémoires utilisés pour stocker une valeur. Il y a plusieurs types défini par le langage :

 char, int, long, float, double
  • char prend une case mémoire (1 octet)
  • int prend deux cases mémoire (2 octets)
  • long (4 octets)
  • float prend une case mémoire (4 octets)
  • double prend deux cases mémoire (pour Arduino, identique au 'float')

le type a un deuxième rôle, c'est de décrire ce qu'on met dans la case mémoire. Une variable de type « char », lorsqu'elle sera utilisée par la fonction Serial.print(), apparaîtra comme un caractère ASCII. float et double dans les calculs seront interprétés comme des chiffres à virgule (on dit à virgule flottante).

fonctions

les fonctions servent à regrouper une suite d'instructions sous un seul nom, pour toutes les exécuter en les appelant qu'une seule fois. Cela peut servir soit à éclaircir et rendre le programme plus lisible, soit pour effectuer plusieurs fois la même suite d'actions à différents endroits/moments.

Une fonction prend des valeurs en paramètre et retourne une valeur en sortie, cela se note :

 int maFonction(int valeur1, int valeur2);

utiliser des fonctions

la fonction « maFonction » peut s'utiliser comme suit :

 Serial.println(maFonction(analogRead(0), analogRead(1)));

définir une fonction

 int add(int i, int j) {
     return i+j;
 }

cette fonction prend deux paramètre, i et j, et retourne la somme des deux paramètres.

Fonctionnalités de base

pinMode(int PIN, int value);
  • PIN : numéro de pin à modifier (0 à 13)
  • value: INPUT ou OUTPUT

passe la pin « digital » de l'arduino « PIN » dans un mode de lecture ou d'écriture.

digitalWrite(int PIN, int value);
  • PIN : numéro de pin à modifier (0 à 13)
  • value: LOW ou HIGH

si la PIN est en mode OUTPUT, écrit dessus une valeur « 1 » ou « 0 ».

int digitalRead(int PIN);
  • PIN : numéro de pin à lire (0 à 13)

si la PIN est en mode INPUT, retourne la valeur lue sur la PIN.

int analogRead(int PIN);
  • PIN : numéro de la pin à lire (0 à 5)

retourne une valeur de 0 à 1023 lue sur la PIN, correspondant à une valeur comprise entre 0 et 5 volts. Chaque pas correspond donc à 0.0049V (4.9mV).

Serial.begin(9600);

démarre la connexion série via le port USB

Serial.println(val);

écrit ce qui est contenu dans « val » sur le terminal série sur l'ordinateur. par exemple :

Serial.println(analogRead(2));
Serial.print(val)

identique à Serial.println, mais écrit val sur la même ligne (pas de retour chariot).