Structure d’un programme

Voici un exemple de code pour Arduino. Nous décomposerons chacune des parties par la suite.

#include 
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
int led = 13;
int bp = 6;

void setup() {
  // initialize the digital pin as an output.
  pinMode(led, OUTPUT);
  // initialize the digital pin as an input.
  pinMode(bp, INPUT);
  // set up the LCD's number of columns and rows: 
  lcd.begin(16, 2);
  // Print a message to the LCD.
  lcd.print("hello, world!");
}

void loop() {
  // read digital input bp
  int a = DigitalRead(bp);
  if(a == 1){
    digitalWrite(led, HIGH); // turn the LED on
  }
  else{
    digitalWrite(led, LOW);  // turn the LED off
  }
  // set the cursor to column 0, line 1
  lcd.setCursor(0, 1);
  // print the number of seconds since reset:
  lcd.print(millis()/1000);
}

Zone de déclaration de ressources

La première zone que l’on rencontre est une zone de déclaration de ressources additionnelles.

#include 
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

Dans cet exemple, on ajoute une bibliothèque LiquidCrystal qui permet de gérer des écrans LCD.
La ligne suivante est une fonction appartenant à cette bibliothèque, permettant d’initialiser les broches connectées entre la carte et l’écran. Nous ne nous intéresserons pas à cette bibliothèque pour l’instant.

Zone de déclaration de variables globales

La zone suivante est une zone de déclaration de variables globales.
Les variables globales sont des variables communes à l’ensemble des fonctions qui seront écrites par la suite. Il faut faire attention à ce type de variables car elles peuvent être modifiées à tout moment par n’importe laquelle des fonctions qui l’utilisent. Parfois, on préférera des variables locales.

int led = 13;
int bp = 6;

Dans cet exemple, la variable (typée) entière nommée led prendra la valeur 13 à l’initialisation. La variable (typée) entière nommée bp prendra la valeur 6 à l’initialisation.

Fonction SETUP

La fonction void setup() est appelée une seule fois au début de l’exécution du programme.
Elle permet entre autre d’initialiser l’ensemble des broches d’entrées/sorties ainsi que les différents composants liés à l’application.

void setup() {
  // initialize the digital pin as an output.
  pinMode(led, OUTPUT);
  // initialize the digital pin as an input.
  pinMode(bp, INPUT);
  // set up the LCD's number of columns and rows: 
  lcd.begin(16, 2);
  // Print a message to the LCD.
  lcd.print("hello, world!");
}

Dans l’exemple précédent, on trouve l’initialisation de la broche 13 (mentionnée par la variable led) en sortie numérique (OUTPUT) grâce à l’appel de la fonction pinMode().
De la même façon, on initialise la broche 6 en entrée numérique.

On trouve ensuite l’initialisation d’un écran LCD et l’affichage d’un texte sur celui-ci (lorsque l’écran LCD est connecté).

Fonction LOOP

La fonction void loop() est le coeur du programme embarqué. Elle est exécutée une infinité de fois (tant que la carte est alimentée), après l’exécution de la fonction setup().

void loop() {
  // read digital input bp
  int a = DigitalRead(bp);
  if(a == 1){
    digitalWrite(led, HIGH); // turn the LED on
  }
  else{
    digitalWrite(led, LOW);  // turn the LED off
  }
  // set the cursor to column 0, line 1
  lcd.setCursor(0, 1);
  // print the number of seconds since reset:
  lcd.print(millis()/1000);
}

Dans l’exemple précédent, le programme fait en permanence :

  1. lire la valeur de l’entrée numérique 6 (nommée bp) et la stocker dans une variable a (qui peut valoir 0 ou 1 – car entrée numérique)
  2. tester la variable a :
    • si a vaut 1, alors : la sortie numérique 13 est mise à 1 ( digitalWrite(led, HIGH) ) ;
    • sinon : la sortie numérique 13 est mise à 0 ( digitalWrite(led, LOW) ) ;
  3. mettre le curseur de l’écran LCD à la position 0, 1
  4. rafraîchir l’affichage de l’écran LCD
Arduino – Structure d’un programme