Ejemplo n.º 1
0
 def __init__(self, address=0x60, debug=False):
     self.i2c = Raspi_I2C(address)
     self.address = address
     self.debug = debug
     if (self.debug):
         print "Reseting PCA9685"
     self.i2c.write8(self.__MODE1, 0x00)
Ejemplo n.º 2
0
 def __init__(self, address=0x39, debug=0, pause=0.8):
     self.i2c = Raspi_I2C(address)
     self.address = address
     self.pause = pause
     self.debug = debug
     self.gain = 0  # no gain preselected
     self.i2c.write8(0x80, 0x03)  # enable the device
Ejemplo n.º 3
0
  def __init__(self, address=0x77, mode=1, debug=False):
    self.i2c = Raspi_I2C(address)

    self.address = address
    self.debug = debug
    # Make sure the specified mode is in the appropriate range
    if ((mode < 0) | (mode > 3)):
      if (self.debug):
        print ("Invalid Mode: Using STANDARD by default")
      self.mode = self.__BMP085_STANDARD
    else:
      self.mode = mode
    # Read the calibration data
    self.readCalibrationData()
 def __init__(self, address=0x40, debug=False):
   self.i2c = Raspi_I2C(address)
   self.i2c.debug = debug
   self.address = address
   self.debug = debug
   if (self.debug):
     print ("Reseting PCA9685 MODE1 (without SLEEP) and MODE2")
   self.setAllPWM(0, 0)
   self.i2c.write8(self.__MODE2, self.__OUTDRV)
   self.i2c.write8(self.__MODE1, self.__ALLCALL)
   time.sleep(0.005)                                       # wait for oscillator
   
   mode1 = self.i2c.readU8(self.__MODE1)
   mode1 = mode1 & ~self.__SLEEP                 # wake up (reset sleep)
   self.i2c.write8(self.__MODE1, mode1)
   time.sleep(0.005)                             # wait for oscillator
Ejemplo n.º 5
0
class PWM:
    # Registers/etc.
    __MODE1 = 0x00
    __MODE2 = 0x01
    __SUBADR1 = 0x02
    __SUBADR2 = 0x03
    __SUBADR3 = 0x04
    __PRESCALE = 0xFE
    __LED0_ON_L = 0x06
    __LED0_ON_H = 0x07
    __LED0_OFF_L = 0x08
    __LED0_OFF_H = 0x09
    __ALL_LED_ON_L = 0xFA
    __ALL_LED_ON_H = 0xFB
    __ALL_LED_OFF_L = 0xFC
    __ALL_LED_OFF_H = 0xFD

    # Bits
    __RESTART = 0x80
    __SLEEP = 0x10
    __ALLCALL = 0x01
    __INVRT = 0x10
    __OUTDRV = 0x04

    general_call_i2c = Raspi_I2C(0x00)

    @classmethod
    def softwareReset(cls):
        "Sends a software reset (SWRST) command to all the servo drivers on the bus"
        cls.general_call_i2c.writeRaw8(0x06)        # SWRST

    def __init__(self, address=0x40, debug=False):
        self.i2c = Raspi_I2C(address)
        self.i2c.debug = debug
        self.address = address
        self.debug = debug
        if (self.debug):
            print("Reseting PCA9685 MODE1 (without SLEEP) and MODE2")
        self.setAllPWM(0, 0)
        self.i2c.write8(self.__MODE2, self.__OUTDRV)
        self.i2c.write8(self.__MODE1, self.__ALLCALL)
        # wait for oscillator
        time.sleep(0.005)

        mode1 = self.i2c.readU8(self.__MODE1)
        mode1 = mode1 & ~self.__SLEEP                 # wake up (reset sleep)
        self.i2c.write8(self.__MODE1, mode1)
        time.sleep(0.005)                             # wait for oscillator

    def setPWMFreq(self, freq):
        "Sets the PWM frequency"
        prescaleval = 25000000.0    # 25MHz
        prescaleval /= 4096.0       # 12-bit
        prescaleval /= float(freq)
        prescaleval -= 1.0
        if (self.debug):
            print("Setting PWM frequency to %d Hz" % freq)
            print("Estimated pre-scale: %d" % prescaleval)
        prescale = math.floor(prescaleval + 0.5)
        if (self.debug):
            print("Final pre-scale: %d" % prescale)

        oldmode = self.i2c.readU8(self.__MODE1)
        newmode = (oldmode & 0x7F) | 0x10             # sleep
        self.i2c.write8(self.__MODE1, newmode)        # go to sleep
        self.i2c.write8(self.__PRESCALE, int(math.floor(prescale)))
        self.i2c.write8(self.__MODE1, oldmode)
        time.sleep(0.005)
        self.i2c.write8(self.__MODE1, oldmode | 0x80)

    def setPWM(self, channel, on, off):
        "Sets a single PWM channel"
        self.i2c.write8(self.__LED0_ON_L+4*channel, on & 0xFF)
        self.i2c.write8(self.__LED0_ON_H+4*channel, on >> 8)
        self.i2c.write8(self.__LED0_OFF_L+4*channel, off & 0xFF)
        self.i2c.write8(self.__LED0_OFF_H+4*channel, off >> 8)

    def setAllPWM(self, on, off):
        "Sets a all PWM channels"
        self.i2c.write8(self.__ALL_LED_ON_L, on & 0xFF)
        self.i2c.write8(self.__ALL_LED_ON_H, on >> 8)
        self.i2c.write8(self.__ALL_LED_OFF_L, off & 0xFF)
        self.i2c.write8(self.__ALL_LED_OFF_H, off >> 8)
    def __init__(self, address=0x60, debug=False):
        self.i2c = Raspi_I2C(address)

        self.address = address
        self.debug = debug
 def __init__(self, address=0x60, debug=False):
     self.i2c = Raspi_I2C(address)
     self.address = address
     self.debug = debug
     self.i2c.write8(self.__MODE1, 0x00)