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 09:47] – [Synthèse : "Jouer une partition avec le buzzer"] philippe | brainpad:tclr_bp2pap [2021/08/11 09:19] (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 < | ||
+ | |||
+ | ---- | ||