D'abord rappeler quel est notre projet. Notre but final est d'abord d'arriver à créer un labyrinthe mais de lâcher la voiture en autonomie dedans et de s'en sortir seul. Voilà le plan du labyrinthe(c'est le brouillon),l'unité de mesures et "case" qui correspond à la longeur de la distance que la voiture parcours à partir de roues arriéres lorsque on lui programme d'avancer de une case,qui fait à peu prés une feuille A4. 1 case ≈ 22cm
Puis voici le code encore incomplet.Ce code permet à la voiture d'éviter de s'écrasere contre un mur grâce à ses capteurs qui se trouve devant,celui qui ressemble à ses yeux,pour plus de précision voici une image qui explique mieux que des phrases comment ces capteurs fonctionnent ils:
Plus bas donc voici le code, et grâce à ce programme plus précisement grâce au bloc"[Cutebot]ditance(cm)" qui si son capteur capte un obsctale à moins de 10cm alors la voiture éxecute le programmme qui se trouve dans le bloc"sinon",soit,reculer,faire un 90° vers la droite et clignoter:
Puis,incompréhensible celui en python:
from microbit import * import cutebot from machine import time_pulse_us import utime import neopixel import math """ Cutebot robot """ # Ultrasonic TRIG on pin8 # Ultrasonic ECHO on pin12 # Neopixel on pin15 npCutebot = neopixel.NeoPixel(pin15, 2) def getUltrasonicData(trig, echo, data='distance', timeout_us=30000): trig.write_digital(0) utime.sleep_us(2) trig.write_digital(1) utime.sleep_us(10) trig.write_digital(0) echo.read_digital() duration = time_pulse_us(echo, 1, timeout_us)/1e6 # t_echo in seconds if duration > 0: if data == 'distance': #sound speed, round-trip/2, get in cm return 343 * duration/2 * 100 elif data == 'duration': return duration else: raise ValueError("Data option '" + data + "' is not valid") else: return -1 def cutebot_blinkRobot(): for count in range(2): for i in range(2): npCutebot[i] = (255, 0, 0) npCutebot.show() cutebot.set_right_rgb_led(255, 0, 0) cutebot.set_left_rgb_led(255, 0, 0) utime.sleep_ms(500) for i in range(2): npCutebot[i] = (0, 0, 0) npCutebot.show() cutebot.set_right_rgb_led(0, 0, 0) cutebot.set_left_rgb_led(0, 0, 0) utime.sleep_ms(500) def convertSpeed_mps(speed, max_speed, max_rpm, wheels_diameter): # 2π * wheels_diameter / 2 * speed_rpm / 60 return 2*math.pi*wheels_diameter/2*1e-2*(speed/max_speed*max_rpm)/60 def cutebot_moveWithSquare(x, direction, speed=100): speed_mps = convertSpeed_mps(speed, 100, 300, 3.4) for i in range(int(x)): if (direction == 'forward') : cutebot.set_motors_speed(speed,speed) else : cutebot.set_motors_speed(-speed,-speed) utime.sleep_ms(int(15e-2/speed_mps*1000)) cutebot.stop() def cutebot_turnAngle(angle, speed=100): speed_mps = convertSpeed_mps(speed, 100, 300, 3.4) # wheels_center_radius * degToRad(angle) angularDistance = 2.8*1e-2*angle/180*math.pi if (angle < 0) : cutebot.set_motors_speed(speed,-speed) else : cutebot.set_motors_speed(-speed,speed) utime.sleep_ms(int(math.fabs(angularDistance)/speed_mps*1000)) cutebot.stop() while True: if getUltrasonicData(pin8, pin12, 'distance') > 10: cutebot.set_motors_speed(40,40) else: cutebot_blinkRobot() cutebot_moveWithSquare(1, 'backward', 30) cutebot_turnAngle(-90, 20) cutebot_moveWithSquare(1, 'forward', 30)