Table of Contents

TP 02 - BBC micro:bit et MakeCode

Objectifs du TP

Documentation

Présentation du BBC micro:bit V2

BBC micro:bit est une plaque de développement qui utilise un microcontrôleur. Ce dispositif a pour but d’offrir les étudiants un bon commencement pour développer ses compétences en programmation.

Micro:bit V2 est un ARM Cortex M4, petit et facile d’utiliser. Il est prévu avec 25 LED, sur lesquelles on peut afficher des messages ou des images. Il est prévu, aussi, avec u accéléromètre, qui peut détecter les mouvements, un bussole, Bluetooth, deux buttons, à travers lequel il peut interagir avec l’utilisateur et des autres d’autres capteurs que nous découvrirons au cours du TP.

Les programmes seront écrits sur l’ordinateur et après ils seront chargés sur le micr:obit. Ces programmes restent sur la mémoire flash et ils vont être exécutés quand le microcontrôleur est alimenté.

Le microcontrôleur et un ordinateur réduit dans un seul chip, qui peut exécuter un programme à la fois et consommer beaucoup moins qu’un ordinateur portable ou un ordinateur. En plus, elles sont bonnes pour contrôler et détecter les signaux électriques a l’aide de ses broches. Pour plus des infos tu peux cliquer sur ce lien.

L'editeur MakeCode pour micro:bit

Microsoft MakeCode est cadre permettant de créer des expériences de programmation interactives et engageantes pour les nouveaux venus dans le monde de la programmation. La plate-forme fournit la base d'une expérience de codage sur mesure pour créer et exécuter des programmes utilisateur sur du matériel réel ou dans une cible simulée.

Il se compose de 3 parties:

Blocks editor

L'éditeur de blocs est l'endroit où l'utilisateur peut créer un programme de manière interactive en “tirant” ou en “glissant” des blocs sur l'éditeur d'espace de travail.

Les blocs représentent des actions de codage et des structures de programmation qui seraient traditionnellement écrites en texte. Les éléments de codage tels que les boucles, les instructions conditionnelles et les événements contiennent des blocs contenant d'autres blocs. Les fonctions et les affectations sont des blocs « plats » qui s'emboîtent dans d'autres. Les variables, les valeurs et les propriétés sont des mini-blocs qui s'insèrent dans des emplacements de fonctions, d'affectations ou d'évaluateurs.

Les blocs se trouvent dans les catégories disponibles dans la boîte à outils des blocs alignés à côté de l'espace de travail.

Language editor

Un éditeur de langage complète l'éditeur de blocs dans MakeCode. Lorsque des blocs sont définis pour des fonctions, des instructions et des affectations, le code correspondant dans l'éditeur de langage représente les blocs correspondants dans l'éditeur de blocs. Dans l'éditeur de langage, cependant, un utilisateur peut écrire du code supplémentaire avec une plus grande complexité que ce qui est disponible avec les blocs.

Simulateur

Un simulateur comporte des éléments visuels qui représentent les fonctions d'un tableau cible. Les développeurs d'une cible MakeCode peuvent ajouter des éléments d'image et des actions de code pour simuler ce qui se passe lorsque le programme est exécuté sur le matériel.

Le premier programme écrit dans MakeCode

Pendant les TPs on va utiliser l'editeur MakeCode pour micro:bit.

On va utiliser Blocks language pour afficher sur la matrice de LEDs du micro:bit le texte “Hello Sde2!”.

Premièrement, on va aller sur MakeCode et cliquer sur New Project. Après ça, vous devez donner un nom à votre projet et appuyer sur Create.

On va appuyer sur la catégorie Basic, qui se trouve dans la boîte à outils des blocs alignés à côté de l'espace de travail, et sélectionner le bloc show string.

On doit glisser le bloc, l’encadrer dans on start et changer le texte pour que le micro:bit affiche le texte donné comme argument au bloc show string quand le programme commence. Si on veut que le micro:bit répète l’affichage du texte pendant tout le temps que le programme marche, on met le bloc show string dans on forever.

Pour tester le programme on fait click sur la flèche vert en dessous du micro:bit.

on start vs. forever

Le code qui se trouve à l'intérieur du bloc on start est exécutée juste au début du programme. D’autre part, le code dans le bloc forever est exécutée tout au long de l'exécution du programme, mais dans background, c’est a dire, si une autre partie du code doit être exécutée, la boucle forever va céder le temps à cette partie.

Blocks language

Pour comprendre mieux comment Blocks language fonctionne suivre la documentation qui se trouve au début du TP!

Variables

Création de variables

Pour créer une nouvelle variable, on appuie sur la catégorie Variables et après ça, on sélectionne Make a variable. Vous devez donner un nom suggestif à votre variable et cliquez sur Ok. Par défaut, la nouvelle variable est globale.

Interaction avec les variables

Il existe 2 blocs qui nous permet d’interagir avec les variables: set et change.

Set est utilisé pour l’attribution des valeurs.

Change est utilisé pour l'incrémentation avec une certaine valeur donnée.

Pour attribuer la valeur d'une variable à une autre variable on peut utiliser 2 blocs set.

Variables pour des chaînes de caractères

Toutes les fonctions nécessaires pour travailler avec des chaînes de caractères(ex: concaténation, split etc.) se trouvent dans Advanced→Text. Chaque fonction est détaillée ici. Pour attribuer à une variable un string, vous devez remplacer la valeur de l’argument du bloc set avec le premier bloc du catégorie Text et introduire le string.

La structure de décision "if"

On trouve les blocs pour la structure de décision if dans la catégorie Logic.

Boucles

Vous pouvez trouver des explications supplémentaires sur les boucles dans Blocks language ici.

While

La syntaxe d'un boucle while.

For

La syntaxe d'un boucle for.

Repeat

La boucle repeat execute les instructions n fois.

Array

Toutes les fonctions nécessaires pour travailler avec des arrays(ex: insert, remove, indexOf etc.) se trouvent dans Advanced→Arrays. Chaque fonction est détaillée ici.

Pour initialiser un array, vous devez utiliser le bloc set [array_name] to array of [elements] et pour modifier la valeur d'un element qui se trouvent dans une certaine position vous devez utiliser le bloc [array_name] set value at [position] to [value].

Blocs utiles pour les array:

Le reste des blocs sont expliqués dans la documentation.

Math

La catégorie Math contient des blocs pour des opérations mathématiques:

Basic

La catégorie Basic vous aide à utiliser quelques fonctions et actions de base du micro:bit.

LEDs

Le dispositif a une matrice de LEDs qui peut être contrôle individuellement ou tous ensemble pour pouvoir faire des dessins dur l'écran. Chaque LED de la matrice est caractérisé par deux coordonne qui représente la ligne et la colonne ou il se trouve.

x est la coordonnée verticale et y la coordonnée horizontale.

Blocs pour la control de la matrice LED:

Butons

Sur le devant du dispositif il y a deux butons A et B, qui peut-être accéder dans le code avec buton_a et button_b. Ces boutons ont le bloc on button [A/B] pressed (catégorie Input), qui va retourne True si le bouton est appuyé, si non va retourne False. Le code qui se trouve dans on button [A/B] pressed est exécutée quand on fait click sur le buton.

Images

Vous pouvez trouver des informations concernant le travail avec des images ici.

Exercises

  1. Stockez votre nom dans un variable et affichez le sur la matrice de LEDs.
  2. Faitez le LED de la position (2,3) clignoter tout au long de l'exécution du programme.
  3. Créez un programme qui affiche l'image smiley face quand le buton A est appuyé et l'image sad face quand le buton B est appuyé.
  4. Affichez tous les chiffres paires jusqu'a 9 en utilisant la boucle for.
  5. Affichez tous les chiffres impaire jusqu'a 9 en utilisant la boucle repeat.
  6. Créez un programme qui allume et clignoter les LEDs au dessus de la diagonale principale.
  7. Créez un programme qui allume un par un les LEDs(quand le LED suivant s'allume, le LED en derrière s'éteint) de la deuxième ligne.
  8. Créez un array avec 4 images. Affichez l'image suivant quand on appuie sur le buton B et l'image précédent quand on appuie sur le buton A.

Solutions

Vous pouvez trouver les solutions ici.