Exemplo n.º 1
0
    def __init__(self, slave=0x60, prescale0=0, prescale1=0, ledmode=0b1110):
        # Check parameter sanity
        pres0 = toint(prescale0)
        if not pres0 in range(0, 0xFF + 1):
            raise ValueError("prescale0 value %d out of range [%d..%d]" %
                             (pres0, 0x00, 0xFF))

        pres1 = toint(prescale1)
        if not pres1 in range(0, 0xFF + 1):
            raise ValueError("prescale1 value %d out of range [%d..%d]" %
                             (pres1, 0x00, 0xFF))

        lmode = toint(ledmode)
        if not lmode in range(0, 0x0F + 1):
            raise ValueError("ledmode value %d out of range [%d..%d]" %
                             (lmode, 0x00, 0x0F))

        # Go for it
        I2C.__init__(self, toint(slave))
        PWM.__init__(self, self.PWM_CHANNELS, self.PWM_RESOLUTION,
                     self.__calculateFrequency__(pres0))
        DAC.__init__(self, self.DAC_CHANNELS, self.DAC_RESOLUTION, self.VREF)
        GPIOPort.__init__(self, self.GPIO_CHANNELS, self.GPIO_BANKS)

        d = bytearray(5)
        d[0] = pres0
        d[1] = self.D_PWM0
        d[2] = pres1
        d[3] = self.D_PWM1
        d[4] = lmode | 0xF0
        self.writeRegisters((self.PSC0 | self.FLAG_AI), d)
Exemplo n.º 2
0
    def __init__(self,
                 altitude=0,
                 external=None,
                 oversampling=0,
                 filter=0,
                 standby=0.5,
                 slave=0x76):
        I2C.__init__(self, toint(slave))
        Pressure.__init__(self, altitude, external)

        self.t1 = self.readUnsigned(0x88, 2)
        self.t2 = self.readSigned(0x8A, 2)
        self.t3 = self.readSigned(0x8C, 2)

        self.p1 = self.readUnsigned(0x8E, 2)
        self.p2 = self.readSigned(0x90, 2)
        self.p3 = self.readSigned(0x92, 2)
        self.p4 = self.readSigned(0x94, 2)
        self.p5 = self.readSigned(0x96, 2)
        self.p6 = self.readSigned(0x98, 2)
        self.p7 = self.readSigned(0x9A, 2)
        self.p8 = self.readSigned(0x9C, 2)
        self.p9 = self.readSigned(0x9E, 2)

        self.h1 = self.readUnsigned(0xA1, 1)
        self.h2 = self.readSigned(0xE1, 2)
        self.h3 = self.readUnsigned(0xE3, 1)
        self.h4 = (self.readUnsigned(0xE4, 1) << 4) | (
            self.readUnsigned(0xE5, 1) & 0x0F)
        self.h5 = (self.readSigned(0xE6, 1) << 4) | (
            self.readSigned(0xE5, 1) >> 4)
        self.h6 = self.readSigned(0xE7, 1)

        oversamplingBits = toint(oversampling).bit_length()
        self.writeRegister(
            0xF2, oversamplingBits
        )  # Humidity oversampling. Must be set before temp/press oversampling (see datasheet 5.4.3).
        self.writeRegister(
            0xF4, (oversamplingBits << 5) | (oversamplingBits << 2)
            | 0x03)  # Pressure, temperature oversampling, sensor normal mode.

        standbyValues = {
            '0.5': 0,
            '10': 6,
            '20': 7,
            '62.5': 1,
            '125': 2,
            '250': 3,
            '500': 4,
            '1000': 5
        }
        if standby in standbyValues:
            tStandbyBits = standbyValues[standby]
        else:
            tStandbyBits = 0  # Default to 0.5ms t_standby
            # logger.warn('Invalid value for standby: %s' % standby)
        spiBits = 0  # No SPI of course.
        filterBits = toint(filter) >> 1
        self.writeRegister(0xF5,
                           (tStandbyBits << 5) | (filterBits << 2) | spiBits)
Exemplo n.º 3
0
    def __init__(self, slave=0x18, resolution=12):
        I2C.__init__(self, toint(slave))

        resolution = toint(resolution)
        if not resolution in range(9, 13):
            raise ValueError("%dbits resolution out of range [%d..%d]bits" %
                             (resolution, 9, 12))
        self.resolution = resolution
        self.writeRegister(0x08, (resolution - 9))
Exemplo n.º 4
0
 def __init__(self, chip, slave, channelCount, name):
     SPI.__init__(self, toint(chip), 0, 8, 10000000)
     MCP23XXX.__init__(self, channelCount)
     self.slave = self.SLAVE
     iocon_value = 0x08  # Hardware Address Enable
     iocon_addr = self.getAddress(self.IOCON)
     self.writeRegister(iocon_addr, iocon_value)
     self.slave = toint(slave)
     self.name = name
Exemplo n.º 5
0
    def setLedMode(self, led0Mode, led1Mode):
        # Example: pca9530instance.setLedMode(PCA9530.LED0_ON, PCA9530.LED1_RATE0)
        led0m = toint(led0Mode)
        if not led0m in range(0, 0x04):
            raise ValueError("led0Mode value %d out of range [%d..%d]" %
                             (led0m, 0x00, 0x03))
        led1m = toint(led1Mode)
        if not led1m in range(0, 0x04):
            raise ValueError("led1Mode value %d out of range [%d..%d]" %
                             (led1m, 0x00, 0x03))

        ledmode = (led0m | led1m << 2) | 0xF0
        self.writeRegister(self.LSEL, ledmode)
Exemplo n.º 6
0
    def __init__(self, slave=0x40, frequency=50):
        I2C.__init__(self, toint(slave))
        PWM.__init__(self, 16, 12, toint(frequency))
        self.VREF = 0
        
        self.prescale = int(25000000.0/((2**12)*self.frequency))
        self.mode1 = self.M1_RESTART | self.M1_AI
        
        self.writeRegister(self.MODE1, self.M1_SLEEP)
        self.writeRegister(self.PRESCALE, self.prescale)
        time.sleep(0.01)

        self.writeRegister(self.MODE1, self.mode1)
Exemplo n.º 7
0
 def __init__(self, busnum=0, slave=0x40):
     I2C.__init__(self, toint(slave))
     self.red = 0
     self.green = 0
     self.blue = 0
     data = [ 0x05, 0x03, self.red, self.green, self.blue ]
     self.writeBytes(data)
Exemplo n.º 8
0
 def __init__(self, chip, channelCount, vref):
     SPI.__init__(self, toint(chip), 0, 8, 10000000)
     DAC.__init__(self, channelCount, 12, float(vref))
     self.buffered=False
     self.gain=False
     self.shutdown=False
     self.values = [0 for i in range(channelCount)]
Exemplo n.º 9
0
 def __init__(self, chip, channelCount, resolution, name):
     SPI.__init__(self, toint(chip), 0, 8, 10000000)
     DAC.__init__(self, channelCount, resolution, 2.048)
     self.name = name
     self.buffered = False
     self.gain = False
     self.shutdown = True
     self.values = [0 for i in range(channelCount)]
Exemplo n.º 10
0
    def __init__(self, altitude=0, external=None):
        self.altitude = toint(altitude)
        if isinstance(external, str):
            self.external = deviceInstance(external)
        else:
            self.external = external

        if self.external != None and not isinstance(self.external, Temperature):
            raise Exception("external must be a Temperature sensor")
Exemplo n.º 11
0
 def __init__(self, slave=0x48, resolution=12):
     TMP102.__init__(self, slave)
     resolution = toint(resolution)
     if not resolution in range(9,13):
         raise ValueError("%dbits resolution out of range [%d..%d]bits" % (resolution, 9, 12))
     self.resolution = resolution
     
     config  = self.readRegister(0x01)
     config &= ~0x60
     config |= (self.resolution - 9) << 5
     self.writeRegister(0x01, config)
     self.readRegisters(0x00, 2)
Exemplo n.º 12
0
    def __init__(self, slave=0x20):
        slave = toint(slave)
        if slave in range(0x20, 0x28):
            self.name = "PCF8574"
        elif slave in range(0x38, 0x40):
            self.name = "PCF8574A"
        else:
            raise ValueError("Bad slave address for PCF8574(A) : 0x%02X not in range [0x20..0x27, 0x38..0x3F]" % slave)

        I2C.__init__(self, slave)
        GPIOPort.__init__(self, 8)
        self.portWrite(0xFF)
        self.portRead()
Exemplo n.º 13
0
 def __init__(self, slave=0b0010011, current=20, frequency=781, prox_threshold=15, prox_cycles=10, cal_cycles= 5):
     I2C.__init__(self, toint(slave))
     self.setCurrent(toint(current))
     self.setFrequency(toint(frequency))
     self.prox_threshold = toint(prox_threshold)
     self.prox_cycles = toint(prox_cycles)
     self.cal_cycles = toint(cal_cycles)
     self.__setProximityTiming__()
     self.__setAmbientMeasuringMode__()
     time.sleep(0.001)
     self.calibrate() # may have to be repeated from time to time or before every proximity measurement
Exemplo n.º 14
0
 def __init__(self, slave, channelCount, resolution, name):
     I2C.__init__(self, toint(slave))
     ADC.__init__(self, channelCount, resolution, 4.096)
     self._analogMax = 2**(resolution-1)
     self.name = name
     
     config = self.readRegisters(self.CONFIG, 2)
     
     mode = 0 # continuous
     config[0] &= ~self.CONFIG_MODE_MASK
     config[0] |= mode
     
     gain = 0x1 # FS = +/- 4.096V
     config[0] &= ~self.CONFIG_GAIN_MASK
     config[0] |= gain << 1
     
     self.writeRegisters(self.CONFIG, config)
Exemplo n.º 15
0
 def __init__(self, slave=0x20):
     slave = toint(slave)
     I2C.__init__(self, slave)
     self.porta = self.LCD_LED_ON
     self.led = self.LCD_LED_ON
     self.writeRegister(self.MCP23008_IODIR, 0x00)
     self.writeRegisters( self.MCP23008_IODIR,
         [0b00000000,      # IODIR
          0b00000000,   # IPOL
          0b00000000,   # GPINTEN
          0b00000000,   # DEFVAL
          0b00000000,   # INTCON
          0b00000000,   # IOCON
          0b00000000,   # GPPU
          0b00000000,   # INTF
          0b00000000,   # INTCAP
          self.porta | self.led,   # GPIO
          self.porta | self.led ])# OLAT
     self.writeRegister( self.MCP23008_IOCON, 0x20 )
     self.displayshift   = (self.LCD_CURSORMOVE |
                            self.LCD_MOVERIGHT)
     self.displaymode    = (self.LCD_ENTRYLEFT |
                            self.LCD_ENTRYSHIFTDECREMENT)
     self.displaycontrol = (self.LCD_DISPLAYON |
                            self.LCD_CURSOROFF |
                            self.LCD_BLINKOFF)
     self.write_lcd(self.LCD_DATA_E1, 0x33) # Init
     self.write_lcd(self.LCD_DATA_E1, 0x32) # Init
     self.write_lcd(self.LCD_DATA_E1, 0x24) # 2 line 5x8 matrix
     self.write_lcd(self.LCD_DATA_E1, 0x09) # 2 line 5x8 matrix
     self.write_lcd(self.LCD_DATA_E1, 0x20) # 2 line 5x8 matrix
     self.write_lcd(self.LCD_DATA_E1, self.LCD_CLEARDISPLAY)
     self.write_lcd(self.LCD_DATA_E1, self.LCD_CURSORSHIFT    | self.displayshift)
     self.write_lcd(self.LCD_DATA_E1, self.LCD_ENTRYMODESET   | self.displaymode)
     self.write_lcd(self.LCD_DATA_E1, self.LCD_DISPLAYCONTROL | self.displaycontrol)
     self.write_lcd(self.LCD_DATA_E1, self.LCD_RETURNHOME)
     self.write_lcd(self.LCD_DATA_E2, 0x33) # Init
     self.write_lcd(self.LCD_DATA_E2, 0x32) # Init
     self.write_lcd(self.LCD_DATA_E2, 0x24) # 2 line 5x8 matrix
     self.write_lcd(self.LCD_DATA_E2, 0x09) # 2 line 5x8 matrix
     self.write_lcd(self.LCD_DATA_E2, 0x20) # 2 line 5x8 matrix
     self.write_lcd(self.LCD_DATA_E2, self.LCD_CLEARDISPLAY)
     self.write_lcd(self.LCD_DATA_E2, self.LCD_CURSORSHIFT    | self.displayshift)
     self.write_lcd(self.LCD_DATA_E2, self.LCD_ENTRYMODESET   | self.displaymode)
     self.write_lcd(self.LCD_DATA_E2, self.LCD_DISPLAYCONTROL | self.displaycontrol)
     self.write_lcd(self.LCD_DATA_E2, self.LCD_RETURNHOME)
Exemplo n.º 16
0
 def extract(self, fmtArray, pathArray, args):
     if len(fmtArray) != len(pathArray):
         return False
     if len(fmtArray) == 0:
         return True
     fmt = fmtArray[0]
     path = pathArray[0]
     if fmt == path:
         return self.extract(fmtArray[1:], pathArray[1:], args)
     if fmt.startswith("%"):
         
         fmt = fmt[1:]
         t = 's'
         if fmt[0] == '(':
             if fmt[-1] == ')':
                 name = fmt[1:-1]
             elif fmt[-2] == ')':                                   
                 name = fmt[1:-2]
                 t = fmt[-1]
             else:
                 raise Exception("Missing closing brace")
         else:
             name = fmt
         
         if t == 's':
             args[name] = path
         elif t == 'b':
             args[name] = types.str2bool(path)
         elif t == 'd':
             args[name] = types.toint(path)
         elif t == 'x':
             args[name] = int(path, 16)
         elif t == 'f':
             args[name] = float(path)
         else:
             raise Exception("Unknown format type : %s" % t)
         
         return self.extract(fmtArray[1:], pathArray[1:], args)
         
     return False
Exemplo n.º 17
0
 def __init__(self, slave=0x48, vref=3.3):
     I2C.__init__(self, toint(slave))
     DAC.__init__(self, 5, 8, float(vref))
     self.daValue = 0
Exemplo n.º 18
0
 def __init__(self, slave, time, gain, name="TSL2561X"):
     TSL_LIGHT_X.__init__(self, slave, time, name)
     self.setGain(toint(gain))
Exemplo n.º 19
0
 def __init__(self, pin="4"):
     self.pin = toint(pin)
     pass
Exemplo n.º 20
0
 def __init__(self, slave, time, name="TSL_LIGHT_X"):
     I2C.__init__(self, toint(slave))
     self.name = name
     self.wake()  # devices are powered down after power reset, wake them
     self.setTime(toint(time))
Exemplo n.º 21
0
 def __init__(self, chip, channelCount, resolution, name):
     SPI.__init__(self, toint(chip), 0, 8, 10000)
     ADC.__init__(self, channelCount, resolution, 3.3)
     self.name = name
     self.MSB_MASK = 2**(resolution-8) - 1
Exemplo n.º 22
0
 def __init__(self, slave=0x0a):
     I2C.__init__(self, toint(slave))
     I2C.writeRegister(self, self.slave, self.STOP_SCRIPT)
Exemplo n.º 23
0
 def __init__(self, slave, channelCount, name):
     I2C.__init__(self, toint(slave))
     MCP23XXX.__init__(self, channelCount)
     self.name = name
Exemplo n.º 24
0
 def __init__(self, slave=0x60):
     I2C.__init__(self, toint(slave))
     DAC.__init__(self, 1, 12, 3.3)
Exemplo n.º 25
0
 def __init__(self, slave=0x60, vref=3.3):
     I2C.__init__(self, toint(slave))
     DAC.__init__(self, 1, 12, float(vref))
Exemplo n.º 26
0
 def __init__(self, slave=0x28):
     I2C.__init__(self, toint(slave))
     self.__startMeasuring__()
Exemplo n.º 27
0
 def __init__(self, slave=0x48):
     I2C.__init__(self, toint(slave))