Visualisation de la vidéo pour la construction d’une roue en 3D :

Visualisation de la vidéo pour la construction d’une roue en 3D :

Plusieurs exemples de scripts LUA pour changer la couleur d’un part, mourir à petit feu, devenir tout petit, glisser, voler, se téléporter, grandir, sauter plus, courir plus, crée un menu, crée une arme fatale.
Crée un Folder à ton nom pour mettre toutes tes créations :


local part = script.Parent
part.Touched:Connect(function(hit)
part.BrickColor = BrickColor.random()
part.Material = Enum.Material.Neon
end)

local part = script.Parent
part.Touched:Connect(function(hit)
-- Récupération du joueur
local character = hit.Parent
local humanoid = character and character:FindFirstChildOfClass("Humanoid")
if not humanoid or humanoid.Health <= 0 then return end
humanoid:TakeDamage(10)
end)

local part = script.Parent
part.Touched:Connect(function(hit)
-- Récupération du joueur
local character = hit.Parent
local humanoid = character and character:FindFirstChildOfClass("Humanoid")
if not humanoid or humanoid.Health <= 0 then return end
humanoid.BodyHeightScale.Value = 0.4
humanoid.BodyWidthScale.Value = 0.4
humanoid.BodyDepthScale.Value = 0.4
humanoid.HeadScale.Value = 0.4
end)

local part = script.Parent
local clickDetector = part.ClickDetector
clickDetector.MouseClick:Connect(function(player)
part.Anchored = false
part.AssemblyLinearVelocity = Vector3.new(0, 0, 50)
end)

local AntiGravity = require(game.ReplicatedStorage.AntiGravity)
local part = script.Parent
local clickDetector = part.ClickDetector
clickDetector.MouseClick:Connect(function(player)
part.Anchored = false
AntiGravity.Start(part)
part.AssemblyLinearVelocity = Vector3.new(0, 10, 10)
end)


Voici l’explication du code, ligne par ligne :
Les variables de départ
local teleports = script.Parent
local teleportA = teleports.TeleportA
local teleportB = teleports.TeleportB
On récupère deux objets dans le jeu Roblox : la plateforme A (celle sur laquelle on va marcher) et la plateforme B (celle où on va arriver). Ces deux plateformes sont des enfants du script dans l’arbre du jeu.
L’événement Touched
teleportA.Touched:Connect(function(hit)
Touched est un événement Roblox : il se déclenche automatiquement dès que quelque chose touche la plateforme A. Le paramètre hit contient la pièce (la partie du corps) qui l’a touchée.
La vérification du joueur
local character = hit.Parent
local humanoid = character and character:FindFirstChildOfClass("Humanoid")
if not humanoid or humanoid.Health <= 0 then return end
On remonte d’un niveau pour trouver le personnage entier (hit.Parent), puis on cherche s’il contient un Humanoid (ce qui prouve que c’est bien un joueur, pas un mur ou une balle). Si rien de valide n’est trouvé, ou si le joueur est mort (Health <= 0), on arrête tout avec return.
La téléportation
local offset = Vector3.new(0, 2, 0)
character:PivotTo(CFrame.new(teleportB.Position + offset))
Vector3.new(0, 2, 0) crée un décalage de 2 unités vers le haut pour que le joueur atterrisse au-dessus de la plateforme B et pas à l’intérieur. PivotTo est la fonction qui déplace instantanément tout le personnage à une nouvelle position — c’est ça la téléportation !
-- Configuration
local teleports = script.Parent
local teleportA = teleports.TeleportA
local teleportB = teleports.TeleportB
teleportA.Touched:Connect(function(hit)
-- Récupération du joueur
local character = hit.Parent
local humanoid = character and character:FindFirstChildOfClass("Humanoid")
if not humanoid or humanoid.Health <= 0 then return end
-- Décalage légert vers le haut pour poser le joueur sur la plateforme
local offset = Vector3.new(0, 2, 0)
character:PivotTo(CFrame.new(teleportB.Position + offset))
end)

local UserInputService = game:GetService("UserInputService")
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local humanoid = player.Character and player.Character:FindFirstChildOfClass("Humanoid")
local function onKeyPress(input, gameProcessed)
if not humanoid then return end
if input.KeyCode == Enum.KeyCode.F and not gameProcessed then
humanoid.JumpHeight += 8
end
if input.KeyCode == Enum.KeyCode.G and not gameProcessed then
humanoid.JumpHeight -= 8
end
print(input.KeyCode)
if input.KeyCode == Enum.KeyCode.X and not gameProcessed then
humanoid.WalkSpeed += 10
end
if input.KeyCode == Enum.KeyCode.Z and not gameProcessed then
humanoid.WalkSpeed -= 10
end
end
-- Connecter la fonction à l'événement InputBegan
UserInputService.InputBegan:Connect(onKeyPress)print("Hello world!")
Touches du clavier :


local screenGui = script.Parent
local open = screenGui.OpenButton
local screen = screenGui.Screen
local close = screen.CloseButton
local scaleUpPlayer = screen.ScaleUpPlayerButton
local scaleDownPlayer = screen.ScaleDownPlayerButton
local runSlowerPlayer = screen.RunSlowerPlayerButton
local runFasterPlayer = screen.RunFasterPlayerButton
local jumpUpPlayer = screen.JumpUpPlayerButton
local jumpDownPlayer = screen.JumpDownPlayerButton
local replicatedStorage = game:GetService("ReplicatedStorage")
local runScalePlayer = replicatedStorage:WaitForChild("RunScalePlayer")
local runScalePlayer = replicatedStorage:WaitForChild("RunScalePlayer")
local HumanoidFinder = require(replicatedStorage.HumanoidFinder)
local StarterPlayer = game:GetService("StarterPlayer")
local humanoid, character = HumanoidFinder.GetLocal()
screen.Visible = false
open.MouseButton1Click:Connect(function()
screen.Visible = not screen.Visible
open.Visible = not open.Visible
end)
close.MouseButton1Click:Connect(function()
screen.Visible = not screen.Visible
open.Visible = not open.Visible
end)
scaleUpPlayer.MouseButton1Click:Connect(function()
runScalePlayer:FireServer(0.5)
end)
scaleDownPlayer.MouseButton1Click:Connect(function()
runScalePlayer:FireServer(-0.5)
end)
runSlowerPlayer.MouseButton1Click:Connect(function()
humanoid.WalkSpeed -= 10
end)
runFasterPlayer.MouseButton1Click:Connect(function()
humanoid.WalkSpeed += 10
end)
jumpUpPlayer.MouseButton1Click:Connect(function()
humanoid.JumpHeight += 8
end)
jumpDownPlayer.MouseButton1Click:Connect(function()
humanoid.JumpHeight -= 8
end)
Créer un objet Tool puis un part renommer Handle :

Pour réduire à l’impuissance vos adversaires :
local part = script.Parent
part.Touched:Connect(function(hit)
if not hit then return end
-- Récupération du joueur
local character = hit.Parent
local humanoid = character and character:FindFirstChildOfClass("Humanoid")
if not humanoid or humanoid.Health <= 0 then return end
humanoid:TakeDamage(10)
end)
Le défi proposé consiste à programmer un robot capable de suivre un couloir au centre, de s’arrêter en fin de couloir, puis de choisir une nouvelle direction en privilégiant une possibilité d’un nouveau couloir à droite.
Le robot est équipé de trois capteurs de collision :
Tant que le capteur avant ne détecte pas la fin du couloir :
Lorsque le capteur avant détecte un obstacle frontal ou l’absence de mur en face :
répéter :
si capteur avant détecte fin du couloir :
arrêter le robot
si côté droit ouvert :
tourner à droite
sinon si côté gauche ouvert :
tourner à gauche
sinon :
faire demi-tour
sinon :
si mur trop proche à droite : se décaler à gauche
sinon si mur trop proche à gauche : se décaler à droite
sinon avancer au centre du couloir
Le code sous mBlock :

Pour aller tout droit dans le couloir :

Pour choisir sa direction :

Comment collaborer à plusieurs sur un même projet Roblox Studio
Travailler en équipe dans Roblox Studio permet à l’équipe de créer ensemble un même jeu, en temps réel.
Vous apprendrez à vous organiser, à dialoguer, et à partager des responsabilités comme dans un vrai studio de jeux vidéo !
ATTENTION Un seul membre de l’équipe doit créer le jeu de base
Dans chaque équipe, un seul membre crée le projet Roblox Studio.
Se connecter avec un compte 123codage inscrit sur l’ordinateur :
123codageXX (XX entre 01 et 10 selon le numéro du PC).
Choisir Baseplate pour commencer.

Dans le menu du haut : Fenêtre → Collaboration → Création en équipe

Un bouton “Sauvegarder sur Roblox” apparaît → clique dessus.

Vous devez décider en groupe :
Puis clique sur Sauvegarder.

Roblox studio se relance.

Toujours dans :
Fenêtre → Collaboration → Gérer les collaborateurs


Pour chaque membre :


La première étape est terminée !
Tu viens de créer un projet partagé et tu as ajouté les membres de l’équipe.
Chaque membre de l’équipe doit maintenant accéder au projet :
Dans un navigateur Hub Création Roblox :
https://create.roblox.com/
Le login doit être 123codageXX (ton numéro de PC).
Clique sur Créations dans le menu à gauche.

Tu devrais voir le projet créé par le membre de ton équipe.



Lorsque Roblox Studio s’ouvre :
Dans “Création en équipe”, tu dois voir tous les membres connectés.

Vous pouvez maintenant collaborer en temps réel !
Vous êtes prêts à travailler comme de vrais développeurs Roblox !
En respectant une bonne organisation et en communiquant régulièrement, vous pourrez créer ensemble un jeu original, complet et cohérent.

Tu apprendras à construire un véhicule en utilisant les moteurs CC et le programmer pour le déplacer.
Tu vas construire un robot véhicule autonome qui va avancer et reculer. Tu programmeras ton robot pour sauver des blessés et les emmener à l’hôpital.


Construis ton robot :



Clique sur le menu Edition en haut de l’écran et choisis Paramètres des ports.
Clique ensuite sur le bouton Tout décocher .
Puis indique tous les éléments que tu as rajoutés sur ton robot.

Valide tes modifications en cliquant sur le bouton OK
Tu vas programmer les deux moteurs à courant continu pour déplacer ton véhicule.
Assemble ces blocs

Puis clique sur le menu Exécuter en haut de l’écran et choisis Transférer
Que constates-tu ? Comment se déplace ton véhicule ? Les deux roues tournent-elles ?

Concevoir un mini-projet : un « arbre de Noël » avec 3 LED qui s’allument au claquement de mains.

Clique sur le menu Edition en haut de l’écran et choisis Paramètres des ports.
Clique ensuite sur le bouton Tout décocher .
Puis indique tous les éléments que tu as rajoutés sur ton robot.

Cable et valide tes modifications en cliquant sur le bouton OK
Attention au positionnement du câble gris sur la carte ARDUINO !!!
Tu vas créer 5 animations :
Pour cela tu vas créer 5 fonctions :



Code les 5 fonctions pour allumer ou éteindre les LEDs en choisissant « on » ou « off ».

Puis testes le fonctionnement des fonctions en mode test :

Après l’affichage du tableau des capteurs clique sur l’étiquette de chaque « Fonction » pour tester l’animation des diffréntes LEDs.
Clique sur « Exécuter » puis sur « Activer le test »

Tu animes ton arbre de Noël en cliquant sur chaque fonction.
Ta mission :
Maintenant, automatises l’animation pour ne plus avoir besoin de cliquer sur chaque animation.
Code les animations pour qu’elles se succédent indéfiniment.
Une solution
Automatise ton spectacle d’animation lumineux en utilisant le « chronomètre » pour cadencer ton animation.
Teste le fonctionnement du « chronomètre ». Dans « Capteurs », coche l’affichage de « chronomètre ».

Utilise le « chronomètre » pour allumer ta LED au bout de 2 secondes.

Agence ces instructions sous « démarrer le programme «
Clique sur « Exécuter » puis sur « Activer le test »

Clique sur le drapeau vert en haut à droite de l’écran pour lancer l’exécution de ton programme.

Un bord blanc apparaît pour indiquer que le programme s’exécute.
Que constates-tu ? Le chronomètre evolue-t-il ? La LED s’allume-t-elle ? Le bord blanc disparait-il ?

La LED s’allume et le bord blanc disparaît au bout de 2 secondes.
Ta mission :
Fais clignoter ta LED toutes les secondes. Pour cela, crée une variable « ANIMATION ». Elle prendra les valeurs suivantes :

Toutes les secondes la variable ANIMATION passe de la valeur 0 à 1, la LED s’allume et s’éteint ainsi toutes les secondes.

Clique sur le menu Exécuter en haut de l’écran puis choisis Transférer
Utilise les animations que tu avais crées pour utiliser plusieurs LEDs :

Clique sur le menu Exécuter en haut de l’écran puis choisis Transférer
Tu peux améliorer ton code pour le rendre plus lisible :
Crée une fonction INIT pour regrouper les instructions au lancement de ton programme :

Ton code est ainsi plus facile à comprendre.
Clique sur le menu Exécuter en haut de l’écran puis choisis Transférer
Continue à améliorer ton animation des LEDs. Allume les trois LEDs, puis la LED0, puis la LED1, puis la LED2.

Tu peux inventer autant d’animations que tu souhaites. A toi d’être imaginatif, tu peux faire varier la variable ANIMATION à plus de 4 animations. A toi de trouver les animations et de faire attention à modifier dans la fonction INIT le nombre maximum d’animation.
Code tes animations puis clique sur le menu Exécuter en haut de l’écran puis choisis Transférer
Code pour que ton spectacle se lance par un clap des mains puis s’arrête par un nouveau clap des mains.
Le son de ton clap de main dure un certain temps. Les instructions suivantes te permettent de détecter un son puis de détecter quand le son se termine :

Il est important d’attendre que le son du claquement de mains soit terminé.
Sinon, ton programme risque de détecter un nouveau claquement alors que le premier n’est pas encore fini !
À chaque claquement de mains, ton robot allume ou éteint les LED.
Maintenant programme pour que sur un clap des mains le spectacle de lumière se lance puis tu peux l’arrêter par un nouveau clap des mains.
Ton spectacle doit être magnifique, faire clignoter toutes les LEDs en même temps, les faire clignoter successivement …
Crée une variable « ON » qui va mémoriser l’état de ton animation :

Puis une fonction qui teste le microphone pour allumer ou éteindre
l’animation :


Insère ta fonction « SI_ON » dans le code principal et conditionne le lancement de ton animation en fonction de la variable « ON ».

Clique sur le menu Exécuter en haut de l’écran puis choisis Transférer
Tu dois inventer une nouvelle signalisation

Tu vas construire et programmer un feu de circulation nouvelle génération !
Ta mission : aider le gouvernement à simplifier les feux pour réduire la consommation d’énergie tout en assurant la sécurité de tous les usagers.
| Couleur | Signification | Action attendue |
|---|---|---|
| 🟢 Vert | Passage autorisé | Les voitures roulent |
| 🟡 Orange | Attention, changement | Prépare à s’arrêter |
| 🔴 Rouge | Passage interdit | Les voitures s’arrêtent |
Mais… ton défi est de supprimer une couleur !
Tu devras donc imaginer une nouvelle logique à deux couleurs :
Le gouvernement français souhaite réaliser des économies d’énergie.
Tu dois créer un feu bicolore intelligent (vert + rouge) capable de :
- Réguler la circulation des véhicules.
- Avertir avant le passage au rouge grâce au clignotement.
- Laisser passer les piétons avec un capteur de pression (bouton).
- Activer une alarme quand un piéton peut traverser.
Clique sur le menu Edition en haut de l’écran et choisis Paramètres des ports.
Clique ensuite sur le bouton Tout décocher .
Puis indique tous les éléments que tu as rajoutés sur ton robot.

Cable et valide tes modifications en cliquant sur le bouton OK

Dans un premier temps, tu devras allumer la LED verte pour avertir les automobilistes qu’ils peuvent passer, puis, après un certain délai, allumer la LED rouge pour interdire le passage des véhicules.

Assemble les blocs puis clique sur le menu Exécuter en haut de l’écran et choisis Transférer

Tu devras faire clignoter la LED verte pour avertir les automobilistes que le feu va passer au rouge et qu’ils doivent se préparer à arrêter leur véhicule.

Assemble les blocs puis clique sur le menu Exécuter en haut de l’écran et choisis Transférer.

En utilisant des fonctions, tu vas réorganiser ton code pour le rendre plus lisible et faciliter son évolution..



Assemble les blocs puis clique sur le menu Exécuter en haut de l’écran et choisis Transférer

Les fonctions permettent de regrouper plusieurs blocs qui réalisent une même action (par exemple : « attention_vehicule »).
Elles évitent de répéter le même code plusieurs fois, ce qui rend le programme plus court et plus clair.
Elles facilitent la lecture du programme, car chaque fonction porte un nom qui décrit son rôle.
Elles rendent le code plus facile à modifier ou à corriger, car une seule modification dans la fonction s’applique partout.
Enfin, elles aident à mieux organiser sa pensée comme un vrai programmeur, en découpant le problème en petites étapes logiques.
Tu vas gérer les LEDs verte et rouge du piéton en fonction de celles du passage des véhicules.
Tu vas gérer le passage piéton :

Clique sur le menu Exécuter en haut de l’écran et choisis Transférer

Tu vas faire clignoter la LED verte du piéton pour l’avertir que le feu va bientôt passer au rouge.

Clique sur le menu Exécuter en haut de l’écran et choisis Transférer

Tu vas déclencher le buzzer lorsque les piétons peuvent passer pour avertir les personnes non-voyantes.

Clique sur le menu Exécuter en haut de l’écran et choisis Transférer

Nous allons utiliser des variables pour fixer des temps d’attente différents : un pour les conducteurs et un autre pour les piétons.


Clique sur le menu Exécuter en haut de l’écran et choisis Transférer

Les variables sont comme des boîtes dans lesquelles on peut ranger des informations (par exemple un nombre, le temps d’attente en seconde).
Elles permettent au programme de mémoriser des données et de s’en servir plus tard.
Grâce aux variables, ton programme peut changer de comportement selon la situation (par exemple, attendre plus ou moins longtemps).
Elles rendent le code plus facile à comprendre et à modifier, car il suffit de changer la valeur d’une variable pour tout adapter.
En résumé, les variables servent à donner de la mémoire et de la souplesse à ton programme.
Pendant la phase d’attente, le piéton pourra demander l’arrêt des véhicules pour traverser en toute sécurité.
Le piéton devra appuyer sur le capteur de pression pour obtenir l’autorisation de passer.

La demande du piéton sera traitée pendant sa phase d’attente au feu rouge.
Tu utiliseras un chronomètre pour compter le temps d’attente du piéton tout en vérifiant si le capteur de pression est activé.
Si le piéton appuie sur le capteur, sa valeur sera égale à zéro.
Tu laisseras ensuite un petit temps supplémentaire pour que les voitures puissent encore passer avant que le feu piéton ne devienne vert.


Clique sur le menu Exécuter en haut de l’écran et choisis Transférer

Un exemple de service de la gestion de la circulation
Gertrude Saem a été créée en 1981 par la Communauté Urbaine de Bordeaux avec l’objectif de développer un système d’avant-garde pour améliorer ou résoudre les problèmes de circulation, de transport publics, de contrôle et de diminution de la pollution véhiculaire et de sécurité dans la ville.
Le principe est de minimiser les temps d’attente en synchronisant les feux sur les grands axes, en fonction du trafic. Des installations comptent les véhicules ou les longueurs des files d’attente (boucles magnétiques implantées dans la chaussée, aux carrefours et sur les axes), et le tout est centralisé à un poste de commande, qui régule informatiquement les feux de la ville ou de l’agglomération et fluidifie ainsi le trafic.
GERTRUDE EN FRANCE
Antibes, Bordeaux, Brive, Caen, Dax, Dunkerque, Fort-de-France, Le Mans, Marseille, Metz, Mimizan, Mont de Marsan, Montpellier, Nîmes, Reims, Troyes, Saint-Vincent-de-Tyrosse, SDEC du Calvados.
UN SAVOIR-FAIRE ET DES SOLUTIONS QUI S’EXPORTENT DANS LE MONDE
Algérie (Alger), Argentine (Posadas), Chine (Pékin), Egypte (Le Caire), Maroc (Casablanca), Mexique (Monterrey, Morelia), Paraguay (Asuncion), Pologne (Wroclaw), Portugal (Lisbonne, Porto).
Tu as déjà appris les bases de Python et tu veux aller plus loin ? Avec la micro:bit, tu vas coder des jeux, des calculatrices, des capteurs, et bien plus encore.
Tu vas manipuler des boucles, des fonctions, des événements, et même des conversions de bases (binaire, hexadécimal, etc.) — des compétences utiles pour le lycée, les études, et même dans le monde professionnel.
La micro:bit interagit avec le monde réel grâce à ses boutons, ses capteurs et son écran LED. Tu pourras voir le résultat de ton code en temps réel !
Apprendre à utiliser et manipuler des tables (ou listes) en Python, en affichant une séquence de chiffres ou d’images sur l’écran de la micro:bit.
[ ].Image.NOM_DE_L_IMAGE (ex : Image.SMILE).from microbit import *
while True:
all_images = [str(1), str(2), str(3)]
display.show(all_images, delay=300)
Modifie le programme suivant pour qu’il affiche, dans l’ordre, les chiffres de 1 à 5 sur l’écran de la micro:bit, avec un délai de 300 ms entre chaque chiffre.
all_images Actuellement, la table all_images contient les chaînes de caractères "1", "2" et "3". Question : Comment faire pour qu’elle contienne les chiffres de 1 à 5 ?"4" et "5") dans la table all_images."A", "B", "C").Image.HAPPY, Image.SAD, Image.HEART).Crée une animation graphique :
from microbit import *
while True:
image1 = Image("99999:"
"90009:"
"90009:"
"90009:"
"99999")
image2 = Image("00000:"
"09990:"
"09090:"
"09990:"
"00000")
image3 = Image("00000:"
"00000:"
"00900:"
"00000:"
"00000")
image4 = Image("00000:"
"00000:"
"00000:"
"00000:"
"00000")
image5 = Image("99999:"
"99999:"
"99999:"
"99999:"
"99999")
all_images = [image1, image2, image3, image4, image5]
display.show(all_images,delay=300)

Découvrir le fonctionnement d’une variable booléenne (True/False) et la gestion du temps en Python, en créant un chronomètre qui se lance et s’arrête quand on touche le logo de la micro:bit
from microbit import *
import time
start = 0
triggered = False
while True:
if pin_logo.is_touched():
triggered = not triggered
while pin_logo.is_touched():
start = time.ticks_ms()
else:
if triggered :
display.scroll(int((time.ticks_ms() - start)/1000))
else:
display.show(Image.HEART)
triggered
triggered vaut False au début : le chronomètre est arrêté.triggered devient True (chronomètre lancé), et redevient False si on retouche le logo (chronomètre arrêté).triggered = not triggered ?triggered est True, le chronomètre doit compter les secondes.triggered est False, le chronomètre doit s’arrêter.time.ticks_ms() pour mesurer le temps en millisecondes.
Chronomètre lancé :

from microbit import *
import time
import music
start = 0
triggered = False
while True:
if pin_logo.is_touched():
triggered = not triggered
while pin_logo.is_touched():
start = time.ticks_ms()
elif button_a.is_pressed():
while button_a.is_pressed() :
start = time.ticks_ms()
else:
if triggered :
duration = int((time.ticks_ms() - start)/1000)
music.pitch(200, 50)
if (duration % 10) == 0:
music.pitch(300, 80)
display.scroll(duration)
else:
display.show(Image.HEART)
Consigne : Écrire un programme Python qui demande à l’utilisateur de saisir un nombre entier décimal, puis affiche sa représentation en base dans une base de 2 à 36.
Exemple : Pour une conversion en base 16 (hexadécimal), si l’utilisateur saisit 10, le programme doit afficher E.
0 à 9 et les lettres A à F pour représenter les valeurs de 10 à 15.A, B, C, D, E ou F.Exemple de programme :
from microbit import display, Image, button_a, pin_logo
# base donnée (2 ≤ base ≤ 36)
digits = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
base = 16
def decimal_to_base_n(decimal_num, base):
"""
Convertit un nombre décimal (int) dans une base donnée (2 ≤ base ≤ 36).
Retourne une chaîne représentant le nombre dans la base souhaitée.
"""
if base < 2 or base > 36:
raise ValueError("La base doit être comprise entre 2 et 36.")
result = []
if decimal_num == 0:
return "0"
decimal_num = abs(decimal_num)
while decimal_num > 0:
# Obtenir le reste de la division entière du nombre par la base
remainder = decimal_num % base
result.append(digits[remainder])
decimal_num = decimal_num // base
return ''.join(reversed(result))
# Addition de deux nombres
i = 0
display.show(Image.PACMAN)
while True:
# Résultat de l'addition
if pin_logo.is_touched():
display.show("=" + decimal_to_base_n(i, base))
i = 0
while pin_logo.is_touched():
pass
# Choix d'un nombre avec le bouton A
elif button_a.is_pressed():
i = i+1
display.show(str(i))
while button_a.is_pressed() :
pass
Choisis avec le bouton A le chiffre 10 :

Convertis le chiffre 10 en décimal en base 16 avec la zone sensitive :

Tu vas programmer une micro:bit pour qu’elle fonctionne comme une calculette permettant d’additionner deux nombres dans une base choisie (entre 2 et 36). Par exemple, si la base est 16, tu pourras additionner deux chiffres hexadécimaux (comme A + 5 = F).
decimal_to_base_n(decimal_num, base) qui convertit un nombre décimal en une chaîne de caractères représentant ce nombre dans la base choisie.
decimal_to_base_n(15, 16) doit retourner "F".base est déjà initialisée à 16, mais tu pourras la changer pour tester d’autres bases (entre 2 et 36).i) et l’afficher.j) et l’afficher.i + j dans la base choisie, sous la forme =X (où X est le résultat de l’addition de i + J).i et j doivent être remis à zéro.from microbit import display, Image, button_a, button_b, pin_logo
# base donnée (2 ≤ base ≤ 36)
digits = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
base = 16
def decimal_to_base_n(decimal_num, base):
"""
Convertit un nombre décimal (int) dans une base donnée (2 ≤ base ≤ 36).
Retourne une chaîne représentant le nombre dans la base souhaitée.
"""
if base < 2 or base > 36:
raise ValueError("La base doit être comprise entre 2 et 36.")
result = []
if decimal_num == 0:
return "0"
decimal_num = abs(decimal_num)
while decimal_num > 0:
# Obtenir le reste de la division entière du nombre par la base
remainder = decimal_num % base
result.append(digits[remainder])
decimal_num = decimal_num // base
return ''.join(reversed(result))
# Addition de deux nombres
i = 0
j = 0
display.show(Image.PACMAN)
while True:
# Résultat de l'addition
if pin_logo.is_touched():
display.show("=" + decimal_to_base_n(i+j, base))
i, j = 0, 0
while pin_logo.is_touched():
pass
# Choix d'un nombre avec le bouton A
elif button_a.is_pressed():
i = i+1 if i < base-1 else 0
display.show(digits[i])
while button_a.is_pressed() :
pass
# Choix du deuxième nombre par la touche B
elif button_b.is_pressed():
j = j+1 if j < base-1 else 0
display.show(digits[j])
while button_b.is_pressed() :
pass
Choix du premier nombre par la touche A :

Choix du deuxième nombre par la touche B :

Demande le résultat de la somme par la zone sensitive :

Découvrir le code en python :
Bienvenue dans ce livret qui va te permettre de découvrir le monde
passionnant de la programmation avec le langage Python et la carte
micro:bit ! Tu vas t’amuser à apprendre les bases du codage tout en
explorant les fonctionnalités géniales de la carte micro:bit. Python est un langage de programmation puissant, mais pas compliqué une fois qu’on le comprend bien. Avec lui, tu pourras créer des jeux, contrôler des robots, afficher des messages et bien plus encore sur ta carte micro:bit.
Contrôler la carte micro:bit en python :
Dans ce livret, tu vas découvrir pas à pas comment écrire des lignes de code en Python pour contrôler ta carte micro:bit. N’aie pas peur, on va commencer par les bases, et tu verras à quel point coder peut-être amusant et créatif ! Alors, prêt à plonger dans le monde magique de la programmation avec Python et la carte micro:bit ? C’est parti !
Editeur MU Python :
MU est choisi comme éditeur pour sa simplicité d’utilisation et sa
convivialité, spécialement conçu pour les débutants en programmation.
Son interface intuitive offre une plateforme idéale pour coder en Python pour la carte micro:bit. Avec ses fonctionnalités adaptées, MU facilite l’écriture, la modification et l’exécution du code, offrant ainsi une expérience d’apprentissage agréable et efficace dans le cadre de la robotique.


Dans MU par le bouton Mode sélectionner BBC microbit :

Puis créé un nouveau fichier

La première fonction, toute simple, de la carte micro:bit consiste à afficher un texte qui va défiler lettre par lettre sur l’écran :

from microbit import display
display.show('Bonjour comment vas-tu ?')


Que constates-tu après avoir téléversé le programme ?
Le texte doit défilé sur la carte micro :bit.
Tu peux simuler ton code sur le site : https://create.withcode.uk/
Copie et colle ton programme Python
Appuie ensuite sur les touches Ctrl+Entrée. Le simulateur démarre et affiche la carte micro:bit avec laquelle il est possible d’interagir.
Il est possible d’afficher des icônes sur l’écran composé d’une matrice de 5×5 LEDs en utilisant la commande display.show().
from microbit import display
display.show(Image.ANGRY)
Utilise l’icône « Vérifier » pour ton code : il te manque l’objet « Image »

from microbit import display, Image
display.show(Image.ANGRY)

Que constates-tu après avoir téléversé le programme ?
L’icone s’affiche sur l’écran des 25 LEDs ?

Pour connaître toutes les images possibles deux solutions :
Solution 1 :

Solution 2 :
Utilise l’icône « REPL » et dans la fenêtre ouverte frappe les indications
suivantes :
from microbit import *
dir(display)
dir(Image)

Tu peux concevoir ta propre icône en spécifiant quelles LEDs doivent être allumées pour dessiner l’image désirée.
from microbit import display, Image
led_image = Image('00900:00900:99999:00900:00900')
display.show(led_image)

Que constates-tu après avoir téléversé le programme ?
A quoi correspond les 0 et les 9 de led_image ?
Comment modifier led_image pour avoir ton icône ?
Tu as la possibilité de contrôler l’intensité de chaque LED en ajustant la valeur de chacune sur une échelle de 1 à 9.

from microbit import display, Image
led_image = Image( '00900:00500:95959:00500:00900')
display.show(led_image)

Que constates-tu après avoir téléversé le programme ?
Vois-tu des différences d’intensité entre chaque LED ?

Pour créer un effet de clignotement d’une icône, tu dois afficher cette dernière pendant une durée déterminée, puis éteindre la matrice de LEDs.
from microbit import display,Image
import time
while True:
led_image = Image('00900:00900:99999:00900:00900')
display.show(led_image)
time.sleep(0.5)
display.clear()
time.sleep(0.5)

Que constates-tu après avoir téléversé le programme ?
Comment peux-tu modifier pour un clignotement plus rapide ou plus lent ?
Afficher les aiguilles toutes les secondes.
from microbit import display,Image
import time
seconde=0
while True:
if seconde==0:
display.show(Image.CLOCK12)
if seconde==1:
display.show(Image.CLOCK1)
if seconde==2:
display.show(Image.CLOCK2)
if seconde==3:
display.show(Image.CLOCK3)
if seconde==4:
display.show(Image.CLOCK4)
if seconde==5:
display.show(Image.CLOCK5)
if seconde==6:
display.show(Image.CLOCK6)
if seconde==7:
display.show(Image.CLOCK7)
if seconde==8:
display.show(Image.CLOCK8)
if seconde==9:
display.show(Image.CLOCK9)
if seconde==10:
display.show(Image.CLOCK10)
if seconde==11:
display.show(Image.CLOCK11)
seconde=-1
time.sleep(1)
seconde+=1


La carte micro:bit dispose d’un buzzer. Programme le battement d’un cœur !
from microbit import *
import time
import music
# Buzzer on pin_speaker
while True:
display.show(Image.HEART)
time.sleep(1)
led_image = Image('00000:09090:09990:00900:00000')
display.show(led_image)
music.pitch(200, duration=500)

La carte micro:bit dispose de deux boutons permettant de déclencher des actions : le bouton A à gauche de la carte, le bouton B à droite.
Programme en utilisant le bouton A :
from microbit import display, button_a, Image
import time
while True:
if button_a.is_pressed():
led_image = Image("40004:06060:00900:06060:40004")
display.show(led_image)
time.sleep(0.5)
display.clear()
time.sleep(0.5)
led_image = Image("33333:30003:30003:30003:33333")
display.show(led_image)


Optimise ton code :
from microbit import display, button_a, Image
import time
led_image_a = Image("40004:06060:00900:06060:40004")
led_image = Image("33333:30003:30003:30003:33333")
while True:
if button_a.is_pressed():
display.show(led_image_a)
time.sleep(0.5)
display.clear()
time.sleep(0.5)
display.show(led_image)
Programme en utilisant le bouton A et le bouton B:
from microbit import display, button_a, button_b, Image
import time
led_image_a = Image("90009:09090:00900:09090:90009")
led_image_b = Image("99999:99999:99999:99999:99999")
led_image = Image("33333:30003:30003:30003:33333")
while True:
if button_a.is_pressed():
display.show(led_image_a)
time.sleep(0.5)
display.clear()
time.sleep(0.5)
if button_b.is_pressed():
display.show(led_image_b)
time.sleep(0.5)
display.clear()
time.sleep(0.5)
display.show(led_image)


Touche la touche sensitive pour changer les LEDs.
from microbit import display, Image, pin_logo
import time
while True:
# Détection de la zone sensible
if pin_logo.is_touched():
led_image = Image('90009:09090:00900:09090:90009')
display.show(led_image)
# Affichage tant que la zone sensible est touchée
while pin_logo.is_touched():
pass
led_image = Image('00900:00900:99999:00900:00900')
display.show(led_image)

Que constates-tu après avoir téléversé le programme ?
Les LEDs changent quand tu passes ton doigt sur la zone sensitive ?

Modifie ton programme sur le battement du cœur pour augmenter ou baisser la note par les touches A et B, activer ou éteindre le son avec la zone sensitive.
from microbit import display, Image, button_a, button_b, pin_logo
import time
import music
note = 200
on = True
start = time.time()
while True:
# Battement du coeur toutes les 1 seconde
if time.time() - start > 1:
start = time.time()
display.clear()
if on :
music.pitch(note, 200)
time.sleep(0.1)
else:
display.show(Image.HEART)
# Modification de la note avec la touche A
if button_a.is_pressed():
if note > 0 :
note -= 10
while button_a.is_pressed():
pass
on = True
# Modification de la note avec la touche B
if button_b.is_pressed():
if note < 600 :
note += 10
while button_b.is_pressed():
pass
on = True
# Activer ou non le battement du coeur
if pin_logo.is_touched():
if on :
on = False
else:
on = True
while pin_logo.is_touched() :
pass

Secouer la carte pour allumer les LEDs.
from microbit import display, Image, accelerometer
import time
while True:
if accelerometer.current_gesture() == 'shake' :
led_image = Image('90009:09090:00900:09090:90009')
display.show(led_image)
time.sleep(0.1)
led_image = Image('00900:00900:99999:00900:00900')
display.show(led_image)

Que constates-tu après avoir téléversé le programme ?
Tu peux essayer ces différentes possibilités :
Documentation sur l’accéléromètre
from microbit import *
led_image = Image("33333:30003:30003:30003:33333")
while True:
if accelerometer.current_gesture() == 'face up':
display.show(Image.ARROW_N)
elif accelerometer.current_gesture() == 'face down':
display.show(Image.ARROW_S)
elif accelerometer.current_gesture() == 'left':
display.show(Image.ARROW_W)
elif accelerometer.current_gesture() == 'right':
display.show(Image.ARROW_E)
else:
display.show(led_image)

Claque des mains pour allumer les LEDs.
from microbit import *
microphone.set_threshold(SoundEvent.LOUD, 80)
while True:
if microphone.current_event() == SoundEvent.LOUD:
led_image = Image('90009:09090:00900:09090:90009')
display.show(led_image)
led_image = Image('00900:00900:99999:00900:00900')
display.show(led_image)

from microbit import *
import time
while True:
if microphone.sound_level() > 64:
led_image = Image('90009:09090:00900:09090:90009')
display.show(led_image)
time.sleep(0.3)
else:
led_image = Image('00900:00900:99999:00900:00900')
display.show(led_image)

Que constates-tu après avoir téléversé le programme ?
Essaye d’allumer les LEDs d’un claquement de mains, elles doivent rester allumer. Puis claque des mains pour les éteindre.
Joue différentes musiques en appuyant sur les boutons A et B et sur la zone sensitive.
from microbit import button_a, button_b, pin_logo, pin_speaker
import time
def pitch(pin, noteFrequency, noteDuration, silence_ms=10):
if noteFrequency != 0:
microsecondsPerWave = 1e6 / noteFrequency
millisecondsPerCycle = 1000 / (microsecondsPerWave * 2)
loopTime = noteDuration * millisecondsPerCycle
for x in range(int(loopTime)):
pin.write_digital(1)
time.sleep(int(microsecondsPerWave))
pin.write_digital(0)
time.sleep(int(microsecondsPerWave))
else:
time.sleep_ms(noteDuration)
time.sleep_ms(silence_ms)
def BuzzerStarWars(pin):
NOTES = ([293.66, 293.66, 293.66, 392.0, 622.25, 554.37,
523.25, 454, 932.32, 622.25, 554.37, 523.25,
454, 932.32, 622.25, 554.37, 523.25, 554.37, 454])
DURATIONS = ([180, 180, 180, 800, 800, 180, 180, 180, 800,
400, 180, 180, 180, 800, 400, 180, 180, 180, 1000])
SILENCE_DELAYS = ([40, 40, 40, 100, 100, 40, 40, 40, 100, 50,
40, 40, 40, 100, 50, 40, 40, 40, 100])
for i in range(len(NOTES)):
pitch(pin, NOTES[i], DURATIONS[i], SILENCE_DELAYS[i])
def BuzzerR2D2(pin):
R2D2_NOTES = ([3520, 3135.96, 2637.02, 2093, 2349.32,
3951.07, 2793.83, 4186.01, 3520, 3135.96,
2637.02, 2093, 2349.32, 3951.07, 2793.83, 4186.01])
for i in range(len(R2D2_NOTES)):
pitch(pin, R2D2_NOTES[i], 80, 20)
def BuzzerCarribeanPirates(pin):
NOTES_1 = ([330, 392, 440, 440, 0, 440, 494, 523, 523,
0, 523, 587, 494, 494, 0, 440, 392, 440, 0])
DURATIONS_1 = ([125, 125, 250, 125, 125, 125, 125, 250,
125, 125, 125, 125, 250, 125, 125, 125, 125, 375, 125])
NOTES_2 = ([330, 392, 440, 440, 0, 440, 523, 587, 587, 0,
587, 659, 698, 698, 0, 659, 587, 659, 440, 0,
440, 494, 523, 523, 0, 587, 659, 440, 0, 440,
523, 494, 494, 0, 523, 440, 494, 0])
DURATIONS_2 = ([125, 125, 250, 125, 125, 125, 125, 250, 125,
125, 125, 125, 250, 125, 125, 125, 125, 125,
250, 125, 125, 125, 250, 125, 125, 250, 125,
250, 125, 125, 125, 250, 125, 125, 125, 125, 375, 375])
for j in range(2):
for i in range(len(NOTES_1)):
pitch(pin, NOTES_1[i], DURATIONS_1[i])
for k in range(len(NOTES_2)):
pitch(pin, NOTES_2[k], DURATIONS_2[k])
while True:
if button_a.is_pressed():
BuzzerStarWars(pin_speaker)
if button_b.is_pressed():
BuzzerR2D2(pin_speaker)
if pin_logo.is_touched():
BuzzerCarribeanPirates(pin_speaker)

Secoue la micro :bit pour jouer aux dés.
from microbit import *
import random
import music
de_1 = Image('00000:00000:00900:00000:00000')
de_2 = Image('00009:00000:00000:00000:90000')
de_3 = Image('00009:00000:00900:00000:90000')
de_4 = Image('90009:00000:00000:00000:90009')
de_5 = Image('90009:00000:00900:00000:90009')
de_6 = Image('90009:00000:90009:00000:90009')
display.show('?')
nombre = 0
while True:
if accelerometer.current_gesture() == 'shake' :
nombre = random.randint(1, 6)
music.pitch(440, 50)
if nombre == 1:
display.show(de_1)
if nombre == 2:
display.show(de_2)
if nombre == 3:
display.show(de_3)
if nombre == 4:
display.show(de_4)
if nombre == 5:
display.show(de_5)
if nombre == 6:
display.show(de_6)
