Le kit Grove
Il est parfois nécessaire d'utiliser deux fichiers contenant des fonctions écrites pour simplifier le code python à utiliser.
Pour les utiliser il faut copier les trois fichiers micro_grove.py
, gesture.py
et display_4d.py
dans le dossier mu_code
de l'ordinateur, cliquer sur le bouton :
vous devriez le voir apparaître coté ordinateur; il suffit ensuite de le glisser sur la carte micro:bit.
Info
Le dossier mu_code
est crée lors de l'installation de Mu sur votre ordinateur. Pour trouver ce dossier :
- taper C: dans la barre d'adresse de l'explorateur de fichier.
- cliquer sur Utilisateurs ou Users
- cliquer sur votre nom d'utilisateur
- cliquer sur mu_code
A télécharger
Faire un clic droit sur chaque fichier et choisir enregistrer la cible du lien vers
Le shield
Ce shield est une carte d'interface permettant de raccorder facilement et sans soudure les capteurs et les actionneurs Grove de Seeedstudio sur une carte micro:bit.
Ce shield comporte :
- 4 connecteurs Grove : I2C, P0/P14, P1/P15, P2/P16
- 8 connecteurs Edge pour pince crocodile ou fiche banane : 3V3, P0, P1, P2, P8, P12, P13, GND
- un port micro-USB permettant une alimentation de la carte micro:bit et des différents capteurs et modules
- une LED verte de mise sous tension.
Capteurs
Pour information, si le capteur est branché sur la broche P0, la mesure analogique réalisée par le capteur est convertie en une valeur numérique entière comprise entre 0 et 1023 que l'on lit avec l'instruction :
pin0.read_analog()
.
Pour simplifier nous utiliserons les fonctions du fichier micro_grove.py
dont les fonctions sont décrites en bas de page.
Le potentiomètre
Le capteur d'angle rotatif (ou potentiomètre) produit une sortie analogique variable selon l'angle de rotation. La plage angulaire est de 300 degrés avec un changement linéaire de valeur.
Pour simplifier on utilisera la fonction position_curseur
du module micro_grove
Exercice
- 1 : Rotary Angle Sensor
- 2 : Shield
- 3 : micro:bit
from microbit import *
from micro_grove import *
while True:
valeur = position_curseur(pin0)
affiche_jauge(valeur)
Information
- La fonction
position_curseur(broche)
oùbroche
désigne le nom de la broche utilisée pour brancher le potentiomètre (par exemplepin0
), renvoie un entier entre 0 et 100 indiquant la position du bouton. - La fonction
affiche_jauge(valeur)
permet d'affichervaleur
sous forme de jauge (graphe en bâton) sur la matrice à leds de la microbit. La valeur maximale est 100.
Le Capteur de lumière
Le capteur Grove-Light intègre une photo-résistance pour détecter l'intensité de la lumière. Le signal de sortie est une valeur analogique : plus la lumière est brillante, plus la valeur est élevée.
Info
Une entrée ou sortie analogique permet de recueillir un signal électrique variable pouvant prendre une infinité de valeurs s'étendant sur une plage définie. La valeur d'une entrée analogique change continuellement dans le temps en fonction de la grandeur physique mesurée par le capteur.
Les grandeurs physiques mesurables par un capteur analogique sont : la vitesse, la pression, la température, la distance etc...
Exercice
- 1 : Light Sensor
- 2 : Shield
- 3 : micro:bit
from microbit import *
from micro_grove import *
while True:
valeur = luminosite(pin0)
if valeur < 50:
display.show(Image.SAD)
else:
display.show(Image.HAPPY)
Information
- La fonction
luminosite(broche)
oùbroche
désigne le nom de la broche utilisée pour brancher le capteur de lumière (par exemplepin0
), renvoie un entier entre 0 et 100.
La valeur 100 correspond à 100% soit environ 60 lux - La fonction
it_s_dark(broche)
oùbroche
désigne le nom de la broche utilisée pour brancher le capteur de lumière renvoieTrue
si la luminosité est inférieure à 10 lux etFalse
sinon.
Le télémètre à ultrasons
Exercice
- 1 : Ultrasonic Ranger
- 2 : Shield
- 3 : micro:bit
from microbit import *
from micro_grove import *
while True:
if mesure_dist(pin0) < 10:
display.show(Image.SAD)
else:
display.show(Image.HAPPY)
Information
- La fonction
mesure_dist(broche)
oùbroche
désigne le nom de la broche utilisée pour brancher le télémètre à ultrasons renvoie la distance de l'obstacle en cm.
Le capteur de mouvements
Pour utiliser le capteur de mouvement, on a besoin du module gesture
Exercice
- 1 : Gesture
- 2 : Shield
- 3 : micro:bit
from microbit import *
from gesture import *
gesture = Gesture()
while True:
g = gesture.read()
if g == 'right':
display.show(Image.ARROW_E)
sleep(300)
if g == 'left':
display.show(Image.ARROW_W)
sleep(300)
if g == 'clockwise':
display.show(Image.HAPPY)
sleep(300)
Information
- L'instruction
gesture = Gesture()
permet de définir l'objet gesture branché sur la broche i2c - L'instruction
gesture.read()
permet de récupérer le geste - Les différents gestes sont :
'up'
,'down'
,'left'
,'right'
,'forward'
,'backward'
,'clockwise'
et'anticlockwise'
Actionneurs
Si l'actionneur est branché sur la broche P0, on l'active en écrivant la valeur 1, et on l'éteint en écrivant la valeur 0, à l'aide des instructions :
# active l'actionneur
pin0.write_digital(1)
# désactive l'actionneur
pin0.write_digital(0)
La Led
La LED Rouge Grove abrite une source de lumière LED.
Exercice
- 1 : Red LED
- 2 : Shield
- 3 : micro:bit
from microbit import *
while True:
if button_a.is_pressed():
pin0.write_digital(1)
if button_b.is_pressed():
pin0.write_digital(0)
Le haut-parleur
Exercice
- 1 : Speaker
- 2 : Shield
- 3 : micro:bit
from microbit import *
import music
while True:
if button_a.is_pressed():
music.play(music.PRELUDE)
D'autres musiques possibles : music.DADADADUM, music.ENTERTAINER, music.PRELUDE, music.ODE, music.NYAN, music.RINGTONE, music.FUNK, music.BLUES, music.BIRTHDAY, music.WEDDING, music.FUNERAL, music.PUNCHLINE, music.PYTHON, music.BADDY, music.CHASE, music.BA_DING, music.WAWAWAWAA, music.JUMP_UP, music.JUMP_DOWN, music.POWER_UP, music.POWER_DOWN
L'écran d'affichage
Pour utiliser l'afficheur, on a besoin du module display_4d
Exercice
- 1 : 4-Digit Display
- 2 : Shield
- 3 : micro:bit
from microbit import *
from display_4d import D4AFF7SEG
aff_4D = D4AFF7SEG(clk=pin0, dio=pin14)
n = 1
while True:
aff_4D.affiche(n)
if button_a.is_pressed():
n = n + 1
if n == 9999:
n = -999
Information
- L'instruction
aff_4D = D4AFF7SEG(clk=pin0, dio=pin14)
permet de définir l'objet afficheur branché sur la broche P0/P14 - L'instruction
aff_4D.affiche(n)
permet d'afficher un entiern
compris entre -999 et 9999 - L'instruction
aff_4D.affiche_2(heure, minute)
permet d'afficher l'heure avec le séparateur:
;heure
etminute
sont des entiers. Par exempleaff_4D.affiche_2(20, 30)
affichera20:30
Le ruban de led Neopixel
Le ruban de LED comporte 30 NeoPixels et mesure 1 mètre. Il est est "waterproof". Chaque NeoPixel comporte une LED RVB, un circuit électronique intégré (le WS281), des données entrantes et des données sortantes.
La bibliothèque neopixel comporte des méthodes permettant d'utiliser le ruban. Chaque LED est adressable : le 1er NeoPixel a l'adresse 0, le suivant 1 etc.
Instructions | Effet |
---|---|
import neopixel |
importe la bibliothèque NeoPixel |
np = neopixel.NeoPixel(pin0, 30) |
déclare un ruban nommé np de 30 NeoPixels sur la broche P0 |
np[i] = (r, v, b) |
affecte au NeoPixel d'adresse i la couleur (r, v, b) |
np.show() |
allume chaque NeoPixel du ruban np avec la couleur qui lui a été affectée |
np.clear() |
éteint toutes les leds du ruban np |
Exercice
- 1 : WS2812b
- 2 : Shield
- 3 : micro:bit
from microbit import *
import neopixel
np = neopixel.NeoPixel(pin0, 30)
np.clear()
for x in range(30):
np[x] = (240 - 8*x, 0, 8*x)
np.show()
sleep(100)
Le servomoteur
Un servomoteur est un composant analogique. On peut le faire tourner entre 0 et 180°.
On pourra le brancher sur les ports suivants : P0/P14, P1/P15, P2/P16
Pour utiliser l'afficheur, on a besoin du module micro_grove
Si le servomoteur est branché sur la broche P1, on le positionne à un angle de 90 degrés, par exemple, à l'aide de l'instruction : angle_servomoteur(pin1, 90)
Exercice
On utilise :
- 1 : le servomoteur sur la broche P1/P15
- 2 : le shield
- 3 : une micro:bit
from microbit import*
from micro_grove import*
while True:
angle_servomoteur(pin1, 0)
display.show(Image.SAD)
sleep(5000)
angle_servomoteur(pin1, 50)
display.show(Image.HAPPY)
sleep(5000)