LAMP:bit de Kitronik

C’est un module pour Micro:Bit qui m’a été offert par MC Hobby. Il est composé d’une LED Blanche de 10mm (reliée à la broche P0 et à une résistance de 10 KΩ) et d’un photo-transistor (reliée à la broche P1 et à une résistance de 47 Ω). Bien sûr, vous pouvez très facilement reproduire ce branchement avec une breadboard et quelques composants de base.

Mais le gros avantage de ce module est qu’il se fixe solidement au Micro:Bit avec les 5 vis fournies (ou même seulement 4 car la broche P2 n’est pas connectée). Fini les problèmes de faux contacts, de mauvais branchements ou de cours circuits. Vous vous concentrer seulement sur le code. Ce module, comme le STOP:bit est plutôt destiné à une utilisation pédagogique. Et je pense que si vous avez l’intention d’animé un atelier avec des enfants, vous appréciez énormément cet avantage…

Fonctionnement du module

La résistance du photo-transistor diminue quand il est exposé à la lumière. Autrement dit, il laisse plus facilement passer le courant s’il est éclairé. Le photo-transistor est un peu comme un robinet qui laisserait couler plus d’eau lorsqu’il y a de la lumière.

L’une des pattes du photo-transistor est reliée à la borne +3,3. Il suffit donc de mesurer la tension du courant (nombre de volts) qui arrive à passer jusqu’à l’autre patte pour en déduire la luminosité. C’est le rôle du Micro:Bit, la broche P1 mesure la luminosité et renvoie une valeur comprise entre 0 (obscurité) et 1023 (éclairage intense).

Source Kitronik

La broche P0 contrôle la LED, qui permet d’afficher le résultat obtenu. Mais évidement, c’est à nous d’écrire le programme. Vous trouverez donc ci-dessous quelques exemples de code :

Code de base

Il existe, dans Makecode une bibliothèque spécifique au LAMP:bit. Pour l’activer, allez dans Avancé, Extensions, tapez « lampbit » dans le champ de recherche (c’est parfois un peu long) et sélectionnez la bibliothèque « kitronik-lampbit« .

Voilà un exemple de code utilisant la bibliothèque, la LED s’allume lorsque la luminosité est inférieure à 350 . Vous pouvez évidement ajuster cette valeur (de 0 à 1023).

Mais la bibliothèque n’apporte pas grand chose, car il est possible de faire exactement la même chose en utilisant seulement les instructions classiques.

# Code MicroPython pour Micro:Bit
# Appel de la bibliothèque "microbit"
from microbit import *
# Boucle infinie
while True:
    # Si la luminosite est inferieure a 350 (sur 1023)
    if pin1.read_analog() <= 350:
        # Allume la LED reliee a la broche P0
        pin0.write_digital(1)
    # Sinon
    else:
        # Eteint la LED reliee a la broche P0
        pin0.write_digital(0)
    # Pause (1/10 de seconde)
    sleep(100)

Régler le seuil de déclenchement

Au lieu de définir une valeur constante pour déclencher l’allumage de la LED, vous pouvez utiliser une variable que l’on peut ensuite ajuster avec les boutons A et B.

# Code MicroPython pour Micro:Bit
# Appel de la bibliothèque "microbit"
from microbit import *
lum = 150
# Boucle infinie
while True:
    # Si le bouton A est appuye
    if button_a.was_pressed():
        if (lum + 20) < 1023:
            # Augmente lum de 20
            lum = lum + 20
        else:
            lum = 1023
    # Si le bouton B est appuye
    if button_b.was_pressed():
        if (lum - 20) > 0:
            # Diminue lum de 20
            lum = lum - 20
        else:
            lum = 0  
    # Si la luminosite est inferieure à 350 (sur 1023)
    if pin1.read_analog() <= lum:
        # Allume la LED reliee a la broche P0
        pin0.write_digital(1)
    # Sinon
    else:
        # Eteint la LED reliee a la broche P0
        pin0.write_digital(0)
    # Pause (1/10 de seconde)
    sleep(100)

LED variable

Il est aussi possible de modifier l’intensité lumineuse de la LED pour qu’elle soit inversement proportionnelle à la luminosité ambiante. En plus, le code est beaucoup plus court.

# Code MicroPython pour Micro:Bit
# Appel de la bibliothèque "microbit"
from microbit import *
# Boucle infinie
while True:
    # Ajuste l'intensité de la LED en fonction de la luminosité 
    pin0.write_analog(1023 - pin1.read_analog())
    # Pause (1/10 de seconde)
    sleep(10)

Détecteur de lumière

Avec ce code, la fréquence de clignotement permet de mesurer l’intensité lumineuse, plus la lumière est importante et plus la LED clignote rapidement.

# Code MicroPython pour Micro:Bit
# Appel de la bibliothèque "microbit"
from microbit import *
# Fonction Clignotement
def Clignotement():
    # Pause variant suivant la luminosite
    sleep(1100 - pin1.read_analog())
# Boucle infinie
while True:
    # Allume la LED reliee a la broche P0
    pin0.write_digital(1)
    # Appel de la fonction Clignotement
    Clignotement()
    # Eteint la LED reliee a la broche P0
    pin0.write_digital(0)
    # Appel de la fonction Clignotement
    Clignotement()

Système de surveillance

En ajoutant un pointeur laser (ou même une simple lampe de poche), vous pouvez vous amuser à fabriquer un système permettant de savoir si quelqu’un est venu chez vous en votre absence. Dans un couloir peu éclairé (par exemple), disposez l’éclairage sur un mur et le module sur le mur d’en face. Une personne passant par là est obligée de couper le rayon lumineux, ce qui allume la LED. Une fois activée, la LED reste allumé.

Pour réactiver le piège, il vous suffit d’appuyer sur le bouton A.

# Code MicroPython pour Micro:Bit
# Appel de la bibliothèque "microbit"
from microbit import *
# Eteint la LED reliee a la broche P0
pin0.write_digital(0)
# Boucle infinie
while True:
    # Si la luminosite est inferieure a 100 (sur 1023)
    if pin1.read_analog() <= 100:
        # Allume la LED reliee a la broche P0
        pin0.write_digital(1)
    # Si le bouton A est appuye
    if button_a.was_pressed():
        # Eteint la LED reliee a la broche P0
        pin0.write_digital(0)
    sleep(100)

Système d’alarme (silencieuse)

Là, c’est le contraire, mon couteau suisse empêche la lumière d’atteindre le photo-transistor. Mais si quelqu’un tente de le voler, la LED se met à clignoter (même s’il le remet en place).

Vous pourrez remettre l’alarme à zéro en appuyant sur le bouton A.

# Code MicroPython pour Micro:Bit
# Appel de la bibliothèque "microbit"
from microbit import *
# Desactivation de l'alarme
Alarme = 0
# Boucle infinie
while True:
    # Si la luminosite est superieure a 100 (sur 1023)
    if pin1.read_analog() > 100:
        # Activation de l'alarme
        Alarme = 1
    # Si la luminosite est superieure a 100 (sur 1023)
    if Alarme == 0:
        # Eteint la LED reliee a la broche P0
        pin0.write_digital(0)
    else:
        # Allume la LED reliee a la broche P0
        pin0.write_digital(1)
        # Pause de 60 millisecondes
        sleep(60)
        # Eteint la LED reliee a la broche P0
        pin0.write_digital(0)
        # Pause de 60 millisecondes
        sleep(60)
    # Si le bouton A est appuye
    if button_a.was_pressed():
        # Desactivation de l'alarme
        Alarme = 0

J’espère que ces quelques exemples vous ont amusés, je compte sur votre imagination pour en trouver d’autres. D’ailleurs, si vous avez des idées géniales, n’hésitez pas à les mettre en commentaire…

Publicités

Répondre

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion /  Changer )

Photo Google

Vous commentez à l'aide de votre compte Google. Déconnexion /  Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion /  Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion /  Changer )

Connexion à %s