Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # Initialization and Commands for DFRobot Macqueen
- # Collected and inferred by Ido Gendel, 2020
- # MU Editor (tested on version 1.0.2)
- # Share and enjoy!
- from microbit import *
- from utime import *
- from neopixel import *
- # This is critical for IR reception!
- pin16.set_pull(pin16.NO_PULL)
- # Required for communication with motor chip
- i2c.init()
- # Pixel 0=Front/Left, 1=B/L, 2=B/R, 3=F/R
- # Usage: pixels[n] = (R, G, B) / pixels.clear(), pixels.show()
- pixels = NeoPixel(pin15, 4)
- # Motor: 0 = left, 2 = right
- # Direction: 0 = Forward, 1 = Backward
- # Speed: 0 stop to 255 full
- def sendMotorCmd(motor, direction, speed):
- i2c.write(0x10, bytes([motor, direction, speed]))
- # Servo number is 1 or 2 (as marked on robot)
- # Angle 0 - 180 inclusive
- def sendServoCmd(servo, angle):
- addr = 0x13 + servo
- i2c.write(0x10, bytes([addr, angle]))
- def frontLights(right, left):
- pin12.write_digital(right)
- pin8.write_digital(left)
- def horn(frequency):
- if frequency == 0:
- pin0.write_digital(0)
- return
- else:
- pin0.set_analog_period_microseconds(1000000 // frequency)
- pin0.write_analog(512)
- # Returns (right, left) reading
- def getLineSensorsReading():
- return (pin14.read_digital(), pin13.read_digital())
- def getRange():
- # Trigger
- pin1.write_digital(1)
- sleep_us(20)
- pin1.write_digital(0)
- # Wait for Echo start
- while pin2.read_digital() == 0:
- pass
- # Measure Echo
- t0 = ticks_us()
- while pin2.read_digital() == 1:
- pass
- # Result is returned in cm
- return (ticks_us() - t0) / 58.77
- def getRawIRReading():
- return pin16.read_digital()
- # Demo code from here on
- display.show(Image.HAPPY)
- pixels[0] = (0, 30, 0)
- pixels[1] = (50, 0, 0)
- pixels[2] = (50, 0, 0)
- pixels[3] = (0, 30, 0)
- pixels.show()
- while True:
- if 0 == getRawIRReading():
- frontLights(1, 1)
- sleep(0.5)
- else:
- frontLights(0, 0)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement