Exemplo n.º 1
0
 def update(self):
     """ Commits the changes	"""
     ShiftRegister.commit()  # Commit the serial to parallel
Exemplo n.º 2
0
def main():
    # cleanup state and set pin naming mode
    try:
        # for GpioObject
        GPIO.cleanup_existing()
        GPIO.setmode(GPIO.BOARD)
    except AttributeError:
        # for RPi.GPIO
        GPIO.cleanup()
        GPIO.setmode(GPIO.BCM)
    print type(GPIO)
    print GPIO.OUT
    # define necessary pins for shift register
    ser = gpio(7, GPIO) # labeled S
    ser.setup(GPIO.OUT) 
    rclk = gpio(8, GPIO) # labeled R
    rclk.setup(GPIO.OUT)
    srclk = gpio(25, GPIO) # labeled SR
    srclk.setup(GPIO.OUT)
    # and shift register, 16 bits wide
    shift_register = ShiftRegister(ser, rclk, srclk, 16, autocommit=False)
    # use some virtual bits in shift register
    # act like GPIO Pins with this Wrapper Class
    # driver 1 dir and step
    d_1_dir_pin = ShiftGPIOWrapper(shift_register, 0)
    d_1_step_pin = ShiftGPIOWrapper(shift_register, 1)
    d_1_enable_pin = ShiftGPIOWrapper(shift_register, 2)
    # driver 2 dir and step
    d_2_dir_pin = ShiftGPIOWrapper(shift_register, 3)
    d_2_step_pin = ShiftGPIOWrapper(shift_register, 4)
    d_2_enable_pin = ShiftGPIOWrapper(shift_register, 5)
    # driver 3 dir and step
    d_3_dir_pin = ShiftGPIOWrapper(shift_register, 6)
    d_3_step_pin = ShiftGPIOWrapper(shift_register, 7)
    d_3_enable_pin = ShiftGPIOWrapper(shift_register, 8)
    
    steps = 0
    # ENABLE PIN is active LOW
    d1.enable_pin.output(0)
    d2.enable_pin.output(0)
    d3.enable_pin.output(0)

    try:
        d_1_dir_pin.output(DIRECTION)
        d_2_dir_pin.output(DIRECTION)
        d_3_dir_pin.output(DIRECTION)
        shift_register.commit()
        start = time.time()
        while (start + DURATION_S) >= time.time():
            d_1_step_pin.output(True)
            d_2_step_pin.output(True)
            d_3_step_pin.output(True)
            shift_register.commit()
            # time.sleep(0.0001)
            d_1_step_pin.output(False)
            d_2_step_pin.output(False)
            d_3_step_pin.output(False)
            shift_register.commit()
            # time.sleep(STEP_INTERVAL)
            steps += 1
    except KeyboardInterrupt:
        pass
    print "%d steps done" % steps
    shift_register.clear()
    GPIO.cleanup()
Exemplo n.º 3
0
 def update(self):
     """ Commits the changes	"""
     ShiftRegister.commit()  # Commit the serial to parallel
def main():
    # cleanup state and set pin naming mode
    try:
        # for GpioObject
        GPIO.cleanup_existing()
        GPIO.setmode(GPIO.BOARD)
    except AttributeError:
        # for RPi.GPIO
        GPIO.cleanup()
        GPIO.setmode(GPIO.BCM)
    print type(GPIO)
    print GPIO.OUT
    # define necessary pins for shift register
    ser = gpio(7, GPIO)  # labeled S
    ser.setup(GPIO.OUT)
    rclk = gpio(8, GPIO)  # labeled R
    rclk.setup(GPIO.OUT)
    srclk = gpio(25, GPIO)  # labeled SR
    srclk.setup(GPIO.OUT)
    # and shift register, 16 bits wide
    shift_register = ShiftRegister(ser, rclk, srclk, 16, autocommit=False)
    # use some virtual bits in shift register
    # act like GPIO Pins with this Wrapper Class
    # driver 1 dir and step
    d_1_dir_pin = ShiftGPIOWrapper(shift_register, 0)
    d_1_step_pin = ShiftGPIOWrapper(shift_register, 1)
    d_1_enable_pin = ShiftGPIOWrapper(shift_register, 2)
    # driver 2 dir and step
    d_2_dir_pin = ShiftGPIOWrapper(shift_register, 3)
    d_2_step_pin = ShiftGPIOWrapper(shift_register, 4)
    d_2_enable_pin = ShiftGPIOWrapper(shift_register, 5)
    # driver 3 dir and step
    d_3_dir_pin = ShiftGPIOWrapper(shift_register, 6)
    d_3_step_pin = ShiftGPIOWrapper(shift_register, 7)
    d_3_enable_pin = ShiftGPIOWrapper(shift_register, 8)

    steps = 0
    # ENABLE PIN is active LOW
    d1.enable_pin.output(0)
    d2.enable_pin.output(0)
    d3.enable_pin.output(0)

    try:
        d_1_dir_pin.output(DIRECTION)
        d_2_dir_pin.output(DIRECTION)
        d_3_dir_pin.output(DIRECTION)
        shift_register.commit()
        start = time.time()
        while (start + DURATION_S) >= time.time():
            d_1_step_pin.output(True)
            d_2_step_pin.output(True)
            d_3_step_pin.output(True)
            shift_register.commit()
            # time.sleep(0.0001)
            d_1_step_pin.output(False)
            d_2_step_pin.output(False)
            d_3_step_pin.output(False)
            shift_register.commit()
            # time.sleep(STEP_INTERVAL)
            steps += 1
    except KeyboardInterrupt:
        pass
    print "%d steps done" % steps
    shift_register.clear()
    GPIO.cleanup()