Catégories
MICRO PYTHON MICRO:BIT

Eclairage vélo

Objectif :

Réalisation d’un programme pour gérer un éclairage arrière personnalisable d’un vélo.

Tu apprendras l’utilisation des boucles For, l’importation des bibliothèques, l’utilisation des tableaux (liste) en python.

Mission :

  • Affichage d’une animation fixe.
  • Affichage d’une animation dynamique
  • Accélération de l’animation par le bouton A
  • Allumer ou éteindre l’animation par le bouton B

A découvrir avant de commencer : l’instruction For

En Python, la boucle for est utilisée pour itérer sur une séquence d’éléments tels qu’une liste, une chaîne de caractères, un tuple, un dictionnaire, etc. La boucle for exécute un bloc de code pour chaque élément de la séquence, jusqu’à ce que tous les éléments aient été parcourus.

for element in sequence:

    # Bloc de code à exécuter

Une explication pour chaque élément de la syntaxe :

  • Le mot-clé for est utilisé pour déclarer la boucle for.
  • element est une variable qui représente l’élément en cours d’itération dans la séquence. Tu peux choisir n’importe quel nom valide pour cette variable.
  • Le mot-clé in est utilisé pour spécifier la séquence sur laquelle itérer.
  • sequence est la séquence (liste, chaîne de caractères, tuple, etc.) sur laquelle la boucle for va itérer.
  • Le bloc de code qui suit le : est indenté et sera exécuté pour chaque élément de la séquence.

Voici un exemple simple pour illustrer son fonctionnement :

liste = [1, 2, 3, 4, 5]

for nombre in liste:

    print(nombre)  # Affiche chaque nombre de la liste

Utilise les indications suivantes pour réaliser ton premier programme. Reproduit le code en caractère GRAS avec l’icône « REPL »

Dans cet exemple, la boucle for itère sur chaque élément de la liste liste. À chaque itération, la variable nombre prend la valeur de l’élément en cours d’itération, puis le bloc de code indenté est exécuté, qui dans ce cas affiche le nombre. La boucle for se répète jusqu’à ce que tous les éléments de la liste aient été parcourus.

Il est également courant d’utiliser la fonction range() en conjonction avec la boucle for pour itérer sur une séquence de nombres. Par exemple :

for i in range(1, 6):

    print(i)  # Affiche les nombres de 1 à 5

Dans cet exemple, range(1, 6) génère une séquence de nombres de 1 à 5 (la borne supérieure spécifiée est exclusive). La boucle for itère sur chaque nombre de cette séquence, assigne la valeur à la variable i, puis exécute le bloc de code indenté.

QCM sur l’instruction FOR

Question 1 : Quelle est la principale utilité de l’instruction « for » en programmation ?

  1. Déclarer une fonction
  2. Répéter une séquence d’instructions un nombre fixe de fois
  3. Gérer les exceptions
  4. Établir une condition logique

Question 2 : Comment se structure généralement une boucle « for » en Python ?

  1. for (int i = 0; i < 5; i++)
  2. for i in range(5):
  3. loop (i = 0; i < 5; i++)
  4. repeat i in range(5):

Question 3 : Quelle est la fonction de la fonction intégrée range() utilisée fréquemment avec une boucle « for » en Python ?

  1. Générer une liste de nombres
  2. Calculer la moyenne d’une série de nombres
  3. Vérifier la présence d’un élément dans une liste
  4. Créer une chaîne de caractères

Question 4 : Comment peut-on sortir prématurément d’une boucle « for » en utilisant l’instruction « break » ?

  1. break for
  2. break loop
  3. exit for
  4. break

Question 5 : Quel mot-clé est utilisé pour passer à l’itération suivante dans une boucle « for » sans exécuter le reste du code à l’intérieur de la boucle ?

  1. pass
  2. skip
  3. continue
  4. next

Mu est un éditeur de code spécialement conçu pour les microcontrôleurs et plus particulièrement la carte micro :bit.

Utilise le menu « Mode » dans Mu pour choisir « BBC micro ».

Ainsi, tu pourras flasher directement ton programme sur la carte micro.

Choisis de créer un nouveau fichier pour ton programme en cliquant sur « + nouveau », puis demande à enregistrer ton fichier sous le nom de ton choix en utilisant l’option « Enregistrer ».

from microbit import display

Une bibliothèque en Python est comme une boîte à outils magique pleine de fonctions spéciales que tu peux utiliser pour rendre ton programme plus puissant. Plutôt que de tout créer depuis zéro, tu peux simplement emprunter des outils déjà créés par d’autres personnes.

Pour utiliser une bibliothèque, tu dois l’importer dans ton programme. C’est comme si tu vas à la bibliothèque emprunter un livre pour le lire. En Python, nous utilisons le mot clé import pour faire cela.

Tu vas utiliser deux bibliothèques une pour gérer ton robot et une autre pour gérer le temps.

#Double boucle pour afficher l’éclairage

for c in range(0, 5, 1):
for l in range(0, 5, 1):
      display.set_pixel(c, l, 9)

 Flasher puis bouton reset pour lancer puis vérifie que toutes les LEDs s’affichent

from microbit import display
import time
#Boucle sur la colonne pour afficher une LED
for c in range(0, 5, 1):
    #Boucle sur la ligne pour afficher une LED
    for l in range(0, 5, 1):
        #Attente de 300 millisecondes avant affichage de la LED
        time.sleep_ms(300)
        #Affichage de la LED
        display.set_pixel(c, l, 9)

Flasher puis bouton reset puis regarde comment fonctionne les LEDs

Amuse-toi en changeant les valeurs des boucles !!!

  • for c in range(2, 5, 1):
  • for c in range(0, 3, 1):
  • for c in range(0, 5, 2):
  • for l in range(2, 5, 1):
  • for l in range(0, 3, 1):
  • for l in range(0, 5, 2):

 Flasher puis bouton reset entre chaque essai

Question 1 : Comment peut-on importer une bibliothèque entière en Python ?

  1. import microbit
  2. include microbit
  3. import mocrobit as lib
  4. import microbit

Question 2 : Quelle est la méthode recommandée pour importer uniquement une fonction spécifique d’une bibliothèque en Python ?

  1. import display from microbit
  2. from microbit import display
  3. include display from microbit
  4. import microbit.display

Question 3 : Comment peut-on vérifier l’existence d’une bibliothèque dans l’éditeur MU ?

  1. Vérification manuelle dans le répertoire Python
  2. Import library, puis vérification avec la fonction library.check()
  3. Utiliser la commande pip show library dans le terminal
  4. Vérification avec le bouton du menu « REPL » puis saisir import microbit

Question 4 : Comment connaitre toutes les fonctions d’une bibliothèque dans l’éditeur MU ?

  1. List microbit.Image
  2. print microbit.Image
  3. dir(microbit.Image)
  4. show(microbit.Image )
from microbit import display, button_a, button_b

while not(button_a.is_pressed()) and not(button_b.is_pressed()):
            pass

while button_a.is_pressed() or button_b.is_pressed():
            pass

L’instruction while permet de répéter un ensemble d’instructions tant qu’une condition donnée est vraie. Elle est très utile lorsque tu as besoin d’exécuter le même code à plusieurs reprises sans avoir à le réécrire plusieurs fois.

while condition:
    # Code à exécuter tant que la condition est vraie

#Effacement de l’écran
display.clear()

Flasher puis bouton reset et vérifie que l’écran s’éteint après l’appui sur le bouton A ou B

display.set_pixel(…) et button_a.is_pressed() sont des objets de la bibliothèque microbit La première permet d’allumer ou éteindre une LED, la deuxième permet de contrôler les boutons A et B

L’instruction print est un outil précieux pour le débogage en programmation. Elle permet d’afficher des informations spécifiques à un moment donné de l’exécution du programme, ce qui permet de comprendre ce qui se passe dans ton code. Voici pourquoi elle est utile et comment l’utiliser pour le débogage :

Intérêt d’utiliser l’instruction print pour le débogage :

  1. Visualisation des données : La principale utilité de print est d’afficher des valeurs de variables, des résultats intermédiaires, ou des messages pour comprendre comment votre programme évolue pendant son exécution.
  2. Vérification des états : Vous pouvez utiliser print pour vérifier l’état des variables à différents points de votre code, ce qui te permet de confirmer que les valeurs sont correctes ou de repérer des erreurs potentielles.
  3. Traçage de l’exécution : En insérant des déclarations print aux différentes étapes de votre programme, tu peux « tracer » l’exécution du code et suivre son flux pour identifier les erreurs ou les incohérences.

Un exemple :

a = 10
print("La valeur de 'a' est :", a)

Tu veux rendre l’éclairage arrière de ton vélo super cool et dynamique !

Pour cela, tu veux créer un programme avec la carte micro:bit. Voici ce que ton éclairage puisse faire :

  1. Choisir ton Animation : Tu veux pouvoir appuyer sur le bouton A pour changer le style de l’éclairage. Chaque fois que tu appuies, l’éclairage passe à une nouvelle animation dynamique.
  2. Mettre en Veille : Si tu veux éteindre l’éclairage (peut-être quand tu es à l’arrêt ou que tu n’en as pas besoin), tu appuies sur le bouton B.
  3. Automatique : si la lumière du jour est trop forte ou si tu n’as pas bougé pendant un moment, l’éclairage doit se mette en veille tout seul pour économiser.

Maintenant, imagine les animations magiques que tu veux ! Ça pourrait être des clignotements, des pulsations ou même un effet de fondu. Quand tu as une idée, tu peux réaliser ton programme pour rendre ton vélo encore plus génial !

Objectif de la Mission : Programmer ton éclairage pour allumer toutes les LEDs en une seule fois.

#Bibliothèques à utiliser
from microbit import display, button_a, button_b
import time

Une fonction en programmation est une manière de regrouper un ensemble d’instructions pour effectuer une tâche spécifique.

def ma_fonction():
    # Corps de la fonction

C’est ainsi tu écris et utilises des fonctions en Python. Elles te permettent d’organiser ton code, de le rendre plus lisible et de le rendre plus réutilisable.

#Fonction pour l'affichage du tableau de LEDs
def affichage():
    for c in range(0, 5, 1):
        for l in range(0, 5, 1):
            time.sleep_ms(300)
            display.set_pixel(c, l, 9)

while True:
    #Appel de la fonction d'affichage
    affichage()
    #Attente de l'appui du bouton A ou B
    while not(button_a.is_pressed()) and not(button_b.is_pressed()):
        pass
    while button_a.is_pressed() or button_b.is_pressed():
        pass

    #Effacement de l'écran
    display.clear()

 Flasher puis bouton reset et constate l’animation.

En Python, les tableaux sont appelés des listes, et ils permettent de stocker une collection ordonnée d’éléments. Les listes peuvent contenir des valeurs de différents types tels que des entiers, des flottants, des chaînes de caractères, et même d’autres listes.

Création d’une liste : Pour créer une liste, tu utilises des crochets [] puis tu sépares les éléments de la liste par des virgules. Par exemple :

liste = [1, 2, 3, 4, 5]

Accès aux éléments d’une liste : Les éléments d’une liste sont accessibles par leur indice, qui commence à 0 pour le premier élément. Tu peux utiliser cet indice entre crochets [] pour accéder à un élément spécifique. Par exemple :

premier_element = liste[0]  # Accès au premier élément
deuxieme_element = liste[1]  # Accès au deuxième élément
print(premier_element)
print(deuxieme_element)

Modification d’un élément de liste : Les éléments d’une liste sont mutables, ce qui signifie qu’ils peuvent être modifiés. Tu peux assigner une nouvelle valeur à un élément spécifique en utilisant son indice. Par exemple :

liste[0] = 10  # Modification du premier élément
print(liste[0])

Longueur d’une liste : Tu peux obtenir la taille (le nombre d’éléments) d’une liste en utilisant la fonction len(). Par exemple :

taille = len(liste)  # Renvoie la taille de la liste
print(taille)

Opérations sur les listes : Les listes en Python offrent de nombreuses opérations utiles, telles que l’ajout d’éléments avec append(), l’insertion d’éléments avec insert(), la suppression d’éléments avec remove() ou del, la concaténation de listes avec +, etc. Tu peux également utiliser des boucles pour itérer sur les éléments d’une liste.

Voici un exemple illustrant certains de ces concepts :

liste = [1, 2, 3, 4, 5]  # Création d'une liste
print(liste[0])  # Affiche le premier élément (1)

liste[2] = 10  # Modification du troisième élément
print(len(liste))  # Affiche la taille de la liste (5)

liste.append(6)  # Ajout d'un nouvel élément (6) à la fin de la liste

for element in liste:
    print(element)  # Affiche chaque élément de la liste

print(len(liste))  # Affiche la taille de la liste (6)

Objectif de la Mission : Programmer ton éclairage pour allumer toutes les LEDs avec l’aide d’un tableau python !

Tu vass utiliser un tableau contenant des chiffres qui correspondent à l’état des LEDs. Ainsi, quand tu changes ces chiffres, tu contrôles la lumière de ton vélo !

from microbit import display, button_a, button_b
import time

# Tableau pour décrire le tableau des LEDs
affichageFixe_1 = [[9, 7, 5, 7, 9],
                   [7, 1, 1, 1, 7],
                   [5, 1, 9, 1, 5],
                   [7, 1, 1, 1, 7],
                   [9, 7, 5, 7, 9]]

# Fonction pour l'affichage du tableau de LEDs
def affichage(animation,vitesse=300):
    l = 0
    for ligne in animation:
        c = 0
        for led in ligne:
            time.sleep_ms(vitesse)
            display.set_pixel(c, l, led)
            c+= 1
        l+= 1

while True:
    # Appel de la fonction d'affichage
    affichage(affichageFixe_1,50)
    # Attente de l'appui du bouton A ou B
    while not(button_a.is_pressed()) and not(button_b.is_pressed()):
        pass

    while button_a.is_pressed() or button_b.is_pressed():
        pass

    # Effacement de l'écran
    display.clear()

 Flasher puis bouton reset et change les valeurs dans le tableau : affichageFixe_1 !!

Objectif de la Mission : Programmer plusieurs tableaux pour créer une animation dynamique !

from microbit import display, button_a, button_b
import time

# Tableau pour décrire le tableau des LEDs
affichageFixe_1 = [[9, 7, 5, 7, 9],
                   [7, 1, 1, 1, 7],
                   [5, 1, 9, 1, 5],
                   [7, 1, 1, 1, 7],
                   [9, 7, 5, 7, 9]]

affichageFixe_2 = [[0, 0, 9, 0, 0],
                   [0, 0, 9, 0, 0],
                   [9, 9, 9, 9, 9],
                   [0, 0, 9, 0, 0],
                   [0, 0, 9, 0, 0]]

affichageFixe_3 = [[9, 0, 0, 0, 9],
                   [0, 9, 0, 9, 0],
                   [0, 0, 9, 0, 0],
                   [0, 9, 0, 9, 0],
                   [9, 0, 0, 0, 9]]

affichageDynamique = [affichageFixe_1,
                      affichageFixe_2,
                      affichageFixe_3]

# Fonction pour l'affichage du tableau de LEDs
def affichage(animation, vitesse=300):
    l = 0
    for ligne in animation:
        c = 0
        for led in ligne:
            time.sleep_ms(vitesse)
            display.set_pixel(c, l, led)
            c += 1
        l += 1
animation = 0

while True:
    # Appel de la fonction d'affichage
    affichage(affichageDynamique[animation], 10)
    # Attente de l'appui du bouton A ou B
    while not(button_a.is_pressed()) and not(button_b.is_pressed()):
        pass

    while button_a.is_pressed() or button_b.is_pressed():
        pass

    # Effacement de l'écran
    display.clear()
    animation += 1

    if animation >= (len(affichageDynamique)):
        animation = 0

 Flasher puis bouton reset et créer ton affichage dynamique !! 

Objectif de la Mission : Gère dans ton tableau d’animation des temps pour l’affichage des LEDs pour des animations spectaculaires !

affichageDynamique = [[affichageFixe_1, 10],
                      [affichageFixe_2, 200],
                      [affichageFixe_3, 500]]

def affichage(animation, vitesse=300):
    l = 0
    for ligne in animation:
        c = 0
        for led in ligne:
            if led > 0 :
                time.sleep_ms(vitesse)
            display.set_pixel(c, l, led)
            c += 1
        l += 1

et dans le corps principal du programme :

    affichage(affichageDynamique[animation][0],affichageDynamique[animation][1]) 

Flasher puis bouton reset

Question 1 : Quel est le terme utilisé en Python pour désigner une structure de données ordonnée qui peut contenir différents types d’éléments ?

  1. Ensemble
  2. Liste
  3. Dictionnaire
  4. Tuple

Question 2 : Comment créer une liste vide en Python ?

  1. list()
  2. empty_list()
  3. []
  4. new List()

Question 3 : Comment accéder au deuxième élément d’une liste en Python (en supposant que l’index commence à 0) ?

  1. list[1]
  2. list(2)
  3. list[2]
  4. list.second()

Question 4 : Comment déclarer une liste de listes ?

  1. [[],[],[]…]
  2. {(),(),()…}
  3. new List(new List, new List …)
  4. ((),(),()…)

Question 5 : Comment accéder au deuxième élément d’une liste en Python qui est elle-même dans la troisième occurrence d’une liste (en supposant que les index des listes commencent à 0) ?

  1. List[2][1]
  2. list(2,1)
  3. list[3][2]
  4. list[3,1]

Objectif de la Mission : Programme l’enchainement dynamique des tableaux lumineux en utilisant la bibliothèque time et en créant un chronomètre de temps pour gérer la durée d’affichage d’un écran.

# Départ du chronomètre       
def start_chronometre(temps):
    global start
    global chrono
    start = time.ticks_ms()
    chrono = temps

# Si temps du chronomètre écoulé   
def chronometre():
    if time.ticks_ms() - start > chrono :
        return True
    else:
        return False

animation = 0
while True:
    # Appel de la fonction d'affichage
    affichage(affichageDynamique[animation][0], affichageDynamique[animation][1])
    start_chronometre(1000)

    # Attente de l'appui du bouton A ou B ou le chronometre
    while (not (button_a.is_pressed()) and
           not (button_b.is_pressed()) and
           not (chronometre())):
        pass

    while button_a.is_pressed() or button_b.is_pressed():
        pass

    # Effacement de l'écran
    display.clear()
    animation += 1
    if animation >= (len(affichageDynamique)):
        animation = 0

 Flasher puis bouton reset

Les variables globales en programmation avec Python sont des variables qui sont définies en dehors de toute fonction et qui peuvent être utilisées à n’importe quel endroit du programme. Elles sont accessibles de manière globale, d’où leur nom.

Tu peux utiliser des variables globales lorsque tu as besoin de partager des données entre plusieurs parties de ton programme et que ces données ont une signification globale. Cependant, évite de les utiliser pour des données temporaires ou des valeurs qui ne sont pertinentes que dans des parties spécifiques de ton code. Cela aidera à rendre ton code plus lisible et à éviter des erreurs potentielles.

Si la même information est utilisée dans plusieurs fonctions, une variable globale peut être pratique. Cela évite de passer la valeur en paramètre à chaque appel de fonction.

Si tu as une valeur constante qui reste la même tout au long du programme, tu peux la définir comme une variable globale plutôt que de la répéter à chaque fois dans différentes fonctions.

Objectif de la Mission : Programme pour que le temps d’affichage d’un écran soit variable et que l’on puisse le programmer dans le tableau d’affichage dynamique.

affichageDynamique = [[affichageFixe_1, 10,1000],
                      [affichageFixe_2, 200,5000],
                      [affichageFixe_3, 500,10000]]

 start_chronometre(affichageDynamique[animation][2])

 Flasher puis bouton reset

Objectif de la Mission : Donne la possibilité de créer plusieurs animations et que l’utilisateur puisse changer d’animation avec le bouton A.

"""
Enchainement de plusieurs affichages fixes :
 - affichage fixe
 - temps de l'affichage des LEDs de l'affichage fixe
 - temps entre chaque affichage fixe
"""

affichageDynamique_1 = [[affichageFixe_1, 10, 1000],
   [affichageFixe_2, 200, 5000],
   [affichageFixe_3, 500, 10000]]

affichageDynamique_2 = [[affichageFixe_3, 2, 100],
   [affichageFixe_2, 2, 100]]

affichageDynamique_3 = [[affichageFixe_1, 2, 1000],
   [affichageFixe_2, 2, 1000]]

# Liste des affichages dynamiques
affichageDynamique = [affichageDynamique_1, affichageDynamique_2, affichageDynamique_3]

animation = 0
choix = 0
while True:
    # Appel de la fonction d'affichage
    affichage(affichageDynamique[choix][animation][0],
              affichageDynamique[choix][animation][1])
    start_chronometre(affichageDynamique[choix][animation][2])

    # Attente de l'appui du bouton A ou B ou le chronometre
    while (not (button_a.is_pressed()) and
           not (button_b.is_pressed()) and
           not (chronometre())):
        pass

    # Changement du choix de l'animation dynamique
    if button_a.is_pressed():
        choix += 1
        animation = 0

    if choix >= (len(affichageDynamique)):
        choix = 0

    # Attente du bouton relâché
    while button_a.is_pressed() or button_b.is_pressed():
        pass

    # Effacement de l'écran
    display.clear()

    # Progression de l'animation de l'affichage dynamique
    animation += 1
    if animation >= (len(affichageDynamique[choix])):
        animation = 0

 Flasher puis bouton reset

Objectif de la Mission : Par le bouton B, l’utilisateur met le dispositif en veille, puis par l’appui du bouton  A ou B l’utilisateur réveille le dispositif.

# Mise en veille du dispositif attendre un appui sur les touches A ou B
def mettre_en_veille():
    display.clear()
    # Attentre que les boutons A et B soient relachés
    while button_a.is_pressed() or button_b.is_pressed():
        pass

    # Attentre l’appui d’un bouton A ou A pour le réveil du dispositif
    while (not (button_a.is_pressed()) and
           not (button_b.is_pressed())):
        pass

animation = 0
choix = 0
mettre_en_veille()

while True:
    # Appel de la fonction d'affichage
    affichage(affichageDynamique[choix][animation][0],
              affichageDynamique[choix][animation][1])

    start_chronometre(affichageDynamique[choix][animation][2])

    # Attente de l'appui du bouton A ou B ou le chronometre
    while (not (button_a.is_pressed()) and
           not (button_b.is_pressed()) and
           not (chronometre())):
        pass

    # Changement du choix de l'animation dynamique
    if button_a.is_pressed():
        choix += 1
        animation = 0

    if choix >= (len(affichageDynamique)):
        choix = 0

    # Fermeture des animations par l'appui du bouton B
    if button_b.is_pressed():
        mettre_en_veille()

    # Attente du bouton relaché
    while button_a.is_pressed() or button_b.is_pressed():
        pass

    # Effacement de l'écran
    display.clear()

    # Progression de l'animation de l'affichage dynamique
    animation += 1
    if animation >= (len(affichageDynamique[choix])):
        animation = 0

Objectif de la Mission : Le dispositif se met automatiquement en veille lorsque la luminosité dépasse un seuil de la luminosité du jour.

La carte MICRO :BIT est équipée de plusieurs capteurs, dont un capteur de luminosité. Le capteur de luminosité sur la carte micro:bit est constitué d’une photorésistance (capteur de lumière) qui mesure l’intensité de la lumière réfléchie.

Voici comment vous pouvez utiliser le capteur de luminosité sur la carte micro:bit en programmation avec MicroPython :

from microbit import *

while True:
    # Lire la valeur de luminosité du capteur
    luminosite = display.read_light_level()

    # Afficher la valeur de luminosité sur l'écran LED
    display.scroll("Lum: " + str(luminosite))

    # Pause avant la prochaine mesure
    sleep(1000)

# Initialisation varaible pour la luminosité
def init_luminosite():
    global chrono_luminosite
    chrono_luminosite = time.ticks_ms()       

# Détection si la luminosité actuelle est supérieure à celle de la luminosité du jour
def lec_luminosite():
    global chrono_luminosite
    if display.read_light_level() < LUMINOSITE_JOUR:
        chrono_luminosite = time.ticks_ms()

# Si depuis un certain temps dans la luminosité du jour
def si_luminosite():
    if (chrono_luminosite and
       (time.ticks_ms() - chrono_luminosite > (DELAI_LUMINOSITE*1000))):
        return True
    else:
        return False

# Mise en veille du dispositif attendre un appui sur les touches A ou B
def mettre_en_veille():
    display.clear()
    # Attentre que les boutons A et B soient relachés
    while button_a.is_pressed() or button_b.is_pressed():
        pass

    # Attentre l’appui d’un bouton A ou A pour le réveil du dispositif
    while (not (button_a.is_pressed()) and
           not (button_b.is_pressed())):
        pass

    init_luminosite()

LUMINOSITE_JOUR = 100
DELAI_LUMINOSITE = 2
animation = 0
choix = 0
mettre_en_veille()

while True:
    # Appel de la fonction d'affichage
    affichage(affichageDynamique[choix][animation][0],
              affichageDynamique[choix][animation][1])
    start_chronometre(affichageDynamique[choix][animation][2])

    # Test de la luminosité
    lec_luminosite()

    # Attente de l'appui du bouton A ou B ou le chronometre
    while (not (button_a.is_pressed()) and
           not (button_b.is_pressed()) and
           not (chronometre())):
        pass

    # Changement du choix de l'animation dynamique
    if button_a.is_pressed():
        choix += 1
        animation = 0

    if choix >= (len(affichageDynamique)):
        choix = 0

    # Fermeture des animations par l'appui du bouton B
    if button_b.is_pressed():
        mettre_en_veille()

    # Si luminosité du jour depuis un certain temps alors mise en veille

    if si_luminosite():
        mettre_en_veille()

    # Attente du bouton relaché
    while button_a.is_pressed() or button_b.is_pressed():
        pass

    # Effacement de l'écran
    display.clear()

    # Progression de l'animation de l'affichage dynamique
    animation += 1
    if animation >= (len(affichageDynamique[choix])):
        animation = 0
Catégories
MICRO:BIT UNIHIKER

Affichage écran OLED

Ton matériel

Un microcontrôleur la MICRO:BIT

Une carte d’extension

Cette carte d’extension modulable est conçue pour du prototypage et des projets robotiques. Elle combine un pilote de moteur, une alimentation avec support pour accu Li-Ion 18650 et de nombreuses E/S Gravity.

Alimentation :

  • Support pour batterie 18650 (3,7 Vcc) avec circuit de charge intégré et indicateur de niveau à LEDs.
  • Entrée USB Type-C (5 Vcc) : pour alimentation externe et recharge.
  • LEDs : état de charge, niveau de batterie, alimentation et sens des moteurs.

Moteurs et servomoteurs :

  • Driver pour 4 moteurs CC (1,5 A maxi par moteur) à connecter sur borniers à vis.
  • 6 sorties servomoteurs sur connecteurs 3 contacts

Interfaces :

  • 8 broches GPIO via le connecteur Edge des cartes micro:bit ou Unihiker.
  • 6 broches GPIO supplémentaires : digitale et analogique.
  • Bus I2C : trois interfaces à 3,3 V et une interface I2C en 5 V.
  • Interface pour capteurs à ultrasons 5 V (Trigger et Echo). 

Autres : 2 x LEDs RGB programmables (WS2812) et émetteur/récepteur infrarouge

Un écran OLED 12846

Afficheur OLED miniature 0,96″ de 128 x 64 pixels monochrome à caractères bleus et à fond noir. Ce module est compatible Gravity de DFRobot et il se raccorde sur un port I2C de la carte d’extension.


Extension du logiciel avec la carte micro:bit et la carte d’extension dans MIND+

Cliquer sur l’icone.

Puis choisis dans « Afficheur » l’écran OLED-12846 :

Clic sur retour en haut à gauche de l’écran :

Maintenant tu disposes de trois extensions : une pour la micro:bit, une autre pour la carte d’extension, puis pour l’écran OLED.


Instructions pour brancher l’écran OLED

  1. Branchement du servomoteur :
    • Insère le connecteur de l’écran OLED dans le port I2C de la carte d’extension, respecte les couleurs
    • Assure-toi que le câble vert est sur le connecteur vert pour garantir que l’information soit correctement transmise.
  2. Alimentation :
    • Assure-toi que l’interrupteur de la carte d’extension est bien en position ON.

Câble de l’écran OLED sur le connecteur I2C :

Bouton interrupteur sur ON :


Programmation de l’écran OLED

Choix des instructions par un clic sur display :

Au lancement initialiser l’écran OLED toujours sur cette adresse sur le bus I2C :

Possibilité d’inverser l’affichage par le choix 180° ou 0° :

Affichage d’un texte en colonne 1 sur 4 lignes :

Affichage d’un texte sur sur la colonne 0 à 127 et les lignes 0 à 3 :

Exemple de l’utilisation de l’écran :

Catégories
DFROBOT MICRO:BIT Robotique UNIHIKER

Active un bouton poussoir et une LED

Ton matériel

Un microcontrôleur la MICRO:BIT

Une carte d’extension

Cette carte d’extension modulable est conçue pour du prototypage et des projets robotiques. Elle combine un pilote de moteur, une alimentation avec support pour accu Li-Ion 18650 et de nombreuses E/S Gravity.

Alimentation :

  • Support pour batterie 18650 (3,7 Vcc) avec circuit de charge intégré et indicateur de niveau à LEDs.
  • Entrée USB Type-C (5 Vcc) : pour alimentation externe et recharge.
  • LEDs : état de charge, niveau de batterie, alimentation et sens des moteurs.

Moteurs et servomoteurs :

  • Driver pour 4 moteurs CC (1,5 A maxi par moteur) à connecter sur borniers à vis.
  • 6 sorties servomoteurs sur connecteurs 3 contacts

Interfaces :

  • 8 broches GPIO via le connecteur Edge des cartes micro:bit ou Unihiker.
  • 6 broches GPIO supplémentaires : digitale et analogique.
  • Bus I2C : trois interfaces à 3,3 V et une interface I2C en 5 V.
  • Interface pour capteurs à ultrasons 5 V (Trigger et Echo). 

Autres : 2 x LEDs RGB programmables (WS2812) et émetteur/récepteur infrarouge


Extension du logiciel avec la carte micro:bit et la carte d’extension dans MIND+

Cliquer sur l’icone.

Clic sur retour en haut à gauche de l’écran

Maintenant tu as deux extensions : une pour la micro:bit et l’autre pour la carte d’extension


Faire clignoter une LED

Instructions pour brancher la LED

  1. Branchement du câble de la LED :
    • Insère le câble de la LED dans le connecteur P15 de ta carte d’extension du microcontrôleur.
    • Assure-toi que le câble gris est positionné comme indiqué sur l’illustration sur le connecteur vert. Cela garantit que le signal de contrôle est envoyé correctement.
  2. Connexion du microcontrôleur :
    • Utilise un câble USB pour connecter ton microcontrôleur à ton ordinateur. Cela permet de transférer le programme et d’alimenter le microcontrôleur.

Une fois tout bien branché, tu peux programmer ton microcontrôleur pour envoyer des signaux à la LED et la faire clignoter.

Branche le câble de la LED sur le connecteur P15 de ta carte d’extension. Attention au sens du câble gris sur le connecteur vert.

Connecte ton microcontrôleur à ton ordinateur par le câble USB :

Pour en savoir plus sur une LED

Une LED (Light Emitting Diode) est un composant électronique qui émet de la lumière lorsqu’un courant électrique la traverse. Les LEDs sont utilisées dans une multitude d’applications, des indicateurs lumineux aux écrans de télévision. Dans ton cas, tu utilises une LED rouge qui s’allume ou s’éteint en fonction des signaux qu’elle reçoit. Le câble de connexion de ta LED a trois fils : deux noirs pour l’alimentation électrique et un gris pour le signal de contrôle qui dit à la LED quand s’allumer ou s’éteindre.

Pour en savoir plus sur un microcontrôleur

Un microcontrôleur est un petit ordinateur sur une seule puce. Il contient un processeur, de la mémoire et des entrées/sorties programmables. Les microcontrôleurs sont utilisés pour contrôler des dispositifs électroniques. Dans ton projet, le microcontrôleur envoie des signaux à la LED pour la faire clignoter.

Allume la LED :

Utilise les instructions « opération de la goupille » pour allumer ta LED :

Fais glisser le bloc set digital pin dans pour toujours puis choisis HIGH:

et le port P15 :

Puis connecte ton microcontrôleur Microbit V2:

Puis clic sur le menu en haut de l’écran et choisis Télécharger :

Tant que ce message est affiché ne touche pas au microcontrôleur ni au câble USB.

Il disparaîtra, une fois le transfert terminé.

Ta LED s’allume !!!


Allume ta LED avec un bouton poussoir :

Utilise un bouton poussoir mis à ta disposition :

Instructions pour brancher le bouton poussoir :

  1. Branchement du câble du bouton poussoir :
    • Insère le câble du bouton poussoir dans le connecteur entre P8 et P15 sur ta carte d’extension.
    • Assure-toi que le câble gris est positionné sur le connecteur vert pour garantir que le signal soit correctement transmis.

Place le câble du bouton poussoir sur P14 :

Programmation du bouton poussoir :

Utilise l’instruction read digital pin P14 puisque tu as installé le bouton poussoir sur P14 :

Puis une instruction serial string pour envoyer la mesure vers ton PC dans la console de Min+ :

Assemble les deux instructions pour les positionner dans ta boucle pour toujours :

Avant de télécharger ton programme allume la carte d’extension :

Puis demande à télécharger ton programme :

Clic sur le bouton Code en haut à droite pour ouvrir les deux onglets dont celui « Génération automatique » :

Tu constate que ton téléversement est réussi ou pas, puis clic sur cette icone :

Tu constateras l’affichage dans la console du résultat de l’appui sur le bouton poussoir :

A 1 quand le bouton n’est pas appuyé.

A 0 quand le bouton est appuyé.

Programme le bouton poussoir

Programme ton bouton poussoir pour allumer la LED.

Ton objectif : allumer la LED quand le bouton poussoir est appuyé donc a une valeur retournée de 0.

Utilise les instruction de contrôle pour tester la valeur de retour du photoréflecteur.

Utilise l’instruction de condition SI SINON

Maintenant pour comparer la valeur retournée par le bouton poussoir utilise l’opérateur mathématique = :

Puis compare avec la valeur retournée par le bouton poussoir :

Décide d’allumer la LED quand le bouton poussoir est appuyé :

Puis clic sur le menu en haut de l’écran et choisis Télécharger :

Tant que le message de transfert est affiché ne touche pas au microcontrôleur ni au câble USB.

Il disparaîtra, une fois le transfert terminé.

Teste en appuyant sur le bouton poussoir

Catégories
DFROBOT MICRO:BIT Robotique UNIHIKER

Active un photo réflecteur IR et une LED

Ton matériel

Un microcontrôleur la MICRO:BIT

Une carte d’extension

Cette carte d’extension modulable est conçue pour du prototypage et des projets robotiques. Elle combine un pilote de moteur, une alimentation avec support pour accu Li-Ion 18650 et de nombreuses E/S Gravity.

Alimentation :

  • Support pour batterie 18650 (3,7 Vcc) avec circuit de charge intégré et indicateur de niveau à LEDs.
  • Entrée USB Type-C (5 Vcc) : pour alimentation externe et recharge.
  • LEDs : état de charge, niveau de batterie, alimentation et sens des moteurs.

Moteurs et servomoteurs :

  • Driver pour 4 moteurs CC (1,5 A maxi par moteur) à connecter sur borniers à vis.
  • 6 sorties servomoteurs sur connecteurs 3 contacts

Interfaces :

  • 8 broches GPIO via le connecteur Edge des cartes micro:bit ou Unihiker.
  • 6 broches GPIO supplémentaires : digitale et analogique.
  • Bus I2C : trois interfaces à 3,3 V et une interface I2C en 5 V.
  • Interface pour capteurs à ultrasons 5 V (Trigger et Echo). 

Autres : 2 x LEDs RGB programmables (WS2812) et émetteur/récepteur infrarouge


Extension du logiciel avec la carte micro:bit et la carte d’extension dans MIND+

Cliquer sur l’icone.

Clic sur retour en haut à gauche de l’écran

Maintenant tu as deux extensions : une pour la micro:bit et l’autre pour la carte d’extension


Faire clignoter une LED

Instructions pour brancher la LED

  1. Branchement du câble de la LED :
    • Insère le câble de la LED dans le connecteur P15 de ta carte d’extension du microcontrôleur.
    • Assure-toi que le câble gris est positionné comme indiqué sur l’illustration sur le connecteur vert. Cela garantit que le signal de contrôle est envoyé correctement.
  2. Connexion du microcontrôleur :
    • Utilise un câble USB pour connecter ton microcontrôleur à ton ordinateur. Cela permet de transférer le programme et d’alimenter le microcontrôleur.

Une fois tout bien branché, tu peux programmer ton microcontrôleur pour envoyer des signaux à la LED et la faire clignoter.

Branche le câble de la LED sur le connecteur P15 de ta carte d’extension. Attention au sens du câble gris sur le connecteur vert.

Connecte ton microcontrôleur à ton ordinateur par le câble USB :

Pour en savoir plus sur une LED

Une LED (Light Emitting Diode) est un composant électronique qui émet de la lumière lorsqu’un courant électrique la traverse. Les LEDs sont utilisées dans une multitude d’applications, des indicateurs lumineux aux écrans de télévision. Dans ton cas, tu utilises une LED rouge qui s’allume ou s’éteint en fonction des signaux qu’elle reçoit. Le câble de connexion de ta LED a trois fils : deux noirs pour l’alimentation électrique et un gris pour le signal de contrôle qui dit à la LED quand s’allumer ou s’éteindre.

Pour en savoir plus sur un microcontrôleur

Un microcontrôleur est un petit ordinateur sur une seule puce. Il contient un processeur, de la mémoire et des entrées/sorties programmables. Les microcontrôleurs sont utilisés pour contrôler des dispositifs électroniques. Dans ton projet, le microcontrôleur envoie des signaux à la LED pour la faire clignoter.

Allume la LED :

Utilise les instructions « opération de la goupille » pour allumer ta LED :

Fais glisser le bloc set digital pin dans pour toujours puis choisis HIGH:

et le port P15 :

Puis connecte ton microcontrôleur Microbit V2:

Puis clic sur le menu en haut de l’écran et choisis Télécharger :

Tant que ce message est affiché ne touche pas au microcontrôleur ni au câble USB.

Il disparaîtra, une fois le transfert terminé.

Ta LED s’allume !!!


Allume ta LED avec ton doigt

Utilise un photo réflecteur IR mis à ta disposition :

Instructions pour brancher le photo réflecteur IR

  1. Branchement du câble du photoréflecteur :
    • Insère le câble du photoréflecteur dans le connecteur P0 de ton microcontrôleur.
    • Assure-toi que le câble gris est positionné sur le connecteur vert pour garantir que le signal soit correctement transmis.

Place le photo réflecteur IR en face du bloc noir :

Programmation du photo réflecteur IR :

Tu rencontreras deux types de dispositifs un analogique et un autre digital :

Le monde analogique
C’est comme un robinet d’eau : tu peux l’ouvrir un petit peu, moyennement, beaucoup… il y a une infinité de positions possibles. La température peut être de 20°C, 20,1°C, 20,15°C…

Un photoréflecteur IR (le petit capteur avec la boule transparente) fonctionne comme ça : il mesure la quantité de lumière qui rebondit sur le sol. Il peut dire « il y a un tout petit peu de reflet », « il y en a moyen », « il y en a beaucoup »… comme un robinet qui donne toutes les valeurs entre fermé et ouvert.

Le monde digital
C’est comme une lumière ON/OFF : allumée ou éteinte. Point. Pas de « un peu allumée ».

Une LED, c’est ça : soit elle est allumée (1), soit elle est éteinte (0). Comme un interrupteur de chambre.

Utilise les blocs d’instructions de la micro:bit dont ceux « opération de la goupille« . Le dispositif photo réflecteur IR est un dispositif analogique. Tu vas mesurer la quantité de lumière réfléchi sur le bloc noir puis sur ton doigt.

Utilise l’instruction read analog pin P0 puisque tu as installé le photo réflecteur sur P0 :

Puis une instruction serial string pour envoyer la mesure vers ton PC dans la console de Min+ :

Assemble les deux instructions pour les positionner dans ta boucle pour toujours :

Avant de télécharger ton programme allume la carte d’extension :

Puis demande à télécharger ton programme :

Clic sur le bouton Code en haut à droite pour ouvrir les deux onglets dont celui « Génération automatique » :

Tu constate que ton téléversement est réussi ou pas, puis clic sur cette icone :

Tu constateras l’affichage dans la console du nombre de quantité de lumière réfléchi par le bloc noir :

Puis pose ton doigt entre le bloc noir et le photo réflecteur IR, tu constates un changement dans les valeurs retournées : autour de 120 et maintenant autour de 400 :

Pose un bloc blanc à la place de ton doigt, tu constates encore un changement des valeurs retournées :

En savoir plus sur le photoréflecteur

Un photoréflecteur est un capteur qui détecte la présence d’un objet en utilisant la lumière. Il émet une lumière (généralement infrarouge que tu ne vois pas) et mesure la quantité de lumière réfléchie. Lorsque tu places ton doigt devant le photoréflecteur, la lumière est réfléchie différemment, ce qui permet au capteur de détecter la présence de ton doigt.

Programme le photoréflecteur

Programme ton photoréflecteur pour allumer la LED sur la présence de ton doigt.

Ton objectif : allumer la LED quand le photoréflecteur retourne une valeur détectant la présence du doigt sinon éteindre la LED

Utilise les instruction de contrôle pour tester la valeur de retour du photoréflecteur.

Utilise l’instruction de condition SI SINON

Maintenant pour comparer la valeur retournée par le photo réflecteur IR utilise l’opérateur mathématique > :

Puis récupère les valeurs retourbées par le photoréflecteur :

Décide d’allumer la LED quand les valeurs retournées par le photo réflecteur IR sont supérieures à la valeur de 400 :

Puis clic sur le menu en haut de l’écran et choisis Télécharger :

Tant que le message de transfert est affiché ne touche pas au microcontrôleur ni au câble USB.

Il disparaîtra, une fois le transfert terminé.

Teste avec ton doigt :

Catégories
DFROBOT MICRO:BIT Robotique UNIHIKER

Activer un moteur CC

Ton matériel

Un microcontrôleur la MICRO:BIT

Une carte d’extension

Cette carte d’extension modulable est conçue pour du prototypage et des projets robotiques. Elle combine un pilote de moteur, une alimentation avec support pour accu Li-Ion 18650 et de nombreuses E/S Gravity.

Alimentation :

  • Support pour batterie 18650 (3,7 Vcc) avec circuit de charge intégré et indicateur de niveau à LEDs.
  • Entrée USB Type-C (5 Vcc) : pour alimentation externe et recharge.
  • LEDs : état de charge, niveau de batterie, alimentation et sens des moteurs.

Moteurs et servomoteurs :

  • Driver pour 4 moteurs CC (1,5 A maxi par moteur) à connecter sur borniers à vis.
  • 6 sorties servomoteurs sur connecteurs 3 contacts

Interfaces :

  • 8 broches GPIO via le connecteur Edge des cartes micro:bit ou Unihiker.
  • 6 broches GPIO supplémentaires : digitale et analogique.
  • Bus I2C : trois interfaces à 3,3 V et une interface I2C en 5 V.
  • Interface pour capteurs à ultrasons 5 V (Trigger et Echo). 

Autres : 2 x LEDs RGB programmables (WS2812) et émetteur/récepteur infrarouge


Extension du logiciel avec la carte micro:bit et la carte d’extension dans MIND+

Cliquer sur l’icone.

Clic sur retour en haut à gauche de l’écran

Maintenant tu as deux extensions : une pour la micro:bit et l’autre pour la carte d’extension


Branche ton moteur CC

Instructions pour brancher le moteur CC

Insère le câble rouge dans la broche blanche correspondant au câble rouge du moteur puis le câble noir dans celui correspondant au câble du moteur :

Puis le câble rouge dans le bornier M1+, puis le câble noir dans le bornier M1- :

Utilise un tourne vis pour fixer les câbles :

  1. Branchement du moteur :
    • Fil rouge dans le bornier M1+.
    • Fil noir dans le bornier M1-.
    • Assure-toi de ne pas inverser les couleurs sur les deux bornier + et –
  2. Alimentation :
    • Assure-toi que l’interrupteur de la carte d’extension est bien en position ON. Le moteur nécessite plus d’énergie que celle fournie par la liaison USB, donc une source d’alimentation externe est nécessaire.

Programme le moteur

Pour programmer le moteur, tu disposes de trois instructions principales :

  1. Déclaration de la puissance du moteur :
    • Tu peux définir la puissance du moteur, sous la forme d’un chiffre de 0 à 255.
  2. Sens de la marche :
    • Forward pour faire tourner le moteur dans le sens des aiguilles d’une montre -> avancer.
    • Backward pour faire tourner le moteur dans le sens inverse des aiguilles d’une montre -> reculer.
  3. Arrêter le moteur :
    • Définis la puissance du moteur à zéro -> 0.
  • Avancer -> forward
  • Reculer – backward

Puissance du moteur : 0 arrêt

Quand tu utilises les moteurs, commence toujours sous l’étiquette micro:bit starts par cette instruction qui remet tous les moteurs à l’arrêt:

Programme pour tester ton moteur avec le bouton A pour lancer ton moteur et le bouton B pour l’arrêter :

Teste le bon fonctionnement du moteur

Puis clic sur le menu en haut de l’écran et choisis Télécharger :

Tant que le message de transfert est affiché ne touche pas au microcontrôleur ni au câble USB.

Il disparaîtra, une fois le transfert terminé.

En savoir plus sur le moteur à courant continu CC

Un moteur à courant continu (CC) est un dispositif qui convertit l’énergie électrique en énergie mécanique. Il est alimenté par un courant continu et est utilisé dans une variété d’applications, des jouets aux robots. Le sens de rotation du moteur peut être inversé en changeant la polarité de l’alimentation.

Catégories
DFROBOT MICRO:BIT Robotique UNIHIKER

Activer un servomoteur

Ton matériel

Un microcontrôleur la MICRO:BIT

Une carte d’extension

Cette carte d’extension modulable est conçue pour du prototypage et des projets robotiques. Elle combine un pilote de moteur, une alimentation avec support pour accu Li-Ion 18650 et de nombreuses E/S Gravity.

Alimentation :

  • Support pour batterie 18650 (3,7 Vcc) avec circuit de charge intégré et indicateur de niveau à LEDs.
  • Entrée USB Type-C (5 Vcc) : pour alimentation externe et recharge.
  • LEDs : état de charge, niveau de batterie, alimentation et sens des moteurs.

Moteurs et servomoteurs :

  • Driver pour 4 moteurs CC (1,5 A maxi par moteur) à connecter sur borniers à vis.
  • 6 sorties servomoteurs sur connecteurs 3 contacts

Interfaces :

  • 8 broches GPIO via le connecteur Edge des cartes micro:bit ou Unihiker.
  • 6 broches GPIO supplémentaires : digitale et analogique.
  • Bus I2C : trois interfaces à 3,3 V et une interface I2C en 5 V.
  • Interface pour capteurs à ultrasons 5 V (Trigger et Echo). 

Autres : 2 x LEDs RGB programmables (WS2812) et émetteur/récepteur infrarouge


Extension du logiciel avec la carte micro:bit et la carte d’extension dans MIND+

Cliquer sur l’icone.

Clic sur retour en haut à gauche de l’écran

Maintenant tu as deux extensions : une pour la micro:bit et l’autre pour la carte d’extension


Instructions pour brancher le servomoteur

  1. Branchement du servomoteur :
    • Insère le connecteur du servomoteur dans le port S0 de la carte d’extension, câble gris sur le connecteur jaune orangé..
    • Assure-toi que le câble gris est sur le connecteur jaune orangé pour garantir que le signal est correctement transmis.
  2. Alimentation :
    • Assure-toi que l’interrupteur de la carte d’extension est bien en position ON. Le servomoteur nécessite plus d’énergie que celle fournie par la liaison USB, donc une source d’alimentation externe est nécessaire.

Câble du servomoteur sur le connecteur S0 :

Câble gris sur connecteur jaune orangé :

Bouton interrupteur sur ON :

Programmation du servomoteur

Pour programmer le servomoteur, tu disposes d’une instruction principale pour définir l’angle de rotation :

Tu peux définir l’angle de rotation du servomoteur, généralement entre 0° et 180°. Par exemple, Régler le servomoteur D9 à 90 pour positionner le servomoteur à 90°.

Définir l’angle de rotation :

Le choix du connecteur :

Pour faire bouger ton servomoteur de 0 à 180 degrés, crée une variable angle :

Puis une boucle pour faire bouger ton servomoteur :

En faisant évoluer la variable angle de 0° à 180° :

Puis teste la fin de la boucle :

Et également pour de 180° à ° :

Programme le servomoteur lorsque tu appuies sur le bouton A angle à 180° ou sur le bouton B angle à 0° :

Programme ton servomoteur avec « Mes blocs » pour appeler un seul bloc afin de donner l’angle que tu souhaites à ton servomoteur;

Ton objectif :

Crée un bloc servomoteur :

Crée un paramètre, un nombre float, pour définir l’angle cible à atteindre :

Définis le nom de ton paramètre : angle_cible :

Change ton programme pour une cible avec le bouton A à 180 et une cible avec le bouton B à 0 :

Maintenant tu peux changer les valeurs de tes cibles à atteindre :

Catégories
DFROBOT MAQUEENPLUS MICRO:BIT Robotique

Programmer la télécommande

Comment utiliser une télécommande pour commander ton robot ? N’importe quelle touche de la télécommande permettra d’actionner une commande sur ton robot.

Ton robot doit être équipé d’un photo réflecteur.

Passez en mode téléchargement : tous les projets de cet atelier utilisent ce mode.

Ajouter la carte de contrôle principale : « Extensions » > « Cartes » > « MICRO:BIT »

Utilise ces instructions pour programmer le photo réflecteur IR :

Code ce programme pour détecter l’appui d’une touche sur la télécommande :

Dirige la télécommande vers le photo réflecteur IR :

Catégories
DFROBOT MICRO:BIT Robotique UNIHIKER

Programmer le Joystick

Module joystick Gravity DFRobot basé sur 2 potentiomètres (axes X et Y) et d’un bouton-poussoir pour des applications spécifiques. Il délivre deux sorties analogiques en fonction de la position des deux potentiomètres et une sortie logique en fonction du bouton-poussoir.

Il se raccorde sur deux entrées analogiques et une entrée logique directement sur le Board pour UNIHIKER K10, M10 et micro:bit. Cette carte d’extension modulable est conçue pour du prototypage et des projets robotiques. Elle combine un pilote de moteur, une alimentation avec support pour accu Li-Ion 18650 et de nombreuses E/S Gravity.

Alimentation :

  • Support pour batterie 18650 (3,7 Vcc) avec circuit de charge intégré et indicateur de niveau à LEDs.
  • Entrée USB Type-C (5 Vcc) : pour alimentation externe et recharge.
  • LEDs : état de charge, niveau de batterie, alimentation et sens des moteurs.

Moteurs et servomoteurs :

  • Driver pour 4 moteurs CC (1,5 A maxi par moteur) à connecter sur borniers à vis.
  • 6 sorties servomoteurs sur connecteurs 3 contacts

Interfaces :

  • 8 broches GPIO via le connecteur Edge des cartes micro:bit ou Unihiker.
  • 6 broches GPIO supplémentaires : digitale et analogique.
  • Bus I2C : trois interfaces à 3,3 V et une interface I2C en 5 V.
  • Interface pour capteurs à ultrasons 5 V (Trigger et Echo). 

Autres : 2 x LEDs RGB programmables (WS2812) et émetteur/récepteur infrarouge

installation du logiciel de la carte d’extension dans MIND+

Cliquer sur l’icone.

Installe les trois câbles du joystick sur les 3 premières broches GPIO supplémentaires C0, C1, C2 : digitale et analogique.

  • C0 déplacement en X (0 à 4095, autour de 2000 en repos)
  • C1 déplacement en Y (0 à 4095, autour de 2000 en repos)
  • C2 appui sur le Joystick (1 repos, 0 appuié)

Exemple de programme pour récupérer les évènements du Joystick :

Catégories
DFROBOT MAQUEENPLUS MICRO:BIT Robotique UNIHIKER

Programmer le Gamepad

Passez en mode téléchargement : tous les projets de cet atelier utilisent ce mode.

Ajouter la carte de contrôle principale : « Extensions » > « Cartes » > « MICRO:BIT »

Ajoutez la carte d’extension : « Extensions » > «User Ext » > «gamepad »

Le Gamepad pourra envoyer des commandes en fonction des boutons et du joystick.

Pour cela active la radio et définit le canal 1 à 7 (à adapter selon ton groupe).

Pour détecter les boutons pressés du gamepad, tu vas utiliser les instructions suivantes :

Pour programmer le joystick

Utilise cette instruction pour capter les mouvements du Joystick :

  • Si X a une valeur comprise de 550 à 900, le joystick à droite
  • Si X a une valeur comprise de 0 à 450, le joystick à gauche
  • Si Y a une valeur comprise de 550 à 900, le joystick vers le haut
  • Si Y a une valeur comprise de 0 à 450, le joystick vers le bas

Si cette instruction est vraie alors un appui sur le joystick :

Capter les boutons de couleur

Utilise cette instruction pour capter les quatre boutons :

Capter les boutons A et B de la micro:bit

Utilise cette instruction pour capter les boutons A ou B :

Pour faire vibrer le gamepad

Catégories
MAQUEENPLUS MICRO:BIT Robotique

Pilote un Maqueen avec un Gamepad

via Micro:bit (Communication Radio)

La voiture robotisée UNIHIKER K10 est une plateforme d’apprentissage conçue pour t’initier à la programmation et à l’intelligence artificielle. Elle associe le châssis Maqueen Plus V3 à la carte de contrôle principale UNIHIKER K10, intégrant des technologies telles que le contrôle, l’affichage graphique, la reconnaissance vocale, la synthèse vocale, le traitement d’images et la communication sans fil. Elle te permet de progresser au codage des robots en maîtrisant l’interaction avec le matériel, les applications de capteurs et d’autres compétences clés.

Cette voiture robotisée excelle non seulement dans la conduite et la perception de l’environnement, mais elle prend également en charge des interactions multimodales telles que la lumière, le son et l’affichage, rendant l’apprentissage plus ludique et immersif.

L’objectif est le pilotage de ton maqueen piloté par l carte micro:bit avec le gamepad équipé d’une micro:bit

Introduction au matériel

1. Châssis intelligent Maqueen Plus V3

  • 5 capteurs de suivi de ligne : Prend en charge la reconnaissance des lignes noires et le suivi de trajectoire pour les tâches de suivi de ligne intelligentes.
  • 2 capteurs de lumière : détectent la luminosité ambiante pour un éclairage intelligent ou un contrôle du comportement sensible à la lumière.
  • Capteur laser matriciel : utilise 64 points laser pour l’évitement d’obstacles et la détection de falaises avec une précision millimétrique.
  • Phares et éclairage d’ambiance RGB pour voiture : 16 millions de couleurs personnalisables pour une meilleure visibilité et un retour d’information précis.
  • Buzzer : Émet des alertes sonores pour une meilleure interaction homme-machine.
  • Moteurs métalliques détachables : Parfaitement adaptés pour une rotation fluide sans calage.

Introduction au logiciel

Mind+ est un logiciel de programmation graphique facile à utiliser. Compatible avec de nombreuses plateformes matérielles, il propose un large éventail de modules et de ressources de programmation.

  • Interface graphique intuitive : Mind+ propose une interface glisser-déposer qui permet de créer des programmes sans écrire de code complexe. Cette conception intuitive facilite grandement la prise en main et permet aux débutants de se familiariser rapidement avec le logiciel.
  • Compatibilité matérielle étendue : Mind+ prend en charge une variété de périphériques, notamment le Maqueen Plus V3 et l’UNIHIKER K10.
  • Modules de programmation riches : Le logiciel propose un ensemble varié de modules couvrant le contrôle de mouvement, le traitement des données de capteurs, l’affichage graphique, la lecture audio, et bien plus encore.

L’interface de Mind+ comporte 8 zones principales : barre de menu, sélecteur de mode, outils rapides, blocs de commandes, zone de script, zone de code, extensions et moniteur série.

Apprendre à programmer deux robots (un Gamepad et un Maqueen) pour qu’ils communiquent sans fil via la radio Micro:bit. Tu vas :

  • Utiliser les entrées du Gamepad (boutons et joystick) pour contrôler le Maqueen.
  • Envoyer des commandes depuis le Gamepad (avec une Micro:bit).
  • Recevoir et exécuter ces commandes sur le Maqueen (avec une autre Micro:bit).

Matériel nécessaire

ÉlémentQuantitéRôle
Micro:bit2Une pour le Gamepad, une pour le Maqueen.
Robot Maqueen1Robot à piloter.
Gamepad1Contrôleur avec boutons et joystick (ex: Micro:bit Gamepad ou un Gamepad externe compatible).
Piles2 x 2 (AAA)Alimentation des Micro:bit.
Câbles USB2Pour programmer les Micro:bit.

Étape 1 : Comprendre la communication radio Micro:bit

La Micro:bit permet d’envoyer et recevoir des messages sans fil via un canal radio (de 1 à 7).

  • Un seul canal peut être utilisé à la fois par un groupe de Micro:bit.
  • Si plusieurs groupes travaillent en même temps, chaque groupe doit choisir un canal différent (ex: groupe 1 = canal 1, groupe 2 = canal 2, etc.).

Instructions radio de base :


Programmer le Gamepad (Émetteur)

Passez en mode téléchargement : tous les projets de ce cours utilisent ce mode.

Ajouter la carte de contrôle principale : « Extensions » > « Cartes » > « MICRO:BIT »

Ajoutez la carte d’extension : « Extensions » > «User Ext » > «gamepad »

Le Gamepad va envoyer des commandes au Maqueen en fonction des boutons et du joystick.

Active la radio et définit le canal 1 (à adapter selon ton groupe).

Détecte les boutons pressés du gamepad :

Sur le gamepad utilise les instructions (NEW) button pour envoyer la commande sur l’appui d’un bouton ou l’utilisation du joystick :

Envoie des commandes comme « forward » pour avancer.

Ajoute une instruction d’affichage pour vérifier :

A toi de trouver le programme pour piloter ton robot.

  • avancer
  • reculer
  • tourner à droite
  • tourner à gauche

Programmer le Maqueen (Récepteur)

Le Maqueen va recevoir les commandes du Gamepad et agir en conséquence (avancer, reculer, tourner, etc.).

Ajoute les extensions :.

Ajouter la carte de contrôle principale : « Extensions » > « Cartes » > « MICRO:BIT »

Ajoutez la carte d’extension : « Extensions » > « Carte d’extension » ou « shield board » > « Maqueen Plus V2/V3 »

Utilise les mêmes instructions de transmission des ordres par radio sauf que tu vas utiliser une instruction de réception when received.

Active la radio et définit le canal 1 (à adapter selon ton groupe).

Appelle when received la fonction puis serial in string quand un message est reçu.

Puis teste la commande reçue en l’occurrence forward :

Vérifie la bonne réception du message reçu en utilisant une instruction pour activer les LEDs de la micro:bit.

Utilise ces commandes pour actionner les moteurs du Maqueen :

Par exemple pour accepter la commande forward et faire avancer le robot :

A toi de trouver comment programmer le Maqueen pour le faire reculer, tourner à droite, tourner à gauche ….

Utilise tes connaissances pour améliorer ton robot en utilisant le Joystick pour piloter le robot, rajoute une commande pour l’arrêter, allumer les LEDs …

Programmer le Joystick