Crédit: le fichier README est traduit par MCHobby - the README file is translated by MCHobby
Classe et code d'exemple de la plateforme robotique autonome Kitronik pour Raspberry Pi Pico. (www.kitronik.co.uk/5335)
Sur la plateforme robotique autonome:
- Avant (Forward en anglais) est définit étant à l'opposé de l'interrupteur marche/arrêt
- Gauche (Left) et Droite (Right) sont définit lorsque l'on est face à l'avant (when facing Forward)
- Le Pico doit être branché avec le connecteur USB orienté à l'arrière (à l'opposé du trou prévu pour le crayon)
Pour utiliser votre buggy, sauver le fichier PicoAutonomousRobotics.py sur le Pico afin qu'il puisse être importé.
import PicoAutonomousRobotics
robot = PicoAutonomousRobotics.KitronikPicoRobotBuggy()Cela initialisera les broches nécessaires pour les moteurs / servos / capteurs.
robot.motorOn(motor, direction, speed) # moteur, direction, vitesseOù:
- motor => "l" pour moteur gauche (left) ou "r" pour moteur droit (right)
- direction => "f" pour avant (forward) ou "r" pour arrière (reverse)
- speed => pour la vitesse de 0 à 100
robot.motorOff(motor) # moteurOù:
- motor => "l" pour moteur gauche (left) ou "r" pour moteur droit (right)
Le servo PWM est contrôlé en utilisant PIO (répétition 20ms, pour un cycle utile variant entre 500 et 2500us).
Les sorties servos sont automatiquement préparés à l'initialisation de la classe.
Ce processus active le générateur PWM PIO sur la broche servo.
Si la broche doit être utilisée pour autre chose alors il est possible de libérer celle-ci en désactivant PIO ('deregistered').
robot.deregisterServo(servo)Pour réactiver (re-register) la broche servo après une désactivation:
robot.registerServo(servo)Où:
- servo => le numéro du servo-moteur (0-3)
robot.goToPosition(servo, degrees)Où:
- servo => le numéro du servo-moteur à positionner (0-3)
- degrees => l'angle en degrés (0-180)
robot.goToPeriod(servo, period)Où:
- servo => le numéro du servo-moteur à positionner (0-3)
- period => période du cycle utile en micro-seconde (500-2500)
robot.getDistance(whichSensor) # Capteur_ultrasonOù:
- whichSensor => "f" capteur avant (front') ou "r" capteur arrière (rear) Le paramètre par défaut est "f", il est donc possible de faire l'appel suivant:
robot.getDistance()robot.setMeasurementsTo(units) # unité_a_utiliserOù:
- units => "inch" pour une mesure en "Pouce" (unité impériale), "cm" pour une mesure en centimètre (système métrique)
Les capteurs sont marqués sur la carte PCB pour la gauche (left), droite (right) et le centre. Le coté gauche (Left) est à gauche du buggy lorsqu'il est vu depuis en haut, en regardant d'en face (facing the front).
Le capteur central est un peu plus en avant que les autres capteurs.
robot.getRawLFValue(whichSensor) # Quel_capteurRésultat:
- la valeur brute du capteur entre 0 et 65535 (faible valeur numérique représente une surface sombre)
Où:
- whichSensor => Indique le capteur interrogé: "c" pour centre, "l" pour gauche (left), "r" pour droite (right)
Les capteurs du suiveur de ligne peuvent aussi retourner une valeur booléenne True ou False:
robot.isLFSensorLight(whichSensor) # Quel_capteurRésultat:
- True lorsque le capteur est au dessus d'une surface claire et False lorsqu'il est au dessus d'une surface sombre.
Où:
- whichSensor => Indique le capteur interrogé: "c" pour centre, "l" pour gauche (left), "r" pour droite (right)
La détermination surface claire / sombre est basée sur les seuils "darkThreshold" (sombre) et "lightThreshold" (clair).
Utilisez le code suivant pour modifier les seuils:
robot.setLFDarkValue(darkThreshold, OptionalLeftThreshold = -1, OptionalRightThreshold = -1) # Seuil_sombre, Seuil_gauche_optionnel, Seuil_droit_optionnelrobot.setLFLightValue(lightThreshold, OptionalLeftThreshold = -1, OptionalRightThreshold = -1) # Seuil_clair, Seuil_gauche_optionnel, Seuil_droit_optionnelLes valeurs typique pour des surfaces claires (light) son en dessous de 20000 et au dessus de 30000 pour une surface sombre (dark).
Les seuils optionnels permettent d'avoir des valeurs différentes pour les capteurs de gauche et de droite, dans ce cas, la première valeur correspond au seuil du capteur central.
Si les valeurs optionnelles ne sont pas utilisées alors les 3 capteurs utilisent les mêmes valeur de seuils.
Le buzzer est piloté par un signal PWM.
robot.soundFrequency(frequency) # FrequenceOù:
- frequency => la fréquence du son à produire entre 0 et 3000 Hertz
robot.silence()robot.beepHorn():Les LEDs ZIP ont un fonctionnement en deux étapes...
Indiquer la couleur attribuée aux différentes LEDs:
robot.setLED(whichLED, whichColour) # Quelle_LED, Quelle_couleurOù:
- whichLED => indique la LED concernée (0-3)
- whichColour => indique la couleur assignée à la LED soit à l'aide d'un tuple
(valeur_rouge, valeur_vert, valeur_bleu)ou à l'aide d'une des constantes prédéfinies:
# BLACK=Noir, RED=Rouge, YELLOW=Jaune, GREEN=Vert, CYAN=Cyan,
# BLUE=Bleu, PURPLE=Pourpre, WHITE=Blanc
COLOURS = (BLACK, RED, YELLOW, GREEN, CYAN, BLUE, PURPLE, WHITE)Eteindre les LEDs:
robot.clear(whichLED) # Quelle_LEDOù:
- whichLED => indique la LED à éteindre (0-3)
Contrôler le luminosité:
robot.setBrightness(value)Où:
- value => Luminosité de toutes les LEDs entre 0 et 100 (luminosité en %)
robot.show()Ce code est conçu pour être utilisé comme un module. Voir: https://kitronik.co.uk/blogs/resources/modules-micro-python-and-the-raspberry-pi-pico (anglais) pour plus d'information.