Objectifs pédagogiques
Les principaux objectifs de ce sujet de travaux pratiques sont :
- de découvrir divers environnements de programmation en langages C/C++ – notamment dans le framework Arduino ;
- d'apprendre à installer sur un poste de travail des outils‑logiciels de programmation, aussi bien sous Windows que Linux.
Pour traiter ces exercices, il est recommandé d'avoir étudié tous les chapitres de la partie C1. Des renvois aux principaux éléments de cours requis sont indiqués au fur et à mesure des questions.
Mise en situation
Les exercices consistent à mettre en œuvre différents environnements de développement gratuits prenant en charge les langages C et C++, qui seront utilisés dans le cadre de ce module de formation, et en particulier pour le codage de programmes embarqués sur carte à microcontrôleur.
Chaque environnement présente des avantages et des inconvénients qui le rendent bien adapté à tel ou tel contexte ou stade d'apprentissage, mais pas à d'autres.
Même si tous les programmes pour carte Arduino demandés dans les sujets de travaux pratiques de ce module de formation sont réalisables avec l'environnement de simulation en ligne Tinkercad, il est utile d'avoir expérimenté, au moins une fois, comment fonctionne une vraie carte Arduino, notamment dans son interaction avec le logiciel Arduino IDE.
Travail demandé
Même si les environnements de développement peuvent sembler indépendants les uns des autres, il est recommandé de traiter les exercices de ce sujet de travaux pratiques dans l'ordre.
Effectuer les manipulations sur ordinateur en veillant à enregistrer les fichiers au fur et à mesure, en créant pour chaque exercice un répertoire de projet :
- tous placés dans un répertoire de TP nommé
TP_C1-1, - lui‑même placé dans un répertoire principal de programmation, nommé
Prog_C, - lui‑même placé dans le répertoire personnel d'étudiant sur la machine.
Répondre sur cahier ou fichier aux questions qui nécessitent une explication littérale.
- Le logiciel Arduino IDE
- Vérifier que le logiciel est déjà installé avec la version précisée ci‑dessous, sinon procéder à l'installation de la dernière version stable de la branche 2.x, conformément à la procédure recommandée dans le cours, chap. C1‑III .
- Raccorder la carte Arduino fournie à un port USB de l'ordinateur. Sélectionner le type de carte et le port USB ouvert par le branchement de la carte.
- Dans le menu
Fichier/Exemples/01.Basics, ouvrir le fichierBlink.inoqui fait clignoter la led intégrée (builtin led – cf. chap. C1‑III ) avec une demi‑période de 1 seconde. Le téléverser dans la carte (la compilation est automatiquement faire préalablement – cf. chap. C1‑III ). Vérifier qu'il s'exécute correctement. - Comment appelle‑t‑on le code source d'un programme dans le framework Arduino, en français et en anglais ?
- L'environnement en ligne Arduino Web editor
- En ligne, créer un compte Arduino A sur la base d'une adresse de courriel et d'un mot de passe (à recopier sur un mémo).
- Dans l'éditeur de code en ligne, créer un nouveau programme ; le renommer
Blinket copier le code source de l'exercice précédent. - Tester les paramètres réglables (preferences) de l'éditeur. Quelles sont les différences (avantages/inconvénients) entre l'éditeur en ligne et celui intégré au logiciel Arduino IDE ?
- Quelles sont les limites imposées à l'utilisation gratuite de cet environnement ?
- Pour finir, sous Linux Mint, via le menu
Démarrer, cliquer sur le raccourciApplications au démarrage. Dans la liste des applications affichées, désactiver Arduino Create Agent. - L'environnement en ligne Tinkercad
- Sur le site de l'application , créer un compte personnel Tinkercad sur la base d'une adresse de courriel et d'un mot de passe (à recopier sur un mémo).
- Une fois connecté, ouvrir la page
Conceptionspuis dans la rubriqueCircuits, créer un nouveau circuit ; le renommerBlink. - Sur l'espace de travail, placer une carte Arduino Uno. Via le menu déroulant sous le bouton
Code, sélectionner le choixTextepour visualiser le programme dans sa version littérale (et non pas sous forme de blocs semi‑graphique type langage scratch). Vérifier qu'il s'agit bien d'un programme de type « blink ». - Lancer la simulation et vérifier que le programme fonctionne bien.
- Quelles sont les différences (avantages/inconvénients) entre l'éditeur en ligne de Tinkercad et l'éditeur de code du logiciel Arduino IDE ?
- L'éditeur de code Sublime Text et la chaîne de compilation GCC
- Sur le poste de travail, vérifier que le logiciel est déjà installé sinon procéder à son installation via la procédure recommandée dans le cours au chap. C1‑II .
- Dans un nouveau fichier, copier‑coller le code source ci‑dessous :
- Sur le poste de travail, vérifier que la chaîne compilation GCC (sous Linux) ou MinGW (sous Windows) est installée, sinon procéder d'abord à cette installation en suivant la procédure recommandée au. chap. C1‑II .
- Dans un terminal de commandes en lignes ouvert depuis le dossier
Hello_World, saisir la commande : - Que s'est‑il passé ?
- Saisir la commande
ls -l. Que contient maintenant le répertoireHello_World? Quel est le type du fichierhelloWorld? Quelle est sa taille ? - Que se passe‑t‑il si l'on saisit maintenant simplement la commande
./helloWorld? - Saisir la commande
echo $?. Quelle valeur de retour obtient‑on ? - Dans le fichier source, à la ligne n° 6, coder
return 1;au lieu de0puis recompiler et exécuter le programme. Quelle valeur de retour obtient‑on maintenant ? - Saisir maintenant la commande :
- Dans le même dossier, créer un nouveau fichier nommé
helloWorld.cppet y coder le programme ci‑dessous : - Quelles sont les principales différences que présente code avec la version précédente en langage C ?
- Essayer de compiler ce programme avec la commande
gcccomme auparavant. Que se passe‑t‑il ? - Recommencer avec la commande :
- L'environnement en ligne OnlineGDB
- Dans le navigateur, mémoriser par un favori la page d'accueil du site web OnlineGDB.
- Modifier le code source en tapant
return 1;au lieu de0pour la valeur de retour de la fonctionmain. La valeur1s'affiche‑t‑elle dans le message en fin d'exécution ? - Supprimer l'instruction
return 1;. Le code source est‑il encore compilable ? Que donne le résultat d'exécution ? - Avec le même programme, sélectionner le langage C++, puis tenter l'exécution. Que se passe‑t‑il ?
- Dans la fenêtre d'édition, copier‑coller la version en C++ du programme « Hello World » donnée à l'exercice précédent. Vérifier qu'il s'exécute bien.
- Avec ce programme en C++, sélectionner à nouveau le langage C puis tenter l'exécution. Que se passe‑t‑il ?
Outils, récupérer les informations de la carte, et vérifier ainsi que la liaison série fonctionne bien.
#include <stdio.h>
int main(void)
{
printf("Hello, World!\n");
return 0;
}
helloWorld.c dans un dossier nommé Hello_World, lui‑même placé dans le dossier TP_C1-1. Après cet enregistrement, comment le code source apparaît‑il ? gcc helloWorld.c -o helloWorld && ./helloWorld
g++ helloWorld.c -o helloWorld && ./helloWorld
helloWorld a‑t‑il changé de taille ? La valeur de retour est‑elle différente ?
#include <iostream>
using namespace std;
int main()
{
cout << "Hello World!" << endl;
return 0;
}
g++ helloWorld.cpp -o helloWorldCpp && ./helloWorldCpp
- * L'environnement intégré de développement VS Code
- Sur le poste de travail, vérifier que le logiciel est déjà installé sinon procéder à l'installation de la dernière version du logiciel VS Code conformément à la procédure recommandée (cf. cours, chap. C1‑II ).
- Comme à l'exercice nº 4, vérifier que la chaîne compilation GCC (sous Linux) ou MinGW (sous Windows) est installée sur le poste de travail, sinon procéder d'abord à cette installation en suivant la procédure recommandée au. chap. C1‑II .
- Installer l'extension C/C++ et la paramétrer en spécifiant le chemin d'accès à la chaîne compilation (cf. chap. C1‑II ).
- Dans le répertoire de programmation, créer un nouveau dossier nommé par exemple
HelloCPP. Ouvrir ce dossier via VS Code et créer un nouveau fichier source nomméhelloWorld.cpp. Y copier‑coller le même code source qu'à l'exercice 4. - Cliquer sur le bouton ▷ (
Run) pour effectuer la compilation du programme en langage C++. Dans l'ongletTERMINALde la fenêtre basse, vérifier que son exécution est conforme au code source. - Dans le dossier
.vscode, ouvrir le fichiertasks.json. Ajouter toutes les options d'avertissement (-Wall-Wextra) recommandées dans les arguments de la commande de compilation (cf. chap. C1‑II ). - Installer l'extension Arduino (cf. chap. C1‑III ).
- Dans le répertoire de programmation, créer un nouveau répertoire de projet nommé par exemple
BlinkVSpuis l'ouvrir via VS Code. Y créer un nouveau fichier source homonyme (cf. chap. C2‑I ), nomméBlinkVS.inoet y copier‑coller le programme de clignotement usuel : - Brancher une carte Arduino sur le poste de travail et bien suivre la procédure (cf. chap. C1‑III ) pour pouvoir téléverser ce programme dans la carte : initialisation, choix du type de carte, choix du port USB .
- Dans le dossier
.vscode, observer le contenu respectif des fichiersarduino.jsonetc_cpp_properties.json. - Compléter le programme pour écrire un message sur le moniteur série (typiquement,
Hello, World!) et, ce faisant, vérifier que la fonctionnalité Intellisense fonctionne correctement.
TERMINAL, vérifier que cette modification a bien été prise en compte.
void setup()
{
pinMode(LED_BUILTIN, OUTPUT);
}
void loop()
{
digitalWrite(LED_BUILTIN, HIGH);
delay(500);
digitalWrite(LED_BUILTIN, LOW);
delay(500);
}