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 | ||
| brainpad:tclr_bp2pap [2020/04/08 17:18] – philippe | brainpad:tclr_bp2pap [2025/06/19 19:24] (Version actuelle) – modification externe 127.0.0.1 | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| + | {{ : | ||
| + | |||
| + | ===== Premiers programmes en C# avec une carte BrainPad v1 ou v2 " | ||
| + | |||
| + | [Mise à jour le 4/9/2020] | ||
| + | |||
| + | {{ : | ||
| + | |||
| + | * **Sources** | ||
| + | * Site de GHI Electronics : < | ||
| + | |||
| + | * **Lectures connexes** | ||
| + | * [[tinyclros: | ||
| + | |||
| + | * Un **guide en français** pour débuter | ||
| + | [[http:// | ||
| + | ==== Préambule ==== | ||
| + | Pour mener à bien ce tutoriel vous devez disposer d’une carte **BrainPad v1 ou v2**. | ||
| + | |||
| + | Microsoft **Visual Studio 2017 ou 2019** (Community) doit être installé sur le PC. | ||
| + | |||
| + | Le firmware de la carte doit être à jour. Si ce n’est pas le cas : suivez le < | ||
| + | |||
| + | Les vidéos du cours sur les fondamentaux du langage C# sont accessibles sur le site < | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ==== 1. Un premier programme : Hello ==== | ||
| + | |||
| + | **Cahier des charges** | ||
| + | ---- | ||
| + | Faire clignoter la LED **Light Bulb** (RVB) de la carte BrainPad et afficher le texte " | ||
| + | |||
| + | ---- | ||
| + | |||
| + | === Etape 1 : Créer un projet avec le template BrainPad Application === | ||
| + | |||
| + | * Ouvrir l’**IDE Microsoft Visual Studio Community 2017 ou 2019** en cliquant sur l’icône suivante {{: | ||
| + | |||
| + | * Dans la boîte de dialogue //" | ||
| + | |||
| + | * Donner le nom **" | ||
| + | {{ : | ||
| + | |||
| + | > {{: | ||
| + | |||
| + | L’**IDE** est alors configuré comme sur la copie d’écran ci-dessous (ou un équivalent selon sa version) : | ||
| + | {{ : | ||
| + | |||
| + | > {{: | ||
| + | |||
| + | === Etape 2 : Installer des bibliothèques dans le projet === | ||
| + | * Effectuer un **clic droit** sur **Références** dans l' | ||
| + | {{ : | ||
| + | |||
| + | * Cliquer sur **" | ||
| + | {{ : | ||
| + | |||
| + | * Afficher la bibliothèque présente en vous plaçant sur l' | ||
| + | {{ : | ||
| + | |||
| + | * Sélectionner **nuget.org** dans **" | ||
| + | {{ : | ||
| + | |||
| + | * Se placer dans l' | ||
| + | {{ : | ||
| + | |||
| + | * Cliquer sur **// | ||
| + | {{ : | ||
| + | |||
| + | * Cliquer sur **" | ||
| + | |||
| + | * Fermer le gestionnaire de paquets | ||
| + | |||
| + | === Etape 3 : Ajouter le code " | ||
| + | Le code BrainPad Helper fournit les définitions nécessaires aux objets de la carte BrainPad. | ||
| + | |||
| + | * Sélectionner | ||
| + | |||
| + | * Dans la boîte de dialogue " | ||
| + | {{ : | ||
| + | |||
| + | * Vous verrez un onglet étiqueté **BrainPad1.cs** avec un contenu comme celui représenté ci-dessous. | ||
| + | {{ : | ||
| + | |||
| + | * Fermer la fenêtre | ||
| + | |||
| + | === Etape 4 : Editer le code source du programme === | ||
| + | * Ecrire le code source du programme **" | ||
| + | |||
| + | <code csharp | ||
| + | using System; | ||
| + | using System.Collections; | ||
| + | using System.Text; | ||
| + | using System.Threading; | ||
| + | |||
| + | namespace Hello | ||
| + | { | ||
| + | class Program | ||
| + | { | ||
| + | static void Main() | ||
| + | { | ||
| + | BrainPad.Display.DrawText(0, | ||
| + | BrainPad.Display.RefreshScreen(); | ||
| + | |||
| + | while (true) | ||
| + | { | ||
| + | BrainPad.LightBulb.TurnWhite(); | ||
| + | BrainPad.Wait.Seconds(1); | ||
| + | BrainPad.LightBulb.TurnOff(); | ||
| + | BrainPad.Wait.Seconds(1); | ||
| + | } | ||
| + | } | ||
| + | } | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | === Etape 5 : Télécharger et exécuter le programme dans la carte === | ||
| + | * La carte étant connectée au PC avec le câble USB, le programme est compilé puis transféré en cliquant sur le bouton {{: | ||
| + | * La LED RVB **Light Bulb** clignote et le texte " | ||
| + | {{ : | ||
| + | |||
| + | * **Étude de l' | ||
| + | |||
| + | L' | ||
| + | <code csharp init.cs> | ||
| + | BrainPad.Display.DrawText(0, | ||
| + | BrainPad.Display.RefreshScreen(); | ||
| + | </ | ||
| + | |||
| + | La méthode **DrawText()** de l' | ||
| + | |||
| + | Puis, le code placé entre les accolades de la boucle **while()** s' | ||
| + | <code csharp while.cs> | ||
| + | while (true) | ||
| + | { | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | } | ||
| + | </ | ||
| + | La Led Bulb est éclairée puis éteinte successivement pendant 1s. | ||
| + | |||
| + | ---- | ||
| + | |||
| + | **Exercice 1** : Modifiez le programme pour que la LED émette un flash de 100ms toutes les 1s. Affichez votre nom (prénom) à la position (10,10). | ||
| + | __Remarque__ : l' | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ==== 2. L' | ||
| + | Dans le monde " | ||
| + | |||
| + | Dans le monde " | ||
| + | |||
| + | La carte BrainPad réelle est contrôlée par l' | ||
| + | |||
| + | L' | ||
| + | {{ : | ||
| + | |||
| + | Tous ces " | ||
| + | |||
| + | Par exemple, en sélectionnant Display on obtient une liste comme celle représentée ci-dessous : | ||
| + | {{ : | ||
| + | |||
| + | L'IDE Visual Studio simplifie la programmation en proposant automatiquement la liste des fonctionnalités d'un objet. Vous allez utiliser cette aide pour écrire le prochain programme. | ||
| + | |||
| + | > La description des classes de la bibliothèque BrainPad est disponible [[brainpad: | ||
| + | |||
| + | ==== 3. Bulb : un second programme pour se familiariser avec l' | ||
| + | 1. **Créer** un nouveau projet et nommez-le **Bulb**. **Installer** les bibliothèques et le fichier " | ||
| + | |||
| + | 2. Le code source doit ressembler à la copie d' | ||
| + | <code csharp sourcebulb.cs> | ||
| + | using System; | ||
| + | using System.Collections; | ||
| + | using System.Text; | ||
| + | using System.Threading; | ||
| + | |||
| + | namespace Bulb | ||
| + | { | ||
| + | class Program | ||
| + | { | ||
| + | static void Main() | ||
| + | { | ||
| + | } | ||
| + | } | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | 3. **Copier** l' | ||
| + | <code csharp mainbulb.cs> | ||
| + | static void Main() | ||
| + | { | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | 4. **Télécharger** et exécuter le code en cliquant sur {{: | ||
| + | |||
| + | ---- | ||
| + | **Problème** : la Led ne clignote pas, mais reste constamment éclairée. Ceci vient du fait que le programme fonctionne très rapidement. Nous n' | ||
| + | ---- | ||
| + | Pour visualiser ce que fait le programme lorsqu' | ||
| + | |||
| + | ==== 4. Le mode pas-à-pas pour tester un programme ==== | ||
| + | Ce mode de fonctionnement permet de mettre un programme "au point" (**déboguer**). Dans ce mode, vous pouvez l' | ||
| + | {{ : | ||
| + | |||
| + | 1. **Cliquer** sur l' | ||
| + | |||
| + | 2. **Placer** un point d’arrêt en cliquant à gauche de la première ligne comme ci-dessous. | ||
| + | {{ : | ||
| + | |||
| + | 3. **Relancer** le programme (touche **F5** ou {{: | ||
| + | |||
| + | __Note__ : cliquer sur le point d' | ||
| + | |||
| + | |||
| + | ---- | ||
| + | |||
| + | **Exercice 2** : Modifier le programme pour que la Led clignote 2 fois par seconde (couleur bleue). On l' | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ==== 5. BP : un troisième programme pour se familiariser avec la structure si... alors ... sinon ==== | ||
| + | |||
| + | **Algorithme** | ||
| + | |||
| + | ---- | ||
| + | **si** (condition) **alors** Action1 **sinon** Action2 **fin s**i | ||
| + | ---- | ||
| + | L' | ||
| + | |||
| + | L' | ||
| + | |||
| + | **Cahier des charges** | ||
| + | ---- | ||
| + | Si le bouton (**D**)own est appuyé la led s’éclaire en vert. | ||
| + | ---- | ||
| + | 1. **Créer** un nouveau projet et le nommer **BP**. Installer les bibliotèques et le code “BrainPad Helper”. | ||
| + | |||
| + | 2. **Copier** le code source ci-dessous et l' | ||
| + | <code csharp Brainpad1.cs> | ||
| + | using System; | ||
| + | using System.Collections; | ||
| + | using System.Text; | ||
| + | using System.Threading; | ||
| + | |||
| + | namespace BP | ||
| + | { | ||
| + | class Program | ||
| + | { | ||
| + | static void Main() | ||
| + | { | ||
| + | BrainPad.LightBulb.TurnOff(); | ||
| + | |||
| + | while (true) | ||
| + | { | ||
| + | if (BrainPad.Buttons.IsDownPressed()) | ||
| + | { | ||
| + | BrainPad.LightBulb.TurnGreen(); | ||
| + | } | ||
| + | } | ||
| + | } | ||
| + | } | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | Il semble qu'il y ait un problème : la Led ne s’éteint pas lorsqu' | ||
| + | |||
| + | 3.** Modifier** le programme comme ci-dessous. | ||
| + | <code csharp Brainpad2.cs> | ||
| + | using System; | ||
| + | using System.Collections; | ||
| + | using System.Text; | ||
| + | using System.Threading; | ||
| + | |||
| + | namespace BP | ||
| + | { | ||
| + | class Program | ||
| + | { | ||
| + | static void Main() | ||
| + | { | ||
| + | BrainPad.LightBulb.TurnOff(); | ||
| + | while (true) | ||
| + | { | ||
| + | if (BrainPad.Buttons.IsDownPressed()) | ||
| + | { | ||
| + | BrainPad.LightBulb.TurnGreen(); | ||
| + | } | ||
| + | else | ||
| + | { | ||
| + | BrainPad.LightBulb.TurnOff(); | ||
| + | } | ||
| + | } | ||
| + | } | ||
| + | } | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | **Exercice 3** : Modifier le programme pour que la Led s' | ||
| + | |||
| + | __Contrainte__ : utiliser une structure alternative imbriquée dans le test ! | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ==== Synthèse : "Jouer une partition avec le buzzer" | ||
| + | Les **méthodes** décrites dans le tableau ci-dessous permettent de contrôler le buzzer. | ||
| + | ^ ^Synthaxe^Description^ | ||
| + | |{{: | ||
| + | |{{: | ||
| + | |||
| + | // | ||
| + | |||
| + | //Exemple// : BrainPad.Buzzer.StartBuzzing(523); | ||
| + | |||
| + | Vous allez utiliser ces méthodes pour écrire le programme " | ||
| + | |||
| + | **Partition** | ||
| + | {{ : | ||
| + | |||
| + | Les fréquences correspondant aux notes et le rythme à attribuer à une note sont précisés dans les ressources ci-dessous. | ||
| + | |||
| + | **Ressources** \\ | ||
| + | * Fréquence des notes : < | ||
| + | * Le rythme des notes de musique (ronde, blanche, noire...): < | ||
| + | * La description des classes de la **bibliothèque BrainPad** est disponible [[brainpad: | ||
| + | |||
| + | ---- | ||
| + | |||
| + | **Exercice 4** | ||
| + | |||
| + | **Version 1a** : La carte joue seule la partition (une fois). (Nom du projet : **ClairLuneV1a**) | ||
| + | |||
| + | **Version 1b** : La carte joue seule la partition (une fois) et le texte de la chanson s' | ||
| + | |||
| + | __Remarques__ : Une noire dure 0,5s | ||
| + | |||
| + | ---- | ||
| + | |||
| + | **pour aller plus loin...** | ||
| + | |||
| + | **Version 2** : L' | ||
| + | |||
| + | __Indications__ : Utiliser des évènements pour gérer les boutons-poussoir (**voir prof**) | ||
| + | |||
| + | |||
| + | **Events** | ||
| + | |||
| + | Many modules generate useful events. Type +=< | ||
| + | button.ButtonPressed +=< | ||
| + | |||
| + | Exemple | ||
| + | |||
| + | <code csharp> | ||
| + | | ||
| + | |||
| + | | ||
| + | { | ||
| + | play(" | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | **Sources** | ||
| + | |||
| + | Les sources des exemples et des exercices (compilés avec **Visual Studio Community 2017 ou 2019**) sont téléchargeables < | ||
| + | |||
| + | ---- | ||