Aller au contenu

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 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

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

angle

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

pot

  • 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)broche désigne le nom de la broche utilisée pour brancher le potentiomètre (par exemple pin0), renvoie un entier entre 0 et 100 indiquant la position du bouton.
  • La fonction affiche_jauge(valeur) permet d'afficher valeur 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

lumiere

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

pot

  • 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)broche désigne le nom de la broche utilisée pour brancher le capteur de lumière (par exemple pin0), renvoie un entier entre 0 et 100.
    La valeur 100 correspond à 100% soit environ 60 lux
  • La fonction it_s_dark(broche)broche désigne le nom de la broche utilisée pour brancher le capteur de lumière renvoie True si la luminosité est inférieure à 10 lux et False sinon.

Le télémètre à ultrasons

telemetre

Exercice

tele

  • 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)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

mouv

Pour utiliser le capteur de mouvement, on a besoin du module gesture

Exercice

ges

  • 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

led

La LED Rouge Grove abrite une source de lumière LED.

Exercice

redLed

  • 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

hp

Exercice

music

  • 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

aff

Pour utiliser l'afficheur, on a besoin du module display_4d

Exercice

aff

  • 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 entier n compris entre -999 et 9999
  • L'instruction aff_4D.affiche_2(heure, minute) permet d'afficher l'heure avec le séparateur : ; heure et minute sont des entiers. Par exemple aff_4D.affiche_2(20, 30) affichera 20:30

Le ruban de led Neopixel

bande

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

neo

  • 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)
L'exécution de ce programme provoque l'allumage progressif des 30 LED du ruban. Les premières LED sont rouges, et la couleur évolue au fur et à mesure de l'avancée sur le ruban, les dernières LED étant bleues.

Le servomoteur

Un servomoteur est un composant analogique. On peut le faire tourner entre 0 et 180°.

servo

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)
L'exécution de ce programme provoque un positionnement alternatif du servomoteur avec un affichage sur la micro:bit d'une image.