Toggle Navigation
Hatchery
Eggs
Doctor color - Grove I2C Color Sensor (TCS34725)
tcs34725.py
Users
Badges
Login
Register
MCH2022 badge?
go to mch2022.badge.team
tcs34725.py
raw
Content
import time TCS34725_ADDRESS = 41 TCS34725_COMMAND_BIT = 0xA0 TCS34725_ENABLE = 0x00 TCS34725_ENABLE_AIEN = 0x10 TCS34725_ENABLE_WEN = 0x08 TCS34725_ENABLE_AEN = 0x02 TCS34725_ENABLE_PON = 0x01 TCS34725_ATIME = 0x01 TCS34725_WTIME = 0x03 TCS34725_WTIME_2_4MS = 0xFF TCS34725_WTIME_204MS = 0xAB TCS34725_WTIME_614MS = 0x00 TCS34725_AILTL = 0x04 TCS34725_AILTH = 0x05 TCS34725_AIHTL = 0x06 TCS34725_AIHTH = 0x07 TCS34725_PERS = 0x0C TCS34725_PERS_NONE = 0b0000 TCS34725_PERS_1_CYCLE = 0b0001 TCS34725_PERS_2_CYCLE = 0b0010 TCS34725_PERS_3_CYCLE = 0b0011 TCS34725_PERS_5_CYCLE = 0b0100 TCS34725_PERS_10_CYCLE = 0b0101 TCS34725_PERS_15_CYCLE = 0b0110 TCS34725_PERS_20_CYCLE = 0b0111 TCS34725_PERS_25_CYCLE = 0b1000 TCS34725_PERS_30_CYCLE = 0b1001 TCS34725_PERS_35_CYCLE = 0b1010 TCS34725_PERS_40_CYCLE = 0b1011 TCS34725_PERS_45_CYCLE = 0b1100 TCS34725_PERS_50_CYCLE = 0b1101 TCS34725_PERS_55_CYCLE = 0b1110 TCS34725_PERS_60_CYCLE = 0b1111 TCS34725_CONFIG = 0x0D TCS34725_CONFIG_WLONG = 0x02 TCS34725_CONTROL = 0x0F TCS34725_ID = 0x12 TCS34725_STATUS = 0x13 TCS34725_STATUS_AINT = 0x10 TCS34725_STATUS_AVALID = 0x01 TCS34725_CDATAL = 0x14 TCS34725_CDATAH = 0x15 TCS34725_RDATAL = 0x16 TCS34725_RDATAH = 0x17 TCS34725_GDATAL = 0x18 TCS34725_GDATAH = 0x19 TCS34725_BDATAL = 0x1A TCS34725_BDATAH = 0x1B TCS34725_GAIN_1X =0x00 class TCS34725: def __init__(self, i2c, address=TCS34725_ADDRESS): self.i2c = i2c self.address = address sensor_id = self.sensor_id() if not sensor_id & 0x44: raise RuntimeError("bad sensor id 0x{:x}".format(sensor_id)) self.writeMem8(TCS34725_ENABLE, TCS34725_ENABLE_PON) time.sleep(0.3) self.writeMem8(TCS34725_ENABLE, TCS34725_ENABLE_PON | TCS34725_ENABLE_AEN); def sensor_id(self): return self.readMem(TCS34725_ID) def readMem(self,reg): return self.i2c.readfrom_mem(TCS34725_ADDRESS,TCS34725_COMMAND_BIT|reg,1)[0] def readMem16(self,reg): return self.i2c.readfrom_mem(TCS34725_ADDRESS,TCS34725_COMMAND_BIT|reg,2) def writeMem8(self,reg,value): valarr = bytearray(1) valarr[0] = value self.i2c.writeto_mem(TCS34725_ADDRESS,TCS34725_COMMAND_BIT|reg,valarr) def setGain(self,gain_level): self.writeMem8(TCS34725_CONTROL,gain_level) def readInt(self,register): val = self.readMem16(register) retval = val[0]<<8 | val[1] return retval def getRawValues(self): c = self.readInt(TCS34725_CDATAL) r = self.readInt(TCS34725_RDATAL) g = self.readInt(TCS34725_GDATAL) b = self.readInt(TCS34725_BDATAL) return [r,g,b,c]