Pour éditer le wiki, il faut demander un compte à un Lapin !
Difference between revisions of "Introduction au CPP pour Arduino"
Luctussier (Talk | contribs) |
m (style) |
||
(3 intermediate revisions by one other user 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 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. |
} | } | ||
void loop() { | void loop() { | ||
− | // | + | // Ici, on effectue les traitements, donc on lit ce qui se passe et on réagit aux évènements. |
} | } | ||
+ | </syntaxhighlight> | ||
− | === | + | === Commentaires === |
− | + | Les commentaires servent à mieux comprendre ce que fait un programme : | |
− | // | + | <syntaxhighlight lang="cpp"> |
− | /* | + | // Ceci est un commentaire. |
− | + | /* Ceci est un autre commentaire, | |
− | + | mais sur plusieurs lignes */ | |
− | === | + | </syntaxhighlight> |
+ | |||
+ | === Variables === | ||
− | + | Une variable sert à stocker une valeur pour la réutiliser plus tard : | |
+ | <syntaxhighlight lang="cpp"> | ||
/* ... */ | /* ... */ | ||
int value; | int value; | ||
Line 31: | Line 37: | ||
Serial.println(value); | Serial.println(value); | ||
/* ... */ | /* ... */ | ||
+ | </syntaxhighlight> | ||
− | + | 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 : '''<code>char</code>''', '''<code>int</code>''', '''<code>long</code>''', '''<code>float</code>''' et '''<code>double</code>'''. | |
− | + | * '''<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>'''). | ||
− | + | 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 »). | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | === 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 : | |
− | + | ||
− | Une fonction prend des valeurs en paramètre et retourne une valeur en sortie | + | |
+ | <syntaxhighlight lang="cpp"> | ||
int maFonction(int valeur1, int valeur2); | int maFonction(int valeur1, int valeur2); | ||
+ | </syntaxhighlight> | ||
− | ==== | + | ==== Utiliser des fonctions ==== |
− | + | 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 ==== |
+ | <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. | |
== Fonctionnalités de base == | == Fonctionnalités de base == | ||
Line 74: | 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 « 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 ». | |
+ | |||
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. | |
+ | |||
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.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. | |
+ | |||
[http://arduino.cc/en/Serial/println Serial.println(val);] | [http://arduino.cc/en/Serial/println Serial.println(val);] | ||
− | + | ↳ Écrit ce qui est contenu dans <code>val</code> sur le terminal série sur l'ordinateur. | |
− | + | ||
+ | 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 à <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
Contents
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 aufloat
).
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).