Ajoute un module à une carte avec « Ajouter un module », puis choisis la broche sur laquelle tu le branches. Un module non branché ne réagit pas.
Feu tricolore
Trois LED : rouge, orange et vert, chacune sur sa broche. Sur le feu Kitronik, elles sont reliées à pin0, pin1 et pin2.
# allume la LED branchée sur pin0 pin0.write_digital(1)
Ruban de LED
30 LED de couleur, commandées par une seule broche.
from neopixel import * np = NeoPixel(pin0, 30) np[4] = (0, 255, 0) np.show()
LED Grove
# allumée pin1.write_digital(1) # allumée à 30 % environ pin1.write_analog(300)
Buzzer
import music music.pitch(440, 200, pin0) music.play(music.BA_DING, pin0)
Capteur à ultrasons
Il se branche sur une seule broche. Recopie cette fonction, puis appelle-la avec ta broche, par exemple d = distance_cm(pin1).
import utime
import machine
def distance_cm(broche):
broche.write_digital(0)
utime.sleep_us(2)
broche.write_digital(1)
utime.sleep_us(5)
broche.write_digital(0)
broche.read_digital()
temps = machine.time_pulse_us(broche, 1, 1000000)
return temps * 0.0340 / 2 + 0.55
Capteur infrarouge
# 0 : un véhicule est détecté if pin1.read_digital() == 0:
Barrière (servomoteur)
Recopie ces fonctions, puis appelle-les avec ta broche, par exemple ouvre_barriere(pin0).
def pilotage(angle):
return round(0.5125 * angle + 46)
def ouvre_barriere(broche):
broche.set_analog_period(20)
broche.write_analog(pilotage(0))
def ferme_barriere(broche):
broche.set_analog_period(20)
broche.write_analog(pilotage(90))
Lampadaire LAMP:bit
Une lampe (LAMP) et un capteur de lumière (DETECT), chacun sur sa broche. Sur le vrai LAMP:bit, LAMP est sur pin0 et DETECT sur pin1.
# allume la lampe pin0.write_digital(1) # lumière reçue, de 0 à 1023 lumiere = pin1.read_analog()
Carte
| from microbit import * | toujours en 1re ligne |
| display.show(x) | caractère, nombre ou image |
| display.scroll("texte") | faire défiler un texte |
| display.set_pixel(x, y, v) | LED colonne x, ligne y, intensité 0 à 9 |
| display.clear() | tout éteindre |
| sleep(1000) | pause d'une seconde |
| button_a.is_pressed() | True si A est enfoncé |
| display.read_light_level() | lumière ambiante, de 0 à 255 |
| accelerometer.was_gesture("shake") | True si la carte a été secouée |
| print(a) | afficher dans la console |
Broches
| pin0.write_digital(1) | sortie : 1 (allumé) ou 0 (éteint) |
| pin0.write_analog(v) | sortie réglable : v de 0 à 1023 |
| pin1.read_digital() | entrée : 0 ou 1 |
| pin1.read_analog() | entrée : de 0 à 1023 |
Radio
| import radio | importer le module radio |
| radio.config(group=1) | même groupe sur les deux cartes |
| radio.on() | allumer la radio |
| radio.send("A") | envoyer un texte |
| m = radio.receive() | texte reçu, ou None |
Python
| while True: | répéter sans fin |
| for i in range(10): | i = 0, 1, …, 9 |
| if … : / elif … : / else : | si / sinon si / sinon |
| == != < > <= >= | comparaisons |
| def nom(a, b): | définir une fonction |
| randint(1, 6) | hasard, 6 inclus (from random import *) |
Quelques idées de projets. Il n'y a pas de correction : à toi de vérifier que cela fonctionne.
Feu tricolore
Programme le cycle d'un feu : vert 3 s, orange 1 s, rouge 3 s, puis on recommence.
Feu piéton
Quand un piéton appuie sur le bouton A, le feu passe à l'orange puis au rouge, reste rouge 5 s, puis repasse au vert.
Deux feux synchronisés
Un feu sur chaque carte : quand l'un est vert, l'autre est rouge. La carte 1 commande la carte 2 par radio.
Passage à niveau
Quand le capteur infrarouge détecte un véhicule, la barrière se lève et le feu passe au vert ; elle se baisse quand le véhicule est passé.
Radar de recul
Plus l'obstacle est proche du capteur à ultrasons, plus le buzzer sonne vite, et plus il y a de LED allumées sur le ruban.
Lampadaire automatique
La lampe du LAMP:bit s'allume quand la lumière ambiante baisse. Une seconde carte affiche l'état de la lampe à distance.
Dé et ruban
Quand on secoue la carte, le ruban affiche autant de LED que le résultat du dé.