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:
Sun Jun 22 01:48:32 2014 +0000
Revision:
13:950adc9d6d61
Parent:
12:1e21119688fe
Child:
14:18a98cad6109
Barometer program / Step by step approach -> 7th step,; Added RTC(M41T62 STmicro) control

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 13:950adc9d6d61 3 * Test program -> Check RTC module
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 7:d3b49f1d9f76 8 * Created: June 13th, 2014
kenjiArai 13:950adc9d6d61 9 * Revised: June 22nd, 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 */
dan 0:7dec7e9ac085 17
kenjiArai 11:bccfd75e84a0 18 #include "mbed.h"
kenjiArai 12:1e21119688fe 19 #include "BMP180.h" // Own lib. / Pressure sensor
kenjiArai 12:1e21119688fe 20 #include "RHT03.h" // Std. lib./ Humidity sensor
kenjiArai 12:1e21119688fe 21 #include "TextLCD.h" // Std. lib./ LCD control
kenjiArai 13:950adc9d6d61 22 #include "AT24C1024.h" // Own lib. / EEPROM control
kenjiArai 13:950adc9d6d61 23 #include "m41t62_rtc.h" // Own lib. / RTC control
kenjiArai 13:950adc9d6d61 24
kenjiArai 13:950adc9d6d61 25 #define USE_C_STD_LIB 1
kenjiArai 8:f6aa5561f219 26
kenjiArai 11:bccfd75e84a0 27 #define VREF_VOLT 2.482 // TA76431F Vref real measued data
kenjiArai 11:bccfd75e84a0 28 #define R_FIX 9930 // 10K ohm <- real measued data
kenjiArai 12:1e21119688fe 29 #define VOL_OFFSET 3 // Offset data ,= real measured data
kenjiArai 8:f6aa5561f219 30 #define CDS_TBL_SIZE 13
kenjiArai 7:d3b49f1d9f76 31
kenjiArai 11:bccfd75e84a0 32 I2C i2c(dp5,dp27); // SDA, SCL
kenjiArai 7:d3b49f1d9f76 33 DigitalOut myled0(dp28); // LED for Debug
kenjiArai 7:d3b49f1d9f76 34 DigitalOut myled1(dp14); // Indicate state transition
kenjiArai 8:f6aa5561f219 35 DigitalOut analog_pwr(dp6); // VCC for analog interface (vol, cds and vref)
kenjiArai 8:f6aa5561f219 36 DigitalOut vref_pwr(dp4); // VCC for Vref
kenjiArai 7:d3b49f1d9f76 37 DigitalIn sw_chng(dp1,PullUp);// SW for select
kenjiArai 7:d3b49f1d9f76 38 DigitalIn sw_mode(dp2,PullUp);// SW for Mode change
kenjiArai 8:f6aa5561f219 39 AnalogIn cds(dp11); // Input / CDS data
kenjiArai 8:f6aa5561f219 40 AnalogIn vref(dp9); // Input / Bandgap 2.5V
kenjiArai 8:f6aa5561f219 41 AnalogIn vol(dp10); // Input / contrast volume
kenjiArai 10:398f62bb41f7 42 RHT03 humtemp(dp26); // RHT03 interface
kenjiArai 11:bccfd75e84a0 43 Serial pc(dp16,dp15); // UART (vertual COM)
kenjiArai 11:bccfd75e84a0 44 BMP180 bmp180(i2c); // Bosch sensor
kenjiArai 12:1e21119688fe 45 TextLCD_I2C_N i2clcd(&i2c, 0x7c, TextLCD::LCD8x2); // LCD(Akizuki AQM0802A)
kenjiArai 12:1e21119688fe 46 AT24C1024 at24c1024(i2c); // Atmel 1Mbit EE-PROM
kenjiArai 13:950adc9d6d61 47 M41T62 m41t62(i2c); // STmicro RTC(M41T62)
kenjiArai 8:f6aa5561f219 48
kenjiArai 8:f6aa5561f219 49 typedef enum {CDS = 0, VREF, VOL} ADC_Select;
kenjiArai 8:f6aa5561f219 50
kenjiArai 9:ce80da60884a 51 // ADC
kenjiArai 8:f6aa5561f219 52 float av_cds, av_vref, av_vol, cal_vcc;
kenjiArai 8:f6aa5561f219 53 float r_cds, lux;
kenjiArai 8:f6aa5561f219 54 uint32_t nor_vol;
kenjiArai 8:f6aa5561f219 55
kenjiArai 10:398f62bb41f7 56 // Humidity Sensor
kenjiArai 10:398f62bb41f7 57 float humidity_temp, humidity;
kenjiArai 10:398f62bb41f7 58
kenjiArai 12:1e21119688fe 59 // EEPROM
kenjiArai 12:1e21119688fe 60 uint8_t eep_buf[256 + 2];
kenjiArai 12:1e21119688fe 61
kenjiArai 8:f6aa5561f219 62 // Cds GL5528 (Dark Resistance 1 Mohm type) SENBA OPTICAL & ELECTRONIC CO.,LTD.
kenjiArai 8:f6aa5561f219 63 // Table value referrence: http://homepage3.nifty.com/skomo/f35/hp35_20.htm
kenjiArai 8:f6aa5561f219 64 const float lux_cds[CDS_TBL_SIZE][2] =
kenjiArai 8:f6aa5561f219 65 {{50,21194},{100,8356},{200,3294},{400,1299},{800,512},{1600,202},{3200,79.6},{6400,31.4},
kenjiArai 8:f6aa5561f219 66 {12800,12.4},{25600,4.88},{51200,1.92},{102400,0.758},{409600,0.118}};
kenjiArai 8:f6aa5561f219 67
kenjiArai 13:950adc9d6d61 68 #if USE_C_STD_LIB == 0
kenjiArai 13:950adc9d6d61 69 const char week[7][4] = { "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"};
kenjiArai 13:950adc9d6d61 70 #endif
kenjiArai 13:950adc9d6d61 71
kenjiArai 9:ce80da60884a 72 //-------------------------------------------------------------------------------------------------
kenjiArai 9:ce80da60884a 73 // Control Program
kenjiArai 9:ce80da60884a 74 //-------------------------------------------------------------------------------------------------
kenjiArai 11:bccfd75e84a0 75 // Normalize ADC data
kenjiArai 13:950adc9d6d61 76 void adc_normalize (ADC_Select n){
kenjiArai 8:f6aa5561f219 77 int i;
kenjiArai 8:f6aa5561f219 78 float x1,y1,dx;
kenjiArai 8:f6aa5561f219 79
kenjiArai 8:f6aa5561f219 80 switch (n){
kenjiArai 8:f6aa5561f219 81 case CDS:
kenjiArai 11:bccfd75e84a0 82 // v_adc = Rfix / (Rcds + Rfix) -> Rcds = ( Rfix / v_adc ) - Rfix
kenjiArai 8:f6aa5561f219 83 r_cds = (R_FIX / av_cds) - R_FIX;
kenjiArai 8:f6aa5561f219 84 // CDS resistance to Lux conversion using convertion table (luc_cds[][])
kenjiArai 11:bccfd75e84a0 85 for (i =0; i < CDS_TBL_SIZE; i++){ // search table
kenjiArai 11:bccfd75e84a0 86 if ( r_cds <= lux_cds[i][0]){ break; }
kenjiArai 11:bccfd75e84a0 87 }
kenjiArai 11:bccfd75e84a0 88 // Check table position
kenjiArai 11:bccfd75e84a0 89 if (i == 0){
kenjiArai 11:bccfd75e84a0 90 lux = lux_cds[0][1];
kenjiArai 11:bccfd75e84a0 91 break;
kenjiArai 11:bccfd75e84a0 92 } else if ( i == CDS_TBL_SIZE ){
kenjiArai 11:bccfd75e84a0 93 if ( r_cds <= lux_cds[i][0] ){
kenjiArai 11:bccfd75e84a0 94 lux = lux_cds[i-1][1];
kenjiArai 8:f6aa5561f219 95 break;
kenjiArai 8:f6aa5561f219 96 }
kenjiArai 8:f6aa5561f219 97 }
kenjiArai 11:bccfd75e84a0 98 // Linear interpolation
kenjiArai 11:bccfd75e84a0 99 y1 = lux_cds[i-1][1] - lux_cds[i][1];
kenjiArai 11:bccfd75e84a0 100 x1 = lux_cds[i][0] - lux_cds[i-1][0];
kenjiArai 11:bccfd75e84a0 101 dx = r_cds - lux_cds[i-1][0];
kenjiArai 11:bccfd75e84a0 102 lux = lux_cds[i-1][1] - ((dx/x1) * y1);
kenjiArai 8:f6aa5561f219 103 break;
kenjiArai 8:f6aa5561f219 104 case VREF:
kenjiArai 8:f6aa5561f219 105 // vref = VREF_VOLT / VCC -> VCC = VREF_VOLT / vref
kenjiArai 8:f6aa5561f219 106 cal_vcc = VREF_VOLT / vref;
kenjiArai 8:f6aa5561f219 107 break;
kenjiArai 8:f6aa5561f219 108 case VOL:
kenjiArai 8:f6aa5561f219 109 // Vol center = 1.00 (actual 100)
kenjiArai 8:f6aa5561f219 110 nor_vol = (uint32_t)(av_vol * 200) + VOL_OFFSET;
kenjiArai 8:f6aa5561f219 111 break;
kenjiArai 8:f6aa5561f219 112 }
kenjiArai 8:f6aa5561f219 113 }
kenjiArai 8:f6aa5561f219 114
kenjiArai 11:bccfd75e84a0 115 // Read adc data and averaging
kenjiArai 13:950adc9d6d61 116 void adc_all_read (void){
kenjiArai 11:bccfd75e84a0 117 if (av_cds == 0){ av_cds = cds.read();
kenjiArai 11:bccfd75e84a0 118 } else { av_cds = av_cds *0.5 + cds.read() * 0.5;
kenjiArai 10:398f62bb41f7 119 }
kenjiArai 11:bccfd75e84a0 120 if (av_vref == 0){ av_vref = vref.read();
kenjiArai 11:bccfd75e84a0 121 } else { av_vref = av_vref *0.9 + vref.read() * 0.1;
kenjiArai 10:398f62bb41f7 122 }
kenjiArai 11:bccfd75e84a0 123 if (av_vol == 0){ av_vol = vol.read();
kenjiArai 11:bccfd75e84a0 124 } else { av_vol = av_vol *0.2 + vol.read() * 0.8;
kenjiArai 10:398f62bb41f7 125 }
kenjiArai 8:f6aa5561f219 126 }
kenjiArai 8:f6aa5561f219 127
kenjiArai 11:bccfd75e84a0 128 // Read Humidity sensor data
kenjiArai 13:950adc9d6d61 129 void hum_RHT03_read (void){
kenjiArai 11:bccfd75e84a0 130 while (true){ // wait data
kenjiArai 11:bccfd75e84a0 131 if ( humtemp.readData() == RHT_ERROR_NONE ){ break; }
kenjiArai 10:398f62bb41f7 132 }
kenjiArai 11:bccfd75e84a0 133 if (humidity_temp == 0){humidity_temp = humtemp.getTemperatureC();
kenjiArai 11:bccfd75e84a0 134 } else { humidity_temp = humidity_temp * 0.9 + humtemp.getTemperatureC() * 0.1;
kenjiArai 10:398f62bb41f7 135 }
kenjiArai 11:bccfd75e84a0 136 if ( humidity == 0 ){ humidity = humtemp.getHumidity();
kenjiArai 11:bccfd75e84a0 137 } else { humidity = humidity * 0.9 + humtemp.getHumidity() * 0.1;
kenjiArai 10:398f62bb41f7 138 }
kenjiArai 8:f6aa5561f219 139 }
dan 0:7dec7e9ac085 140
kenjiArai 12:1e21119688fe 141 // Clear LCD
kenjiArai 13:950adc9d6d61 142 void cls(void){
kenjiArai 12:1e21119688fe 143 i2clcd.locate(0, 0);
kenjiArai 12:1e21119688fe 144 i2clcd.printf(" ");
kenjiArai 12:1e21119688fe 145 i2clcd.locate(0, 1);
kenjiArai 12:1e21119688fe 146 i2clcd.printf(" ");
kenjiArai 12:1e21119688fe 147 }
kenjiArai 12:1e21119688fe 148
kenjiArai 13:950adc9d6d61 149 // Set initial time
kenjiArai 13:950adc9d6d61 150 void set_initial_time (void){
kenjiArai 13:950adc9d6d61 151 // Set Initial data -> 2014/06/22 10:20:00
kenjiArai 13:950adc9d6d61 152 #if USE_C_STD_LIB
kenjiArai 13:950adc9d6d61 153 struct tm t;
kenjiArai 13:950adc9d6d61 154
kenjiArai 13:950adc9d6d61 155 m41t62.read_rtc_std(&t);
kenjiArai 13:950adc9d6d61 156 if ((sw_chng == 0) && (sw_mode == 0)){
kenjiArai 13:950adc9d6d61 157 t.tm_sec = 0;
kenjiArai 13:950adc9d6d61 158 t.tm_min = 20;
kenjiArai 13:950adc9d6d61 159 t.tm_hour = 10;
kenjiArai 13:950adc9d6d61 160 t.tm_mday = 22;
kenjiArai 13:950adc9d6d61 161 t.tm_wday = 0; // Sun is not 7 but 0
kenjiArai 13:950adc9d6d61 162 t.tm_mon = 5; // Jan. = 0
kenjiArai 13:950adc9d6d61 163 t.tm_year = 14 + 100; // 1900+x = now
kenjiArai 13:950adc9d6d61 164 m41t62.write_rtc_std(&t);
kenjiArai 13:950adc9d6d61 165 }
kenjiArai 13:950adc9d6d61 166 #else
kenjiArai 13:950adc9d6d61 167 rtc_time t;
kenjiArai 13:950adc9d6d61 168
kenjiArai 13:950adc9d6d61 169 m41t62.read_rtc_direct(&t);
kenjiArai 13:950adc9d6d61 170 if ((sw_chng == 0) && (sw_mode == 0)){
kenjiArai 13:950adc9d6d61 171 t.rtc_seconds = 0;
kenjiArai 13:950adc9d6d61 172 t.rtc_minutes = 20;
kenjiArai 13:950adc9d6d61 173 t.rtc_hours = 10;
kenjiArai 13:950adc9d6d61 174 t.rtc_date = 22;
kenjiArai 13:950adc9d6d61 175 t.rtc_weekday = RTC_Wk_Sunday;
kenjiArai 13:950adc9d6d61 176 t.rtc_month = 6;
kenjiArai 13:950adc9d6d61 177 t.rtc_year_raw= 14;
kenjiArai 13:950adc9d6d61 178 m41t62.write_rtc_direct(&t);
kenjiArai 13:950adc9d6d61 179 }
kenjiArai 13:950adc9d6d61 180 #endif
kenjiArai 13:950adc9d6d61 181 }
kenjiArai 13:950adc9d6d61 182
kenjiArai 11:bccfd75e84a0 183 //-------------------------------------
kenjiArai 11:bccfd75e84a0 184 // Application program starts here
kenjiArai 11:bccfd75e84a0 185 //-------------------------------------
dan 0:7dec7e9ac085 186 int main() {
kenjiArai 8:f6aa5561f219 187 pc.baud(9600);
kenjiArai 12:1e21119688fe 188 pc.printf("\r\nmbed LPC1114FN28 test program by JH1PJL created on "__DATE__"(UTC)\r\n");
kenjiArai 11:bccfd75e84a0 189 i2clcd.setContrast(25);
kenjiArai 11:bccfd75e84a0 190 i2clcd.locate(0, 0);
kenjiArai 11:bccfd75e84a0 191 i2clcd.printf("LPC1114F");
kenjiArai 11:bccfd75e84a0 192 i2clcd.locate(0, 1);
kenjiArai 11:bccfd75e84a0 193 i2clcd.printf(" JH1PJL ");
kenjiArai 10:398f62bb41f7 194 // Initialize data
kenjiArai 10:398f62bb41f7 195 av_cds = 0;
kenjiArai 10:398f62bb41f7 196 av_vref = 0;
kenjiArai 10:398f62bb41f7 197 av_vol = 0;
kenjiArai 10:398f62bb41f7 198 humidity_temp = 0;
kenjiArai 10:398f62bb41f7 199 humidity = 0;
kenjiArai 13:950adc9d6d61 200 // RTC
kenjiArai 13:950adc9d6d61 201 m41t62.set_sq_wave(RTC_SQW_NONE);
kenjiArai 13:950adc9d6d61 202 set_initial_time();
kenjiArai 11:bccfd75e84a0 203 // Show initial screen
kenjiArai 12:1e21119688fe 204 wait(5.0);
kenjiArai 7:d3b49f1d9f76 205 while(1) {
kenjiArai 11:bccfd75e84a0 206 // ---------- Cds Sensor, Vref, Volume ---------------------------------------------------
kenjiArai 9:ce80da60884a 207 // Power on / Analog sensor
kenjiArai 8:f6aa5561f219 208 analog_pwr = 1;
kenjiArai 8:f6aa5561f219 209 vref_pwr = 1;
kenjiArai 8:f6aa5561f219 210 wait(0.2);
kenjiArai 8:f6aa5561f219 211 adc_all_read();
kenjiArai 9:ce80da60884a 212 // Power off / Analog sensor
kenjiArai 11:bccfd75e84a0 213 analog_pwr = 0;
kenjiArai 9:ce80da60884a 214 // Normalize
kenjiArai 11:bccfd75e84a0 215 adc_normalize(CDS);
kenjiArai 11:bccfd75e84a0 216 adc_normalize(VREF);
kenjiArai 12:1e21119688fe 217 adc_normalize(VOL);
kenjiArai 12:1e21119688fe 218 cls();
kenjiArai 11:bccfd75e84a0 219 i2clcd.locate(0, 0); // 1st line top
kenjiArai 11:bccfd75e84a0 220 // 12345678
kenjiArai 12:1e21119688fe 221 i2clcd.printf("L:%.1f", lux);
kenjiArai 11:bccfd75e84a0 222 i2clcd.locate(0, 1); // 2nd line top
kenjiArai 12:1e21119688fe 223 i2clcd.printf("V:%.3f", cal_vcc);
kenjiArai 12:1e21119688fe 224 myled0 = 1;
kenjiArai 13:950adc9d6d61 225 pc.printf( "\r\nCds:%.0fohm->%.1flux, Vcc:%.3fV, Vol:%d\r\n",
kenjiArai 12:1e21119688fe 226 r_cds, lux, cal_vcc, nor_vol );
kenjiArai 12:1e21119688fe 227 myled0 = 0;
kenjiArai 13:950adc9d6d61 228 wait(4.0);
kenjiArai 11:bccfd75e84a0 229 // ---------- Barometer Sensor / BMP180 --------------------------------------------------
kenjiArai 11:bccfd75e84a0 230 bmp180.normalize();
kenjiArai 12:1e21119688fe 231 cls();
kenjiArai 11:bccfd75e84a0 232 i2clcd.locate(0, 0); // 1st line top
kenjiArai 12:1e21119688fe 233 i2clcd.printf("P:%.1f", bmp180.read_pressure());
kenjiArai 11:bccfd75e84a0 234 i2clcd.locate(0, 1); // 2nd line top
kenjiArai 12:1e21119688fe 235 i2clcd.printf("T:%\+-6.1f", bmp180.read_temperature());
kenjiArai 9:ce80da60884a 236 myled1 = 1;
kenjiArai 13:950adc9d6d61 237 pc.printf("Pres:%4.1fhPa, Temp:%\+-0.1fdegC\r\n",
kenjiArai 13:950adc9d6d61 238 bmp180.read_pressure(), bmp180.read_temperature());
kenjiArai 8:f6aa5561f219 239 myled1 = 0;
kenjiArai 10:398f62bb41f7 240 wait(4.0);
kenjiArai 11:bccfd75e84a0 241 // ---------- Humidity Sensor / RHT03 ----------------------------------------------------
kenjiArai 10:398f62bb41f7 242 hum_RHT03_read(); // Read Humidity data then avaraging
kenjiArai 12:1e21119688fe 243 cls();
kenjiArai 11:bccfd75e84a0 244 i2clcd.locate(0, 0); // 1st line top
kenjiArai 12:1e21119688fe 245 i2clcd.printf("H:%.1f", humidity);
kenjiArai 11:bccfd75e84a0 246 i2clcd.locate(0, 1); // 2nd line top
kenjiArai 12:1e21119688fe 247 i2clcd.printf("T:%\+-6.1f", humidity_temp);
kenjiArai 10:398f62bb41f7 248 myled1 = 1;
kenjiArai 12:1e21119688fe 249 pc.printf("Humid: %0.1f%%RH, Temp:%\+-0.1fdegC\r\n", humidity, humidity_temp);
kenjiArai 12:1e21119688fe 250 myled1 = 0;
kenjiArai 13:950adc9d6d61 251 wait(4.0);
kenjiArai 13:950adc9d6d61 252 // ---------- Check RTC ------------------------------------------------------------------
kenjiArai 13:950adc9d6d61 253 #if USE_C_STD_LIB
kenjiArai 13:950adc9d6d61 254 tm t;
kenjiArai 13:950adc9d6d61 255 time_t seconds;
kenjiArai 13:950adc9d6d61 256 char buf[40];
kenjiArai 13:950adc9d6d61 257
kenjiArai 13:950adc9d6d61 258 m41t62.read_rtc_std(&t);
kenjiArai 13:950adc9d6d61 259 seconds = mktime(&t);
kenjiArai 12:1e21119688fe 260 cls();
kenjiArai 12:1e21119688fe 261 i2clcd.locate(0, 0); // 1st line top
kenjiArai 13:950adc9d6d61 262 i2clcd.printf("%02d/%02d/%02d", t.tm_year % 100, t.tm_mon, t.tm_mday);
kenjiArai 13:950adc9d6d61 263 i2clcd.locate(0, 1); // 2nd line top
kenjiArai 13:950adc9d6d61 264 i2clcd.printf("%02d:%02d:%02d", t.tm_hour, t.tm_min, t.tm_sec);
kenjiArai 13:950adc9d6d61 265 myled1 = 1;
kenjiArai 13:950adc9d6d61 266 // Show Time with several example
kenjiArai 13:950adc9d6d61 267 // ex.1
kenjiArai 13:950adc9d6d61 268 pc.printf("Date: %04d/%02d/%02d, %02d:%02d:%02d\r\n",
kenjiArai 13:950adc9d6d61 269 t.tm_year + 1900, t.tm_mon, t.tm_mday, t.tm_hour, t.tm_min, t.tm_sec);
kenjiArai 13:950adc9d6d61 270 // ex.2
kenjiArai 13:950adc9d6d61 271 strftime(buf, 40, "%x %X", localtime(&seconds));
kenjiArai 13:950adc9d6d61 272 printf("Date: %s\r\n", buf);
kenjiArai 13:950adc9d6d61 273 // ex.3
kenjiArai 13:950adc9d6d61 274 strftime(buf, 40, "%I:%M:%S %p (%Y/%m/%d)", localtime(&seconds));
kenjiArai 13:950adc9d6d61 275 printf("Date: %s\r\n", buf);
kenjiArai 13:950adc9d6d61 276 // ex.4
kenjiArai 13:950adc9d6d61 277 strftime(buf, 40, "%B %d,'%y, %H:%M:%S", localtime(&seconds));
kenjiArai 13:950adc9d6d61 278 printf("Date: %s\r\n", buf);
kenjiArai 13:950adc9d6d61 279 myled1 = 0;
kenjiArai 13:950adc9d6d61 280 wait(4.0);
kenjiArai 13:950adc9d6d61 281 #else
kenjiArai 13:950adc9d6d61 282 rtc_time t;
kenjiArai 13:950adc9d6d61 283
kenjiArai 13:950adc9d6d61 284 m41t62.read_rtc_direct(&t);
kenjiArai 13:950adc9d6d61 285 cls();
kenjiArai 13:950adc9d6d61 286 i2clcd.locate(0, 0); // 1st line top
kenjiArai 13:950adc9d6d61 287 i2clcd.printf("%02d/%02d/%02d", t.rtc_year, t.rtc_month, t.rtc_date);
kenjiArai 13:950adc9d6d61 288 i2clcd.locate(0, 1); // 2nd line top
kenjiArai 13:950adc9d6d61 289 i2clcd.printf("%02d:%02d:%02d", t.rtc_hours, t.rtc_minutes, t.rtc_seconds);
kenjiArai 13:950adc9d6d61 290 myled1 = 1;
kenjiArai 13:950adc9d6d61 291 pc.printf("Date:%04d/%02d/%02d(%s), Time:%02d:%02d:%02d\r\n",
kenjiArai 13:950adc9d6d61 292 t.rtc_year, t.rtc_month, t.rtc_date, &week[t.rtc_weekday-1][0],
kenjiArai 13:950adc9d6d61 293 t.rtc_hours, t.rtc_minutes, t.rtc_seconds);
kenjiArai 13:950adc9d6d61 294 myled1 = 0;
kenjiArai 13:950adc9d6d61 295 wait(4.0);
kenjiArai 13:950adc9d6d61 296 #endif
kenjiArai 7:d3b49f1d9f76 297 }
dan 0:7dec7e9ac085 298 }