Les lignes de code des programmes Arduino 1

par | Cartes arduino

Apprendre la programmation en écrivant des lignes de code au lieu de déplacer des blocs permet de faire des choses plus complexes, donne plus de possibilité. C’est comme cela que programme les informaticiens professionnels.

Par contre démarrer directement la programmation avec des codes est un peu compliqué et demande beaucoup de motivation, il faut apprendre une syntaxe spécifique au langage de programmation afin de pouvoir programmer des raisonnement logiques.

Apprendre progressivement en comparant les blocs assemblés dans le logiciel Mbloc et le code arduino généré est une solution plus facile.

 I ) Le code minimal

Avec Arduino, un code minimal  permet de diviser le programme en deux grosses parties.

a ) Première partie initialisation

L’initialisation c’est quand on démarre un appareil, les paramètres se mettent à la bonne valeur pour que la suite se déroule bien.
L’initialisation se déroule une seule fois au démarrage.
On mettra donc dans cette partie tout ce qui doit être fait une seule fois durant le fonctionnement du programme ( ce qui n’est pas dans une boucle répéter indéfiniment )

void-setup

b ) Deuxième partie, programme principal

prog-principal

C’est dans cette deuxième partie qu’on met les lignes de code de ce qui doit fonctionner en permanence grâce à une boucle répéter indéfiniment.

 

 c ) Le contenu de la partie initialisation

explication-pinmode

pinmode

 c1 ) Le paramétrage des entrées sorties

Dans le programme principale si vous utilisez des symboles en forme de losange avec à l’intérieur un numéro de broche, cela veux dire que ce numéro de broche doit être paramétré comme une entrée.
Le numéro de broche dans le bloc indiquant une action doit être paramétré comme sortie

Il faut à l’initialisation indiquer quelles broches seront utilisées comme entrée et lesquelles seront en sortie.

 c2 ) Les réglages initiaux

Vous allez voir dans la suite que dans la partie initialisation ont peut mettre aussi des réglages valables en permanences tant que le programme fonctionne comme :
variable-globaleDes variables globales : dans scratch c’est indiqué pour tous les objets

Des constantes : ce sont des valeurs qui contrairement aux variables ne changes pas durant toute l’exécution du programme.

Nous allons voir la déclaration des variables et constantes un peu plus loin.

 

II ) La syntaxe des lignes de code

La syntaxe est la partie de la  linguistique (science du langage) qui étudie la façon dont les mots se combinent pour former des phrases ou des énoncés dans une langue.

a ) Écrire une fonction dans le code arduino

Pourquoi organiser un programme informatique en fonction ?

a1 ) Première raison (la clareté du programme) :

Lorsqu’on crée un programme un peu élaboré, il est nécessaire de décomposer les tâches à effectuer en plusieurs tâches simples, pour y voir plus clair et structurer le programme.

Par exemple, un logiciel de traitement de texte a de nombreuses fonctionnalités :

Traitement-de-texte_w720h415

  • afficher le texte tapé à l’écran,
  • mettre du texte en couleur, gras, souligné…
  • imprimer le résultat,
  • vérifier l’orthographe

 

En informatique, une fonction est une séquence d’instructions qui réalisent une tâche.
Ainsi, un programmeur peut créer ses propres fonctions, ou (plus souvent) réutiliser les fonctions créées par d’autres programmeurs.

a2 ) Deuxième raison (diminuer le nombre de lignes de code)

Dans un programme informatique il y a souvent des choses répétitives

oui-non-annulerDans un programme windows, il y a la boite de dialogue (Oui Non Annuler) qu’on retrouve plusieurs fois.

Si cette boite de dialogue doit s’afficher dans 14 cas, on va pas programmer 14 fois cette boite de dialogue. C’est une fonction qui sera programmé une seule fois et sera exécuté plusieurs fois a partie du programme principal.

Vous pouvez considérer que la fonction est un sous-programme, exécuté à partir d’un programme principal.

fonction

argument

Dans Scratch, on ajoute des arguments après avoir cliqué sur « Ajouter blocs », puis « Créer un bloc ».

Il suffit de faire apparaitre le menu « Options »

Résumé concernant la syntaxe du codage Arduino pour les fonctions (tache à effectuer )

  • Les instructions de la fonctions ( détections, actions … ) sont misent entre accolades.
  • Après le nom de la fonction il y a des parenthèses
    qui peuvent être vides ou avoir à l’intérieur des arguments et paramètres
  • Avant le nom de la fonction il y a le type de valeur obtenue après l’exécution de la fonction

 

Concernant les fonctions du code Arduino minimal

code-minimum

Dans le code minimum arduino vu précédemment
il y a deux fonctions, leurs nom est
setup
loop

Les instructions de ces fonctions seront entre les accolades

Void qui signifie en Francais « vide » indique qu’il n’y aura pas de valeur obtenu après l’exécution de la fonction qui est d’ailleurs vide d’argument, il n’y en a pas entre les parenthèses.

 

 

b ) Ecrire des instructions

instruction

Les instructions lorsqu’elles sont à l’intérieur d’une boucle se placent à l’intérieur des accolades.    { instructions }

Dans cet exemple consistant à faire clignoter une DEL il y a une suite de 4 instructions

  • La borne numérique 2 reçoit de l’électricité, elle s’allume;

  • l’instruction delay(1000) fait « patienter » le programme 1000 ms, soit une seconde, durant cette seconde la LED reste allumée;

  • La borne numérique 2 ne reçoit plus d’électricité, elle s’éteint

  • le programme patiente encore 1000 ms soit une seconde, pendant cette seconde la LED reste éteinte.

A la fin de chaque instruction on doit mettre un ; pour indiquer qu’on passe à l’instruction suivante.

 

III ) Les constantes et variables

notion-de-variable

La notion de variable et constante est utilisée en mathématiques pas seulement en programmation.

La valeur d’une variable change, elle évolue en mathématique on nomme la variable par une lettre  x ou y par exemple.

Une constante étant un nombre qui ne change pas on peut directement la nommer par un nombre.

 

 

En programmation informatique pour que le programme soit plus lisible on va plutôt nommer les variables et constantes avec des mots explicites.

branchement-del-arduino

Par exemple lorsque le programme pilote une carte arduino si ont indique les instructions avec les numéros des broches ce n’est pas très parlant, ou il faut avoir en permanence une correspondance entre les numéros de broches et les noms des éléments branchés dessus.

Le plus simple est d’affecter des constantes à ces broches.

structure-programme-arduino

Atttention ! la déclaration des constantes et variables globales se situe au dessus de la partie initialisation « Setup« , dans une partie « En tête déclarative« 

a ) Les constantes

variable-constante

Par défaut une affectation ( LED affecté à la broche 2 ) est considérée comme une variable.
Si on veux une constante il faut le préciser en mettant const  devant

Pourquoi déclarer des constantes alors que je pourrais déclarer des variables et juste ne pas les modifier dans mon programme ?

Vous pouvez. Seulement, il s’agit d’une question de sécurité et d’optimisation. Pour faire simple, lorsque vous indiquez à l’Arduino ou un ordinateur en général que vous utilisez une constante, c’est-à-dire que votre donnée ne va pas subir de modification au cours du programme, alors, le compilateur peut optimiser votre code et le rendre plus performant, plus rapide. Ceci est perceptible pour les gros programmes complexes, mais séparer les constantes des variables est une bonne habitude à prendre.

Par convention on nomme les constantes avec des majuscules

b ) Les variables
const int LDR = A0;    // Donne un nom à la broche A0
const int LED = 2;      // Donne un nom à la broche 2
int valeurcapteur = 0;  // valeur de la variable stocké au démarrage du programme

void setup() {
    pinMode(LED, OUTPUT); // declare la broche de la LED en sortie:
    pinMode(LDR, INPUT); // declare la broche de la LDR en entrée:
}

void loop() {
  valeurcapteur = analogRead(LDR); // met dans la variable le résultat de la fonction analogRead:
  digitalWrite(LED, HIGH); // allumer la LED
  // laisse la LED allumé de la valeur de la variable <sensorValue> en milliseconds:
  delay(valeurcapteur);
  digitalWrite(LED, LOW); // éteindre la LED
  // laisse la LED éteinte de la valeur de la variable <sensorValue> en milliseconds:
  delay(valeurcapteur);
}

Dans le programme ci-dessus la variable « valeurcapteur » qui au départ du programme est a « 0 » est ensuite modifié en permanence dans la boucle par le résultat de la fonction analogRead

variable-scratch

De la même façon qu’avec scratch il y a des variables pour tous les lutions et un lutin uniquement.

Dans la programmation arduino il y a
Les variables globales : utilisables dans tout le programme
Elle se déclares dans la partie déclarative
Les variables locales : elles sont déclarée à l’intérieur d’une fonction

 

c ) Les types de variables

boites-variables

Les variables sont des boites dans lesquelles on peut mettre des valeurs. Ces valeurs peuvent être modifiées au cours de l’exécution du programme.

Les valeurs peuvent être de plusieurs type, nombre entier, nombre décimal, chaine de caractères.
Ces valeurs peuvent prendre plus ou moins de place ( en bit )

Imaginez la mémoire du microcontrôleur comme un placard dans lequel vous ranger des boites. Si vous mettez que des grosses boites pour ranger les choses même les petites vous allez perdre beaucoup de place.
La mémoire vive (mémoire RAM) d’un microcontrôleur c’est la même chose, cette mémoire ne peut pas être augmenté il va falloir mettre des variables adaptées à la taille des valeurs à l’intérieur de façon à ce que de la mémoire ne soit pas occupé pour rien.

type-de-variables-nombre

La variable byte qui se code sur 1 octet est bien adaptée aux sortie PWM

Le type String

Ce type est plus un objet (programmation objet) qu’une variable classique.
Le type string vient avec plusieurs méthodes qui permettent de traiter, comparer, manipuler, … les chaînes de caractères.

Le type Array

Le type array n’est pas un type de variable à proprement parler mais un tableau de variables.
Un tableau d’entiers par exemple pour stocker des états, ou un tableau de booléens, pour caractériser une série de données.
On utilisera pour cela les crochets [ ] placés après le nom de la variable array.

Exemples :

int age = 13 ; // on créé un entier contenant la valeur 13

String message = "hello world" ; // on créé une chaîne de caractères contenant la valeur 
"hello world"

char key = 'c' ; // on créé une variable de type char contenant le caractère 'c',ou plus
exactement la position du caractère 'c' dans le tableau indexant les principaux caractères
 
int tabValeurs [1024] ;  // on créé un tableau pouvant contenir 1024 entiers. Les valeurs ne sont
 pas initialisées, elles peuvent donc contenir absolument n'importe quoi dans un premier temps.

 

Résumé sur les constantes variables et leur portée dans un programme

disponibilite-variables

 

Les meilleurs tuto internet :

Le blog Ekimon  Tuto 1   Tuto2  Servomoteur
Robomotic Arduino les bases

 

Imprimer