Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
S11059.h
- Committer:
- TakumiToda
- Date:
- 2019-01-11
- Revision:
- 0:5842d74d28fb
File content as of revision 0:5842d74d28fb:
#ifndef _S11059_H_
#define _S11059_H_
#include "mbed.h"
/**
* S11059 HAMAMATSU
* @note RGBUr Color Sensor with I2C Interface
* @note I2C 7bit address: 0x2A
*
*/
class S11059
{
public:
/**
* constructor
*
* @param sda SDA pin
* @param scl SCL pin
* @param addr address of the I2C peripheral
*/
S11059(PinName sda, PinName scl, int addr) ;
~S11059() ;
/*
* some member functions here (yet to be written)
*/
/**
* Get measured Red Value as float [0..1]
* @returns the value of Red as float
*/
float getR(void) ; // return float value of Red
/**
* Get measured Green Value as float [0..1]
* @returns the value of Green as float
*/
float getG(void) ; // return float value of Green
/**
* Get measured Blue Value as float [0..1]
* @returns the value of Blue as float
*/
float getB(void) ; // return float value of Blue
/**
* Get measured Infrared Value as float [0..1]
* @returns the value of Infrared as float
*/
float getIR(void) ; // return float value of Infrared
/**
* Get measured value of Red
* @param rdata unsigned 16bit data of Red
*/
void getRData(uint16_t *rdata) ;
/**
* Get measured value of Green
* @param rdata unsigned 16bit data of Green
*/
void getGData(uint16_t *gdata) ;
/**
* Get measured value of Blue
* @param rdata unsigned 16bit data of Blue
*/
void getBData(uint16_t *bdata) ;
/**
* Get measured value of Infrared
* @param rdata unsigned 16bit data of Infrared
*/
void getIRData(uint16_t *irdata) ;
/**
* Get measured values of Red, Green, Blue and Infrared at once
* @param 4 unsigned 16bit data data[0]:Red, data[1]:Green, data[2]:Blue, data[3]:Infrared
*/
void getAllData(uint16_t *data) ; /* pass uint16_t data[4] */
/**
* Get value of the Control Register
* @returns the value of Control Register at address 0x00
* @note bit[7] ADC Reset 1:reset 0:start
* @note bit[6] Sleep function 1:sleep 0:active
* @note bit[5] Sleep monitor
* @note bit[4] (reserved)
* @note bit[3] Gain 1:High Gain 0:Low Gain
* @note bit[2] Integration mode 1:manual 0:fixed
* @note bit[1:0] Integration time
* @note (00)87.5us (01)1.4ms (10)22.4ms (11)179.2ms
*
*/
uint8_t getControl(void) ;
/**
* Set value to the Control Register
* @param ctrlValue value to assing to the Control Register at address 0x00
*/
void setControl(uint8_t ctrlValue) ;
/**
* Get value of the Manual Timing Register at address 0x01-0x02
* @returns 16bit value of Manual Timing Register
* @note This value matters only in Manual Mode (bit[2] == 1)
* @note In manual mode the integration time is
* @note length specified by bit[1:0] of Control Register (address 0x00)
* @note multiplied by the value of address 0x01-0x02
* @note if the value of 0x01-0x02 is N
* @note and according to the bit[1:0] of Control Register
* @note Integration time length is calculated as
* @note (00) 175 * N us
* @note (01) 2.8 * N ms
* @note (10) 44.8 * N ms
* @note (11) 358.4 * N ms
*/
uint16_t getTiming(void) ;
/**
* Set value to the Manual Timing Register at address 0x01-0x02
* @param timingValue 16bit timing value MSB to 0x01 LSB to 0x02
*/
void setTiming(uint16_t timingValue) ;
/**
* Set/clear ADC Reset bit in the Control Register
* @param mode 1:reset 0:start
*/
void setADCReset(int mode) ;
/**
* Get value of the ADC Reset bit (bit[7]) in the Control Register
* @returns the ADC Reset bit (bit[7])
*/
int getADCReset(void) ;
/**
* Set value to the sleep function bit (bit[6]) in the Control Register
* @param mode bit value 1:sleep 0:active
*/
void setSleepMode(int mode) ;
/**
* Get value of the sleep function bit (bit[6]) in the Control Register
* @returns bit value of sleep function bit (bit[6])
*/
int getSleepMode(void) ;
/**
* Set value to the gain bit (bit[3]) in the Control Register
* @param mode bit value to assign 1:High Gain 0:Low Gain
*/
void setGain(int mode) ;
/**
* Get value of the gain bit (bit[3]) in the Control Register
* @returns the bit value of gain bit (bit[3])
*/
int getGain(void) ;
/**
* Set value to Integration mode bit (bit[2]) of the Control Register
* @param mode bit value to assign 1:Manual Mode 0:Fixed Time Mode
*/
void setIntegralMode(int mode) ;
/**
* Get value of Integration mode bit (bit[2]) of the Control Register
* @returns the bit value of Integration mode bit (bit[2])
*/
int getIntegralMode(void) ;
private:
I2C m_i2c;
int m_addr;
void readRegs(int addr, uint8_t * data, int len);
void writeRegs(uint8_t * data, int len);
} ;
#endif /* _S11059_H_ */