Arduino | Chenillard de Leds - Fonctions

Wims

Premium
Inscription
27 Août 2014
Messages
1 805
Réactions
418
Points
15 911
Bonsoir le forum ! ::):

Dans ce tutoriel dédié à l'Arduino (C/C++), je vais poffiner ce tutoriel.
Donc si vous ne l'avez pas suivi, il est fort possible que vous ne comprenez pas ce que je vais faire ici.

Ce tutoriel va être assez court, car c'est juste une petite amélioration, donc au niveau des composants c'est exactement pareil.

Mais nous allons tout de même refaire le code depuis le début, mais avant je vous rappel le montage :


https://reality-gaming.fr/proxy.php?image=http%3A%2F%2Fwiki.labaixbidouille.com%2Fimages%2F7%2F73%2F4_LED_Fritzing.png&hash=04306d2f9e040fe0e1fe271c0198b0e6

Comme dans l'autre tutoriel, nous allons utiliser seulement 3 Leds, pour ma part :

LED Rouge = PIN 13
LED Blanche = PIN 12
LED Bleue = PIN 11

Avant de nous attaquer à la partie "setup", nous aller enumérer les couleurs de chaque LEDs comme ceci :
Code:
enum { ROUGE, BLANC, BLEUE };

Maintenant, nous allons dire les pins sur les quelles sont branchées nos Leds.

Nous allons donc mettre tous ça dans la fonction "setup" :
Code:
void setup() {
    pinMode(13, OUTPUT);
    pinMode(12, OUTPUT);
    pinMode(11, OUTPUT);
}

Nous en avons déjà terminer pour la partie "setup".
Maintenant nous allons créer notre fonction !

Avant de commencer, à quoi sert une fonction?

Une fonction sert à ne pas nous répéter (résumé très bref :nerveux2:).
Dans notre chenillard nous allons écrire beaucoup de fois la commande pour allumer et éteindre les LEDS, donc au lieu d'écrire "Allumer Led, attendre 0.5 secondes, éteindre LED" pleins de fois, nous allons l'écrire qu'une fois.
Et par la suite nous aurons plus qu'a appeler cette fonction.

Pour créer une fonction rien de plus simple ! :
Code:
void votreFonction(const byte laquelle) {
    // contenu
}

Vous noterez le "const byte laquelle" expliquez ici :
Notez la déclaration de l’argument : "const byte laquelle". Cela signifie que l’argument "laquelle" est constant à l’intérieur de la fonction, sa valeur n’y sera donc pas modifiable. "byte" est le type.

Pour ma part je vais appeler la fonction "startLed".
En premier lieu, on va éteindre toutes les LEDs (ce sera l'état par défaut des LEDs si la fonction n'est pas appelé).
Code:
void startLed(const byte laquelle) {
    // LEDs éteintes si non appelées
    digitalWrite(13, LOW);
    digitalWrite(12, LOW);
    digitalWrite(11, LOW);
}

Voilà a quoi ressemble l'ensemble du programme pour le moment :
devenv_2017-07-18_23-52-18.png


Note: Les "//" sont des commentaires, ils ne servent qu'à expliquer à l'utilisateur ce que fait le code pour simplifier la lecture de celui-ci. Le programme en lui même ne lis pas les commentaires.

Maintenant nous allons utiliser une instruction conditionnelle nommée "switch case".

En effet, l'argument "laquelle" (Qui signifie: "laquelle de couleur") va nous permettre d'écrire ce code :
Code:
votreFonction(COULEUR);

Pour pouvoir allumer la couleur que l'on souhaite.

Commençons donc par appeler l'argument "laquelle" dans notre switch :
Code:
switch (laquelle) {
// case
}

A l'intérieur du switch, nous allons déterminer les "cases" par les couleurs de chaque LEDs.
Donc il y aura 3 cases, une nommée "ROUGE", une autre "BLANC" et la dernière "BLEUE".

Et pour chaque cases, nous allons taper le code qu'elle devra exécuter.
Rappeler vous, au début du tutoriel je vous ai indiqué les PINS de chaque LEDs, par exemple, je sais que la LED Rouge se situe sur la PIN 13.

Je vais donc dire à la "case ROUGE" d'allumer la PIN 13 :
Code:
case ROUGE: digitalWrite(13, HIGH); break;

Idem pour les autres LEDs.
Notez que pour dire au programme qu'une "case" est fini, il faut mettre "break;" à la fin.

Voici donc le résultat :
Code:
switch (laquelle) {
        case ROUGE: digitalWrite(13, HIGH); break;
        case BLANC: digitalWrite(12, HIGH); break;
        case BLEUE: digitalWrite(11, HIGH); break;
    }

Et voici à quoi ressemble notre code pour le moment :
devenv_2017-07-19_00-10-20.png

Et s'en est fini de notre fonction, nous allons désormais passer à la "loop" pour créer notre chenillard !

Dans cette partie, je n'ai pas grand chose à vous expliquer, je vous laisse voir le résultat :
Code:
void loop() {
    startLed(ROUGE);
    delay(500);
    startLed(BLANC);
    delay(500);
    startLed(BLEUE);
    delay(500);
}

devenv_2017-07-19_00-13-31.png


Vous pouvez remarqué que comparé au tutoriel de base, le code est beaucoup plus propre, et court !

Vu sous cette forme on peut se dire que faire ce type de code c'est se compliquer la vie pour pas grand chose, mais sur des programmes beaucoup plus imposants, l'utilisations de fonctions est plus que recommandés pour éviter de ce répéter et pour avoir un code plus lisible !
 
Dernière édition:

Xyna SEC

Ancien staff
Inscription
25 Octobre 2016
Messages
4 285
Réactions
3 160
Points
14 388
Peut être que je comprend absolument rien en tout ce qui est informatique mais rien que la présentation et les images me font rêver. :loving:
 

WhiiTe'

Administateur
Ancien staff
Inscription
22 Octobre 2011
Messages
14 706
Réactions
8 492
Points
32 425
Bon tuto pour commencer, perso je trouve que le code est bien trop "complexe" pour un simple clignotement de LED :p
 

Wims

Premium
Inscription
27 Août 2014
Messages
1 805
Réactions
418
Points
15 911
Bon tuto pour commencer, perso je trouve que le code est bien trop "complexe" pour un simple clignotement de LED :p
Je te laisse lire la dernière phrase du tutoriel :p
Sachant que le tutoriel de base, sans l'utilisation de fonctions est disponible ici
 

WhiiTe'

Administateur
Ancien staff
Inscription
22 Octobre 2011
Messages
14 706
Réactions
8 492
Points
32 425
Je te laisse lire la dernière phrase du tutoriel :p
Sachant que le tutoriel de base, sans l'utilisation de fonctions est disponible ici

Ouaip j'ai lu t'en fais pas :p Mais je pense que tu aurais pu prendre un exemple différent, plus concret avec un code plus complexe comme tu as fait :)
 
Haut