Kevin Braun
/
vmel60xx_hello_world
Demonstration program for the VEML6040 and VEML6075 optical sensors
main.cpp@5:be5c1d562334, 2016-05-02 (annotated)
- Committer:
- loopsva
- Date:
- Mon May 02 21:22:47 2016 +0000
- Revision:
- 5:be5c1d562334
- Parent:
- 4:28b380ba35e4
Added a few more interesting things to display
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
loopsva | 0:66a40a792cc9 | 1 | #include "mbed.h" |
loopsva | 0:66a40a792cc9 | 2 | #include "veml60xx.h" //Vishay VEML6075 UVA & UVB sensor |
loopsva | 0:66a40a792cc9 | 3 | |
loopsva | 0:66a40a792cc9 | 4 | Serial pc(USBTX, USBRX); |
loopsva | 0:66a40a792cc9 | 5 | |
loopsva | 0:66a40a792cc9 | 6 | #define SDA0 D14 //PTE25 |
loopsva | 0:66a40a792cc9 | 7 | #define SCL0 D15 //PTE24 |
loopsva | 0:66a40a792cc9 | 8 | |
loopsva | 1:cb3f098cfa62 | 9 | veml60xx veml(SDA0, SCL0, 400000); //UV sensor |
loopsva | 1:cb3f098cfa62 | 10 | veml60xx::veml60xx_struct vemlSTR = {}; //data structure for VEML60xx |
loopsva | 0:66a40a792cc9 | 11 | |
loopsva | 0:66a40a792cc9 | 12 | //--------------------------------------------------------------------------------------------------------------------------------------// |
loopsva | 0:66a40a792cc9 | 13 | // Print build date / time Note: display is UTC, not local time |
loopsva | 0:66a40a792cc9 | 14 | |
loopsva | 0:66a40a792cc9 | 15 | void printBuildDate() { |
loopsva | 0:66a40a792cc9 | 16 | pc.printf("FRDM-K64F + VEML6040 and VEML6075 "); |
loopsva | 0:66a40a792cc9 | 17 | pc.printf(" -> build: " __DATE__ " " __TIME__ "(UTC) K Braun\n"); |
loopsva | 0:66a40a792cc9 | 18 | } |
loopsva | 0:66a40a792cc9 | 19 | |
loopsva | 0:66a40a792cc9 | 20 | //--------------------------------------------------------------------------------------------------------------------------------------// |
loopsva | 0:66a40a792cc9 | 21 | // initial splash display |
loopsva | 0:66a40a792cc9 | 22 | |
loopsva | 0:66a40a792cc9 | 23 | void initSplash() { |
loopsva | 0:66a40a792cc9 | 24 | pc.printf("\r\n\r\n"); |
loopsva | 0:66a40a792cc9 | 25 | pc.printf("--------------------------------------------------------------------------------\r\n"); |
loopsva | 0:66a40a792cc9 | 26 | printBuildDate(); |
loopsva | 0:66a40a792cc9 | 27 | } |
loopsva | 0:66a40a792cc9 | 28 | |
loopsva | 0:66a40a792cc9 | 29 | //--------------------------------------------------------------------------------------------------------------------------------------// |
loopsva | 0:66a40a792cc9 | 30 | // Show VEML60xx contents |
loopsva | 0:66a40a792cc9 | 31 | |
loopsva | 5:be5c1d562334 | 32 | int cnts = 0; |
loopsva | 1:cb3f098cfa62 | 33 | |
loopsva | 5:be5c1d562334 | 34 | void dispVeml60xxc() { |
loopsva | 1:cb3f098cfa62 | 35 | uint16_t rdata = veml.getConfig(vemlSTR); |
loopsva | 0:66a40a792cc9 | 36 | if((rdata & VEML60xx_CONF_BITS_AF) == VEML60xx_CONF_BITS_AF) { |
loopsva | 1:cb3f098cfa62 | 37 | rdata = veml.startAccess(vemlSTR); |
loopsva | 0:66a40a792cc9 | 38 | if(rdata == 0) { |
loopsva | 0:66a40a792cc9 | 39 | int rcnt = 0; |
loopsva | 0:66a40a792cc9 | 40 | while(1) { |
loopsva | 1:cb3f098cfa62 | 41 | rdata = veml.getConfig(vemlSTR); |
loopsva | 0:66a40a792cc9 | 42 | if(!((rdata & VEML60xx_CONF_BITS_TRIG) == VEML60xx_CONF_BITS_TRIG)) break; |
loopsva | 1:cb3f098cfa62 | 43 | #ifdef RTOS_H |
loopsva | 1:cb3f098cfa62 | 44 | Thread::wait(1); |
loopsva | 1:cb3f098cfa62 | 45 | #else |
loopsva | 0:66a40a792cc9 | 46 | wait_ms(1); |
loopsva | 1:cb3f098cfa62 | 47 | #endif |
loopsva | 0:66a40a792cc9 | 48 | rcnt++; |
loopsva | 0:66a40a792cc9 | 49 | if(rcnt > 2000) break; |
loopsva | 0:66a40a792cc9 | 50 | } |
loopsva | 0:66a40a792cc9 | 51 | pc.printf("VEML60xx count: %d\r\n", rcnt); |
loopsva | 0:66a40a792cc9 | 52 | if(rcnt > 2000) return; |
loopsva | 0:66a40a792cc9 | 53 | } else { |
loopsva | 0:66a40a792cc9 | 54 | pc.printf("unexpected VEML60xx error : %d\r\n", rdata); |
loopsva | 0:66a40a792cc9 | 55 | return; |
loopsva | 0:66a40a792cc9 | 56 | } |
loopsva | 0:66a40a792cc9 | 57 | } |
loopsva | 1:cb3f098cfa62 | 58 | |
loopsva | 5:be5c1d562334 | 59 | cnts++; |
loopsva | 1:cb3f098cfa62 | 60 | //NOTE: 6040 is auto adjust, 6075 is manual with "opto 0" to "opto 4" cli command. 4 = highest resolution |
loopsva | 1:cb3f098cfa62 | 61 | if(vemlSTR.is6075) { |
loopsva | 1:cb3f098cfa62 | 62 | veml.getRawData(vemlSTR); |
loopsva | 1:cb3f098cfa62 | 63 | bool chgd = false; |
loopsva | 1:cb3f098cfa62 | 64 | //bool chgd = veml.autoAdjustLux(vemlSTR); |
loopsva | 5:be5c1d562334 | 65 | pc.printf("\r\nVEML6075 contents, count: %6d\r\n", cnts); |
loopsva | 1:cb3f098cfa62 | 66 | pc.printf("- id: %04xh\r\n", vemlSTR.id); |
loopsva | 1:cb3f098cfa62 | 67 | pc.printf("- conf: %04xh\r\n", vemlSTR.conf_reg); |
loopsva | 4:28b380ba35e4 | 68 | pc.printf("- trig_dly: %dmS\r\n", vemlSTR.trig_dly); |
loopsva | 1:cb3f098cfa62 | 69 | pc.printf("- uva_step: %.6f\r\n", vemlSTR.uva_step); |
loopsva | 1:cb3f098cfa62 | 70 | pc.printf("- uvb_step: %.6f\r\n\r\n", vemlSTR.uvb_step); |
loopsva | 0:66a40a792cc9 | 71 | if(chgd) { |
loopsva | 0:66a40a792cc9 | 72 | pc.printf("Adjusting Lux level, try again...\r\n"); |
loopsva | 0:66a40a792cc9 | 73 | return; |
loopsva | 0:66a40a792cc9 | 74 | } |
loopsva | 1:cb3f098cfa62 | 75 | veml.convertRawData(vemlSTR); |
loopsva | 1:cb3f098cfa62 | 76 | pc.printf("- uva_d: %04xh\r\n", vemlSTR.uva_d); |
loopsva | 1:cb3f098cfa62 | 77 | pc.printf("- uvb_d: %04xh\r\n", vemlSTR.uvb_d); |
loopsva | 1:cb3f098cfa62 | 78 | pc.printf("- dummy_d: %04xh\r\n", vemlSTR.dummy_d); |
loopsva | 1:cb3f098cfa62 | 79 | pc.printf("- uv_c1: %04xh\r\n", vemlSTR.uv_c1); |
loopsva | 1:cb3f098cfa62 | 80 | pc.printf("- uv_c2: %04xh\r\n", vemlSTR.uv_c2); |
loopsva | 1:cb3f098cfa62 | 81 | pc.printf("- uva_comp: %.2f\r\n", vemlSTR.uva_comp); |
loopsva | 1:cb3f098cfa62 | 82 | pc.printf("- uvb_comp: %.2f\r\n", vemlSTR.uvb_comp); |
loopsva | 1:cb3f098cfa62 | 83 | pc.printf("- uv_index: %.2f\r\n", vemlSTR.uv_index); |
loopsva | 1:cb3f098cfa62 | 84 | if((vemlSTR.uva_d == 65535) || (vemlSTR.uvb_d == 65535)) pc.printf("*** UV overflow!!!\r\n"); |
loopsva | 0:66a40a792cc9 | 85 | } else |
loopsva | 1:cb3f098cfa62 | 86 | if(vemlSTR.is6040) { |
loopsva | 1:cb3f098cfa62 | 87 | //veml.getRawData(vemlSTR); |
loopsva | 1:cb3f098cfa62 | 88 | bool chgd = veml.autoAdjustLux(vemlSTR); |
loopsva | 5:be5c1d562334 | 89 | pc.printf("\r\nVEML6040 contents, count: %6d\r\n", cnts); |
loopsva | 1:cb3f098cfa62 | 90 | pc.printf("- id: %04xh\r\n", vemlSTR.id); |
loopsva | 1:cb3f098cfa62 | 91 | pc.printf("- conf: %04xh\r\n", vemlSTR.conf_reg); |
loopsva | 4:28b380ba35e4 | 92 | pc.printf("- trig_dly: %dmS\r\n", vemlSTR.trig_dly); |
loopsva | 1:cb3f098cfa62 | 93 | pc.printf("- lux_step: %.6f\r\n\r\n", vemlSTR.lux_step); |
loopsva | 0:66a40a792cc9 | 94 | if(chgd) { |
loopsva | 0:66a40a792cc9 | 95 | pc.printf("Adjusting Lux level, try again...\r\n"); |
loopsva | 0:66a40a792cc9 | 96 | return; |
loopsva | 0:66a40a792cc9 | 97 | } |
loopsva | 1:cb3f098cfa62 | 98 | veml.convertRawData(vemlSTR); |
loopsva | 1:cb3f098cfa62 | 99 | pc.printf("- r_d: %04xh %5dd %9.3f Lux\r\n", vemlSTR.r_d, vemlSTR.r_d, vemlSTR.r_lux); |
loopsva | 1:cb3f098cfa62 | 100 | pc.printf("- g_d: %04xh %5dd %9.3f Lux\r\n", vemlSTR.g_d, vemlSTR.g_d, vemlSTR.g_lux); |
loopsva | 1:cb3f098cfa62 | 101 | pc.printf("- b_d: %04xh %5dd %9.3f Lux\r\n", vemlSTR.b_d, vemlSTR.b_d, vemlSTR.b_lux); |
loopsva | 1:cb3f098cfa62 | 102 | pc.printf("- w_d: %04xh %5dd %9.3f Lux\r\n", vemlSTR.w_d, vemlSTR.w_d, vemlSTR.w_lux); |
loopsva | 4:28b380ba35e4 | 103 | double cct = 4278.8 * pow((vemlSTR.r_lux - vemlSTR.b_lux) / vemlSTR.g_lux + 0.5, -1.2455); |
loopsva | 4:28b380ba35e4 | 104 | pc.printf("- cct: %5d K\r\n", (int)rint(cct)); |
loopsva | 1:cb3f098cfa62 | 105 | if((vemlSTR.r_d == 65535) || (vemlSTR.g_d == 65535) || (vemlSTR.b_d == 65535) || (vemlSTR.w_d == 65535)) pc.printf("*** RGBW overflow!!!\r\n"); |
loopsva | 0:66a40a792cc9 | 106 | } else { |
loopsva | 0:66a40a792cc9 | 107 | pc.printf("No VEML60xx device detected...\r\n"); |
loopsva | 0:66a40a792cc9 | 108 | } |
loopsva | 0:66a40a792cc9 | 109 | } |
loopsva | 0:66a40a792cc9 | 110 | |
loopsva | 5:be5c1d562334 | 111 | //--------------------------------------------------------------------------------------------------------------------------------------// |
loopsva | 5:be5c1d562334 | 112 | // Show VEML60xx contents |
loopsva | 5:be5c1d562334 | 113 | |
loopsva | 5:be5c1d562334 | 114 | int cnt = 0; |
loopsva | 5:be5c1d562334 | 115 | |
loopsva | 5:be5c1d562334 | 116 | void dispVeml60xx() { |
loopsva | 5:be5c1d562334 | 117 | uint16_t rdata = veml.getConfig(vemlSTR); |
loopsva | 5:be5c1d562334 | 118 | bool chgd = false; |
loopsva | 5:be5c1d562334 | 119 | //see if AF bit set. If AF set, set TRIG then wait for access to complete |
loopsva | 5:be5c1d562334 | 120 | if((rdata & VEML60xx_CONF_BITS_AF) == VEML60xx_CONF_BITS_AF) { |
loopsva | 5:be5c1d562334 | 121 | pc.printf("Triggered mode... "); |
loopsva | 5:be5c1d562334 | 122 | rdata = veml.startAccess(vemlSTR); |
loopsva | 5:be5c1d562334 | 123 | chgd = false; |
loopsva | 5:be5c1d562334 | 124 | if(rdata) { |
loopsva | 5:be5c1d562334 | 125 | pc.printf("unexpected VEML60xx error : %d\r\n", rdata); |
loopsva | 5:be5c1d562334 | 126 | return; |
loopsva | 5:be5c1d562334 | 127 | } |
loopsva | 5:be5c1d562334 | 128 | #ifdef RTOS_H |
loopsva | 5:be5c1d562334 | 129 | for(int i = 0; i < 4; i++) { |
loopsva | 5:be5c1d562334 | 130 | Thread::wait(vemlSTR.trig_dly >> 2); |
loopsva | 5:be5c1d562334 | 131 | cli_t++; |
loopsva | 5:be5c1d562334 | 132 | housek_t++; |
loopsva | 5:be5c1d562334 | 133 | tftp_t++; |
loopsva | 5:be5c1d562334 | 134 | } |
loopsva | 5:be5c1d562334 | 135 | #else |
loopsva | 5:be5c1d562334 | 136 | wait_ms(vemlSTR.trig_dly); |
loopsva | 5:be5c1d562334 | 137 | #endif |
loopsva | 5:be5c1d562334 | 138 | pc.printf("\r\n"); |
loopsva | 5:be5c1d562334 | 139 | } |
loopsva | 5:be5c1d562334 | 140 | cnt++; |
loopsva | 5:be5c1d562334 | 141 | |
loopsva | 5:be5c1d562334 | 142 | //NOTE: 6040 is auto adjust, 6075 is manual with "opto 0" to "opto 4" cli command. 4 = highest resolution |
loopsva | 5:be5c1d562334 | 143 | if(vemlSTR.is6075) { |
loopsva | 5:be5c1d562334 | 144 | veml.getRawData(vemlSTR); |
loopsva | 5:be5c1d562334 | 145 | //if(!(chgd)) chgd = veml.autoAdjustLux(vemlSTR); |
loopsva | 5:be5c1d562334 | 146 | pc.printf("\r\nVEML6075 contents, count: %6d\r\n", cnt); |
loopsva | 5:be5c1d562334 | 147 | pc.printf("- id: %04xh\r\n", vemlSTR.id); |
loopsva | 5:be5c1d562334 | 148 | pc.printf("- conf: %04xh\r\n", vemlSTR.conf_reg); |
loopsva | 5:be5c1d562334 | 149 | pc.printf("- trig_dly: %dmS\r\n", vemlSTR.trig_dly); |
loopsva | 5:be5c1d562334 | 150 | if(chgd) { |
loopsva | 5:be5c1d562334 | 151 | pc.printf("Adjusting Lux level, try again...\r\n"); |
loopsva | 5:be5c1d562334 | 152 | chgd = false; |
loopsva | 5:be5c1d562334 | 153 | return; |
loopsva | 5:be5c1d562334 | 154 | } |
loopsva | 5:be5c1d562334 | 155 | pc.printf("- uva_step: %.6f\r\n", vemlSTR.uva_step); |
loopsva | 5:be5c1d562334 | 156 | pc.printf("- uvb_step: %.6f\r\n\r\n", vemlSTR.uvb_step); |
loopsva | 5:be5c1d562334 | 157 | veml.convertRawData(vemlSTR); |
loopsva | 5:be5c1d562334 | 158 | pc.printf("- uva_d: %04xh\r\n", vemlSTR.uva_d); |
loopsva | 5:be5c1d562334 | 159 | pc.printf("- uvb_d: %04xh\r\n", vemlSTR.uvb_d); |
loopsva | 5:be5c1d562334 | 160 | pc.printf("- dummy_d: %04xh\r\n", vemlSTR.dummy_d); |
loopsva | 5:be5c1d562334 | 161 | pc.printf("- uv_c1: %04xh\r\n", vemlSTR.uv_c1); |
loopsva | 5:be5c1d562334 | 162 | pc.printf("- uv_c2: %04xh\r\n", vemlSTR.uv_c2); |
loopsva | 5:be5c1d562334 | 163 | pc.printf("- uva_comp: %.2f\r\n", vemlSTR.uva_comp); |
loopsva | 5:be5c1d562334 | 164 | pc.printf("- uvb_comp: %.2f\r\n", vemlSTR.uvb_comp); |
loopsva | 5:be5c1d562334 | 165 | pc.printf("- uv_index: %.2f ", vemlSTR.uv_index); |
loopsva | 5:be5c1d562334 | 166 | if(vemlSTR.uv_index >= 11.0) pc.printf("!!! EXTREME !!!\r\n"); |
loopsva | 5:be5c1d562334 | 167 | if((vemlSTR.uv_index < 11.0) && (vemlSTR.uv_index >= 8.0)) pc.printf(" !! VERY HIGH !!\r\n"); |
loopsva | 5:be5c1d562334 | 168 | if((vemlSTR.uv_index < 8.0) && (vemlSTR.uv_index >= 6.0)) pc.printf(" High\r\n"); |
loopsva | 5:be5c1d562334 | 169 | if((vemlSTR.uv_index < 6.0) && (vemlSTR.uv_index >= 3.0)) pc.printf(" Moderate\r\n"); |
loopsva | 5:be5c1d562334 | 170 | if((vemlSTR.uv_index < 3.0) && (vemlSTR.uv_index > 0.0)) pc.printf(" Low\r\n"); |
loopsva | 5:be5c1d562334 | 171 | if(vemlSTR.uv_index == 0.0) pc.printf(" Safe for Vampires\r\n"); |
loopsva | 5:be5c1d562334 | 172 | |
loopsva | 5:be5c1d562334 | 173 | if((vemlSTR.uva_d == 65535) || (vemlSTR.uvb_d == 65535)) pc.printf("*** UV overflow!!!\r\n"); |
loopsva | 5:be5c1d562334 | 174 | } else |
loopsva | 5:be5c1d562334 | 175 | if(vemlSTR.is6040) { |
loopsva | 5:be5c1d562334 | 176 | //veml.getRawData(vemlSTR); |
loopsva | 5:be5c1d562334 | 177 | if(!(chgd)) chgd = veml.autoAdjustLux(vemlSTR); |
loopsva | 5:be5c1d562334 | 178 | pc.printf("\r\nVEML6040 contents, count: %6d\r\n", cnt); |
loopsva | 5:be5c1d562334 | 179 | pc.printf("- id: %04xh\r\n", vemlSTR.id); |
loopsva | 5:be5c1d562334 | 180 | pc.printf("- conf: %04xh\r\n", vemlSTR.conf_reg); |
loopsva | 5:be5c1d562334 | 181 | pc.printf("- trig_dly: %dmS\r\n", vemlSTR.trig_dly); |
loopsva | 5:be5c1d562334 | 182 | if(chgd) { |
loopsva | 5:be5c1d562334 | 183 | pc.printf("Adjusting Lux level, try again...\r\n"); |
loopsva | 5:be5c1d562334 | 184 | chgd = false; |
loopsva | 5:be5c1d562334 | 185 | return; |
loopsva | 5:be5c1d562334 | 186 | } |
loopsva | 5:be5c1d562334 | 187 | pc.printf("- lux_step: %.6f\r\n\r\n", vemlSTR.lux_step); |
loopsva | 5:be5c1d562334 | 188 | veml.convertRawData(vemlSTR); |
loopsva | 5:be5c1d562334 | 189 | pc.printf("- red:"); |
loopsva | 5:be5c1d562334 | 190 | pc.printf(" %04xh %5dd", vemlSTR.r_d, vemlSTR.r_d); |
loopsva | 5:be5c1d562334 | 191 | pc.printf(" %9.3f Lux\r\n- grn:", vemlSTR.r_lux); |
loopsva | 5:be5c1d562334 | 192 | pc.printf(" %04xh %5dd", vemlSTR.g_d, vemlSTR.g_d); |
loopsva | 5:be5c1d562334 | 193 | pc.printf(" %9.3f Lux\r\n- blu:", vemlSTR.g_lux); |
loopsva | 5:be5c1d562334 | 194 | pc.printf(" %04xh %5dd", vemlSTR.b_d, vemlSTR.b_d); |
loopsva | 5:be5c1d562334 | 195 | pc.printf(" %9.3f Lux\r\n- wht:", vemlSTR.b_lux); |
loopsva | 5:be5c1d562334 | 196 | pc.printf(" %04xh %5dd", vemlSTR.w_d, vemlSTR.w_d); |
loopsva | 5:be5c1d562334 | 197 | pc.printf(" %9.3f Lux\r\n- cct:", vemlSTR.w_lux); |
loopsva | 5:be5c1d562334 | 198 | double cct = 4278.8 * pow((vemlSTR.r_lux - vemlSTR.b_lux) / vemlSTR.g_lux + 0.5, -1.2455); |
loopsva | 5:be5c1d562334 | 199 | pc.printf(" %5d K ", (int)rint(cct)); |
loopsva | 5:be5c1d562334 | 200 | |
loopsva | 5:be5c1d562334 | 201 | if((int)rint(cct) >= 12000) pc.printf("???? Way Blue!!! \r\n"); |
loopsva | 5:be5c1d562334 | 202 | if(((int)rint(cct) < 12000) && ((int)rint(cct) >= 9000)) pc.printf("Blue Sky Poleward\r\n"); |
loopsva | 5:be5c1d562334 | 203 | if(((int)rint(cct) < 9000) && ((int)rint(cct) >= 7500)) pc.printf("Blue Sky\r\n"); |
loopsva | 5:be5c1d562334 | 204 | if(((int)rint(cct) < 7500) && ((int)rint(cct) >= 6500)) pc.printf("Overcast Sky\r\n"); |
loopsva | 5:be5c1d562334 | 205 | if(((int)rint(cct) < 6500) && ((int)rint(cct) >= 5500)) pc.printf("Daylight Vertical\r\n"); |
loopsva | 5:be5c1d562334 | 206 | if(((int)rint(cct) < 5500) && ((int)rint(cct) >= 5000)) pc.printf("Daylight Horizontal\r\n"); |
loopsva | 5:be5c1d562334 | 207 | if(((int)rint(cct) < 5000) && ((int)rint(cct) >= 4500)) pc.printf("Arc Light\r\n"); |
loopsva | 5:be5c1d562334 | 208 | if(((int)rint(cct) < 4500) && ((int)rint(cct) >= 4150)) pc.printf("undefined\r\n"); |
loopsva | 5:be5c1d562334 | 209 | if(((int)rint(cct) < 4150) && ((int)rint(cct) >= 4100)) pc.printf("Moonlight, Cool\r\n"); |
loopsva | 5:be5c1d562334 | 210 | if(((int)rint(cct) < 4100) && ((int)rint(cct) >= 3300)) pc.printf("Neutral\r\n"); |
loopsva | 5:be5c1d562334 | 211 | if(((int)rint(cct) < 3300) && ((int)rint(cct) >= 2700)) pc.printf("Soft White\r\n"); |
loopsva | 5:be5c1d562334 | 212 | if(((int)rint(cct) < 2700) && ((int)rint(cct) >= 2000)) pc.printf("Sunrise Sunset\r\n"); |
loopsva | 5:be5c1d562334 | 213 | if(((int)rint(cct) < 2000) && ((int)rint(cct) >= 1850)) pc.printf("Candle Light\r\n"); |
loopsva | 5:be5c1d562334 | 214 | if(((int)rint(cct) < 1850) && ((int)rint(cct) >= 1700)) pc.printf("Match Light\r\n"); |
loopsva | 5:be5c1d562334 | 215 | if((int)rint(cct) < 1700) pc.printf("???? Way Red!!! \r\n"); |
loopsva | 5:be5c1d562334 | 216 | |
loopsva | 5:be5c1d562334 | 217 | if((vemlSTR.r_d == 65535) || (vemlSTR.g_d == 65535) || (vemlSTR.b_d == 65535) || (vemlSTR.w_d == 65535)) pc.printf("*** RGBW overflow!!!\r\n"); |
loopsva | 5:be5c1d562334 | 218 | } else { |
loopsva | 5:be5c1d562334 | 219 | pc.printf("No VEML60xx device detected...\r\n"); |
loopsva | 5:be5c1d562334 | 220 | } |
loopsva | 5:be5c1d562334 | 221 | chgd = false; |
loopsva | 5:be5c1d562334 | 222 | } |
loopsva | 1:cb3f098cfa62 | 223 | |
loopsva | 0:66a40a792cc9 | 224 | //--------------------------------------------------------------------------------------------------------------------------------------// |
loopsva | 0:66a40a792cc9 | 225 | //--------------------------------------------------------------------------------------------------------------------------------------// |
loopsva | 0:66a40a792cc9 | 226 | |
loopsva | 0:66a40a792cc9 | 227 | int main() { |
loopsva | 0:66a40a792cc9 | 228 | pc.baud(230400); |
loopsva | 0:66a40a792cc9 | 229 | initSplash(); |
loopsva | 0:66a40a792cc9 | 230 | |
loopsva | 0:66a40a792cc9 | 231 | //set up the light sensor - UV or RGBW |
loopsva | 0:66a40a792cc9 | 232 | pc.printf("Initializing the VEML60xx Opto Sensor...\r\n"); |
loopsva | 1:cb3f098cfa62 | 233 | veml.setConfig(vemlSTR, VEML60xx_CONF_BITS_IT_400m320m); |
loopsva | 1:cb3f098cfa62 | 234 | //veml.setConfig(vemlSTR, VEML60xx_CONF_BITS_IT_400m320m | VEML60xx_CONF_BITS_AF); |
loopsva | 1:cb3f098cfa62 | 235 | veml.getID(vemlSTR); |
loopsva | 1:cb3f098cfa62 | 236 | if(vemlSTR.is6040) pc.printf("- VEML6040 device ID: 0x%04x CONF: 0x%04x\r\n", vemlSTR.id, vemlSTR.conf_reg); |
loopsva | 1:cb3f098cfa62 | 237 | if(vemlSTR.is6075) pc.printf("- VEML6075 device ID: 0x%04x CONF: 0x%04x\r\n", vemlSTR.id, vemlSTR.conf_reg); |
loopsva | 2:9726fbb6f331 | 238 | if((!(vemlSTR.is6040)) && (!(vemlSTR.is6075))) pc.printf("- VEML60xx device ID: 0x%04x CONF: 0x%04x\r\n", vemlSTR.id, vemlSTR.conf_reg); |
loopsva | 0:66a40a792cc9 | 239 | |
loopsva | 0:66a40a792cc9 | 240 | while(1) { |
loopsva | 0:66a40a792cc9 | 241 | wait(2.0); |
loopsva | 0:66a40a792cc9 | 242 | dispVeml60xx(); |
loopsva | 0:66a40a792cc9 | 243 | } |
loopsva | 0:66a40a792cc9 | 244 | } |