Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
archives:netmf43:4a_netmfnetduinopap [2021/08/10 15:26] – [1. Préambule] phil | archives:netmf43:4a_netmfnetduinopap [2024/07/28 10:32] (Version actuelle) – phil | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
+ | [[archives: | ||
+ | |||
+ | ===== [ARCHIVES] Premiers programmes en C# " | ||
+ | |||
+ | [Mise à jour le : 20/3/2019] | ||
+ | {{ : | ||
+ | ==== 1. Préambule ==== | ||
+ | |||
+ | Pour mener à bien ce tutoriel vous devez disposer d’une carte [[: | ||
+ | |||
+ | Le cours sur les fondamentaux du langage C#, accessible sur < | ||
+ | |||
+ | On trouvera également des tutoriels en anglais sur le site < | ||
+ | |||
+ | ==== 2. Premier programme : Blink ==== | ||
+ | |||
+ | ---- | ||
+ | **Cahier des charges du programme 1** | ||
+ | |||
+ | Faire clignoter la LED de la carte Netduino ! | ||
+ | |||
+ | ---- | ||
+ | === Étape 1 : Créer un projet === | ||
+ | * Ouvrir l’**IDE Visual Studio** en cliquant sur l’icône suivante : {{: | ||
+ | * Dans la boîte de dialogue " | ||
+ | {{ : | ||
+ | * Donner le nom " | ||
+ | {{ : | ||
+ | |||
+ | __Remarque__: | ||
+ | |||
+ | * **Cliquer** sur Program.cs dans la fenêtre **Explorateur de solution** | ||
+ | |||
+ | L’IDE est alors configuré comme sur la copie d’écran ci-dessous (ou un équivalent selon sa version) : | ||
+ | {{ : | ||
+ | |||
+ | __Remarque__: | ||
+ | |||
+ | Le projet **// | ||
+ | |||
+ | |||
+ | === Étape 2 : Éditer le code du programme === | ||
+ | **1. Déclaration des " | ||
+ | |||
+ | Une partie du code a été renseigné par Visual Studio. C’est le cas de la liste des espaces de noms installés par défaut et de la structure minimum du corps de programme (**repère 2 de la copie d' | ||
+ | |||
+ | Pour le moment l’espace de noms suivant : **// | ||
+ | |||
+ | Le modifier en **// | ||
+ | |||
+ | Visual Studio le souligne en rouge spécifiant qu’il y a un problème. Cela est dû au fait qu’il ne trouve pas la bibliothèque correspondant à ce nouvel espace de noms. **Une autre manipulation est nécessaire** ! | ||
+ | |||
+ | Déplier le répertoire " | ||
+ | {{ : | ||
+ | |||
+ | Pour ajouter la nouvelle bibliothèque: | ||
+ | |||
+ | ** 2. Partie déclarative du programme : construction d'un objet virtuel " | ||
+ | |||
+ | Entrer la ligne ci-dessous à la place du commentaire : //write your code here// | ||
+ | |||
+ | <code csharp led.cs> var Led = new OutputPort(Pins.ONBOARD_LED, | ||
+ | |||
+ | ---- | ||
+ | |||
+ | __Remarque__ : Vous pouvez constater l’effet de l’**autocompletion (intellisense)** au fur et à mesure de la construction de la ligne. Les propositions faites par le logiciel sont une aide précieuse lors de l’écriture du code. | ||
+ | |||
+ | Il n’est pas nécessaire d’écrire complètement un mot : un **appui sur la touche tabulation** {{: | ||
+ | |||
+ | ---- | ||
+ | {{ : | ||
+ | |||
+ | **3. Partie exécutive du programme (le corps du programme) dans une boucle infinie** | ||
+ | |||
+ | Écrire le mot // | ||
+ | {{ : | ||
+ | |||
+ | Appuyer **deux fois** sur la touche de tabulation {{: | ||
+ | |||
+ | Complétez la structure // | ||
+ | {{ : | ||
+ | __Remarque__ : les commentaires (le texte après le double slash) ** peuvent être omis**. | ||
+ | |||
+ | === Étape 3 : Générer la solution === | ||
+ | Dans l' | ||
+ | |||
+ | === Étape 4 : Transférer le programme dans la carte Netduino et l' | ||
+ | |||
+ | **1. Affichage de la fenêtre de sortie** | ||
+ | |||
+ | Cette fenêtre donne des informations lors de l’exécution d’un programme. Elle est utile lors de sa mise au point ou pour remplacer un périphérique d’affichage. | ||
+ | |||
+ | Dans l’éditeur, | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | **2. Transfert et exécution du programme dans la carte Netduino** | ||
+ | |||
+ | **Connecter** la carte au PC. Vérifier que l’éditeur est en mode {{: | ||
+ | |||
+ | ---- | ||
+ | **La LED de la carte doit clignoter !** | ||
+ | ---- | ||
+ | {{ : | ||
+ | |||
+ | === Étape 5 : Tester le programme en mode pas-à-pas === | ||
+ | |||
+ | Pour mettre un programme "**au point**" | ||
+ | {{ : | ||
+ | |||
+ | Pour bien comprendre les possibilités du débogueur, vous allez faire fonctionner le programme en **mode pas à pas.** | ||
+ | |||
+ | Cliquez sur l' | ||
+ | {{ : | ||
+ | |||
+ | Placer un __**point d’arrêt**__ (rond rouge) en cliquant à gauche du mot // | ||
+ | {{ : | ||
+ | |||
+ | Relancer le programme (touche F5 ou {{: | ||
+ | |||
+ | **Résultat attendu dans la fenêtre de sortie et comportement de la LED !** | ||
+ | {{ : | ||
+ | |||
+ | |||
+ | ==== 3. Deuxième programme : " | ||
+ | |||
+ | ---- | ||
+ | **Cahier des charges du programme 2** | ||
+ | |||
+ | Afficher la position angulaire d'un axe sur un LCD. | ||
+ | |||
+ | ---- | ||
+ | **Matériels** | ||
+ | * Carte Netduino et shield Tinkerkit | ||
+ | * Potentiomètre | ||
+ | * Afficheur LCD 2 lignes de 16 caractères et module < | ||
+ | |||
+ | ---- | ||
+ | ** Montage à réaliser ** | ||
+ | {{ : | ||
+ | |||
+ | ---- | ||
+ | |||
+ | === Étape 1 : Créer le projet " | ||
+ | Reprendre la démarche vue dans le programme 1. Nommer le projet : // | ||
+ | |||
+ | === Étape 2 : Éditer le code du fichier Program.cs === | ||
+ | |||
+ | **1. Sélection des " | ||
+ | |||
+ | **a. Modifier** la liste des bibliothèques du projet comme ci-dessous : | ||
+ | {{ : | ||
+ | |||
+ | __Remarque__ : la bibliothèque **MicroToolskit** est à télécharger sur Nuget.org en suivant la procédure suivante. | ||
+ | - clic droit sur "// | ||
+ | - Sélectionner "// | ||
+ | - Dans "// | ||
+ | - Positionner la fenêtre sur // | ||
+ | |||
+ | |||
+ | La bibliothèque apparaît comme sur la copie d' | ||
+ | {{ : | ||
+ | |||
+ | **b. Modifier** la liste des espaces de noms (on conserve seulement ceux qui sont utiles au projet !) | ||
+ | <code csharp using.cs> | ||
+ | using System; | ||
+ | using System.Threading; | ||
+ | using Microsoft.SPOT; | ||
+ | using Microsoft.SPOT.Hardware; | ||
+ | |||
+ | using Microtoolskit.Hardware.Displays; | ||
+ | </ | ||
+ | |||
+ | __Remarque__ : le contenu de la bibliothèque MicroToolsKit est accessible en effectuant un clic droit sur son nom dans "// | ||
+ | |||
+ | **2a. Partie déclarative du programme** | ||
+ | |||
+ | Compléter le fichier " | ||
+ | |||
+ | |||
+ | a. Déclaration des constantes | ||
+ | |||
+ | <code csharp const.cs> | ||
+ | public static void Main() | ||
+ | { | ||
+ | // Constantes | ||
+ | const UInt16 delay = 500; // En ms | ||
+ | </ | ||
+ | |||
+ | b. Déclaration des variables | ||
+ | <code csharp var.cs> | ||
+ | // A la suite du code précédent, | ||
+ | // Variables | ||
+ | var N = 0; | ||
+ | var Angle = 0; | ||
+ | </ | ||
+ | |||
+ | c. Configuration des entrées, sorties | ||
+ | <code csharp es.cs> | ||
+ | // A la suite du code précédent, | ||
+ | // Configuration des E/S | ||
+ | // http:// | ||
+ | | ||
+ | // http:// | ||
+ | ELCD162 Lcd = new ELCD162(); // Connecté sur O5 Tinkerkit | ||
+ | </ | ||
+ | |||
+ | d. Initialisation de l' | ||
+ | |||
+ | <code csharp init.cs> | ||
+ | // A la suite du code précédent, | ||
+ | // Initialisation | ||
+ | Lcd.Init(); Lcd.ClearScreen(); | ||
+ | </ | ||
+ | |||
+ | **2b. Partie exécutive du programme** | ||
+ | <code csharp while.cs> | ||
+ | // A la suite du code précédent, | ||
+ | while (true) | ||
+ | { | ||
+ | N = Potentiometre.ReadRaw(); | ||
+ | Angle = (270 * N ) / 4096; | ||
+ | | ||
+ | | ||
+ | | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | === Étape 3 : Générer la solution === | ||
+ | Reprendre la démarche vue dans le programme 1. | ||
+ | |||
+ | |||
+ | === Étape 4 : Transférer le programme et l' | ||
+ | Reprendre la démarche vue dans le programme 1. | ||
+ | |||
+ | ---- | ||
+ | |||
+ | **Exercice 1 ** | ||
+ | |||
+ | > Écrire l' | ||
+ | |||
+ | ---- | ||
+ | **Exercice 2 ** | ||
+ | |||
+ | > Modifier le programme pour qu'une LED, simulant une alarme (à rajouter sur la carte), s' | ||
+ | |||
+ | ---- | ||
+ | |||
+ | **Exercice 3 ** | ||
+ | |||
+ | > Modifier le programme pour qu'un Buzzer (commandé en PWM), simulant une alarme, se déclenche si l' | ||
+ | |||
+ | ---- | ||
+ | |||
+ | |||
+ | ==== 4.Troisième programme : " | ||
+ | |||
+ | ---- | ||
+ | |||
+ | **Cahier des charges du programme 3** | ||
+ | |||
+ | Mesurer la température ambiante et l' | ||
+ | |||
+ | ---- | ||
+ | |||
+ | **Matériels** | ||
+ | * Carte Netduino et shield Tinkerkit | ||
+ | * Capteur de température TMP102 (I2C) + adaptateur de tension 3,3V <--> 5V | ||
+ | * Afficheur LCD 2 lignes de 16 caractères et module [[http:// | ||
+ | |||
+ | ---- | ||
+ | |||
+ | ** Montage à réaliser ** | ||
+ | {{ : | ||
+ | |||
+ | ---- | ||
+ | |||
+ | === Étape 1 : Créer le projet " | ||
+ | Reprendre la démarche vue dans le programme 1. Nommer le projet : // | ||
+ | |||
+ | === Étape 2 : Éditer le code du fichier Program.cs === | ||
+ | |||
+ | **1. Sélection des " | ||
+ | |||
+ | **a. Modifier** la liste des bibliothèques du projet comme ci-dessous : | ||
+ | {{ : | ||
+ | |||
+ | __Remarque__ : La bibliothèque **MicroToolskit** est à télécharger sur Nuget.org en suivant la procédure suivante. | ||
+ | - clic droit sur "// | ||
+ | - Sélectionner "// | ||
+ | - Dans "// | ||
+ | - Positionner la fenêtre sur // | ||
+ | |||
+ | |||
+ | La bibliothèque apparaît comme sur la copie d' | ||
+ | {{ : | ||
+ | |||
+ | **b. Modifier** la liste des espaces de noms (on conserve seulement ceux qui sont utiles au projet !) | ||
+ | <code csharp using.cs> | ||
+ | using System; | ||
+ | using System.Threading; | ||
+ | using Microtoolskit.Hardware.Sensors; | ||
+ | using Microtoolskit.Hardware.Displays; | ||
+ | </ | ||
+ | |||
+ | __Remarque__ : le contenu de la bibliothèque MicroToolsKit est accessible en effectuant un clic droit sur son nom dans "// | ||
+ | |||
+ | **2a. Partie déclarative du programme** | ||
+ | |||
+ | Cette partie est donnée plus loin dans ce document. | ||
+ | |||
+ | **2b. Partie exécutive du programme (le corps du programme) dans une boucle infinie** | ||
+ | |||
+ | // | ||
+ | {{ : | ||
+ | |||
+ | 1. Les méthodes accessibles à un objet de type TMP102 sont listées ci-contre. | ||
+ | __Remarque__ : pour information, | ||
+ | |||
+ | 2. Le capteur est initialisé en appliquant la méthode //Init()// à l’objet // | ||
+ | |||
+ | 3. Une variable temperature est destinée à recevoir le résultat de la mesure. | ||
+ | |||
+ | __Exemple__ : | ||
+ | <code csharp> | ||
+ | var temperature = 0.0; | ||
+ | </ | ||
+ | |||
+ | 4. La mesure est déclenchée par la méthode // | ||
+ | |||
+ | 5. L' | ||
+ | |||
+ | // | ||
+ | {{ : | ||
+ | |||
+ | 1. Les méthodes accessibles à un objet de type ELCD162 sont listées ci-contre. \\ | ||
+ | __Remarque__ : pour information, | ||
+ | |||
+ | 2. L’afficheur est initialisé en appliquant la méthode //Init()// à l’objet //Lcd//. | ||
+ | |||
+ | 3. L' | ||
+ | |||
+ | __Exemple__ : Pour afficher T = xx.xC (xx.x étant la température mesurée) on écrira : | ||
+ | |||
+ | <code csharp> | ||
+ | Lcd.PutString(" | ||
+ | </ | ||
+ | |||
+ | > **Exercice 4** : compléter le fichier // | ||
+ | |||
+ | <code csharp> | ||
+ | namespace MesureTemperature | ||
+ | { | ||
+ | public class Program | ||
+ | { | ||
+ | public static void Main() | ||
+ | { | ||
+ | // Variables | ||
+ | var temperature = 0.0; // variable destinée à recevoir le résultat de la mesure de température | ||
+ | |||
+ | // Création des objets virtuels | ||
+ | var ModuleMesureTemp = new TMP102(); | ||
+ | var Lcd = new ELCD162(); // Création de l' | ||
+ | |||
+ | // Initialisations | ||
+ | ModuleMesureTemp.Init(); | ||
+ | Lcd.Init(); Lcd.ClearScreen(); | ||
+ | |||
+ | |||
+ | while (true) | ||
+ | { | ||
+ | // Lire la température | ||
+ | // <- A compléter | ||
+ | |||
+ | // Effacer le lcd | ||
+ | // <- A compléter | ||
+ | |||
+ | // Afficher la température sur le lcd | ||
+ | // <- A compléter | ||
+ | |||
+ | Thread.Sleep(1000); | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | ---- | ||
+ | ===Étape 3 : Générer la solution=== | ||
+ | Reprendre la démarche vue dans le programme 1. | ||
+ | |||
+ | ===Étape 4 : Transférer le programme et l' | ||
+ | Reprendre la démarche vue dans le programme 1. | ||
+ | |||
+ | **Exercice 5 ** | ||
+ | |||
+ | > Remplacer le LCD par un afficheur graphique. (voir prof) | ||
+ | |||
+ | ---- | ||
+ | |||
+ | **Sources des exemples** | ||
+ | |||
+ | Les sources des exemples (compilées avec Visual Studio Community 2015) sont téléchargeables [[https:// | ||
+ | |||
+ | ---- | ||