Old working code
Dependencies: mbed QEI ros_lib_melodic
Sensor.h
00001 #ifndef _Sensor_h 00002 #define _Sensor_h 00003 00004 #include "mbed.h" 00005 00006 #define DEFAULT_DEVICE_ADDRESS 0x29 00007 00008 #define FAILURE_RESET -1 00009 00010 #define IDENTIFICATION_MODEL_ID 0x0000 00011 #define IDENTIFICATION_MODEL_REV_MAJOR 0x0001 00012 #define IDENTIFICATION_MODEL_REV_MINOR 0x0002 00013 #define IDENTIFICATION_MODULE_REV_MAJOR 0x0003 00014 #define IDENTIFICATION_MODULE_REV_MINOR 0x0004 00015 #define IDENTIFICATION_DATE 0x0006 //16bit value 00016 #define IDENTIFICATION_TIME 0x0008 //16bit value 00017 00018 #define SYSTEM_MODE_GPIO0 0x0010 00019 #define SYSTEM_MODE_GPIO1 0x0011 00020 #define SYSTEM_HISTORY_CTRL 0x0012 00021 #define SYSTEM_INTERRUPT_CONFIG_GPIO 0x0014 00022 #define SYSTEM_INTERRUPT_CLEAR 0x0015 00023 #define SYSTEM_FRESH_OUT_OF_RESET 0x0016 00024 #define SYSTEM_GROUPED_PARAMETER_HOLD 0x0017 00025 00026 #define SYSRANGE_START 0x0018 00027 #define SYSRANGE_THRESH_HIGH 0x0019 00028 #define SYSRANGE_THRESH_LOW 0x001A 00029 #define SYSRANGE_INTERMEASUREMENT_PERIOD 0x001B 00030 #define SYSRANGE_MAX_CONVERGENCE_TIME 0x001C 00031 #define SYSRANGE_CROSSTALK_COMPENSATION_RATE 0x001E 00032 #define SYSRANGE_CROSSTALK_VALID_HEIGHT 0x0021 00033 #define SYSRANGE_EARLY_CONVERGENCE_ESTIMATE 0x0022 00034 #define SYSRANGE_PART_TO_PART_RANGE_OFFSET 0x0024 00035 #define SYSRANGE_RANGE_IGNORE_VALID_HEIGHT 0x0025 00036 #define SYSRANGE_RANGE_IGNORE_THRESHOLD 0x0026 00037 #define SYSRANGE_MAX_AMBIENT_LEVEL_MULT 0x002C 00038 #define SYSRANGE_RANGE_CHECK_ENABLES 0x002D 00039 #define SYSRANGE_VHV_RECALIBRATE 0x002E 00040 #define SYSRANGE_VHV_REPEAT_RATE 0x0031 00041 00042 #define SYSALS_START 0x0038 00043 #define SYSALS_THRESH_HIGH 0x003A 00044 #define SYSALS_THRESH_LOW 0x003C 00045 #define SYSALS_INTERMEASUREMENT_PERIOD 0x003E 00046 #define SYSALS_ANALOGUE_GAIN 0x003F 00047 #define SYSALS_INTEGRATION_PERIOD 0x0040 00048 00049 #define RESULT_RANGE_STATUS 0x004D 00050 #define RESULT_ALS_STATUS 0x004E 00051 #define RESULT_INTERRUPT_STATUS_GPIO 0x004F 00052 #define RESULT_ALS_VAL 0x0050 00053 #define RESULT_HISTORY_BUFFER 0x0052 00054 #define RESULT_RANGE_VAL 0x0062 00055 #define RESULT_RANGE_RAW 0x0064 00056 #define RESULT_RANGE_RETURN_RATE 0x0066 00057 #define RESULT_RANGE_REFERENCE_RATE 0x0068 00058 #define RESULT_RANGE_RETURN_SIGNAL_COUNT 0x006C 00059 #define RESULT_RANGE_REFERENCE_SIGNAL_COUNT 0x0070 00060 #define RESULT_RANGE_RETURN_AMB_COUNT 0x0074 00061 #define RESULT_RANGE_REFERENCE_AMB_COUNT 0x0078 00062 #define RESULT_RANGE_RETURN_CONV_TIME 0x007C 00063 #define RESULT_RANGE_REFERENCE_CONV_TIME 0x0080 00064 00065 #define READOUT_AVERAGING_SAMPLE_PERIOD 0x010A 00066 #define FIRMWARE_BOOTUP 0x0119 00067 #define FIRMWARE_RESULT_SCALER 0x0120 00068 #define I2C_SLAVE_DEVICE_ADDRESS 0x0212 00069 #define INTERLEAVED_MODE_ENABLE 0x02A3 00070 00071 class Sensor{ 00072 00073 public: 00074 /** Constructor 00075 * Create a VL6180 object at I2C specified address (7 bit). 00076 * 00077 * @param sda I2C sda pin number 00078 * @param scl I2C scl pin number 00079 * @param shdn I2C shdn pin number 00080 */ 00081 Sensor(PinName sda, PinName scl, PinName shdn); 00082 00083 /** Init the sensor, load settings and change I2C address 00084 * 00085 * @param address I2C new address 00086 */ 00087 int init(); 00088 00089 /** Change I2C address 00090 * 00091 */ 00092 void changeAddress(char address); 00093 00094 /** Make a range reading 00095 * 00096 */ 00097 float read(); 00098 00099 /** Turn off the device 00100 * 00101 */ 00102 void turnOff(); 00103 00104 /** Turn on the device 00105 * 00106 */ 00107 void turnOn(); 00108 00109 /** Indicate if the device detects an obstacle 00110 * 00111 * @return true if osbtacle otherwise false 00112 */ 00113 bool getIsObstacle(); 00114 00115 private: 00116 char addr; 00117 I2C i2c; 00118 DigitalOut SHDN; 00119 bool isObstacle; 00120 void startRange(); 00121 void pollRange(); 00122 float readRange(); 00123 void clearInterrupts(); 00124 void setRegister(wchar_t reg, char data); 00125 void writeByte(wchar_t reg,char data); 00126 char readByte(wchar_t reg); 00127 00128 }; 00129 #endif
Generated on Tue Jul 26 2022 23:07:14 by
1.7.2