Les instructions élémentaires
Définition : Le langage Arduino
A présent que vous avez une vision globale sur le fonctionnement de la carte Arduino, nous allons pouvoir apprendre à programmer avant de nous lancer dans la réalisation de programmes très simple pour débuter ! Pour pouvoir programmer notre carte, il nous faut trois choses :
- Un ordinateur
- Une carte Arduino
- Et connaitre le langage Arduino
C'est ce dernier point qu'il nous faut acquérir. Le but même de ce chapitre est de vous apprendre à programmer avec le langage Arduino. Cependant, ce n'est qu'un support de cours que vous pourrez parcourir lorsque vous devrez programmer tout seul votre carte. En effet, c'est en manipulant que l'on apprend, ce qui implique que votre apprentissage en programmation sera plus conséquent dans les prochains chapitres que dans ce cours même.
Fondamental :
Le langage Arduino est très proche du C et du C++.
Un minimum de code
Avec Arduino, nous devons utiliser un code minimal lorsque l'on crée un programme. Ce code permet de diviser le programme que nous allons créer en deux ou trois grosses parties. Nous avons détaillé ce point en début de chapitre. Comme illustré ici.
Définition : La Fonction
Dans ce code se trouvent deux fonctions. Les fonctions sont en fait des portions de code.
Cette fonction setup() est appelée une seule fois lorsque le programme commence. On appelle cette fonction : « fonction d'initialisation« .
On y retrouvera la mise en place des différentes Entrées / Sorties et quelques autres réglages.
C'est un peu le check-up de démarrage. Une fois que l'on a initialisé le programme il faut ensuite créer son « cœur », autrement dit le programme en lui même : la fonction loop().
/* **************************
* Mon premier Programme
* Lycée DAMPIERRE STI2D
* Nom_Prénom
******************************** */
//Ceci est un commentaire
//déclaration des variables
void setup()
{
// ici on configure les entrées / sorties
}
void loop()
{
// ici, le programme, il se répétera à l'infini
}
C'est donc dans cette fonction loop() où l'on va écrire le contenu du programme. Il faut savoir que cette fonction est appelée en permanence, c'est-à-dire qu'elle est exécutée une fois, puis lorsque son exécution est terminée, on la ré-exécute et encore et encore. On parle de boucle infinie.
Remarque :
A titre informatif, on n'est pas obligé d'écrire quelque chose dans ces deux fonctions. En revanche, il est obligatoire de les écrire, même si elles ne contiennent aucun code !
Méthode : Agir sur une sortie numérique (D0 à D13)
L'instruction digitalWrite(1,HIGH) ; permet de mettre à l'état haut donc à 5V la sortie digital D1
Quand on écrit l'instruction digitalWrite(1,LOW) ; la sortie D1 se met à l'état bas donc à 0V
En fonction de la configuration effectué dans setup() vous pouvez agir sur l'état des sorties avec cette instructions.
Dans le programme ci-dessous, observer la configuration en sortie de D13 à l'aide de l'instruction pinMode() ;
A l'aide des fichier ci-dessous, réalisé le montage et faite l'expérience de l'instruction.
Méthode : Acquérir la valeur d'une entrée numérique
digitalRead() ; est utilisé pour Lit l'état (= le niveau logique) d'une broche précise en entrée numérique, et renvoie la valeur HIGH (HAUT en anglais) ou LOW (BAS en anglais).
NB : Cette instructions renvoie la valeur d'une entrée numérique. Cette valeur devra être stocké dans une variables local de nature entière (int).
Pour pouvoir lire une broche en tant qu'entrée numérique :
configurer cette broche en entrée avec l'instruction pinMode(broche, INPUT);
activer le "rappel au plus" interne dans le cas d'un bouton poussoir avec l'instruction digitalWrite(broche, HIGH)
A l'aide des fichier ci-dessous, réalisé le montage et faite l'expérience de l’instruction.
Attention :
Dans ce programme, la broche 13 reflète fidèlement l'état de la broche 7 qui est une entrée numérique.
REMARQUE :
Si la broche numérique en entrée n'est connectée à rien, l'instruction digitalRead() peut retourner aussi bien la valeur HIGH (HAUT en anglais) ou LOW (BAS en anglais) ( et cette valeur peut changer de façon aléatoire)
Les broches analogiques peuvent être utilisées en entrée et sont désignées par les numéro 14 (entrée analogique 0) à 19 (entrée analogique 5).
Remarque : Effet de rebond
La broche numérique 13 est plus difficile à utiliser que les autres en tant qu'entrée numérique car elle est associée à une résistance et sa LED soudées sur le circuit imprimé de la carte sur la plupart des cartes. Si vous activez la résistance interne de rappel au plus de 20K, cela mettra la borche à 1,7V au lieu des 5V théoriques car la LED et la résistance associées à la broche abaisse la tension, qui est toujours considérée au niveau BAS (LOW). Ainsi, si vous devez utiliser la broche 13 en tant qu'entrée numérique, utiliser une résistance de rappel au plus externe.
Méthode : La Lecture Analogique
Lire la tension sur une broche analogique
Un truc très sympa avec Arduino, c'est que c'est facile à prendre en main. Et ça se voit une fois de plus avec l'utilisation des convertisseurs numérique – > analogique ! En effet, vous n'avez qu'une seule nouvelle fonction à retenir : analogRead() !
ANALOGREAD(PIN) Cette fonction va nous permettre de lire la valeur lue sur une entrée analogique de l'Arduino. Elle prend un argument et retourne la valeur lue : L'argument est le numéro de l'entrée analogique à lire (explication ci-dessous) La valeur retournée (un int) sera le résultat de la conversion analogique- >numérique Sur une carte Arduino Uno, on retrouve 6 CAN. Ils se trouvent tous du même côté de la carte, là où est écrit « Analog IN » : |
Les 6 entrées analogiques sont numérotées, tout comme les entrées/sorties logiques. Par exemple, pour aller lire la valeur en sortie d'un capteur branché sur le convertisseur de la broche analogique numéro 3, on fera : valeur = analogRead(3);.
Attention :
Ne confondez pas les entrées analogiques et les entrées numériques ! Elles ont en effet le même numéro pour certaines, mais selon comment on les utilise, la carte Arduino saura si la broche est analogique ou non.
Mais comme vopus etes des programmeurs intelligents et organisés, vous nommerez les variables proprement pour bien travailler comme dans les fichiers ci-dessous.
Fondamental : Conclusion
Nous avons vue au travers de trois exemples comment exploiter les entrées/sorites numériques ainsi que les entrées analogiques. Il est impératif de ne pas mélanger ces deux types de grandeur différentes. Pour la suite, nous allons aborder les structures de répétitions.