1. C++ avec Arduino

1.1. Un peu de technique...

La plateforme Arduino est construite autour d'une carte sur laquelle se trouve un micro-contrôleur, c'est à dire un microprocesseur associé à de la mémoire et à un ensemble d'entrées/sorties ; c'est donc un micro-ordinateur programmable en réduction...

Le micro-contrôleur peut être programmé pour piloter les entrées et les sorties et exécuter des tâches plus ou moins complexes.
L'écriture du programme se fait sur PC à l'aide d'un logiciel dédié, l'IDE Arduino, qui permettra aussi d'envoyer ( = téléverser ) par la suite le programme ( appelé "sketch") dans la mémoire du micro-contrôleur par l'intermédiaire d'un câble USB.

Arduino

Pour une utilisation particulière, on peut brancher sur les connecteurs de l'Arduino une carte additionnelle appelée shield; il en existe de toutes sortes ( gestion wifi et Ethernet, afficheurs LCD, commande domotique, etc...)
Nous utiliserons ici un shield portant une matrice de 64 LEDs pouvant être commandées individuellement afin de réaliser un afficheur multi-usages...

Le programme que l'on écrit s'appelle le code-source; l'IDE Arduino utilise le terme de « croquis » ou « sketch » an anglais .

Les code-sources Arduino sont enregistrés dans des fichiers dont l'extension est .ino
Les croquis, chacun dans son propre dossier du même nom, sont regroupés dans un dossier nommé sketchbook ; l'emplacement de ce dossier peut être modifié.

A la différence de Python qui un langage interprété, le langage ( proche du C++ ) utilisé par Arduino est un langage compilé : avant exécution, le croquis doit être transformé en langage machine pour être compréhensible par la machine, phase portant le nom de compilation

1.2. Prise en main

Interface de l'IDE Arduino :

Pour une description complète, voir ici.

Structure d'un code-source Arduino

Il y a en gros 3 parties dans le code-source d'un programme Arduino ; voici un exemple :

	/* Ce programme crée un effet rigolo sur la matrice de LED...*/
	
	// ------ EN TETE -------------
	
	#include "Led.h" 
	
	// ------ INITIALISATION -------
	
	void setup() {
	
		// Initialisation de la matrice
		Matrix.begin();
	
	}
	
	// ------- PROGRAMME PRINCIPAL ----------
	
	void loop() {
	
	/* boucle qui permet d'afficher sur la rangée 4 de la matrice des puissances de 2 croissantes :
	 la succession des nombres binaires correspondant crée l'effet recherché.*/
	
		for (int i = 0;i < 8;i++) {
	
			//écriture d'un octet rangée 4
			Matrix.setByte(4, pow(2,i));
			//une petite pause...
			delay(1);
		}
	
	} 
			

Un premier programme

1.3. Généralités sur le langage utilisé par Arduino

De manière générale :

Variables

Au contraire de Python, le C++ est un langage typé : le type des variables doit être précisé lors de leur initialisation.

Les types de base disponibles sur Arduino sont :

Nom du type à indiquer devant le nom de la variable Type de donnée Valeurs min/max
boolean valeur binaire 2 valeurs possibles : 1/0, VRAI/FAUX
byte valeur entière positive 0 - 255
int valeur entière positive ou négative – 32 768 / +32 767
long valeur entière positive ou négative -2 147 483 648 / +2 147 483 647
float valeur à virgule positive ou négative -3.402823 x 1038 / +3.4028235 x 1038
char caractère alphanumérique codé en ASCII 0 - 255

Il existe également deux types supplémentaires en C++ : la chaîne de caractères ( type String ) et le tableau de données ( analogue à la liste en Python, mais ne peut contenir qu'un même type de données )

Évaluation de condition :

Test simple :

	if ( condition ) {
	
		Intruction 1 ;
		Instruction 2 ;
		.......;
	}
					

Si....sinon :

	
	if ( condition ) {
	
		Intruction 1 ;
		Instruction 2 ;
		..............;
	}
	else {
	
		Instruction 3 ;
		Instruction 4 ;
		.............;
	
	}
					

Si...sinon si :

	
	if ( condition 1 ) {
	
		Instruction 1 ;
		Instruction 2 ;
		.........;
	}
	else if ( condition 2 ) {
	
		Instruction 3 ;
		Instruction 4 ;
		........;
	}
					

La syntaxe des conditions est tout à fait similaire à celle de Python, mis à part le OU (or) ( qui s'écrit "||" ) et le ET (and) ( qui s'écrit "&&" )
Ne pas oublier en particulier le double-égal ( "==" )

Boucles :

Boucle for :

	
	for (initialisation variable compteur ; condition sur le compteur ; pas de variation du compteur) {
		
		Instruction(s)à exécuter;
		.....................
	}
	
				

Boucle while :

				
	while ( condition ) {
	
		Instruction(s) à éxécuter ;
		
	}	
	
				

Fonctions :

La notion de fonction existe aussi ; le bloc d'instructions de la fonction doit être entouré d'accolades, et on doit aussi lors de la définition de la fonction préciser le type de la donnée de retour :


	int Calcul_PGCD( int nombre1 ; int nombre 2 ) {
	
		Instructions de calcul du PGCD des deux nombres ;
		......... ;
		
		return PGCD ;
	}
			

Si il n'y a aucune donnée en retour de la fonction, on utilise le mot « void » :


	void affichage_nombre( int nombre ) {

		Instructions d'affichage du nombre ;
		......... ;

	}

			

Ne pas hésiter en cas de doute sur une instruction à consulter les documents de référence, notamment la référence de la syntaxe Arduino dans le menu de l'IDE : Aide > Référence, ou à l'adresse : http://arduino.cc/en/Reference/HomePage.
Il existe également une application Android.