Code for a maqueen.py module to save in microbit memory with Mu
Code: Select allfrom microbit import *
import time
from neopixel import NeoPixel
import machine
class Maqueen():
def __init__(self,addr=0x10):
self.addr=addr
self._vg=0
self.s=0
self.np=NeoPixel(pin15,4)
def getSpeed(self):
return self._vg
def setSpeed(self, v):
self._vg=v
def calc_vs(self,v):
if v==None:
v=self.vg
self.s=0 if v>=0 else 1
return(int(abs(v)*255/100))
def stop(self):
i2c.write(self.addr,bytearray([0,0,0,0,0]))
time.sleep(1.5)
def motor_right(self,v=None):
v=self.calc_vs(v)
i2c.write(self.addr,bytearray([2,self.s,v]))
def motor_left(self,v=None):
v=self.calc_vs(v)
i2c.write(self.addr,bytearray([0,self.s,v]))
def forward(self,v=None):
v=self.calc_vs(v)
i2c.write(self.addr,bytearray([0,0,v,0,v]))
def back(self,v=None):
v=self.calc_vs(v)
i2c.write(self.addr,bytearray([0,1,v,1,v]))
def rotate_r(self,v=None):
v=self.calc_vs(v)
i2c.write(self.addr,bytearray([0,0,v,1,v]))
def rotate_l(self,v=None):
v=self.calc_vs(v)
i2c.write(self.addr,bytearray([0,1,v,0,v]))
def distance(self):
pin1.write_digital(1)
time.sleep_ms(10)
pin1.write_digital(0)
pin2.read_digital()
t2 = machine.time_pulse_us(pin2,1)
d = 340 * t2 / 20000
return d
def led_left(self, e=0):
pin8.write_digital(e)
def led_right(self, e=0):
pin12.write_digital(e)
def line_left(self):
return(pin13.read_digital())
def line_right(self):
return(pin14.read_digital())
def lum_on(self,RGB=[0,255,0]):
for i in range(4):
self.np[i] = (RGB)
self.np.show()
def lum_off(self):
self.np.clear())
example of code to flash as main.py with Mu
Code: Select allfrom maqueen import *
import random
robot=Maqueen()
time.sleep(2)
sens=0
while True:
robot.forward(20)
d=robot.distance()
while d>8:
d=robot.distance()
sens=random.randint(0,1)
if sens==0:
robot.rotate_r(70)
robot.led_right(1)
else:
robot.rotate_l(70)
robot.led_left(1)
delai=0.7
time.sleep(delai)
robot.led_right(0)
robot.led_left(0)
edit: code translation to english