Et si on mélangeait les programmes que nous avons créé ?
On va commencer par combiner les programmes Blink led et celui sur l’utilisation du moniteur Série !
Les programmes de base :
Voici les deux programmes sur lesquels on va se baser :
Le premier programme permet de faire clignoter une led et le second permet d’effectuer une tâche en fonction du texte envoyé, on pourrait donc essayer de faire un programme permettant de changer l’état de la led en fonction du texte envoyé.
Créer un programme à partir de ces programmes :
Pour combiner deux programmes, il vous faut procéder étape par étape, la première étant de vérifier que les variables utilisées dans les programmes ne sont pas les mêmes. Dans notre cas il n’y en a pas donc on va débuter le programme tout en séparant bien ce qui concerne la led et ce qui concerne la communication Série :
Puis on remplit le setup() :
Et enfin on s’attaque au coeur du programme. Première étape, on vérifie qu’une donnée est disponible dans l’interface Série :
Et si oui on effectue les actions souhaitées :
Une toute fois toutes les parties assemblées on obtient ce programme :
Maintenant que le programme est terminé, vérifiez que rien ne court-circuite votre carte, branchez-la à votre PC et téléversez le programme. Une fois ceci fait, ouvrez le moniteur série, il vous permettra de commander la led grâce aux commandes on et off comme ceci :
Si ce n’est pas le cas, vérifiez bien qu’en bas à droite, le mode est « Pas de fin de ligne ».
Vous voici maintenant capable de faire réagir votre carte à des messages envoyés par l’interface Série !
Maintenant si on incluait une librairie aussi pour corser la chose ?
C’est parti !
Vous vous rappelez du dernier code du chapitre précédent avec la table d’ordonnancement ? Et bien on va le combiner avec le code qui est juste au dessus !
Voici donc un autre exemple de codes combinés, avec cette fois incluant une librairie, la librairie ScheduleTable !
Si vous êtes arrivés jusque là Bravo ! N’hésitez pas à combiner d’autres parties de code vu dans l’ouvrage On apprend jamais mieux qu’en expérimentant ! Donc allez y essayez !
Pour ceux qui le souhaitent on va finir ce tome par un petit récapitulatif de tout ce qu’on a vu dans cet ouvrage !
<- Retourner à la page précédente | Passer à la page suivante ->
Bonsoir,
les comparaisons de String n’ont pas l’air de fonctionner ici.
Malgre le fait que je tape bien on et off (et que c’et affiche dans la console), j’ai:
on -> Commande inconnue
(ou off).
Est-ce que c’est bien la methode ?
Merci
Bonjour,
Pouvez vous vérifier que le moniteur série est bien paramétré pour n’ajouter aucun caractère spécial en fin de ligne.
Le bouton en bas à droite à côté de réglage du baud rate doit indiquer « Pas de fin de ligne » .
Bonjour,
Auriez-vous l’amabilité de m’indiquer pour quelle raison ne déclare-t-on pas et n’initialise-t-on pas les variables dans le Setup?
Merci
Cordialement J-P
Bonjour,
En C (language Arduino) Si une variable est déclarée dans une fonction elle n’existe et n’est utilisable que dans cette fonction. De plus quand on quitte la fonction dans laquelle la variable est définie alors elle est « détruite ».
C’est ce qu’on appel la portée d’une variable.
Le setup, c’est une fonction. On peut y déclarer une variable ( exemple : « int number= 10; » mais si on le fait, cette variable ne sera utilisable que dans le setup…
Du coup souvent une astuce c’est de définir la variable qu’on veut pouvoir utiliser partout, en global, c’est à dire avant même le setup, en dehors de toute fonction.
Ainsi la variable pourra être utilisé partout, aussi bien dans le setup, que dans la fonction main, et dans toute autre fonction.
Cependant il n’est pas recommander d’abuser des variables globales, une ou deux ça va, mais si vous en avez trop ça peut rendre le code plus compliqué à lire … Il est généralement recommandé de créer des variables au plus bas niveau où on en a besoin… Ainsi le code est généralement mieux organisé et plus facile à lire.
Autre possibilité si on veut conserver la valeur contenu dans une variable entre deux appels d’une fonction, au lieu de faire une variable globale uniquement pour cette raison alors il existe les variables de type « static ». C’est une variable qui s’initialisera une seule fois, la première fois où elle est appelée et elle ne sera pas détruite quand on sort de la fonction.
Exemple : » static int number = 0; » qu’on peut mettre dans notre loop, number sera alors initialisé à 0 une seule fois… en faisant « number++; » dans le loop la variable number contiendra le nombre de fois ou la loop a été exécuté depuis que votre arduino est allumée…