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.
CM3592.cpp
00001 #include "CM3592.h" 00002 00003 CM3592::CM3592(I2C& i2c) : m_i2c(i2c) { 00004 config[0] = 0x00; //default LSB set 60ms integration. 00005 config[1] = 0x82; //default MSB set Hight Sensitivity and High Dynamic Range. 00006 } 00007 00008 int CM3592::init() { 00009 00010 // char data[3] = { CM3592_REG_CTRL, config[0], config[1]}; 00011 // m_i2c.write(CM3592_ADDR, data, 3, false); 00012 00013 write(CM3592_REG_CTRL, config); 00014 00015 00016 return 0; 00017 } 00018 00019 int CM3592::init(char configL, char configH) { 00020 00021 config[0] = configL; 00022 config[1] = configH; 00023 write(CM3592_REG_CTRL, config); 00024 00025 return 0; 00026 00027 } 00028 00029 int CM3592::readData(uint16_t *uv) { 00030 00031 char uv_raw[2]; 00032 00033 read(CM3592_REG_UV_DATA, uv_raw); 00034 00035 *uv = uv_raw[1]<<8 | uv_raw[0]; 00036 00037 return 0; 00038 } 00039 00040 int CM3592::getUVIndex(uint16_t uv) { 00041 if(uv<747){ 00042 return 0; 00043 }else if(uv>=747 && uv<1494){ 00044 return 1; 00045 }else if(uv>=1494 && uv<2442){ 00046 return 2; 00047 }else if(uv>=2442 && uv<3188){ 00048 return 3; 00049 }else if(uv>=3188 && uv<3735){ 00050 return 4; 00051 }else if(uv>=3735 && uv<4483){ 00052 return 5; 00053 }else if(uv>=4483 && uv<5229){ 00054 return 6; 00055 }else if(uv>=5229 && uv<5977){ 00056 return 7; 00057 }else if(uv>=5977 && uv<6724){ 00058 return 8; 00059 }else if(uv>=6724 && uv<7471){ 00060 return 9; 00061 }else if(uv>=7471 && uv<8218){ 00062 return 10; 00063 }else{ 00064 return 10; 00065 } 00066 } 00067 00068 void CM3592::write(char reg, char data[]) { 00069 char send[3]; 00070 send[0] = reg; 00071 send[1] = data[0]; 00072 send[2] = data[1]; 00073 m_i2c.write(CM3592_ADDR, send, 3, false); 00074 } 00075 00076 void CM3592::read(char reg, char data[]) { 00077 m_i2c.write(CM3592_ADDR, ®, 1, false); 00078 m_i2c.read(CM3592_ADDR, data, 2, false); 00079 00080 m_i2c.write(CM3592_ADDR, ®, 1, false); 00081 // i2c.read(addr, rx, 2, false); 00082 }
Generated on Wed Jul 13 2022 03:18:50 by
1.7.2