Les Variables

Les variables permettent de stocker des informations dont vous aurez l'usage ultérieurement.

DéfinitionDéclaration et Typage

Déclaration

Les variables utilisées dans un programme doivent être déclarées avant leur première utilisation.

Elles doivent être typées. En effet, pour des raisons de taille de stockage le programme doit connaitre le contenu de la variable (entier, nombre à virgule, caractère...)

Elles sont sensibles à la casse. C'est à dire que les noms bonjour et Bonjour, font référence à deux variables différentes.

Restrictions sur l'écriture des variables :

  • elles ne doivent pas contenir d'espace

  • elles ne doivent comporter que des lettres, des chiffres ou le caractère de soulignement "_".

  • le premier caractère ne peut pas être un chiffre.

Typage

Le langage contient plusieurs types standards et permet de créer ses propres types.

Voici quelques exemples :

char : entier (-127 à 127). affiche un caractère de la table des ASCII

unsigned char : entier (0 à 255)

byte : entier(0 à 255)

int : entier standard signé (-32768 à 32767)

unsigned int : entier standard non signé (0 à 65535)

long : entier long (-231 à 231 - 1)

unsigned long : entier long (0 à 232 - 1)

float : nombre à virgule (-3,4.1038 à -3,4.10-38 et 0 et 3,4.10-38 à 3,4.1038)

double : nombre à virgule (-1,7.10308 à -1,7.10-308 et 0 et 1,7.10-308 à 1,7.10308)

bool : booléen

1
int nombre = -10;
2
char caractere1 = "A";
3
char caractere2 = 65;
4
bool reponse = true;

Const

Le mot clé const permet de rendre non modifiable une variable.

1
const int nombre = 10;
2
nombre = 5; // erreur

pour plus d'informations, voir la documentation officielle.

Arduino - LED
1
const int led = 4;
2
const int dureeAllumee = 2000;
3
const int dureeEteinte = 1000;
4
5
void setup() {
6
  pinMode(led, OUTPUT);
7
}
8
9
void loop() {
10
  digitalWrite(led, HIGH);
11
  delay(dureeAllumee);
12
  digitalWrite(led, LOW);
13
  delay(dureeEteinte);
14
}

DéfinitionTableau

Les tableaux permettent de stocker plusieurs valeurs de même type

1
int tab1[3] = {7, 12, 15};  // on peut déclarer le nombre de cases 3
2
int tab[] = {8, 12, 43, 7}; // le nombre de cases est calculé automatiquement
3
char tab2[8] = "Bonjour";   // une chaine de caractères peut être considérée comme un tableau de caractères. La première case contient un caractère null (7 caractères + 1 null = 8).

Exemple

Tapez dans la console le numéro de la LED à allumer (0,1,2,3).

Arduino - LED
1
const int LEDs[] = {2, 3, 5, 7};
2
3
void setup(){  
4
  Serial.begin(9600);
5
  pinMode(LEDs[0], OUTPUT);
6
  pinMode(LEDs[1], OUTPUT);
7
  pinMode(LEDs[2], OUTPUT);
8
  pinMode(LEDs[3], OUTPUT);
9
}
10
11
void loop(){
12
  int nb=0;
13
  if (Serial.available() > 0) {
14
    nb = Serial.parseInt();
15
    digitalWrite(LEDs[0], LOW);
16
    digitalWrite(LEDs[1], LOW);
17
    digitalWrite(LEDs[2], LOW);
18
    digitalWrite(LEDs[3], LOW);
19
20
    digitalWrite(LEDs[nb], HIGH);
21
22
    Serial.println(nb);
23
  } 
24
}

DéfinitionScope

En fonction de l'endroit où elles ont été déclarées, les variables sont visibles ou pas. On parle de la portée (scope) d'une variable.

Portée Globale

Sur Arduino les variables déclarée en dehors des fonctions ont une portée globale. C'est à dire que l'on peut utiliser ces variables partout dans le programme.

Portée Locale

Une variable déclarée dans une fonction à une portée locale. C'est à dire qu'elle ne peut être utilisée qu'à l'intérieur de la fonction.

Portée de Bloc

Une variable peut être déclarée entre les accolades d'une structure de contrôle ou dans les parenthèses d'un for. Elle a une portée de Bloc.

Dans ce cas seule la structure peut utiliser la variable.

1
int a = 3; // utilisable dans tout le programme
2
3
void setup() {
4
  int b = 5; // utilisable que dans la fonction setup
5
}
6
7
void loop() {
8
  int c = 7; // utilisable que dans la fonction loop
9
  for( int i = 0; i < 5 ; i++) {  // utilisable que dans le for
10
    // ...
11
  }
12
  while(c < 10) {
13
    int d = 9; // utilisable que dans le while
14
    c++;
15
  }
16
}