// initialise magnetic sensor hardware
sensor.init();
}
void loop()
{
sensor.update();
// display the angle and the angular velocity to the terminal
Serial.print(sensor.getAngle());
Serial.print("\t");
Serial.println(sensor.getVelocity());
Ce tutoriel a pour objectif d’apprendre la programmation en langage microPython en utilisant la carte Raspberry Pi Pico. Cette carte est équipé d’un microcontrôleur RP2040. Le langage microPython est le portage du langage Python adapté aux microcontrôleurs.
Un premier exemple très simple d’affichage de texte avec la fonction print() :
Gestion d’une led avec le shell
Un exemple de programmer pour allumer une led.
La led est connecté sur la pin n°2 (GP2)
Vous pouvez essayer de taper ces lignes de code dans le shell :
Et la lumière fut, allumer et éteindre une led !
Un exemple très simple de programme pour allumer une led :
La led doit être connectée sur la GPIO n°2
[code language=”python”]
from machine import Pin
led = Pin(2, Pin.OUT) # configuration de la pin 2 en sortie
led.value(1) # mise à l’état haut de la pin 2, la led s’allume !
[/code]
Un exemple simple de programme pour allumer une led pendant 2 secondes et ensuite l’éteindre :
[code language=”python”]
from machine import Pin
import time
led = Pin(2, Pin.OUT) # configuration de la pin 2 en sortie
while True: # boucle infini
led.value(1)
time.sleep(2) # pause de 2 secondes
led.value(0)
time.sleep(1) # pause de 1 seconde
[/code]
Un autre exemple avec l’utilisation de la fonction toggle():
La led va clignoter toutes les 2 secondes
[code language=”python”]
from machine import Pin
import time
led = Pin(2, Pin.OUT)
while True:
led.toggle()
time.sleep(2)
[/code]
Utilisation du shell, print
Utilisation de la fonction print() pour afficher du texte dans le shell :
[code language=”python”]
from machine import Pin
import time
print("Hello Raspberry Pi Pico ! ")
[/code]
Le résultat dans le shell :
Gestion d’un bouton poussoir
Un exemple pour lire le manière continue l’état d’un bouton poussoir connecter sur la pin 3 de la carte Raspberry Pi Pico :
[code language=”python”]
from machine import Pin, ADC, PWM
import time
PWM : Pulse With Modulation ou modulation de la largeur d’impulsion
C’est quoi un signal PWM ?
This file is licensed under the Creative Commons Attribution-Share Alike 4.0 International license. (https://en.wikipedia.org/wiki/Pulse-width_modulation)
Un exemple sur la pin 4, d’un signal PWM. Ce signal PWM permet par exemple de contrôler l’intensité lumineuse d’une led ou encore la commande en vitesse d’un moteur à courant continu.
[code language=”python”]
from machine import Pin, ADC, PWM
import time
signal = Pin(4, mode=Pin.OUT)
signal = PWM(Pin(4))
signal.freq(500) # fréquence de 500 Hz
signal.duty_u16(32000) # rapport cyclique
[/code]
Un autre exemple de génération d’un signal PWM :
[code language=”python”]
from machine import Pin, ADC, PWM
import time
signal = Pin(4, mode=Pin.OUT)
signal = PWM(Pin(4))
signal.freq(500)
for rapport in range(0,65_536):
signal.duty_u16(rapport)
print(rapport)
time.sleep(0.001)
[/code]
Contrôle d’un servomoteur
Maintenant, passons au contrôle d’un servomoteur en microPython.
Connexion du servomoteur :
Fil rouge : +5V
Fil noir : GND
Fil orange : GPIO 4
Un exemple de programme pour le contrôle d’un servomoteur :
Configuration de la GPIO 4 en signal PWM
Pour le contrôle d’un servomoteur la fréquence doit être de 50 Hz
Le contrôle angulaire d’un servomoteur varie en fonction du rapport cyclique (entre 1 et 2 ms environ, dépends du type de servomoteurs)
[code language=”python”]
from machine import Pin, PWM
import time
servo = Pin(4, mode=Pin.OUT)
servo = PWM(Pin(4))
servo.freq(50)
while True:
servo.duty_u16(2314)
time.sleep(2)
servo.duty_u16(7600)
time.sleep(2)
[/code]
Allumer une led avec un timer !
Un exemple d’utilisation d’un timer pour faire clignoter la led interne de la carte Raspberry Pi PICO toutes les secondes :
[code language=”python”]
from machine import Pin, Timer
Un exemple de programme pour gérer l’appui d’un bouton poussoir avec une interruption matérielle (IRQ). Une interruption matérielle est déclenchée par une entrée (GPIO) du microcontrôleur. Dans cet exemple, l’entrée 3 est configurée en interruption.
[code language=”python”]
from machine import Pin
import time
def mon_interruption(pin):
print("Bouton ON")
bouton = Pin(3, Pin.IN, Pin.PULL_UP) # configuration du bouton sur l’entée 3
Un programme simple en microPython pour faire avancer, reculer et tourner le robot MR-Pico :
import time
import robot
# avancer le robot avec une vitesse de 20%
robot.forward(20)
time.sleep(2)
# reculer le robot avec une vitesse de 30%
robot.back(30)
time.sleep(3)
# tourner à droite avec une vitesse de 30%
robot.turnRight(30)
time.sleep(4)
# tourner à droite avec une vitesse de 30%
robot.turnLeft(30)
# avancer le robot avec une vitesse de 50%
robot.forward(50)
Déplacements avec contrôle en position
Un autre exemple, pour faire avancer le robot de 150 mm puis de 100 mm en ligne droite :
import time
import robot
robot.forwardmm(150,20) # avancer de 150 mm avec une vitesse de 20%
time.sleep(2)
robot.forwardmm(100,25) # avancer de 100 mm avec une vitesse de 25%
Maintenant dans l’autre sens, un autre exemple pour faire reculer le robot :
import time
import robot
robot.forwardmm(-300,20) # reculer le 300 mm
Exemple, pour faire tourner le robot de 90° vers la droite :
import time
import robot
robot.forwardmm(150,20) # Avancer de 150 mm
time.sleep(2)
robot.turnAngle(90,25) # Tourner à droite de 90°
time.sleep(2)
robot.turnAngle(-90,25) # Tourner à gauche de 90°