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
(déclarer une fonction)
m (style)
 
(4 intermediate revisions by 2 users not shown)
Line 1: Line 1:
Voici un ensemble succinct d'explications  sur le langage C++ appliqué à l'Arduino. J'étofferai cette page au fur et à mesure des ateliers.
+
Voici un ensemble succinct d'explications  sur le langage C++ appliqué à l'[http://arduino.cc/fr/ Arduino]. J'étofferai cette page au fur et à mesure des ateliers.
 +
 
 +
{{fr}} Référence officielle d’Arduino ⇒ http://arduino.cc/fr/Main/Reference
  
 
== Structures de base ==
 
== Structures de base ==
  
un programme 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.
 
  }
 
  }
 
   
 
   
 
  void loop() {
 
  void loop() {
       // 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 ===
+
=== Commentaires ===
  
les commentaires servent à mieux comprendre ce que fait un programme :
+
Les commentaires servent à mieux comprendre ce que fait un programme :
  
  // ceci est un commentaire
+
<syntaxhighlight lang="cpp">
  /* ceci est un autre  
+
  // Ceci est un commentaire.
      commentaire, mais sur plusieurs lignes */
+
  /* Ceci est un autre commentaire,
+
    mais sur plusieurs lignes */
=== variables ===
+
</syntaxhighlight>
 +
 
 +
=== 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 30: Line 37:
 
  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)
+
Là, on récupère une valeur sur la ''pin'' (ou ''broche'') analogique 0 et on l'écrit sur le port série (voir ci-dessous pour les fonctions).
  
=== types ===
+
=== 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 :
+
Les types correspondent au nombre de cases mémoires utilisés pour stocker une valeur. Il y a plusieurs types définis par le langage : '''<code>char</code>''', '''<code>int</code>''', '''<code>long</code>''', '''<code>float</code>''' et '''<code>double</code>'''.
  
char, int, float, double
+
* '''<code>char</code>''' prend une case mémoire (1 octet) ;
 +
* '''<code>int</code>''' prend deux cases mémoire (2 octets) ;
 +
* '''<code>long</code>''' (4 octets) ;
 +
* '''<code>float</code>''' prend une case mémoire (4 octets) ;
 +
* '''<code>double</code>''' prend deux cases mémoire (pour Arduino, c'est identique au '''<code>float</code>''').
  
* char prend une case mémoire  
+
Le type a un deuxième rôle, celui de décrire ce qu'on met dans la case mémoire. Une variable de type '''<code>char</code>''', lorsqu'elle sera utilisée par la fonction <code>Serial.print()</code>, apparaîtra comme un caractère ASCII ; '''<code>float</code>''' et '''<code>double</code>''' dans les calculs seront interprétés comme des chiffres à virgule (on dit « à virgule flottante »).
* int prend deux cases mémoire
+
* float prend une case mémoire
+
* double prend deux cases mémoire
+
  
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 ===
  
=== fonctions ===
+
Les fonctions servent à regrouper une suite d'instructions sous un seul nom pour toutes les exécuter en ne les appelant qu'une seule fois. Cela peut servir soit à éclaircir le code source pour le rendre plus lisible, soit pour effectuer plusieurs fois la même suite d'actions à différents endroits ou moments.
  
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 :
 
+
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.
  
 
== Fonctionnalités de base ==
 
== Fonctionnalités de base ==
Line 72: Line 85:
 
  [http://arduino.cc/en/Reference/pinMode pinMode(int PIN, int value);]
 
  [http://arduino.cc/en/Reference/pinMode pinMode(int PIN, int value);]
 
* PIN : numéro de pin à modifier (0 à 13)
 
* PIN : numéro de pin à modifier (0 à 13)
* value: INPUT ou OUTPUT
+
* value : INPUT ou OUTPUT
passe la pin « digital » de l'arduino « PIN » dans un mode de lecture ou d'écriture.
+
↳ Passe la pin « numérique » de l'Arduino « PIN » dans un mode de lecture ou d'écriture.
 +
 
  
 
  [http://arduino.cc/en/Reference/digitalWrite digitalWrite(int PIN, int value);]
 
  [http://arduino.cc/en/Reference/digitalWrite digitalWrite(int PIN, int value);]
 
* PIN : numéro de pin à modifier (0 à 13)
 
* PIN : numéro de pin à modifier (0 à 13)
 
* value: LOW ou HIGH
 
* value: LOW ou HIGH
si la PIN est en mode OUTPUT, écrit dessus une valeur « 1 » ou « 0 ».
+
↳ Si la PIN est en mode OUTPUT, écrit dessus une valeur « 1 » ou « 0 ».
 +
 
  
 
  int [http://arduino.cc/en/Reference/digitalRead digitalRead(int PIN);]
 
  int [http://arduino.cc/en/Reference/digitalRead digitalRead(int PIN);]
 
* PIN : numéro de pin à lire (0 à 13)
 
* PIN : numéro de pin à lire (0 à 13)
si la PIN est en mode INPUT, retourne la valeur lue sur la PIN.
+
↳ Si la PIN est en mode INPUT, retourne la valeur lue sur la PIN.
 +
 
  
 
  int [http://arduino.cc/en/Reference/analogRead analogRead(int PIN);]
 
  int [http://arduino.cc/en/Reference/analogRead analogRead(int PIN);]
 
* PIN : numéro de la pin à lire (0 à 5)
 
* 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).
+
↳ Retourne une valeur de 0 à 1023 lue sur la PIN, correspondant à une valeur comprise entre 0 et 5 volts. Chaque pas correspond donc à 0.0049 V (4.9 mV).
 +
 
  
 
  [http://arduino.cc/en/Serial/Begin Serial.begin(9600);]
 
  [http://arduino.cc/en/Serial/Begin Serial.begin(9600);]
démarre la connexion série via le port USB
+
↳ Démarre la connexion série via le port USB.
 +
 
  
 
  [http://arduino.cc/en/Serial/println Serial.println(val);]
 
  [http://arduino.cc/en/Serial/println Serial.println(val);]
écrit ce qui est contenu dans « val » sur le terminal série sur l'ordinateur.
+
↳ Écrit ce qui est contenu dans <code>val</code> sur le terminal série sur l'ordinateur.
par exemple :
+
 
 +
Par exemple :
 +
 
 
  Serial.println(analogRead(2));
 
  Serial.println(analogRead(2));
 +
  
 
  [http://arduino.cc/en/Serial/print Serial.print(val)]
 
  [http://arduino.cc/en/Serial/print Serial.print(val)]
identique à Serial.println, mais écrit val sur la même ligne (pas de retour chariot).
+
↳ Identique à <code>Serial.println</code>, mais écrit <code>val</code> sur la même ligne (pas de retour chariot).
 +
 
 +
 
 +
[[Category:Arduino]]

Latest revision as of 20:36, 16 July 2013

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

(fr) Référence officielle d’Arduino ⇒ http://arduino.cc/fr/Main/Reference

Structures de base

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

Commentaires

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);
 /* ... */

Là, on récupère une valeur sur la pin (ou broche) analogique 0 et on l'écrit sur le port série (voir ci-dessous pour les fonctions).

Types

Les types correspondent au nombre de cases mémoires utilisés pour stocker une valeur. Il y a plusieurs types définis par le langage : char, int, long, float et 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, c'est identique au float).

Le type a un deuxième rôle, celui 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 ne les appelant qu'une seule fois. Cela peut servir soit à éclaircir le code source pour le rendre plus lisible, soit pour effectuer plusieurs fois la même suite d'actions à différents endroits ou 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 « numérique » 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.0049 V (4.9 mV).


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