1. Livres & vidéos
  2. Arduino
  3. Aide-mémoire
Extrait - Arduino Apprivoisez l'électronique et le codage avec les langages Arduino et MicroPython (4e édition)
Extraits du livre
Arduino Apprivoisez l'électronique et le codage avec les langages Arduino et MicroPython (4e édition) Revenir à la page d'achat du livre

Aide-mémoire

Introduction

Vous trouverez ici un récapitulatif des principales fonctions utilisables dans les langages Arduino et MicroPython. Ainsi, vous pourrez vous y référer sans avoir à parcourir tout le livre.

Langage Arduino

images/10LF01.png

Langage Arduino

1. Structure d’un sketch

Un programme Arduino valide doit au moins intégrer les fonctions setup et loop. Tous les autres éléments sont facultatifs, mais doivent être placés au bon endroit.

Voilà un exemple de programme Arduino :

#include <mabibliotheque.h>  //Déclaration des bibliothèques  
const int CONSTANTE1 = 10; //Déclaration des constantes  
int variableglobale1 = 1;  //Déclaration des variables globales  
 
void setup() {  // S'exécute une seule fois  
 Serial.begin(9600); // Initialise le moniteur série  
 pinMode(9, OUTPUT); // Définition des entrées/sorties  
}  
 
void loop() {  // Boucle infinie  
int variablelocale1 = 2;  //Déclaration d'une variable locale  
Instruction1;  // Instructions  
fonction1();   // Appel de la fonction1  
}  
 
void fonction1() {  // Définition des fonctions  
 int variablelocale2 = 5;  //Déclaration d'une variable locale  
 Instruction2;     // Instructions de la fonction1  
 Instruction3;  
} 

Point-virgule

Chaque instruction doit être suivie d’un point-virgule (à part quelques exceptions). Si vous oubliez un point-virgule, cela entraîne une erreur de compilation. Le texte d’erreur peut être évident et se référer au point-virgule manquant, ou être un peu plus obscur. En cas d’erreur de compilation, la première chose à vérifier est une absence de point-virgule aux alentours de la ligne indiquée par le compilateur.

int x = x + 2; 

Accolades

Les accolades sont utilisées dans les fonctions, les boucles et les conditions. Une accolade ouvrante « { » doit toujours être accompagnée d’une accolade fermante « } ». Si vous ne respectez pas cette règle, vous obtiendrez une erreur lors de la compilation (c’est certainement la deuxième erreur la plus fréquente, juste après le point-virgule).

L’IDE Arduino possède une fonctionnalité très utile pour vérifier que cette règle est respectée. Sélectionnez simplement une accolade (ou cliquez sur le point d’insertion juste après) et l’autre accolade apparaîtra en surbrillance.

Pour éviter les erreurs, il est conseillé d’ajouter l’accolade de fermeture immédiatement après une accolade d’ouverture. Insérez ensuite quelques sauts de lignes entre les deux et commencez à ajouter les instructions.

Commentaires

Ils sont très utiles pour expliquer le code. C’est certainement le seul endroit où les accents sont autorisés. Ils sont aussi utilisés pour désactiver certaines parties du code lors de la recherche de bugs (débogage).

// Commentaire sur une seule ligne  
 
/*  
Les commentaires multilignes sont utilisés lorsque les commentaires nécessitent  
plusieurs lignes.  
*/ 

Généralement, l’instruction return est utilisée pour envoyer le résultat d’une fonction. Mais comme elle arrête la fonction en cours, elle peut aussi être utilisée sans valeur pour désactiver une partie du code. Dans cet exemple, l’instruction Instruction2 est ignorée.

void loop(){ 
Instruction1;  //Cette instruction est exécutée  
return;  
Instruction2;  //Cette instruction est ignorée  
} 

#define

Il s’agit d’une commande en langage C qui permet de créer une constante. Sa syntaxe est légèrement différente des instructions habituelles (pas de point-virgule ou de signe égal et elle est précédée du signe #).

#define MACONSTANTE 12 

Cette commande peut parfois poser quelques problèmes, il est donc conseillé de la remplacer par l’instruction suivante :

const int MACONSTANTE = 12; 

#include

Cette commande (qui utilise la même syntaxe que define) doit être utilisée en début de sketch pour pouvoir faire appel aux fonctions supplémentaires contenues dans une bibliothèque. Il faut évidemment avoir installé la bibliothèque dans l’IDE Arduino avant de pouvoir l’utiliser.

#include <mabibliotheque>  // Permet d'utiliser une bibliothèque 

2. Moniteur série

Le moniteur série permet de transmettre des informations à l’ordinateur lorsqu’il est relié à l’Arduino. Pour l’ouvrir, allez dans Outils - Moniteur série ou cliquez sur la loupe en haut à droite. Il faut éviter les caractères accentués, qui ne sont pas forcément bien supportés, et éviter d’utiliser (sur certains modèles d’Arduino) les pins 0 et 1 en même temps, car elles sont employées par la communication série.

void setup() {  
 Serial.begin(9600); // initialisation et vitesse de transmission  
}  
void loop() {  
 Serial.print("Salut les amis"); //Sans saut de ligne  
 Serial.println("Salut les amis"); // Avec saut de ligne  
} 

3. Fonctions

a. Fonctions de base

Un sketch Arduino doit obligatoirement comporter ces deux fonctions :

void setup() {  // S'exécute une seule fois  
 
}  
 
void loop() {  // Boucle infinie  
 
} 

b. Fonctions personnalisées

Vous pouvez créer vos propres fonctions pour éviter de répéter plusieurs fois le même code.

Fonctions sans arguments - void

// ------------------ S'exécute une seule fois --------  
void setup() {  
}  
// ------------------ Boucle infinie ------------------  
void loop() {  
 fonction1(); // Appel de la fonction1  
 fonction2();...

MicroPython

images/10LF02.png

Langage MicroPython

1. Structure d’un programme

Modules (ou bibliothèques)

Au début du programme, il faut appeler le (ou les) module(s) dont vous aurez besoin. Mais il est possible d’importer seulement les fonctions nécessaires.

# Importation du module "time" 
import time 
 
# Importation de la fonction "pin" du module "machine" 
from machine import Pin 

Indentation

En MicroPython, l’indentation est obligatoire. Elle sert à différencier les instructions contenues dans les conditions, les boucles ou les fonctions.

while True: 
   # En MicroPython, l'indentation est obligatoire 

Commentaires

Une ligne de code commençant par # (dièse) est un commentaire.

# Les commentaires sont ignorés par le programme 

Caractères spéciaux

# Les caractères spéciaux ou accentués sont seulement 
# acceptés dans les commentaires 

Casse

# Attention à la casse "Micropython" et "MicroPython" 
# sont des mots complètement différents. 

Fonctions

# Les structures de contrôle, les boucles et les fonctions 
# personnalisées comportent 2 points ":" à la fin de la 
# 1ère ligne (avant indentation) 

Point virgule

Contrairement au langage Arduino, il n’y a pas de point-virgule à la fin d’une ligne.

2. Console

Vous pouvez saisir des commandes directement dans la console ou l’utiliser pour afficher des informations, comme avec le moniteur série de l’IDE Arduino.

Par exemple :

print('Hello, MicroPython!') 

lumLED = 100 
print("Luminosité de la LED: ",lumLED) 

3. Données

a. variables

Les variables contiennent généralement du texte (chaînes de caractères) ou des nombres, mais il existe d’autres types de données moins courantes (booléenne, vide...). Pour créer une variable, il suffit de la déclarer. Le langage MicroPython détermine automatiquement le type de donnée, mais il est possible de le définir manuellement.

# Nombre entier (pas de guillemets) 
variable1 = 2 
# Nombre à virgule flottante 
variable2 = 1.0 
# Chaîne de caractères (guillemets) 
variable3 = "Hello World" 
variable4 = "123" 
# Chaîne de caractères (apostrophes) 
variable5 = 'Salut les amis' 
# Booléenne (Attention à la majuscule) 
variable6 = True 
variable7 = False 

b. Portée des variables

La portée d’une variable est la partie du programme où elle est reconnue. Cela dépend de l’endroit où elle a été créée. Si c’est à l’intérieur d’une fonction, la variable est locale.

Pour créer une variable globale, il faut la déclarer au début du programme. Ensuite, si vous souhaitez l’utiliser à l’intérieur d’une fonction, vous devez le préciser au début de la fonction, en utilisant l’instruction global).

# Importation des fonctions 
from machine import Pin 
from time import sleep 
 
var01 = 45 
 
def fonction(): 
   global var01 
   var01 = 12 

Il est préférable, dans la mesure du possible, de privilégier les variables locales. Elles occupent moins de place en mémoire car elles sont créées seulement lorsque le programme en a besoin, et sont ensuite effacées.

c. Liste

La liste permet de stocker de nombreuses variables en fonction d’un index (numéro) commençant toujours à zéro. Elle peut contenir les mêmes types de données que les variables et il est même possible qu’une liste en contienne plusieurs types. Les listes sont souvent utilisées avec des boucles qui permettent d’énumérer facilement les différents éléments.

# création d'une liste 
liste = [] 
# création d'une liste en définissant trois éléments 
liste = [123,"Hello",True] 
# Ajout d'un élément à la fin 
liste.append(458) 
# Utilisation d'un élément (index 0, le 1er élément) 
variable1 = liste[0] 
# Connaître le nombre d'éléments de la liste 
nbElements = len(liste) 

En langage Arduino, la liste s’appelle un tableau.

d. Types de données

Vous pouvez convertir un nombre en chaîne de caractères ou inversement.

# Conversion en chaîne de caractère 
variable1 = 147 
variable1 = str(variable1) 
# Conversion en nombre 
variable2 = "25" 
variable2 = int(variable2) 

Nom

Type de donnée

int

Nombre entier

float

Nombre à virgule flottante. Attention, le séparateur est un point !

str

Chaîne de caractères

bool

Valeur booléenne True ou False

list

Liste

complex

Nombres complexes

type

Permet de connaître le type de donnée d’une variable

4. Fonctions

Les fonctions permettent de créer de nouvelles instructions. Elles sont très utiles pour éviter de répéter des blocs de code, ce qui peut être source d’erreur et complique les modifications du programme.

a. Sans paramètres

Les parenthèses sont quand même nécessaires mais elles sont vides.

from machine import Pin, PWM 
from time import sleep 
 
def rose(): 
 led_rougePWM.duty(0) 
 led_vertePWM.duty(1023) 
 led_bleuePWM.duty(600) 
 sleep(1) 
 
while True: 
   rose() 

b. Avec paramètres

Il est possible d’indiquer un ou plusieurs paramètres (séparés par une virgule et une espace).

from machine import Pin, PWM 
from time import sleep 
 
def led_rgb(rouge,vert,bleu,duree): 
 led_rougePWM.duty(rouge) 
 led_vertePWM.duty(vert) 
 led_bleuePWM.duty(bleu) 
 sleep(duree) 
 
while...