Description du projet

La programmation. Peut-être avez-vous déjà programmé un peu…  NON ? Dans ce cas nous allons voir les fondamentaux, commun à beaucoup de langage et en particulier au C et C++.

 

 

Que peut-on faire avec la programmation?

Tout ! En effet Windows est programmé, votre navigateur Web est programmé, vos jeux sont programmés. Nous on ne va pas aller dans cette direction là (programmer un jeu prend des années avec une équipe professionnel) mais on va programmer notre Arduino !

Tout à l’heure je vous ai parlé de langage informatique, mais qu’est-ce que c’est ? Voila une définition bien barbare :

« On appelle « langage informatique » un langage destiné à décrire l’ensemble des actions consécutives qu’un ordinateur doit exécuter. Un langage informatique est ainsi une façon pratique pour nous (humains) de donner des instructions à un ordinateur. »

Nous, on parle plutôt des langages de programmation et il y en a une liste infinie ! Mais pourquoi pas un seul ? Parce que chaque langage à sa spécialité, s’oriente vers tel ou tel autre type de public, par exemple le C++ sert à programmer des applications, le langage Arduino lui sert à programmer notre carte Arduino. Peut-on faire un navigateur WEB avec le langage Arduino ? NON

Enfaite, je vous mens un peu parce qu’il existe un langage qu’on utilise partout et tous ces langages en sont dérivés : le binaire, source de notre monde informatique ! Alors pourquoi ne programmons nous pas en binaire ? Faire un programme qui dit bonjour en binaire est l’un des défis les plus audacieux, il faut écrire des milliers de lignes de code avec exclusivement des 0 et des 1 !

Voilà pourquoi on a mis au point des langages informatiques, qui sont « compilés » avec le « compilateur » afin d’être traduit en binaire, ouf !

Comment programmer?

Programmation

Donc quand on programme on passe par les lignes de code, on programme grâce à l’IDE comme vous dans le tutoriel précédent. Heureusement pour nous, l’IDE colore les mots selon leurs attributs (variable, fonction, instruction…) afin de nous faciliter la lecture de nos programmes. La vie est belle non ?

 

Avant de commencer chaque programme, on commence avec un code de « base », qui met en place ce dont on a (presque) toujours besoin, voici celui du langage des arduinistes que nous allons décortiquer :

 

void setup()   //fonction d'initialisation de la carte //(s’exécute en premier)  {       
 //contenu de l'initialisation ou de la fonction
}
void loop()  /* fonction principale, elle se répète (s’exécute) à l'infini après le setup. Par exemple si vous demandez ici qu’on fasse clignoter une fois une del, celle clignotera en permanence (tant que l’arduino est sous-tensions bien sûr ;))*/
{
//contenu de la fonction principale
}
Vous n’êtes pas obligés d’utiliser la fonction setup mais elle doit être obligatoirement présente dans votre programme ! C’est elle qui demande à votre carte arduino de s’allumer, comme vous allumez votre ordinateur en appuyant sur le bouton adéquat.
Il suffira ensuite d’ajouter des bouts de codes, correspondants à une action bien précise de l’Arduino. Mais il y a une règle à ne pas oublier : à la fin de chaque fonction on met un « ; » afin d’indiquer à notre compilateur que c’est une instruction. Votre programme plantera si vous oubliez un seul « ; » parmi 10 000 de codes, il faut donc être vigilant croyez-en mon expérience c’est très pénible de trifouiller dans tout son code pour comprendre pourquoi cela ne marche pas. Voici donc un exemple d’instruction :

pinMode(2 , OUTPUT);

Les principales instructions

Il existe 5 instructions incontournables pour programmer votre Arduino, je vais les détailler rapidement ici mais surtout n’hésitez pas à vous rendre sur le site officiel Arduino où vous trouverez toutes les fonctions et des exemples. Bien sur nous reviendrons sur ces fonctions dans le prochain chapitre.

Avant d’utiliser un pin dans le programme, il faut mettre dans la fonction setup() cette commande : pinMode(pin , INPUT); avec INPUT si on va s’en servir comme entrée et OUTPUT pour une sortie.

  • La première sert à envoyer du courant positif ou négatif (+5v ou GND) dans un pin de l’Arduino elle s’utilise en indiquant le pin concerné et HIGH pour +5v ou LOW pour GND :

    digitalWrite(pin, HIGH);
  • La deuxième est la même que la première mais permet de faire passer un courant plus ou moins puissant, compris entre 0 et 255 dans le pin concerné :

    analogWrite(pin, 123);

    Cette instruction ne marche que pour les pins marqués pwm
  • Cette troisième instruction permet de savoir le courant circulant au niveau du pin concerné, il retourne une valeur comprise entre 0 et 1023 :

    analogRead(pin);
    Cette instruction ne marche que pour les pins marqués Ax (A1, A2…)
  • La quatrième instruction est la même que la troisième mais en moins précis puisqu’elle retourne HIGH ou LOW :

    digitalRead(pin);
  • La dernière instruction est un peu à part puisqu’elle sert à mettre en pause l’Arduino pendant un temps indiqué, en mllisecondes. Utile pour faire clignoter une led :

    delay(1000);

Les commentaires

Revenez à mon programme un peu plus haut. A votre avis pourquoi j’ai mis « // » devant chaque ligne de commentaire ou mis mon paragraphe entre « /* » et « */ » ?

Tout simplement pour indique au compilateur de ne pas prendre en compte ces lignes dans le programme, elles ne servent donc à rien pour notre carte. Mais à nous, les lignes de code servent beaucoup, et c’est pas pour rien que la plus grande majorité des programmeurs les utilisent commentaires. Cela permet d’annoter une fonction, pourquoi elle est là, ou se retrouver tout simplement !  Si sur votre programme une partie du code bug et vous voulez relancer le programme sans ces lignes de codes, encadrez le code entre « /* » et « */ ». Il ne sera donc pas pris en compte et toujours présent à vos yeux, vous pourrez ainsi le remettre plus tard sans risque de le perdre ou devoir s’embêter à le mettre dans un fichier texte sur votre bureau. Si vous passez votre programme à un autre, cela allégera bien sa compréhension et sa lecture et permet donc de travailler plus efficacement.

Bref les commentaires c’est plus utile qu’on ne peut le penser !

Les variables

Une variable est un nombre (ou un caractère) qui porte un « nom ». Exemple simplifié:

arduino = 1

Et si je demande au programme a quoi est égal « arduino » il me répondra « 1 »!

Le nom de variable accepte quasiment tous les caractères sauf : Les point , les virgules et tous les accents (et les espaces) au lieu d’un espace vous pouvez mettre ca « _ » le ca est un underscore.

Quand on déclare une variable, il faut commencer par indiquer son type, puis son nom suivit de sa valeur éventuellement et terminer par un point virgule ;

int X = 1;

Le typer int est le plus courant, il stoque des nombres entiers. Il y’a aussi les variable de type boolean : elle est egale a TRUE (vrai) ou FALSE (faux). Il existe aussi les float, qui stockent des nombres à virgules (mettre un point pour la virgule!).

boolean X = TRUE;
float angle = 10.54;

Si vous voulez calculer avec vos variables vous pouvez ! exemple

int resultat = 0; // on dit que le résultat vaut 0 pour le moment.
int a = 36; //chiffre A
int b = 12;//Chiffre B
resultat = a+b; //on additione A et B ce qui nous donne le résultat dans la variable resulat.
resultat = a-b; // on soustrait B de A ce qui nous donne le résultat dans la variable resulat.
resultat = a*b;// on multiplie A par B ce qui nous donne le résultat dans la variable resulat.
resultat = a/b; //on divise A par B ce qui nous donne le résultat dans la variable resulat.
resultat = a%b; //ça nous donne le reste d’une division euclidienne dans la variable resultat.

Pour ajouter 1 a une variable on utilise :

variable++; //ligne pour ajouter 1

Pour enlever 1 on utilise :

variable–-;

Les conditions

Imaginez que vous avez une porte et un moteur pour l’ouvrir , avec 2 bouton , un pour entrer , un autre pour sortir.

SI l’on appuie sur le bouton pour entrer ET que la porte est fermée on ouvre la porte on attend 5 secondes puis on la referme…

Vous aurez besoin d’une condition car il y a un SI, on obtient alors :

if (appuibouton == TRUE && porteestfermee == TRUE)
{
// Le programme
}

nous allons décortiquer le code :

if : montre que c’est une condition, on ouvre la parenthèse pour montrer la condition et après on ferme la parenthèse.

appuibouton : est ici une variable qui est relié au bouton (voire chapitre sur les sorties/entrées) et on vérifie qu’elle vaut bien VRAIE grace à == TRUE, on utile le signe && pour combiner deux conditions et on recommence pour l’état de la porte.

Donc si tout ce qui est entre parenthèse est vrai alors le code qui est entre les crochets est exécuté.

En signe comme le && qu’on appelle opérateurs il y a :

&& : ET

|| : OU  (alt + 6)

! : On inverse le résultat

Comme ==  il y a d’autres signes :

== :  X est égal a Y

>= :  X est supérieur ou égal a Y

<= : X est inférieur ou égal a Y

< : X est strictement inférieur a Y

> : X est strictement supérieur a Y

!= : X est différent de Y

Voila le Chapitre 1 de la partie deux du guide pour bien débuter est terminer dans le prochain nous apprendront a utiliser les sorties de l’arduino!

Les bases de la programmation étant une partie délicate, je vous conseil de lire la première partie de openclassroom afin d’apprendre le C++.
La suite des tutos pour bien débuter