Dependencies: ChaNFSSD mbed BMP085 SHT2x
main.cpp@1:83960ee4d9a2, 2012-01-13 (annotated)
- Committer:
- tosihisa
- Date:
- Fri Jan 13 10:15:08 2012 +0000
- Revision:
- 1:83960ee4d9a2
- Parent:
- 0:6089ae824f06
- Child:
- 2:f546aaa0e1d5
add 5-sec wait before using CO2-sensor
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
tosihisa | 1:83960ee4d9a2 | 1 | /* |
tosihisa | 1:83960ee4d9a2 | 2 | * このソフトウェアは、大阪市立大学と京都大学生存圏ミッション研究の共同研究の成果物です。 |
tosihisa | 1:83960ee4d9a2 | 3 | * ソースコードそのもののライセンスは、各ソースコードのライセンスに沿って公開します。 |
tosihisa | 1:83960ee4d9a2 | 4 | * 2012-1-4 Toshihisa T |
tosihisa | 1:83960ee4d9a2 | 5 | */ |
tosihisa | 0:6089ae824f06 | 6 | #include "mbed.h" |
tosihisa | 0:6089ae824f06 | 7 | #include "NMEA_parse.h" |
tosihisa | 0:6089ae824f06 | 8 | #include "SDFileSystem.h" |
tosihisa | 0:6089ae824f06 | 9 | #include "libT/mbed/tserialbuffer.h" |
tosihisa | 0:6089ae824f06 | 10 | #include "BMP085.h" |
tosihisa | 0:6089ae824f06 | 11 | #include "SHT25.h" |
tosihisa | 0:6089ae824f06 | 12 | #include "SHT2x.h" |
tosihisa | 0:6089ae824f06 | 13 | #include "AD7994.h" |
tosihisa | 0:6089ae824f06 | 14 | //#include "TextLCD.h" |
tosihisa | 0:6089ae824f06 | 15 | #include "TextLCD_20X4.h" |
tosihisa | 1:83960ee4d9a2 | 16 | #include "UBXPacket.h" |
tosihisa | 0:6089ae824f06 | 17 | |
tosihisa | 0:6089ae824f06 | 18 | using namespace libT; |
tosihisa | 0:6089ae824f06 | 19 | |
tosihisa | 1:83960ee4d9a2 | 20 | #define _CO2_TEST |
tosihisa | 1:83960ee4d9a2 | 21 | //#define _I2C_TEST |
tosihisa | 0:6089ae824f06 | 22 | |
tosihisa | 0:6089ae824f06 | 23 | #define _USE_FS_NAME "sd" |
tosihisa | 0:6089ae824f06 | 24 | |
tosihisa | 0:6089ae824f06 | 25 | Serial debug(USBTX,USBRX); |
tosihisa | 0:6089ae824f06 | 26 | |
tosihisa | 0:6089ae824f06 | 27 | DigitalIn gps_int0(p24); |
tosihisa | 0:6089ae824f06 | 28 | DigitalOut gps_reset(p25); |
tosihisa | 0:6089ae824f06 | 29 | InterruptIn gps_pps(p26); |
tosihisa | 0:6089ae824f06 | 30 | tSerialBuffer gps(p28,p27); |
tosihisa | 0:6089ae824f06 | 31 | DigitalOut gps_pps_led(LED2); |
tosihisa | 1:83960ee4d9a2 | 32 | #ifdef _I2C_TEST /* { */ |
tosihisa | 1:83960ee4d9a2 | 33 | I2C i2c(p9, p10); // sda, scl |
tosihisa | 1:83960ee4d9a2 | 34 | #endif /* } */ |
tosihisa | 0:6089ae824f06 | 35 | BMP085 bmp085(p9, p10); |
tosihisa | 0:6089ae824f06 | 36 | //SHT25 sht25(p9, p10); |
tosihisa | 0:6089ae824f06 | 37 | //SHT2x sht25(p9,p10); |
tosihisa | 0:6089ae824f06 | 38 | AD7994 ad7994(p9,p10); |
tosihisa | 0:6089ae824f06 | 39 | TextLCD_20X4 lcd(p15, p16, p17, p18, p19, p20); // rs, e, d4-d7 |
tosihisa | 0:6089ae824f06 | 40 | |
tosihisa | 1:83960ee4d9a2 | 41 | SDFileSystem sd(p5, p6, p7, p8, _USE_FS_NAME); |
tosihisa | 0:6089ae824f06 | 42 | |
tosihisa | 0:6089ae824f06 | 43 | DigitalOut myled(LED1); |
tosihisa | 0:6089ae824f06 | 44 | |
tosihisa | 1:83960ee4d9a2 | 45 | #ifdef _CO2_TEST |
tosihisa | 0:6089ae824f06 | 46 | tSerialBuffer CO2(p13,p14); |
tosihisa | 0:6089ae824f06 | 47 | #endif |
tosihisa | 0:6089ae824f06 | 48 | |
tosihisa | 1:83960ee4d9a2 | 49 | struct UBXPacket_s UBXPacket; |
tosihisa | 1:83960ee4d9a2 | 50 | |
tosihisa | 0:6089ae824f06 | 51 | int pps_count = 0; |
tosihisa | 0:6089ae824f06 | 52 | void gps_pps_rise() |
tosihisa | 0:6089ae824f06 | 53 | { |
tosihisa | 0:6089ae824f06 | 54 | gps_pps_led = ((pps_count+=1) & 1) ? 1 : 0; |
tosihisa | 0:6089ae824f06 | 55 | } |
tosihisa | 0:6089ae824f06 | 56 | |
tosihisa | 0:6089ae824f06 | 57 | void logFile_Init() |
tosihisa | 0:6089ae824f06 | 58 | { |
tosihisa | 0:6089ae824f06 | 59 | DIR *d; |
tosihisa | 0:6089ae824f06 | 60 | struct dirent *p; |
tosihisa | 0:6089ae824f06 | 61 | |
tosihisa | 0:6089ae824f06 | 62 | d = opendir("/" _USE_FS_NAME); |
tosihisa | 0:6089ae824f06 | 63 | if ( d != NULL ) { |
tosihisa | 0:6089ae824f06 | 64 | while ( (p = readdir(d)) != NULL ) { |
tosihisa | 0:6089ae824f06 | 65 | debug.printf("FILE - %s\x0d\x0a", p->d_name); |
tosihisa | 0:6089ae824f06 | 66 | } |
tosihisa | 0:6089ae824f06 | 67 | closedir(d); |
tosihisa | 0:6089ae824f06 | 68 | } |
tosihisa | 0:6089ae824f06 | 69 | } |
tosihisa | 0:6089ae824f06 | 70 | |
tosihisa | 0:6089ae824f06 | 71 | void FileWriteTest() |
tosihisa | 0:6089ae824f06 | 72 | { |
tosihisa | 0:6089ae824f06 | 73 | FILE *fp; |
tosihisa | 0:6089ae824f06 | 74 | char *logname = "/" _USE_FS_NAME "/MBEDLOG.TXT"; |
tosihisa | 0:6089ae824f06 | 75 | |
tosihisa | 0:6089ae824f06 | 76 | debug.printf("FileWriteTest() open(%s) :", logname); |
tosihisa | 0:6089ae824f06 | 77 | fp = fopen(logname,"a+w"); |
tosihisa | 0:6089ae824f06 | 78 | if(fp == NULL){ |
tosihisa | 0:6089ae824f06 | 79 | printf("NG\n"); |
tosihisa | 0:6089ae824f06 | 80 | return; |
tosihisa | 0:6089ae824f06 | 81 | } |
tosihisa | 0:6089ae824f06 | 82 | printf("OK\n"); |
tosihisa | 0:6089ae824f06 | 83 | fprintf(fp,"ENV Logger \"V1\" Start (BUILD:[" __DATE__ "/" __TIME__ "])\x0d\x0a"); |
tosihisa | 0:6089ae824f06 | 84 | fclose(fp); |
tosihisa | 0:6089ae824f06 | 85 | } |
tosihisa | 0:6089ae824f06 | 86 | |
tosihisa | 1:83960ee4d9a2 | 87 | #ifdef _CO2_TEST /* { */ |
tosihisa | 0:6089ae824f06 | 88 | int CO2_Read(unsigned short *val) |
tosihisa | 0:6089ae824f06 | 89 | { |
tosihisa | 0:6089ae824f06 | 90 | unsigned char sbuf[] = { 0xFE, 0x04, 0x00, 0x03, 0x00, 0x01, 0xD5, 0xC5 }; |
tosihisa | 0:6089ae824f06 | 91 | unsigned char rbuf[7]; |
tosihisa | 0:6089ae824f06 | 92 | int i; |
tosihisa | 0:6089ae824f06 | 93 | unsigned short crc; |
tosihisa | 0:6089ae824f06 | 94 | extern unsigned short modbus_CRC(unsigned char *DataPtr, unsigned short len); |
tosihisa | 0:6089ae824f06 | 95 | |
tosihisa | 0:6089ae824f06 | 96 | for(i=0;i < sizeof(sbuf);i++){ |
tosihisa | 0:6089ae824f06 | 97 | //debug.printf("0x%02x ",sbuf[i]); |
tosihisa | 0:6089ae824f06 | 98 | CO2.putc(sbuf[i]); |
tosihisa | 0:6089ae824f06 | 99 | } |
tosihisa | 0:6089ae824f06 | 100 | for(i=0;i < sizeof(rbuf);i++){ |
tosihisa | 0:6089ae824f06 | 101 | while(!CO2.readable()){} |
tosihisa | 0:6089ae824f06 | 102 | rbuf[i] = CO2.getc(); |
tosihisa | 0:6089ae824f06 | 103 | } |
tosihisa | 1:83960ee4d9a2 | 104 | if(rbuf[0] != 0xFE){ |
tosihisa | 1:83960ee4d9a2 | 105 | return -4; |
tosihisa | 1:83960ee4d9a2 | 106 | } |
tosihisa | 1:83960ee4d9a2 | 107 | if(rbuf[1] != 0x04){ |
tosihisa | 1:83960ee4d9a2 | 108 | return -1; |
tosihisa | 1:83960ee4d9a2 | 109 | } |
tosihisa | 1:83960ee4d9a2 | 110 | if(rbuf[2] != 0x02){ |
tosihisa | 1:83960ee4d9a2 | 111 | return -2; |
tosihisa | 1:83960ee4d9a2 | 112 | } |
tosihisa | 0:6089ae824f06 | 113 | crc = rbuf[6]; |
tosihisa | 0:6089ae824f06 | 114 | crc = (crc << 8) | rbuf[5]; |
tosihisa | 0:6089ae824f06 | 115 | if(crc != modbus_CRC(rbuf,5)){ |
tosihisa | 1:83960ee4d9a2 | 116 | return -3; |
tosihisa | 0:6089ae824f06 | 117 | } |
tosihisa | 0:6089ae824f06 | 118 | *val = rbuf[3]; |
tosihisa | 0:6089ae824f06 | 119 | *val = (*val << 8) | rbuf[4]; |
tosihisa | 0:6089ae824f06 | 120 | return 0; |
tosihisa | 0:6089ae824f06 | 121 | } |
tosihisa | 0:6089ae824f06 | 122 | #endif /* HAVE_CO2 } */ |
tosihisa | 0:6089ae824f06 | 123 | |
tosihisa | 0:6089ae824f06 | 124 | // BMP085 0xee |
tosihisa | 0:6089ae824f06 | 125 | // AD9774 0x44 |
tosihisa | 1:83960ee4d9a2 | 126 | #ifdef _I2C_TEST /* { */ |
tosihisa | 0:6089ae824f06 | 127 | int i2c_found() { |
tosihisa | 0:6089ae824f06 | 128 | int count = 0; |
tosihisa | 1:83960ee4d9a2 | 129 | lcd.locate(0,2); |
tosihisa | 1:83960ee4d9a2 | 130 | lcd.printf("%-19s","I2C Dev:"); |
tosihisa | 1:83960ee4d9a2 | 131 | lcd.locate(8,2); |
tosihisa | 0:6089ae824f06 | 132 | for (int address=0; address<256; address+=2) { |
tosihisa | 0:6089ae824f06 | 133 | if (!i2c.write(address, NULL, 0)) { // 0 returned is ok |
tosihisa | 1:83960ee4d9a2 | 134 | lcd.printf("%02X ",address); |
tosihisa | 0:6089ae824f06 | 135 | count++; |
tosihisa | 0:6089ae824f06 | 136 | } |
tosihisa | 0:6089ae824f06 | 137 | } |
tosihisa | 1:83960ee4d9a2 | 138 | lcd.printf("\n"); |
tosihisa | 1:83960ee4d9a2 | 139 | lcd.printf("%d devices found", count); |
tosihisa | 0:6089ae824f06 | 140 | return count; |
tosihisa | 0:6089ae824f06 | 141 | } |
tosihisa | 1:83960ee4d9a2 | 142 | #endif /* } */ |
tosihisa | 1:83960ee4d9a2 | 143 | |
tosihisa | 1:83960ee4d9a2 | 144 | unsigned char NMEA_CalcSum(unsigned char *str,int len) |
tosihisa | 1:83960ee4d9a2 | 145 | { |
tosihisa | 1:83960ee4d9a2 | 146 | unsigned char sum = 0; |
tosihisa | 1:83960ee4d9a2 | 147 | int i; |
tosihisa | 1:83960ee4d9a2 | 148 | for(i = 0;i < len;i++){ |
tosihisa | 1:83960ee4d9a2 | 149 | sum = sum ^ (*(str + i)); |
tosihisa | 1:83960ee4d9a2 | 150 | } |
tosihisa | 1:83960ee4d9a2 | 151 | return sum; |
tosihisa | 1:83960ee4d9a2 | 152 | } |
tosihisa | 1:83960ee4d9a2 | 153 | |
tosihisa | 1:83960ee4d9a2 | 154 | void UBX_CalcSum(unsigned char *str,int len,unsigned char *sum) |
tosihisa | 1:83960ee4d9a2 | 155 | { |
tosihisa | 1:83960ee4d9a2 | 156 | int i; |
tosihisa | 1:83960ee4d9a2 | 157 | *(sum + 0) = *(sum + 1) = 0; |
tosihisa | 1:83960ee4d9a2 | 158 | for(i = 0;i < len;i++){ |
tosihisa | 1:83960ee4d9a2 | 159 | *(sum + 0) = *(sum + 0) + *(str+i); |
tosihisa | 1:83960ee4d9a2 | 160 | *(sum + 1) = *(sum + 1) + *(sum + 0); |
tosihisa | 1:83960ee4d9a2 | 161 | } |
tosihisa | 1:83960ee4d9a2 | 162 | } |
tosihisa | 1:83960ee4d9a2 | 163 | |
tosihisa | 1:83960ee4d9a2 | 164 | int UBX_WaitAck(struct UBXPacket_s *info) |
tosihisa | 1:83960ee4d9a2 | 165 | { |
tosihisa | 1:83960ee4d9a2 | 166 | UBXPacket.cjobst = 0; |
tosihisa | 1:83960ee4d9a2 | 167 | |
tosihisa | 1:83960ee4d9a2 | 168 | while(1){ |
tosihisa | 1:83960ee4d9a2 | 169 | while(gps.readable()) { |
tosihisa | 1:83960ee4d9a2 | 170 | if(UBXPacket_Parse(&UBXPacket,gps.getc()) == 100){ |
tosihisa | 1:83960ee4d9a2 | 171 | if((UBXPacket.cls == 0x05) && (UBXPacket.id == 0x01)){ |
tosihisa | 1:83960ee4d9a2 | 172 | return 1; /* ACK */ |
tosihisa | 1:83960ee4d9a2 | 173 | } else if((UBXPacket.cls == 0x05) && (UBXPacket.id == 0x00)){ |
tosihisa | 1:83960ee4d9a2 | 174 | return 0; /* NAK */ |
tosihisa | 1:83960ee4d9a2 | 175 | } else { |
tosihisa | 1:83960ee4d9a2 | 176 | UBXPacket.cjobst = 0; |
tosihisa | 1:83960ee4d9a2 | 177 | } |
tosihisa | 1:83960ee4d9a2 | 178 | } |
tosihisa | 1:83960ee4d9a2 | 179 | } |
tosihisa | 1:83960ee4d9a2 | 180 | } |
tosihisa | 1:83960ee4d9a2 | 181 | return -1; |
tosihisa | 1:83960ee4d9a2 | 182 | } |
tosihisa | 1:83960ee4d9a2 | 183 | |
tosihisa | 1:83960ee4d9a2 | 184 | unsigned char wbuf[1024]; |
tosihisa | 1:83960ee4d9a2 | 185 | int widx; |
tosihisa | 0:6089ae824f06 | 186 | |
tosihisa | 0:6089ae824f06 | 187 | int main() { |
tosihisa | 0:6089ae824f06 | 188 | int ret = 0; |
tosihisa | 0:6089ae824f06 | 189 | float p, t; |
tosihisa | 0:6089ae824f06 | 190 | int temp; |
tosihisa | 0:6089ae824f06 | 191 | int userRegister; |
tosihisa | 0:6089ae824f06 | 192 | unsigned short CO2_val; |
tosihisa | 0:6089ae824f06 | 193 | unsigned long scanCount = 0; |
tosihisa | 1:83960ee4d9a2 | 194 | FILE *fp; |
tosihisa | 1:83960ee4d9a2 | 195 | char *logname = "/" _USE_FS_NAME "/ENVLOG.TXT"; |
tosihisa | 1:83960ee4d9a2 | 196 | char c; |
tosihisa | 0:6089ae824f06 | 197 | |
tosihisa | 0:6089ae824f06 | 198 | debug.format(8,Serial::None,1); |
tosihisa | 0:6089ae824f06 | 199 | debug.baud(115200); |
tosihisa | 0:6089ae824f06 | 200 | debug.printf("ENV Logger \"V1\" Start (BUILD:[" __DATE__ "/" __TIME__ "])\n"); |
tosihisa | 0:6089ae824f06 | 201 | |
tosihisa | 0:6089ae824f06 | 202 | debug.printf("LCD Display\n"); |
tosihisa | 0:6089ae824f06 | 203 | |
tosihisa | 0:6089ae824f06 | 204 | //lcd.cls(); |
tosihisa | 0:6089ae824f06 | 205 | lcd.locate(0,0); |
tosihisa | 0:6089ae824f06 | 206 | lcd.printf("ENV Logger \"V1\""); |
tosihisa | 1:83960ee4d9a2 | 207 | #ifdef _CO2_TEST |
tosihisa | 1:83960ee4d9a2 | 208 | wait(5.0); |
tosihisa | 1:83960ee4d9a2 | 209 | #endif |
tosihisa | 0:6089ae824f06 | 210 | |
tosihisa | 0:6089ae824f06 | 211 | //logFile_Init(); |
tosihisa | 0:6089ae824f06 | 212 | //FileWriteTest(); |
tosihisa | 0:6089ae824f06 | 213 | |
tosihisa | 1:83960ee4d9a2 | 214 | UBXPacket.cjobst = 0; |
tosihisa | 1:83960ee4d9a2 | 215 | |
tosihisa | 0:6089ae824f06 | 216 | gps_pps.rise(gps_pps_rise); |
tosihisa | 0:6089ae824f06 | 217 | gps.format(8,Serial::None,1); |
tosihisa | 0:6089ae824f06 | 218 | gps.baud(9600); |
tosihisa | 0:6089ae824f06 | 219 | |
tosihisa | 0:6089ae824f06 | 220 | gps_reset = 1; |
tosihisa | 0:6089ae824f06 | 221 | wait(0.5); |
tosihisa | 0:6089ae824f06 | 222 | gps_reset = 0; |
tosihisa | 0:6089ae824f06 | 223 | |
tosihisa | 1:83960ee4d9a2 | 224 | #if 0 |
tosihisa | 1:83960ee4d9a2 | 225 | wait(0.5); |
tosihisa | 1:83960ee4d9a2 | 226 | if(1){ |
tosihisa | 1:83960ee4d9a2 | 227 | //unsigned char modeStr[] = "PUBX,41,1,0007,0003,115200,0"; |
tosihisa | 1:83960ee4d9a2 | 228 | unsigned char modeStr[] = "PUBX,41,1,0007,0001,115200,0"; |
tosihisa | 1:83960ee4d9a2 | 229 | unsigned char sum = NMEA_CalcSum(modeStr,strlen((char *)modeStr)); |
tosihisa | 1:83960ee4d9a2 | 230 | debug.printf("SEND:[%s](0x%02X)\n",modeStr,sum); |
tosihisa | 1:83960ee4d9a2 | 231 | gps.printf("$%s*%02X%c%c",modeStr,sum,0x0d,0x0a); |
tosihisa | 1:83960ee4d9a2 | 232 | |
tosihisa | 1:83960ee4d9a2 | 233 | debug.printf("CHG BAUD:115200\n"); |
tosihisa | 1:83960ee4d9a2 | 234 | gps.format(8,Serial::None,1); |
tosihisa | 1:83960ee4d9a2 | 235 | gps.baud(115200); |
tosihisa | 1:83960ee4d9a2 | 236 | } |
tosihisa | 1:83960ee4d9a2 | 237 | |
tosihisa | 1:83960ee4d9a2 | 238 | gps.recvStart(); |
tosihisa | 1:83960ee4d9a2 | 239 | wait(0.5); |
tosihisa | 0:6089ae824f06 | 240 | |
tosihisa | 1:83960ee4d9a2 | 241 | if(1){ |
tosihisa | 1:83960ee4d9a2 | 242 | unsigned char chkStr[][11] = { |
tosihisa | 1:83960ee4d9a2 | 243 | { 0xB5,0x62,0x06,0x01,0x03,0x00,0x02,0x10,0x02,0xFF,0xFF }, //RXM-RAW (0x02 0x10) |
tosihisa | 1:83960ee4d9a2 | 244 | { 0xB5,0x62,0x06,0x01,0x03,0x00,0x02,0x30,0x02,0xFF,0xFF }, //RXM-ALM (0x02 0x30) |
tosihisa | 1:83960ee4d9a2 | 245 | { 0xB5,0x62,0x06,0x01,0x03,0x00,0x02,0x31,0x02,0xFF,0xFF }, //RXM-EPH (0x02 0x31) |
tosihisa | 1:83960ee4d9a2 | 246 | //{ 0xB5,0x62,0x06,0x01,0x03,0x00,0x02,0x41,0x02,0xFF,0xFF }, |
tosihisa | 1:83960ee4d9a2 | 247 | { 0xB5,0x62,0x06,0x01,0x03,0x00,0x02,0x11,0x02,0xFF,0xFF }, //RXM-SFRB (0x02 0x11) |
tosihisa | 1:83960ee4d9a2 | 248 | { 0xB5,0x62,0x06,0x01,0x03,0x00,0x02,0x20,0x02,0xFF,0xFF }, //RXM-SVSI (0x02 0x20) |
tosihisa | 1:83960ee4d9a2 | 249 | { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF }, //END |
tosihisa | 1:83960ee4d9a2 | 250 | }; |
tosihisa | 1:83960ee4d9a2 | 251 | int i,j; |
tosihisa | 1:83960ee4d9a2 | 252 | |
tosihisa | 1:83960ee4d9a2 | 253 | for(j=0;chkStr[j][0] != 0x00;j++){ |
tosihisa | 1:83960ee4d9a2 | 254 | UBX_CalcSum(&chkStr[j][2],7,&chkStr[j][9]); |
tosihisa | 1:83960ee4d9a2 | 255 | for(i = 0; i < sizeof(chkStr[0]);i++){ |
tosihisa | 1:83960ee4d9a2 | 256 | gps.putc(chkStr[j][i]); |
tosihisa | 1:83960ee4d9a2 | 257 | } |
tosihisa | 1:83960ee4d9a2 | 258 | debug.printf("%d : SET UBX Rate : %s\n",j,(UBX_WaitAck(&UBXPacket) == 1) ? "ACK" : "NAK"); |
tosihisa | 1:83960ee4d9a2 | 259 | } |
tosihisa | 1:83960ee4d9a2 | 260 | } |
tosihisa | 1:83960ee4d9a2 | 261 | UBXPacket.cjobst = 0; |
tosihisa | 1:83960ee4d9a2 | 262 | #endif |
tosihisa | 1:83960ee4d9a2 | 263 | |
tosihisa | 1:83960ee4d9a2 | 264 | #if 0 |
tosihisa | 1:83960ee4d9a2 | 265 | debug.printf("open(%s) :", logname); |
tosihisa | 1:83960ee4d9a2 | 266 | if((fp = fopen(logname,"a+w")) == NULL){ |
tosihisa | 1:83960ee4d9a2 | 267 | printf("NG\n"); |
tosihisa | 1:83960ee4d9a2 | 268 | } else { |
tosihisa | 1:83960ee4d9a2 | 269 | printf("OK\n"); |
tosihisa | 1:83960ee4d9a2 | 270 | } |
tosihisa | 1:83960ee4d9a2 | 271 | widx = 0; |
tosihisa | 1:83960ee4d9a2 | 272 | #endif |
tosihisa | 1:83960ee4d9a2 | 273 | |
tosihisa | 1:83960ee4d9a2 | 274 | // ad7994.Start(); |
tosihisa | 1:83960ee4d9a2 | 275 | |
tosihisa | 1:83960ee4d9a2 | 276 | #ifdef _CO2_TEST |
tosihisa | 0:6089ae824f06 | 277 | CO2.format(8,Serial::None,1); |
tosihisa | 0:6089ae824f06 | 278 | CO2.baud(9600); |
tosihisa | 0:6089ae824f06 | 279 | CO2.recvStart(); |
tosihisa | 0:6089ae824f06 | 280 | #endif |
tosihisa | 0:6089ae824f06 | 281 | |
tosihisa | 0:6089ae824f06 | 282 | //sht25.SHT2x_SoftReset(); |
tosihisa | 0:6089ae824f06 | 283 | //sht25.SHT2x_ReadUserRegister(&userRegister); //get actual user reg |
tosihisa | 0:6089ae824f06 | 284 | //userRegister = (userRegister & ~SHT2x_RES_MASK) | SHT2x_RES_12_14BIT; |
tosihisa | 0:6089ae824f06 | 285 | //sht25.SHT2x_WriteUserRegister(&userRegister); //write changed user reg |
tosihisa | 0:6089ae824f06 | 286 | |
tosihisa | 0:6089ae824f06 | 287 | while(1) { |
tosihisa | 0:6089ae824f06 | 288 | //lcd.cls(); |
tosihisa | 0:6089ae824f06 | 289 | lcd.locate(0,1); |
tosihisa | 1:83960ee4d9a2 | 290 | lcd.printf("SCAN: %-10ld",scanCount); |
tosihisa | 0:6089ae824f06 | 291 | |
tosihisa | 0:6089ae824f06 | 292 | #if 0 |
tosihisa | 0:6089ae824f06 | 293 | while(gps.readable()) { |
tosihisa | 1:83960ee4d9a2 | 294 | c = gps.getc(); |
tosihisa | 1:83960ee4d9a2 | 295 | if(UBXPacket_Parse(&UBXPacket,c) == 100){ |
tosihisa | 1:83960ee4d9a2 | 296 | debug.printf("%ld : GET UBX Packet (Class=0x%02X,ID=0x%02X,LEN=%d)\n", |
tosihisa | 1:83960ee4d9a2 | 297 | scanCount, |
tosihisa | 1:83960ee4d9a2 | 298 | UBXPacket.cls, |
tosihisa | 1:83960ee4d9a2 | 299 | UBXPacket.id, |
tosihisa | 1:83960ee4d9a2 | 300 | UBXPacket.len ); |
tosihisa | 1:83960ee4d9a2 | 301 | UBXPacket.cjobst = 0; |
tosihisa | 1:83960ee4d9a2 | 302 | if(scanCount > 120){ |
tosihisa | 1:83960ee4d9a2 | 303 | if(widx >= 0){ |
tosihisa | 1:83960ee4d9a2 | 304 | fwrite(&wbuf,sizeof(wbuf[0]),widx,fp); |
tosihisa | 1:83960ee4d9a2 | 305 | widx = 0; |
tosihisa | 1:83960ee4d9a2 | 306 | } |
tosihisa | 1:83960ee4d9a2 | 307 | fclose(fp); |
tosihisa | 1:83960ee4d9a2 | 308 | } |
tosihisa | 1:83960ee4d9a2 | 309 | } |
tosihisa | 1:83960ee4d9a2 | 310 | if(fp != NULL){ |
tosihisa | 1:83960ee4d9a2 | 311 | wbuf[widx] = c; |
tosihisa | 1:83960ee4d9a2 | 312 | widx++; |
tosihisa | 1:83960ee4d9a2 | 313 | if(widx >= sizeof(wbuf)){ |
tosihisa | 1:83960ee4d9a2 | 314 | fwrite(&wbuf,sizeof(wbuf[0]),widx,fp); |
tosihisa | 1:83960ee4d9a2 | 315 | widx = 0; |
tosihisa | 1:83960ee4d9a2 | 316 | } |
tosihisa | 1:83960ee4d9a2 | 317 | } |
tosihisa | 0:6089ae824f06 | 318 | } |
tosihisa | 0:6089ae824f06 | 319 | #endif |
tosihisa | 0:6089ae824f06 | 320 | |
tosihisa | 1:83960ee4d9a2 | 321 | #if 0 |
tosihisa | 0:6089ae824f06 | 322 | bmp085.update(); |
tosihisa | 0:6089ae824f06 | 323 | p = bmp085.get_pressure(); |
tosihisa | 0:6089ae824f06 | 324 | t = bmp085.get_temperature(); |
tosihisa | 0:6089ae824f06 | 325 | lcd.locate(0,2); |
tosihisa | 0:6089ae824f06 | 326 | lcd.printf("%-7.2fhPa %-7.2fC\n", p, t); |
tosihisa | 0:6089ae824f06 | 327 | #endif |
tosihisa | 0:6089ae824f06 | 328 | |
tosihisa | 0:6089ae824f06 | 329 | #if 0 |
tosihisa | 0:6089ae824f06 | 330 | sht25.SHT2x_MeasurePoll(TEMP,&temp); |
tosihisa | 0:6089ae824f06 | 331 | p = sht25.SHT2x_CalcTemperatureC(temp); |
tosihisa | 0:6089ae824f06 | 332 | sht25.SHT2x_MeasurePoll(HUMIDITY,&temp); |
tosihisa | 0:6089ae824f06 | 333 | t = sht25.SHT2x_CalcRH(temp); |
tosihisa | 0:6089ae824f06 | 334 | debug.printf("SHT25 = p:%6.2f C / t:%6.2f RH\n", p, t); |
tosihisa | 0:6089ae824f06 | 335 | sht25.SHT2x_SoftReset(); |
tosihisa | 0:6089ae824f06 | 336 | #endif |
tosihisa | 1:83960ee4d9a2 | 337 | |
tosihisa | 0:6089ae824f06 | 338 | #if 0 |
tosihisa | 0:6089ae824f06 | 339 | sht25.SoftReset(); |
tosihisa | 0:6089ae824f06 | 340 | printf("SHT25 = %f\n",sht25.get_temperature()); |
tosihisa | 0:6089ae824f06 | 341 | #endif |
tosihisa | 1:83960ee4d9a2 | 342 | |
tosihisa | 1:83960ee4d9a2 | 343 | #ifdef _I2C_TEST /* { */ |
tosihisa | 1:83960ee4d9a2 | 344 | i2c_found(); |
tosihisa | 1:83960ee4d9a2 | 345 | #endif /* } */ |
tosihisa | 0:6089ae824f06 | 346 | |
tosihisa | 1:83960ee4d9a2 | 347 | #ifdef _CO2_TEST |
tosihisa | 1:83960ee4d9a2 | 348 | lcd.locate(0,2); |
tosihisa | 1:83960ee4d9a2 | 349 | ret = CO2_Read(&CO2_val); |
tosihisa | 1:83960ee4d9a2 | 350 | if(ret == 0){ |
tosihisa | 1:83960ee4d9a2 | 351 | lcd.printf("CO2:%5dppm\n",CO2_val); |
tosihisa | 0:6089ae824f06 | 352 | } else { |
tosihisa | 1:83960ee4d9a2 | 353 | lcd.printf("CO2:NG(%d) \n",ret); |
tosihisa | 0:6089ae824f06 | 354 | } |
tosihisa | 0:6089ae824f06 | 355 | #endif |
tosihisa | 1:83960ee4d9a2 | 356 | |
tosihisa | 1:83960ee4d9a2 | 357 | #if 0 |
tosihisa | 0:6089ae824f06 | 358 | ad7994.update(); |
tosihisa | 0:6089ae824f06 | 359 | lcd.locate(0,3); |
tosihisa | 0:6089ae824f06 | 360 | lcd.printf("A/D:%04X/%04X", |
tosihisa | 0:6089ae824f06 | 361 | ad7994.readChn(0), |
tosihisa | 0:6089ae824f06 | 362 | ad7994.readChn(1)); |
tosihisa | 1:83960ee4d9a2 | 363 | #endif |
tosihisa | 0:6089ae824f06 | 364 | |
tosihisa | 0:6089ae824f06 | 365 | myled = 1; |
tosihisa | 1:83960ee4d9a2 | 366 | wait(0.5); |
tosihisa | 0:6089ae824f06 | 367 | myled = 0; |
tosihisa | 1:83960ee4d9a2 | 368 | wait(0.5); |
tosihisa | 0:6089ae824f06 | 369 | |
tosihisa | 0:6089ae824f06 | 370 | scanCount++; |
tosihisa | 0:6089ae824f06 | 371 | } |
tosihisa | 0:6089ae824f06 | 372 | } |