---
tags: Drane, Robotique, YWC
---
# Programmer le robot Smart Cutebot en python
![](https://ppc-formation.fr/ap/ywc/resources/res_10002.jpg =350x)
<iframe width="560" height="315" src="https://www.youtube.com/embed/WR4qvcAsto4?si=EYMFsJXzwGs5hXLI" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>
## Fonctionnalités
:::spoiler Ce robot intègre: (cliquer pour consulter)
![](https://nuage03.apps.education.fr/index.php/apps/files_sharing/publicpreview/jnKxANGgiYJnrzx?file=/&fileId=164129714&x=3674&y=2080&a=true&etag=6569d2f115ba4)
- 2 x suiveurs de lignes
- 1 x connecteur pour détecteur à ultrasons HC-SR04 (2 cm à 400 cm, précision ± 1,5 mm) permettant d'éviter les obstacles
- 1 x buzzer
- 2 x LEDs RGB frontales pouvant être utilisées comme indicateurs, feux de recul, etc.
- 2 x LEDs RGB compatibles NeoPixel pour la création d'effets lumineux
- 2 x interfaces pour servomoteurs ou modules complémentaires
- 1 x interface I2C pour modules ou capteurs compatibles
- 1 x récepteur IR pour un contrôle via une télécommande IR (non incluse)
:::
## Interfaces de programmation
### Programmation par blocs : avec Makecode
Se rendre sur https://makecode.microbit.org
Ajouter les blocs correspondants au robot en ajoutant l'extension Cutebot
![](https://nuage03.apps.education.fr/index.php/apps/files_sharing/publicpreview/kNjjE7xeEXoZNGY?file=/&fileId=163878183&x=4096&y=2304&a=true&etag=6568a1bc185fc)
Blocs disponibles
![](https://nuage03.apps.education.fr/index.php/apps/files_sharing/publicpreview/Yzo33ZWmWamkXa8?file=/&fileId=163881371&x=4096&y=2304&a=true&etag=6568a44a68988 =x400)
### Programmation par blocs : avec Vittascience
Se rendre sur le site de Vittascience : https://fr.vittascience.com/
Les blocs correspondants au robot sont disponibles sous l'onglet Robots
![](https://nuage03.apps.education.fr/index.php/apps/files_sharing/publicpreview/BEXaJJL9GkxRAfZ?file=/&fileId=164545348&x=3674&y=2080&a=true&etag=656b3a85cac1b)
L'affichage mixte blocs/python permet de lire le code python associé à un programme en blocs.
## Programmation python : avec l'éditeur en ligne
Télécharger la bibliothèque "BBC micro:bit Cutebot MicroPython" : https://github.com/Krakenus/microbit-cutebot-micropython/blob/master/cutebot.py
Sur [python.microbit.org](https://python.microbit.org/v/3), cliquer sur ouvrir, puis charger le fichier en sélectionnant "Ajouter le fichier" au lieu de "remplacer le fichier".
Des exemples de programmes sont disponibles [en ligne](https://github.com/Krakenus/microbit-cutebot-micropython/tree/master/examples) en lien avec le livret fourni avec le robot.
Fonctions d'interface disponibles :
```python=
def set_motors_speed(left_speed: int, right_speed: int) -> None:
"""
Sets speeds for both motors.
"""
def go_forward() -> None:
"""
Sets both motor to run forward with full speed
"""
def go_backward() -> None:
"""
Sets both motor to run backward with full speed
"""
def turn_left() -> None:
"""
Sets the motors to run with full speed but with opposite direction. The Cutebot will turn in place anticlockwise.
"""
def turn_right() -> None:
"""
Sets the motors to run with full speed but with opposite direction. The Cutebot will turn in place clockwise.
"""
def stop() -> None:
"""
Sets speed of both motors to 0. The Cutebot will stop immediately.
"""
def get_sonar_distance(unit: int = SONAR_CM, timeout_us: int = 30000) -> float:
"""
Returns object distance from sonar module in given unit.
If negative number is returned, the timeout was reached during waiting for echo.
"""
def set_left_rgb_led(r: int = 0, g: int = 0, b: int = 0) -> None:
"""
Sets color of the left RGB led
"""
def set_right_rgb_led(r: int = 0, g: int = 0, b: int = 0) -> None:
"""
Sets color of the right RGB led
"""
def has_left_track() -> bool:
"""
Returns True whenever left tracker is on the black track. Otherwise returns False.
"""
def has_right_track() -> bool:
"""
Returns True whenever right tracker is on the black track. Otherwise returns False.
"""
def set_servo_1_angle(angle: int) -> None:
"""
Sets angle of S1 servo.
"""
def set_servo_2_angle(angle: int) -> None:
"""
Sets angle of S2 servo.
"""
```