JDI_MIP on ThunderBoardSense2(Silicon-Labs)
JDI_MIP (LPM013M126A) Sample on ThunderBoard2(Silicon-Labs)
LPM013M126A
Links
https://os.mbed.com/teams/JapanDisplayInc/
https://os.mbed.com/teams/JapanDisplayInc/wiki/MIP-reflective-color-display
main.cpp@13:9fb661dd4b2a, 2019-01-22 (annotated)
- Committer:
- STakayama
- Date:
- Tue Jan 22 10:23:39 2019 +0000
- Revision:
- 13:9fb661dd4b2a
- Parent:
- 12:39e048e73819
BackColor = Cyan
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
STakayama | 10:525bcf8907fc | 1 | /***************************************************************************//** |
STakayama | 10:525bcf8907fc | 2 | * @file main.cpp |
STakayama | 10:525bcf8907fc | 3 | ******************************************************************************* |
STakayama | 10:525bcf8907fc | 4 | * @section License |
STakayama | 10:525bcf8907fc | 5 | * <b>(C) Copyright 2017 Silicon Labs, http://www.silabs.com</b> |
STakayama | 10:525bcf8907fc | 6 | ******************************************************************************* |
STakayama | 10:525bcf8907fc | 7 | * |
STakayama | 10:525bcf8907fc | 8 | * SPDX-License-Identifier: Apache-2.0 |
STakayama | 10:525bcf8907fc | 9 | * |
STakayama | 10:525bcf8907fc | 10 | * Licensed under the Apache License, Version 2.0 (the "License"); you may |
STakayama | 10:525bcf8907fc | 11 | * not use this file except in compliance with the License. |
STakayama | 10:525bcf8907fc | 12 | * You may obtain a copy of the License at |
STakayama | 10:525bcf8907fc | 13 | * |
STakayama | 10:525bcf8907fc | 14 | * http://www.apache.org/licenses/LICENSE-2.0 |
STakayama | 10:525bcf8907fc | 15 | * |
STakayama | 10:525bcf8907fc | 16 | * Unless required by applicable law or agreed to in writing, software |
STakayama | 10:525bcf8907fc | 17 | * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT |
STakayama | 10:525bcf8907fc | 18 | * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
STakayama | 10:525bcf8907fc | 19 | * See the License for the specific language governing permissions and |
STakayama | 10:525bcf8907fc | 20 | * limitations under the License. |
STakayama | 10:525bcf8907fc | 21 | * |
STakayama | 10:525bcf8907fc | 22 | ******************************************************************************/ |
STakayama | 0:dbc295c4383e | 23 | |
STakayama | 10:525bcf8907fc | 24 | #include <string> |
STakayama | 0:dbc295c4383e | 25 | #include "mbed.h" |
STakayama | 10:525bcf8907fc | 26 | #include "BMP280/BMP280.h" |
STakayama | 10:525bcf8907fc | 27 | #include "AMS_CCS811.h" |
STakayama | 10:525bcf8907fc | 28 | #include "Si7021.h" |
STakayama | 10:525bcf8907fc | 29 | #include "Si7210.h" |
STakayama | 4:588bc9618fff | 30 | #include "Si1133.h" |
STakayama | 10:525bcf8907fc | 31 | #include "ICM20648.h" |
STakayama | 10:525bcf8907fc | 32 | |
STakayama | 3:79758cbd4a92 | 33 | #include "SPI_MIP16.h" |
STakayama | 2:0585ae14d9a9 | 34 | #include "data.h" |
STakayama | 5:79dc134e6033 | 35 | #include "HGP23x29.h" |
STakayama | 5:79dc134e6033 | 36 | #include "HGP15x19.h" |
STakayama | 10:525bcf8907fc | 37 | |
STakayama | 0:dbc295c4383e | 38 | |
STakayama | 10:525bcf8907fc | 39 | /* Turn on power supply to ENV sensor suite */ |
STakayama | 10:525bcf8907fc | 40 | DigitalOut env_en(PF9, 1); |
STakayama | 10:525bcf8907fc | 41 | /* Turn on power to CCS811 sensor */ |
STakayama | 10:525bcf8907fc | 42 | DigitalOut ccs_en(PF14, 1); |
STakayama | 10:525bcf8907fc | 43 | /* Set CCS_WAKE pin to output */ |
STakayama | 10:525bcf8907fc | 44 | DigitalOut ccs_wake(PF15, 1); |
STakayama | 10:525bcf8907fc | 45 | /* Turn on power to hall effect sensor */ |
STakayama | 10:525bcf8907fc | 46 | DigitalOut hall_en(PB10, 1); |
STakayama | 10:525bcf8907fc | 47 | /* Turn on power to IMU */ |
STakayama | 10:525bcf8907fc | 48 | DigitalOut imu_en(PF8, 1); |
STakayama | 10:525bcf8907fc | 49 | |
STakayama | 10:525bcf8907fc | 50 | I2C ccs_i2c(PB6, PB7); |
STakayama | 10:525bcf8907fc | 51 | I2C hall_i2c(PB8, PB9); |
STakayama | 10:525bcf8907fc | 52 | I2C env_i2c(PC4, PC5); |
STakayama | 10:525bcf8907fc | 53 | |
STakayama | 10:525bcf8907fc | 54 | // MIP |
STakayama | 3:79758cbd4a92 | 55 | WatchDisp WD(PK0,PK2,PF7,PA5); //PTC12); // mosi,miso,clk,cs,disp,power(EXTMODE) |
STakayama | 6:aaba08f73be5 | 56 | DigitalOut _lcd_disp(PA8); // DISP |
STakayama | 6:aaba08f73be5 | 57 | DigitalOut _lcd_extmod(PF6); // EXTMODE L=SERIAL, H=EXTCOMIN Signal |
STakayama | 6:aaba08f73be5 | 58 | DigitalOut _lcd_extcom(PA9); // Togle |
STakayama | 0:dbc295c4383e | 59 | |
STakayama | 3:79758cbd4a92 | 60 | uint8_t ccolor_table[] = {Black,Gray,Blue ,LightBlue ,Green ,LightGreen ,Cyan ,LightCyan, |
STakayama | 3:79758cbd4a92 | 61 | Red ,pink,Magenta,LightMagenta,Yellow,LightYellow,LightGray,White}; |
STakayama | 10:525bcf8907fc | 62 | DigitalOut _pk1(PK1,1); // QSPI Flash CS Disable |
STakayama | 10:525bcf8907fc | 63 | |
STakayama | 0:dbc295c4383e | 64 | bool if16 = 0; |
STakayama | 0:dbc295c4383e | 65 | bool ifMargeTXT = 0; |
STakayama | 3:79758cbd4a92 | 66 | int width =176; |
STakayama | 3:79758cbd4a92 | 67 | int height=176; |
STakayama | 10:525bcf8907fc | 68 | /////////////////////////////////////// |
STakayama | 12:39e048e73819 | 69 | int disp_logo(void) |
STakayama | 12:39e048e73819 | 70 | { |
STakayama | 12:39e048e73819 | 71 | int RGB; |
STakayama | 12:39e048e73819 | 72 | uint8_t R8,G8,B8; |
STakayama | 12:39e048e73819 | 73 | uint8_t *cptr; |
STakayama | 12:39e048e73819 | 74 | //for(int i=0; i< 54 ; i++) fscanf(fp,"%c",DUMMY); // Discard Header 54bytes |
STakayama | 12:39e048e73819 | 75 | cptr = (uint8_t *)&Title_bmp[54]; |
STakayama | 12:39e048e73819 | 76 | for(int y=height-1; y>=0; y--) { |
STakayama | 12:39e048e73819 | 77 | for(int x=0; x< width; x++) { //24bit color B 8bit -> G 8bit -> R 8bit |
STakayama | 12:39e048e73819 | 78 | B8 = *cptr++; |
STakayama | 12:39e048e73819 | 79 | G8 = *cptr++; |
STakayama | 12:39e048e73819 | 80 | R8 = *cptr++; |
STakayama | 12:39e048e73819 | 81 | RGB = RGB8(R8,G8,B8); //6bit(8bit) MIP MASK 0000 1110 |
STakayama | 12:39e048e73819 | 82 | WD.pixel(x,y,RGB); |
STakayama | 12:39e048e73819 | 83 | } |
STakayama | 12:39e048e73819 | 84 | //if( y!=0) // The last data column doesn't need padding |
STakayama | 12:39e048e73819 | 85 | //for(int x=(width*3)%4; (x%4 !=0); x++) fscanf(fp, "%c",DUMMY); // 4byte boundery for every column |
STakayama | 12:39e048e73819 | 86 | } |
STakayama | 12:39e048e73819 | 87 | } |
STakayama | 12:39e048e73819 | 88 | |
STakayama | 12:39e048e73819 | 89 | int lcd_init(void) |
STakayama | 3:79758cbd4a92 | 90 | { |
STakayama | 3:79758cbd4a92 | 91 | int i; |
STakayama | 3:79758cbd4a92 | 92 | // Power On Sequece |
STakayama | 12:39e048e73819 | 93 | // _lcd_reset = 0; |
STakayama | 12:39e048e73819 | 94 | // _lcd_reset = 1; |
STakayama | 3:79758cbd4a92 | 95 | _lcd_extmod = 0; |
STakayama | 5:79dc134e6033 | 96 | |
STakayama | 6:aaba08f73be5 | 97 | WD.setWH(width,height); // Default X/Y-00 |
STakayama | 3:79758cbd4a92 | 98 | bool if16 = 1; |
STakayama | 12:39e048e73819 | 99 | WD.set16col(if16); // 0= RGB, 1=RGBW |
STakayama | 3:79758cbd4a92 | 100 | WD.setmarge(1); |
STakayama | 10:525bcf8907fc | 101 | WD.background(Cyan); |
STakayama | 3:79758cbd4a92 | 102 | WD.clsBUF(); |
STakayama | 12:39e048e73819 | 103 | _lcd_disp = 1; // |
STakayama | 6:aaba08f73be5 | 104 | //WD.fillrect(i*(width/16), height/2+1, (i+1)*(width/16)-1, height , ccolor_table[15-i]); |
STakayama | 10:525bcf8907fc | 105 | //WD.writeDISP(); |
STakayama | 10:525bcf8907fc | 106 | |
STakayama | 12:39e048e73819 | 107 | //WD.set_font((unsigned char*) HGP23x29); |
STakayama | 12:39e048e73819 | 108 | //WD.locate( 0, 43);WD.foreground(Blue); WD.printf("Environmental"); |
STakayama | 12:39e048e73819 | 109 | //WD.locate( 0, 83);WD.foreground(Blue); WD.printf(" Monitor"); |
STakayama | 12:39e048e73819 | 110 | //WD.locate(120,140);WD.foreground(Red ); WD.printf("JDI"); |
STakayama | 12:39e048e73819 | 111 | disp_logo(); |
STakayama | 5:79dc134e6033 | 112 | WD.writeDISP(); |
STakayama | 6:aaba08f73be5 | 113 | _lcd_extmod = 1; // 1=Pin,0=Serial |
STakayama | 13:9fb661dd4b2a | 114 | WD.background(Cyan); |
STakayama | 3:79758cbd4a92 | 115 | return 0; |
STakayama | 5:79dc134e6033 | 116 | /**/ |
STakayama | 3:79758cbd4a92 | 117 | } |
STakayama | 0:dbc295c4383e | 118 | |
STakayama | 10:525bcf8907fc | 119 | /////////////////////////////////////////////// |
STakayama | 10:525bcf8907fc | 120 | int main() { |
STakayama | 10:525bcf8907fc | 121 | uint32_t eco2, tvoc; |
STakayama | 10:525bcf8907fc | 122 | float pressure, temperature2; |
STakayama | 10:525bcf8907fc | 123 | int32_t temperature; |
STakayama | 10:525bcf8907fc | 124 | uint32_t humidity; |
STakayama | 10:525bcf8907fc | 125 | float light, uv; |
STakayama | 10:525bcf8907fc | 126 | float acc_x, acc_y, acc_z, gyr_x, gyr_y, gyr_z, temperature3; |
STakayama | 10:525bcf8907fc | 127 | |
STakayama | 10:525bcf8907fc | 128 | bool lightsensor_en = true; |
STakayama | 10:525bcf8907fc | 129 | bool gassensor_en = true; |
STakayama | 10:525bcf8907fc | 130 | bool hallsensor_en = true; |
STakayama | 10:525bcf8907fc | 131 | bool rhtsensor_en = true; |
STakayama | 10:525bcf8907fc | 132 | bool pressuresensor_en = true; |
STakayama | 10:525bcf8907fc | 133 | bool imu_en = false; |
STakayama | 10:525bcf8907fc | 134 | |
STakayama | 10:525bcf8907fc | 135 | _pk1=1; |
STakayama | 12:39e048e73819 | 136 | lcd_init(); |
STakayama | 12:39e048e73819 | 137 | ccs_en = 0; wait_ms(100); |
STakayama | 10:525bcf8907fc | 138 | ccs_en = 1; |
STakayama | 12:39e048e73819 | 139 | wait_ms(2000); |
STakayama | 10:525bcf8907fc | 140 | |
STakayama | 10:525bcf8907fc | 141 | /* Initialize air quality sensor */ |
STakayama | 10:525bcf8907fc | 142 | AMS_CCS811* gasSensor = new AMS_CCS811(&ccs_i2c, PF15); |
STakayama | 10:525bcf8907fc | 143 | if(!gasSensor->init()) { |
STakayama | 10:525bcf8907fc | 144 | printf("Failed CCS811 init\r\n"); |
STakayama | 10:525bcf8907fc | 145 | gassensor_en = false; |
STakayama | 10:525bcf8907fc | 146 | } else { |
STakayama | 10:525bcf8907fc | 147 | if(!gasSensor->mode(AMS_CCS811::TEN_SECOND)) { |
STakayama | 10:525bcf8907fc | 148 | printf("Failed to set CCS811 mode\r\n"); |
STakayama | 10:525bcf8907fc | 149 | gassensor_en = false; |
STakayama | 6:aaba08f73be5 | 150 | } |
STakayama | 10:525bcf8907fc | 151 | } |
STakayama | 10:525bcf8907fc | 152 | |
STakayama | 10:525bcf8907fc | 153 | wait_ms(10); |
STakayama | 10:525bcf8907fc | 154 | |
STakayama | 10:525bcf8907fc | 155 | /* Initialize barometer and RHT */ |
STakayama | 10:525bcf8907fc | 156 | BMP280* pressureSensor = new BMP280(env_i2c); |
STakayama | 10:525bcf8907fc | 157 | Si7021* rhtSensor = new Si7021(PC4, PC5); |
STakayama | 10:525bcf8907fc | 158 | |
STakayama | 10:525bcf8907fc | 159 | printf("\r\n\r\nHello Thunderboard Sense 2...\r\n"); |
STakayama | 10:525bcf8907fc | 160 | |
STakayama | 10:525bcf8907fc | 161 | /* Check if hall sensor is alive */ |
STakayama | 10:525bcf8907fc | 162 | silabs::Si7210* hallSensor = new silabs::Si7210(&hall_i2c); |
STakayama | 10:525bcf8907fc | 163 | uint8_t id; |
STakayama | 10:525bcf8907fc | 164 | hallSensor->wakeup(); |
STakayama | 10:525bcf8907fc | 165 | hallSensor->readRegister(SI72XX_HREVID, &id); |
STakayama | 10:525bcf8907fc | 166 | printf("Hall ID: %d\r\n", id); |
STakayama | 10:525bcf8907fc | 167 | |
STakayama | 10:525bcf8907fc | 168 | /* Initialize light sensor */ |
STakayama | 10:525bcf8907fc | 169 | Si1133* lightSensor = new Si1133(PC4, PC5); |
STakayama | 10:525bcf8907fc | 170 | |
STakayama | 10:525bcf8907fc | 171 | if(!lightSensor->open()) { |
STakayama | 10:525bcf8907fc | 172 | printf("Something is wrong with Si1133, disabling...\n"); |
STakayama | 10:525bcf8907fc | 173 | lightsensor_en = false; |
STakayama | 10:525bcf8907fc | 174 | } else printf("Si1133 available\n\r"); |
STakayama | 10:525bcf8907fc | 175 | |
STakayama | 10:525bcf8907fc | 176 | /* Initialize the IMU*/ |
STakayama | 10:525bcf8907fc | 177 | printf("ICM20648 Start \n\r"); |
STakayama | 10:525bcf8907fc | 178 | |
STakayama | 10:525bcf8907fc | 179 | ICM20648* imu = new ICM20648(PC0, PC1, PC2, PC3, PF12); |
STakayama | 10:525bcf8907fc | 180 | printf(" ICM20648 OK\n\r"); |
STakayama | 10:525bcf8907fc | 181 | |
STakayama | 10:525bcf8907fc | 182 | if (imu != 0){ |
STakayama | 10:525bcf8907fc | 183 | if(!imu->open()) { |
STakayama | 10:525bcf8907fc | 184 | printf("Something is wrong with ICM20648, disabling...\n"); |
STakayama | 10:525bcf8907fc | 185 | imu_en = false; |
STakayama | 10:525bcf8907fc | 186 | } else printf("ICM20648 available\n\r"); |
STakayama | 10:525bcf8907fc | 187 | } |
STakayama | 10:525bcf8907fc | 188 | WD.foreground(Red); |
STakayama | 10:525bcf8907fc | 189 | WD.set_font((unsigned char*) HGP15x19); |
STakayama | 10:525bcf8907fc | 190 | #define WD_OFFSET 10 |
STakayama | 10:525bcf8907fc | 191 | do { |
STakayama | 10:525bcf8907fc | 192 | WD.clsBUF(); |
STakayama | 10:525bcf8907fc | 193 | printf("----------------------------------------------\r\n"); |
STakayama | 10:525bcf8907fc | 194 | /* Measure temperature and humidity */ |
STakayama | 10:525bcf8907fc | 195 | if(rhtsensor_en) { |
STakayama | 10:525bcf8907fc | 196 | rhtSensor->measure(); |
STakayama | 10:525bcf8907fc | 197 | rhtSensor->measure(); |
STakayama | 10:525bcf8907fc | 198 | temperature = rhtSensor->get_temperature(); |
STakayama | 10:525bcf8907fc | 199 | humidity = rhtSensor->get_humidity(); |
STakayama | 10:525bcf8907fc | 200 | |
STakayama | 10:525bcf8907fc | 201 | printf("temperature and humidity(Si7021):\r\n"); |
STakayama | 10:525bcf8907fc | 202 | printf("temperature: %ld.%03ld degC\r\n", temperature/1000, abs(temperature%1000)); |
STakayama | 10:525bcf8907fc | 203 | printf("humidity : %ld.%03ld %%\r\n", humidity/1000, humidity%1000); |
STakayama | 10:525bcf8907fc | 204 | WD.locate( 2,0*20+WD_OFFSET);WD.foreground(Blue ); WD.printf("Temp."); |
STakayama | 10:525bcf8907fc | 205 | WD.locate(55,0*20+WD_OFFSET);WD.foreground(Red ); WD.printf("%ld.%03ld degC", temperature/1000, abs(temperature%1000)); |
STakayama | 10:525bcf8907fc | 206 | WD.locate( 2,1*20+WD_OFFSET);WD.foreground(Blue ); WD.printf("Humi."); |
STakayama | 10:525bcf8907fc | 207 | WD.locate(55,1*20+WD_OFFSET);WD.foreground(Red ); WD.printf("%ld.%03ld %%", humidity/1000, humidity%1000); |
STakayama | 6:aaba08f73be5 | 208 | } |
STakayama | 10:525bcf8907fc | 209 | |
STakayama | 10:525bcf8907fc | 210 | /* Measure barometric pressure */ |
STakayama | 10:525bcf8907fc | 211 | if(pressuresensor_en) { |
STakayama | 10:525bcf8907fc | 212 | temperature2 = pressureSensor->getTemperature(); |
STakayama | 10:525bcf8907fc | 213 | pressure = pressureSensor->getPressure(); |
STakayama | 10:525bcf8907fc | 214 | |
STakayama | 10:525bcf8907fc | 215 | printf("pressure(BMP280):\r\n"); |
STakayama | 10:525bcf8907fc | 216 | printf("pressure : %.2f bar\r\n", pressure); |
STakayama | 10:525bcf8907fc | 217 | printf("temperature: %.2f degC\r\n", temperature2); |
STakayama | 10:525bcf8907fc | 218 | WD.locate( 2,2*20+WD_OFFSET);WD.foreground(Blue ); WD.printf("Pres."); |
STakayama | 10:525bcf8907fc | 219 | WD.locate(55,2*20+WD_OFFSET);WD.foreground(Red ); WD.printf("%.2f bar\r\n", pressure); |
STakayama | 10:525bcf8907fc | 220 | } |
STakayama | 10:525bcf8907fc | 221 | |
STakayama | 10:525bcf8907fc | 222 | /* Measure air quality */ |
STakayama | 10:525bcf8907fc | 223 | if(gassensor_en) { |
STakayama | 10:525bcf8907fc | 224 | gasSensor->has_new_data(); |
STakayama | 10:525bcf8907fc | 225 | eco2 = gasSensor->co2_read(); |
STakayama | 10:525bcf8907fc | 226 | tvoc = gasSensor->tvoc_read(); |
STakayama | 10:525bcf8907fc | 227 | |
STakayama | 10:525bcf8907fc | 228 | printf("air quality(CCS811):\r\n"); |
STakayama | 10:525bcf8907fc | 229 | printf("CO2: %ld ppm\r\n", eco2); |
STakayama | 10:525bcf8907fc | 230 | printf("VoC: %ld ppb\r\n", tvoc); |
STakayama | 10:525bcf8907fc | 231 | WD.locate( 2,3*20+WD_OFFSET);WD.foreground(Blue ); WD.printf("CO2"); |
STakayama | 10:525bcf8907fc | 232 | WD.locate(55,3*20+WD_OFFSET);WD.foreground(Red ); WD.printf("%ld ppm", eco2); |
STakayama | 10:525bcf8907fc | 233 | WD.locate( 2,4*20+WD_OFFSET);WD.foreground(Blue ); WD.printf("VoC"); |
STakayama | 10:525bcf8907fc | 234 | WD.locate(55,4*20+WD_OFFSET);WD.foreground(Red ); WD.printf("%ld ppb", tvoc); |
STakayama | 10:525bcf8907fc | 235 | } |
STakayama | 10:525bcf8907fc | 236 | |
STakayama | 10:525bcf8907fc | 237 | /* measure HALL */ |
STakayama | 10:525bcf8907fc | 238 | if(hallsensor_en) { |
STakayama | 10:525bcf8907fc | 239 | hallSensor->measureOnce(); |
STakayama | 10:525bcf8907fc | 240 | printf("HALL(Si7210):\r\n"); |
STakayama | 10:525bcf8907fc | 241 | printf("T: %d.%02d degC\r\n", hallSensor->getTemperature()/1000, abs(hallSensor->getTemperature()%1000)); |
STakayama | 10:525bcf8907fc | 242 | printf("F: %i.%03d mT\r\n", (int)(hallSensor->getFieldStrength()/1000), abs(hallSensor->getFieldStrength() % 1000)); |
STakayama | 10:525bcf8907fc | 243 | WD.locate( 2,5*20+WD_OFFSET);WD.foreground(Blue ); WD.printf("Magn."); |
STakayama | 10:525bcf8907fc | 244 | WD.locate(55,5*20+WD_OFFSET);WD.foreground(Red ); WD.printf("%i.%03d mT\r\n", (int)(hallSensor->getFieldStrength()/1000), abs(hallSensor->getFieldStrength() % 1000)); |
STakayama | 10:525bcf8907fc | 245 | } |
STakayama | 10:525bcf8907fc | 246 | |
STakayama | 10:525bcf8907fc | 247 | /* measure light */ |
STakayama | 10:525bcf8907fc | 248 | if(lightsensor_en) { |
STakayama | 10:525bcf8907fc | 249 | lightSensor->get_light_and_uv(&light, &uv); |
STakayama | 10:525bcf8907fc | 250 | |
STakayama | 10:525bcf8907fc | 251 | printf("Light(BMP280):\r\n"); |
STakayama | 10:525bcf8907fc | 252 | printf("Light: %.2f lux\r\n", light); |
STakayama | 10:525bcf8907fc | 253 | printf("UV : %.2f \r\n", uv); |
STakayama | 10:525bcf8907fc | 254 | WD.locate( 2,6*20+WD_OFFSET);WD.foreground(Blue ); WD.printf("Lumi."); |
STakayama | 10:525bcf8907fc | 255 | WD.locate(55,6*20+WD_OFFSET);WD.foreground(Red ); WD.printf("%.2f lux", light); |
STakayama | 10:525bcf8907fc | 256 | WD.locate( 2,7*20+WD_OFFSET);WD.foreground(Blue ); WD.printf("UV"); |
STakayama | 10:525bcf8907fc | 257 | WD.locate(55,7*20+WD_OFFSET);WD.foreground(Red ); WD.printf("%.2f", uv); |
STakayama | 10:525bcf8907fc | 258 | } |
STakayama | 10:525bcf8907fc | 259 | |
STakayama | 10:525bcf8907fc | 260 | /* measure imu */ |
STakayama | 10:525bcf8907fc | 261 | if(imu_en) { |
STakayama | 10:525bcf8907fc | 262 | imu->get_temperature(&temperature3); |
STakayama | 10:525bcf8907fc | 263 | imu->get_accelerometer(&acc_x, &acc_y, &acc_z); |
STakayama | 10:525bcf8907fc | 264 | imu->get_gyroscope(&gyr_x, &gyr_y, &gyr_z); |
STakayama | 10:525bcf8907fc | 265 | |
STakayama | 10:525bcf8907fc | 266 | printf("ICM20648:\r\n"); |
STakayama | 10:525bcf8907fc | 267 | printf("TEMP: %.2f degC\r\n", temperature3); |
STakayama | 10:525bcf8907fc | 268 | printf("Acc : %.2f %.2f %.2f\r\n", acc_x, acc_y, acc_z); |
STakayama | 10:525bcf8907fc | 269 | printf("Gyro: %.2f %.2f %.2f\r\n", gyr_x, gyr_y, gyr_z); |
STakayama | 10:525bcf8907fc | 270 | WD.locate(2,8*20+WD_OFFSET); WD.printf("Acc : %.2f %.2f %.2f\r\n", acc_x, acc_y, acc_z); |
STakayama | 10:525bcf8907fc | 271 | WD.locate(2,9*20+WD_OFFSET); WD.printf("Gyro: %.2f %.2f %.2f\r\n", gyr_x, gyr_y, gyr_z); |
STakayama | 10:525bcf8907fc | 272 | } |
STakayama | 10:525bcf8907fc | 273 | WD.writeDISP(); |
STakayama | 10:525bcf8907fc | 274 | _lcd_extcom = !_lcd_extcom; |
STakayama | 10:525bcf8907fc | 275 | wait(1); |
STakayama | 10:525bcf8907fc | 276 | } while(1); |
STakayama | 0:dbc295c4383e | 277 | } |