Data logger: Sensors -> Barometer & temperature (BMP180), Humidity & temp. (RHT03), Sunshine (Cds): Display -> 20 chracters x 4 lines: Strage -> EEPROM (AT24C1024): Special functions -> Enter sleep mode to save current, reading the logging data via serial line

Dependencies:   AT24C1024 BMP180 M41T62 RHT03 TextLCD WakeUp mbed

Fork of LPC1114_barometer_with_data_logging by Kenji Arai

Please refer following Notebook.
http://mbed.org/users/kenjiArai/notebook/mbed-lpc1114fn28-data-logger/

Committer:
kenjiArai
Date:
Tue Aug 19 12:00:06 2014 +0000
Revision:
19:19dd6332d729
Parent:
18:2a1d75bc8ebc
changed interval and logging time

Who changed what in which revision?

UserRevisionLine numberNew contents of line
kenjiArai 7:d3b49f1d9f76 1 /*
kenjiArai 7:d3b49f1d9f76 2 * mbed Application program for the mbed LPC1114FN28
kenjiArai 15:065fbeddc305 3 * Barometer program for only for LPC1114FN28
kenjiArai 7:d3b49f1d9f76 4 *
kenjiArai 7:d3b49f1d9f76 5 * Copyright (c) 2014 Kenji Arai / JH1PJL
kenjiArai 7:d3b49f1d9f76 6 * http://www.page.sannet.ne.jp/kenjia/index.html
kenjiArai 7:d3b49f1d9f76 7 * http://mbed.org/users/kenjiArai/
kenjiArai 15:065fbeddc305 8 * Created: May 21st, 2014
kenjiArai 19:19dd6332d729 9 * Revised: August 19th, 2014
kenjiArai 7:d3b49f1d9f76 10 *
kenjiArai 7:d3b49f1d9f76 11 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
kenjiArai 7:d3b49f1d9f76 12 * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE
kenjiArai 7:d3b49f1d9f76 13 * AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
kenjiArai 7:d3b49f1d9f76 14 * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
kenjiArai 7:d3b49f1d9f76 15 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
kenjiArai 7:d3b49f1d9f76 16 */
kenjiArai 15:065fbeddc305 17 /*
kenjiArai 15:065fbeddc305 18 * Function
kenjiArai 15:065fbeddc305 19 * measure atmospheric pressure and temprerature using Bosch BMP180 pressure sensor
kenjiArai 18:2a1d75bc8ebc 20 * show measured data on a LCD and logging such data in I2C EEPROM
kenjiArai 15:065fbeddc305 21 */
kenjiArai 15:065fbeddc305 22
kenjiArai 15:065fbeddc305 23 // Include ---------------------------------------------------------------------------------------
kenjiArai 15:065fbeddc305 24 #include "mbed.h"
kenjiArai 15:065fbeddc305 25 #include "BMP180.h" // Own lib. / Pressure sensor
kenjiArai 15:065fbeddc305 26 #include "RHT03.h" // Std. lib./ Humidity sensor
kenjiArai 15:065fbeddc305 27 #include "TextLCD.h" // Std. lib./ LCD control
kenjiArai 15:065fbeddc305 28 #include "m41t62_rtc.h" // Own lib. / RTC control
kenjiArai 18:2a1d75bc8ebc 29 #include "WakeUp.h"
kenjiArai 18:2a1d75bc8ebc 30 #include "WakeInterruptIn.h"
kenjiArai 15:065fbeddc305 31 #include "dt_log.h"
kenjiArai 15:065fbeddc305 32
kenjiArai 15:065fbeddc305 33 // Definition ------------------------------------------------------------------------------------
kenjiArai 15:065fbeddc305 34 // ADC related definition
kenjiArai 16:f164f8912201 35 #define VREF_VOLT 2.482 // TA76431F Vref real measued data
kenjiArai 16:f164f8912201 36 #define R_FIX 9930 // 10K ohm <- real measued data
kenjiArai 16:f164f8912201 37 #define VOL_OFFSET 3 // Offset data ,= real measured data
kenjiArai 16:f164f8912201 38 #define CDS_TBL_SIZE 13
kenjiArai 15:065fbeddc305 39
kenjiArai 15:065fbeddc305 40 // Waiting time
kenjiArai 19:19dd6332d729 41 #define TIME_INTERVAL 600 // 10 minutes
kenjiArai 19:19dd6332d729 42 //#define TIME_INTERVAL 60 // 1 minutes
kenjiArai 15:065fbeddc305 43
kenjiArai 15:065fbeddc305 44 typedef enum {CDS = 0, VREF, VOL} ADC_Select;
kenjiArai 15:065fbeddc305 45
kenjiArai 18:2a1d75bc8ebc 46 #define BAUD(x) pcx.baud(x)
kenjiArai 18:2a1d75bc8ebc 47 #define GETC(x) pcx.getc(x)
kenjiArai 18:2a1d75bc8ebc 48 #define PUTC(x) pcx.putc(x)
kenjiArai 18:2a1d75bc8ebc 49 #define PRINTF(...) pcx.printf(__VA_ARGS__)
kenjiArai 18:2a1d75bc8ebc 50 #define READABLE(x) pcx.readable(x)
kenjiArai 18:2a1d75bc8ebc 51
kenjiArai 15:065fbeddc305 52 // Object ----------------------------------------------------------------------------------------
kenjiArai 18:2a1d75bc8ebc 53 Serial pcx(dp16,dp15);
kenjiArai 15:065fbeddc305 54 I2C i2c(dp5,dp27); // SDA, SCL
kenjiArai 18:2a1d75bc8ebc 55 WakeInterruptIn event(dp25); // wake-up from deepsleep mode by this interrupt
kenjiArai 18:2a1d75bc8ebc 56 DigitalOut myled(dp14); // LED for Debug
kenjiArai 15:065fbeddc305 57 DigitalOut analog_pwr(dp6); // VCC for analog interface (vol, cds and vref)
kenjiArai 15:065fbeddc305 58 DigitalOut vref_pwr(dp4); // VCC for Vref
kenjiArai 15:065fbeddc305 59 AnalogIn cds(dp11); // Input / CDS data
kenjiArai 15:065fbeddc305 60 AnalogIn vref(dp9); // Input / Bandgap 2.5V
kenjiArai 15:065fbeddc305 61 AnalogIn vol(dp10); // Input / contrast volume
kenjiArai 15:065fbeddc305 62 RHT03 humtemp(dp26); // RHT03 interface
kenjiArai 15:065fbeddc305 63 BMP180 bmp180(i2c); // Bosch sensor
kenjiArai 15:065fbeddc305 64 M41T62 m41t62(i2c); // STmicro RTC(M41T62)
kenjiArai 18:2a1d75bc8ebc 65 TextLCD lcd(dp1, dp28, dp17, dp18, dp2, dp13, TextLCD::LCD20x4); // rs, e, d4-d7
kenjiArai 15:065fbeddc305 66
kenjiArai 15:065fbeddc305 67 // Function prototypes ---------------------------------------------------------------------------
kenjiArai 15:065fbeddc305 68 extern int mon( void); // only use for debug purpose
kenjiArai 15:065fbeddc305 69
kenjiArai 15:065fbeddc305 70 // RAM -------------------------------------------------------------------------------------------
kenjiArai 15:065fbeddc305 71 // ADC
kenjiArai 15:065fbeddc305 72 float av_cds, av_vref, av_vol, cal_vcc;
kenjiArai 15:065fbeddc305 73 float r_cds, lux;
kenjiArai 15:065fbeddc305 74 uint32_t nor_vol;
kenjiArai 15:065fbeddc305 75
kenjiArai 15:065fbeddc305 76 // Humidity Sensor
kenjiArai 15:065fbeddc305 77 float humidity_temp, humidity;
kenjiArai 15:065fbeddc305 78
kenjiArai 15:065fbeddc305 79 // EEPROM
kenjiArai 15:065fbeddc305 80 uint8_t eep_buf[256 + 2];
kenjiArai 8:f6aa5561f219 81
kenjiArai 15:065fbeddc305 82 // Barometer
kenjiArai 15:065fbeddc305 83 float baro;
kenjiArai 15:065fbeddc305 84 float baro_temp;
kenjiArai 15:065fbeddc305 85
kenjiArai 15:065fbeddc305 86 // ROM / Constant data ---------------------------------------------------------------------------
kenjiArai 15:065fbeddc305 87 // Cds GL5528 (Dark Resistance 1 Mohm type) SENBA OPTICAL & ELECTRONIC CO.,LTD.
kenjiArai 15:065fbeddc305 88 // Table value referrence: http://homepage3.nifty.com/skomo/f35/hp35_20.htm
kenjiArai 15:065fbeddc305 89 const float lux_cds[CDS_TBL_SIZE][2] =
kenjiArai 15:065fbeddc305 90 {{50,21194},{100,8356},{200,3294},{400,1299},{800,512},{1600,202},{3200,79.6},{6400,31.4},
kenjiArai 15:065fbeddc305 91 {12800,12.4},{25600,4.88},{51200,1.92},{102400,0.758},{409600,0.118}};
kenjiArai 15:065fbeddc305 92
kenjiArai 18:2a1d75bc8ebc 93 // 12345678901234567890
kenjiArai 18:2a1d75bc8ebc 94 static char *const msg_clear = " ";
kenjiArai 18:2a1d75bc8ebc 95 static char *const msg_msg0 = " mbed LPC1114FN28 ";
kenjiArai 18:2a1d75bc8ebc 96 static char *const msg_msg1 = " by JH1PJL K.Arai ";
kenjiArai 18:2a1d75bc8ebc 97 static char *const msg_msg2 = " Barometer Logger ";
kenjiArai 18:2a1d75bc8ebc 98 static char *const msg_msg3 = " ";
kenjiArai 18:2a1d75bc8ebc 99 static char *const msg_msg4 = "Goto Monitor/9600bps";
kenjiArai 18:2a1d75bc8ebc 100 static char *const msg_msg5 = " Back to main ";
kenjiArai 15:065fbeddc305 101
kenjiArai 15:065fbeddc305 102 //-------------------------------------------------------------------------------------------------
kenjiArai 15:065fbeddc305 103 // Control Program
kenjiArai 15:065fbeddc305 104 //-------------------------------------------------------------------------------------------------
kenjiArai 15:065fbeddc305 105 // Normalize ADC data
kenjiArai 15:065fbeddc305 106 void adc_normalize (ADC_Select n){
kenjiArai 15:065fbeddc305 107 int i;
kenjiArai 15:065fbeddc305 108 float x1,y1,dx;
kenjiArai 15:065fbeddc305 109
kenjiArai 15:065fbeddc305 110 switch (n){
kenjiArai 15:065fbeddc305 111 case CDS:
kenjiArai 15:065fbeddc305 112 // v_adc = Rfix / (Rcds + Rfix) -> Rcds = ( Rfix / v_adc ) - Rfix
kenjiArai 15:065fbeddc305 113 r_cds = (R_FIX / av_cds) - R_FIX;
kenjiArai 15:065fbeddc305 114 // CDS resistance to Lux conversion using convertion table (luc_cds[][])
kenjiArai 15:065fbeddc305 115 for (i =0; i < CDS_TBL_SIZE; i++){ // search table
kenjiArai 15:065fbeddc305 116 if ( r_cds <= lux_cds[i][0]){ break; }
kenjiArai 15:065fbeddc305 117 }
kenjiArai 15:065fbeddc305 118 // Check table position
kenjiArai 15:065fbeddc305 119 if (i == 0){ lux = lux_cds[0][1]; break;
kenjiArai 15:065fbeddc305 120 } else if ( i == CDS_TBL_SIZE ){
kenjiArai 15:065fbeddc305 121 if ( r_cds <= lux_cds[i][0] ){
kenjiArai 15:065fbeddc305 122 lux = lux_cds[i-1][1];
kenjiArai 15:065fbeddc305 123 break;
kenjiArai 15:065fbeddc305 124 }
kenjiArai 15:065fbeddc305 125 }
kenjiArai 15:065fbeddc305 126 // Linear interpolation
kenjiArai 15:065fbeddc305 127 y1 = lux_cds[i-1][1] - lux_cds[i][1];
kenjiArai 15:065fbeddc305 128 x1 = lux_cds[i][0] - lux_cds[i-1][0];
kenjiArai 15:065fbeddc305 129 dx = r_cds - lux_cds[i-1][0];
kenjiArai 15:065fbeddc305 130 lux = lux_cds[i-1][1] - ((dx/x1) * y1);
kenjiArai 15:065fbeddc305 131 break;
kenjiArai 15:065fbeddc305 132 case VREF: // vref = VREF_VOLT / VCC -> VCC = VREF_VOLT / vref
kenjiArai 15:065fbeddc305 133 cal_vcc = VREF_VOLT / vref;
kenjiArai 15:065fbeddc305 134 break;
kenjiArai 15:065fbeddc305 135 case VOL: // Vol center = 1.00 (actual 100)
kenjiArai 15:065fbeddc305 136 nor_vol = (uint32_t)(av_vol * 200) + VOL_OFFSET;
kenjiArai 15:065fbeddc305 137 break;
kenjiArai 15:065fbeddc305 138 }
kenjiArai 15:065fbeddc305 139 }
kenjiArai 13:950adc9d6d61 140
kenjiArai 15:065fbeddc305 141 // Read adc data and averaging
kenjiArai 15:065fbeddc305 142 void adc_all_read (void){
kenjiArai 15:065fbeddc305 143 if (av_cds == 0){ av_cds = cds.read();
kenjiArai 15:065fbeddc305 144 } else { av_cds = av_cds *0.5 + cds.read() * 0.5;
kenjiArai 15:065fbeddc305 145 }
kenjiArai 15:065fbeddc305 146 if (av_vref == 0){ av_vref = vref.read();
kenjiArai 15:065fbeddc305 147 } else { av_vref = av_vref *0.9 + vref.read() * 0.1;
kenjiArai 15:065fbeddc305 148 }
kenjiArai 15:065fbeddc305 149 if (av_vol == 0){ av_vol = vol.read();
kenjiArai 15:065fbeddc305 150 } else { av_vol = av_vol *0.2 + vol.read() * 0.8;
kenjiArai 15:065fbeddc305 151 }
kenjiArai 15:065fbeddc305 152 }
kenjiArai 13:950adc9d6d61 153
kenjiArai 15:065fbeddc305 154 // Read Humidity sensor data
kenjiArai 15:065fbeddc305 155 void hum_RHT03_read (void){
kenjiArai 15:065fbeddc305 156 while (true){ // wait data
kenjiArai 15:065fbeddc305 157 if ( humtemp.readData() == RHT_ERROR_NONE ){ break; }
kenjiArai 15:065fbeddc305 158 }
kenjiArai 15:065fbeddc305 159 if (humidity_temp == 0){humidity_temp = humtemp.getTemperatureC();
kenjiArai 15:065fbeddc305 160 } else { humidity_temp = humidity_temp * 0.9 + humtemp.getTemperatureC() * 0.1;
kenjiArai 15:065fbeddc305 161 }
kenjiArai 15:065fbeddc305 162 if ( humidity == 0 ){ humidity = humtemp.getHumidity();
kenjiArai 15:065fbeddc305 163 } else { humidity = humidity * 0.9 + humtemp.getHumidity() * 0.1;
kenjiArai 15:065fbeddc305 164 }
kenjiArai 15:065fbeddc305 165 }
kenjiArai 15:065fbeddc305 166
kenjiArai 15:065fbeddc305 167 //-------------------------------------------------------------------------------------------------
kenjiArai 15:065fbeddc305 168 // Application program
kenjiArai 15:065fbeddc305 169 //-------------------------------------------------------------------------------------------------
kenjiArai 15:065fbeddc305 170 // Measure pressure and show it on LCD
kenjiArai 15:065fbeddc305 171 void conv_and_disp(void) {
kenjiArai 15:065fbeddc305 172 tm t;
kenjiArai 16:f164f8912201 173 time_t seconds = 0;
kenjiArai 16:f164f8912201 174 time_t old_seconds = 0;
kenjiArai 18:2a1d75bc8ebc 175 uint32_t dt;
kenjiArai 13:950adc9d6d61 176
kenjiArai 18:2a1d75bc8ebc 177 // Wakeup from deep sleep
kenjiArai 18:2a1d75bc8ebc 178 WakeUp::calibrate();
kenjiArai 18:2a1d75bc8ebc 179 // Initialize data
kenjiArai 18:2a1d75bc8ebc 180 av_cds = 0;
kenjiArai 18:2a1d75bc8ebc 181 av_vref = 0;
kenjiArai 18:2a1d75bc8ebc 182 av_vol = 0;
kenjiArai 18:2a1d75bc8ebc 183 humidity_temp = 0;
kenjiArai 18:2a1d75bc8ebc 184 humidity = 0;
kenjiArai 18:2a1d75bc8ebc 185 // RTC
kenjiArai 18:2a1d75bc8ebc 186 m41t62.set_sq_wave(RTC_SQW_NONE);
kenjiArai 18:2a1d75bc8ebc 187 m41t62.read_rtc_std(&t);
kenjiArai 18:2a1d75bc8ebc 188 old_seconds = mktime(&t);
kenjiArai 15:065fbeddc305 189 while (true) { // infinit loop for measure and display
kenjiArai 15:065fbeddc305 190 // ---------- Barometer Sensor / BMP180 ------------------------------------------------------
kenjiArai 18:2a1d75bc8ebc 191 bmp180.normalize();
kenjiArai 18:2a1d75bc8ebc 192 baro = bmp180.read_pressure();
kenjiArai 18:2a1d75bc8ebc 193 baro_temp = bmp180.read_temperature();
kenjiArai 15:065fbeddc305 194 // ---------- Humidity Sensor / RHT03 --------------------------------------------------------
kenjiArai 18:2a1d75bc8ebc 195 hum_RHT03_read(); // Read Humidity data then avaraging
kenjiArai 18:2a1d75bc8ebc 196 // ---------- Cds Sensor, Vref, Volume -------------------------------------------------------
kenjiArai 18:2a1d75bc8ebc 197 wait(0.2);
kenjiArai 18:2a1d75bc8ebc 198 adc_all_read();
kenjiArai 18:2a1d75bc8ebc 199 // Normalize
kenjiArai 18:2a1d75bc8ebc 200 adc_normalize(CDS);
kenjiArai 18:2a1d75bc8ebc 201 adc_normalize(VREF);
kenjiArai 18:2a1d75bc8ebc 202 adc_normalize(VOL);
kenjiArai 15:065fbeddc305 203 // ---------- RTC ----------------------------------------------------------------------------
kenjiArai 18:2a1d75bc8ebc 204 m41t62.read_rtc_std(&t);
kenjiArai 18:2a1d75bc8ebc 205 seconds = mktime(&t);
kenjiArai 15:065fbeddc305 206 // ---------- EEPROM Logging -----------------------------------------------------------------
kenjiArai 18:2a1d75bc8ebc 207 if (seconds >= old_seconds + TIME_INTERVAL){
kenjiArai 18:2a1d75bc8ebc 208 // Data Logging action
kenjiArai 18:2a1d75bc8ebc 209 old_seconds += TIME_INTERVAL;
kenjiArai 18:2a1d75bc8ebc 210 dtlog_data_pack(); // Get EEPROM resource
kenjiArai 18:2a1d75bc8ebc 211 dtlog_one_write(); // Write data to EEPROM
kenjiArai 15:065fbeddc305 212 }
kenjiArai 18:2a1d75bc8ebc 213 dt = (uint32_t)dtlog_buf_occupation();
kenjiArai 18:2a1d75bc8ebc 214 dt = (dt * 1000)/ BLK_NO;
kenjiArai 18:2a1d75bc8ebc 215 // ---------- Display all data on a LCD ------------------------------------------------------
kenjiArai 18:2a1d75bc8ebc 216 // Printf:: Barometer Sensor / BMP180
kenjiArai 18:2a1d75bc8ebc 217 lcd.locate(0, 0); // 1st line top
kenjiArai 18:2a1d75bc8ebc 218 lcd.printf("%s", msg_clear);
kenjiArai 18:2a1d75bc8ebc 219 lcd.locate(0, 0); // 1st line top
kenjiArai 18:2a1d75bc8ebc 220 lcd.printf("%6.1fhPa %\+-5.1f%cC", baro, baro_temp, 0xdf);
kenjiArai 18:2a1d75bc8ebc 221 // Printf:: Humidity Sensor / RHT03 + Vcc
kenjiArai 18:2a1d75bc8ebc 222 lcd.locate(0, 1); // 2nd line top
kenjiArai 18:2a1d75bc8ebc 223 lcd.printf("%s", msg_clear);
kenjiArai 18:2a1d75bc8ebc 224 lcd.locate(0, 1); // 2nd line top
kenjiArai 18:2a1d75bc8ebc 225 #if 0
kenjiArai 18:2a1d75bc8ebc 226 lcd.printf("%4.1f%%(%\+-4.1f%cC) %.2fV", humidity, humidity_temp, 0xdf, cal_vcc);
kenjiArai 18:2a1d75bc8ebc 227 #else
kenjiArai 18:2a1d75bc8ebc 228 lcd.printf("%.2fV %4.1f%% %\+-4.1f%cC", cal_vcc, humidity, humidity_temp, 0xdf);
kenjiArai 18:2a1d75bc8ebc 229 #endif
kenjiArai 18:2a1d75bc8ebc 230 // Printf:: Cds Sensor + EEPROM Logging
kenjiArai 18:2a1d75bc8ebc 231 lcd.locate(0, 2); // 3rd line top
kenjiArai 18:2a1d75bc8ebc 232 lcd.printf("%s", msg_clear);
kenjiArai 18:2a1d75bc8ebc 233 lcd.locate(0, 2); // 3rd line top
kenjiArai 18:2a1d75bc8ebc 234 if (dt <= 998){
kenjiArai 18:2a1d75bc8ebc 235 lcd.printf("%8.1fLx Log:%2d.%01d%%", lux, dt / 10, dt % 10);
kenjiArai 18:2a1d75bc8ebc 236 } else {
kenjiArai 18:2a1d75bc8ebc 237 lcd.printf("%8.1fLx Log: full", lux);
kenjiArai 18:2a1d75bc8ebc 238 }
kenjiArai 18:2a1d75bc8ebc 239 // Printf:: RTC (Date & Time)
kenjiArai 18:2a1d75bc8ebc 240 lcd.locate(0, 3); // 4th line top
kenjiArai 18:2a1d75bc8ebc 241 lcd.printf("%s", msg_clear);
kenjiArai 18:2a1d75bc8ebc 242 lcd.locate(0, 3); // 4th line top
kenjiArai 18:2a1d75bc8ebc 243 #if 0
kenjiArai 18:2a1d75bc8ebc 244 lcd.printf("20%02d/%02d/%02d %02d:%02d:%02d",
kenjiArai 18:2a1d75bc8ebc 245 t.tm_year % 100, t.tm_mon + 1, t.tm_mday, t.tm_hour, t.tm_min, t.tm_sec);
kenjiArai 18:2a1d75bc8ebc 246 #else
kenjiArai 18:2a1d75bc8ebc 247 lcd.printf("20%02d/%02d/%02d %02d:%02d PJL",
kenjiArai 18:2a1d75bc8ebc 248 t.tm_year % 100, t.tm_mon + 1, t.tm_mday, t.tm_hour, t.tm_min);
kenjiArai 18:2a1d75bc8ebc 249 #endif
kenjiArai 15:065fbeddc305 250 // ---------- back to top --------------------------------------------------------------------
kenjiArai 18:2a1d75bc8ebc 251 myled = 1;
kenjiArai 18:2a1d75bc8ebc 252 wait(0.001);
kenjiArai 18:2a1d75bc8ebc 253 myled = 0;
kenjiArai 18:2a1d75bc8ebc 254 // Power off - Analog sensor
kenjiArai 18:2a1d75bc8ebc 255 analog_pwr = 0;
kenjiArai 18:2a1d75bc8ebc 256 vref_pwr = 0;
kenjiArai 18:2a1d75bc8ebc 257 // Wait with sleep
kenjiArai 19:19dd6332d729 258 WakeUp::set_ms(30000);
kenjiArai 19:19dd6332d729 259 //WakeUp::set(10);
kenjiArai 18:2a1d75bc8ebc 260 wait(0.001); // looks important for works well
kenjiArai 18:2a1d75bc8ebc 261 myled = 1;
kenjiArai 18:2a1d75bc8ebc 262 wait(0.001);
kenjiArai 18:2a1d75bc8ebc 263 myled = 0;
kenjiArai 18:2a1d75bc8ebc 264 // Power on - Analog sensor
kenjiArai 18:2a1d75bc8ebc 265 analog_pwr = 1;
kenjiArai 18:2a1d75bc8ebc 266 vref_pwr = 1;
kenjiArai 15:065fbeddc305 267 }
kenjiArai 15:065fbeddc305 268 }
kenjiArai 13:950adc9d6d61 269
kenjiArai 15:065fbeddc305 270 // Application program starts here
kenjiArai 15:065fbeddc305 271 int main() {
kenjiArai 18:2a1d75bc8ebc 272 // Initial screen
kenjiArai 18:2a1d75bc8ebc 273 lcd.locate(0, 0);
kenjiArai 18:2a1d75bc8ebc 274 lcd.printf(msg_msg0);
kenjiArai 18:2a1d75bc8ebc 275 lcd.printf(msg_msg1);
kenjiArai 18:2a1d75bc8ebc 276 lcd.printf(msg_msg2);
kenjiArai 18:2a1d75bc8ebc 277 lcd.printf(msg_msg3);
kenjiArai 18:2a1d75bc8ebc 278 myled = 1;
kenjiArai 18:2a1d75bc8ebc 279 wait(3); // show initial screen and wait serial input
kenjiArai 18:2a1d75bc8ebc 280 myled = 0;
kenjiArai 15:065fbeddc305 281 //-- Enter Monitor Mode --
kenjiArai 18:2a1d75bc8ebc 282 if (READABLE()){
kenjiArai 18:2a1d75bc8ebc 283 lcd.locate(0, 0);
kenjiArai 18:2a1d75bc8ebc 284 lcd.printf(msg_msg4);
kenjiArai 18:2a1d75bc8ebc 285 mon(); // mon.cpp
kenjiArai 18:2a1d75bc8ebc 286 lcd.locate(0, 0);
kenjiArai 18:2a1d75bc8ebc 287 lcd.printf(msg_msg5);
kenjiArai 18:2a1d75bc8ebc 288 wait(0.5);
kenjiArai 15:065fbeddc305 289 }
kenjiArai 15:065fbeddc305 290 //-- Enter Normal Mode --
kenjiArai 15:065fbeddc305 291 while (true) { // Start main program
kenjiArai 15:065fbeddc305 292 conv_and_disp();
kenjiArai 15:065fbeddc305 293 }
kenjiArai 15:065fbeddc305 294 }