Exemple #1
0
def checkmotor():
    try:
        id = c2py.readworddata(ADDRESS, MOTOR_GET0, 1)
    except c2py.I2CError:
        return False

    return True
Exemple #2
0
def getword(address, cmd):
    while True:
        try:
            val = c2py.readworddata(address, cmd, 1)
            break
        except c2py.I2CError:
            pass

    return val
Exemple #3
0
def __get__(channel):
    if channel not in [0, 1]:
        raise ValueError, "Incorrect channel read"

    cmd = (MOTOR_GET0, MOTOR_GET1)[channel]

    try:
        n = c2py.readworddata(ADDRESS, cmd, 1)
    except:
        return 0  # Should do something more sensible here!

    speed = n & 0x1FF
    dir = n >> 9

    if (dir == OFF or dir == BRAKE):
        return 0
    elif dir == FORWARD:
        return speed / 3.28
    elif dir == BACKWARD:
        return -1 * speed / 3.28
Exemple #4
0
def __set__(channel, speed):

    speed = float(speed)

    if speed > 100:
        speed = 100
    elif speed < -100:
        speed = -100

    if channel not in [0, 1]:
        raise ValueError, "Incorrect channel set"

    if speed > 0:
        dir = FORWARD
    else:
        dir = BACKWARD

    speed = abs(int(speed * 3.28))

    v = speed | (dir << 9) | (channel << 11)

    while True:
        try:
            c2py.writeworddata(ADDRESS, MOTOR_CMD_CONF, v, 1)
        except:
            continue

        cmd = (MOTOR_GET0, MOTOR_GET1)[channel]

        try:
            n = c2py.readworddata(ADDRESS, cmd, 1)
        except:
            continue

        if (n & 0x1FF) == speed and (n >> 9) == dir:
            break
Exemple #5
0
def __set__( channel, speed ):
    
    speed = float(speed)

    if speed > 100:
        speed = 100
    elif speed < -100:
        speed = -100

    if channel not in [0,1]:
        raise ValueError, "Incorrect channel set"
    
    if speed > 0:
        dir = FORWARD
    else:
        dir = BACKWARD

    speed = abs(int(speed * 3.28))

    v = speed | (dir << 9) | (channel<<11)
    count = 0

    while count < MAXERR:
        c2py.writeworddata( ADDRESS, MOTOR_CMD_CONF, v, 1 )

        cmd = (MOTOR_GET0, MOTOR_GET1)[channel]

        n = c2py.readworddata( ADDRESS, cmd, 1)

        if (n & 0x1FF) == speed and (n >> 9) == dir:
            break

        count = count + 1
    
    if count == MAXERR:
        raise c2py.I2CError
Exemple #6
0
def getfirmware():
    return c2py.readworddata(ADDRESS, CMD_GET_FIRMWARE, 1)