igendel icon

DFRobot Macqueen MicroPython Basic Setup/Functions

igendel | PRO | 03/30/20 11:23:46 PM UTC | 0 ⭐ | 906 👁️ | Never ⏰ | []
Python |

1.96 KB

|

None

|

0 👍

/

0 👎

# 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)

Comments