CLTP統合検証プログラム_気圧とxbeeのみで,圧電スピーカの実装が必要
Dependencies: mbed HEPTA_CDH_lite LPS25HB_I2C
Diff: main.cpp
- Revision:
- 2:bc6e512b58ac
- Parent:
- 1:ddac5ec89167
- Child:
- 3:08260b6b0828
--- a/main.cpp Wed Aug 11 03:50:32 2021 +0000 +++ b/main.cpp Tue Aug 16 10:05:12 2022 +0000 @@ -1,19 +1,99 @@ #include "mbed.h" +#include "LPS.h" #include "HEPTA_CDH.h" +Timer t; +Serial pc(USBTX, USBRX); // tx, rx +Serial xbee(D1, D0); // tx, rx +I2C i2c(D4,D5); +LPS ps(i2c); HEPTA_CDH cdh(PB_5, PB_4, PB_3, PA_8, "sd"); -Serial pc(USBTX,USBRX,9600); -int main() -{ - pc.printf("Hello World!\n"); - +Ticker press; +int i; +int ct = 0; +float pressure = 0; +float altitude = 0; +float temperature = 0; +char cmd1,cmd2,cmd3; +void pre() { + xbee.printf("%.2f %.2f %.2f \r\n",pressure,altitude,temperature); +} +int main() {//1 + //Display from satellite to PC via xbee. + pc.printf("settig start\r\n"); + xbee.printf("settig start\r\n"); + + //Create a file to save the data acquired from the sensor to a microSD card + //Also, if there is no microSD card, this error statement will be displayed mkdir("/sd/mydir", 0777); - FILE *fp = fopen("/sd/mydir/sdtest.txt", "w"); if(fp == NULL) { error("Could not open file for write\r\n"); } - fprintf(fp, "Hello my name is HEPTA\r\n"); - fclose(fp); - - pc.printf("Goodbye World!\r\n"); -} \ No newline at end of file + + //If there is no Barometric Pressure Sensors, this error statement will appear in teraterm + if (!ps.init()){//2 + printf("Failed to autodetect pressure sensor!\r\n"); + while (1); + }//2 + ps.enableDefault(); + + //Display "begin" in teraterm and save it to SDcard + pc.printf("begin\r\n"); + xbee.printf("begin\r\n"); + fprintf(fp,"begin\r\n"); + for (;;) {//2 + //if (pc.readable()) xbee.putc(pc.getc()); + if (xbee.readable()) {//3 + pc.putc(xbee.getc()); + cmd1 = xbee.getc(); + //char cmd1 = xbee.getc();//cmd共有 + + //Input "m", the sensor data is displayed on the teraterm. + //And the acquired data is saved to the SD card. + if(cmd1 == 'm'){//4 + pc.printf("start\r\n"); + fprintf(fp,"start\r\n"); + xbee.printf("start\r\n"); + t.start(); + + cmd1 = '\0'; + + pc.printf("p [mbar]\ta [m]\tdeg [C]\r\n"); + xbee.printf("p [mbar]\ta [m]\tdeg [C]\r\n"); + fprintf(fp,"p [mbar]\ta [m]\tdeg [C]\r\n"); + fclose(fp); + press.attach(&pre, 0.1); + //Save sensor acquisition data to SD card every 10 times + while(1){//5 + FILE *fp = fopen("/sd/mydir/sdtest.txt", "a"); + for(i = 0;i<10;i++){//6 + pressure = ps.readPressureMillibars(); + altitude = ps.pressureToAltitudeMeters(pressure); + temperature = ps.readTemperatureC(); + fprintf(fp,"%d %.2f\t \t%.2f \t%.2f \r\n",ct,pressure,altitude,temperature); + ct = ct + 1; + //if (pc.readable()) xbee.putc(pc.getc()); + if (xbee.readable()){//7 + pc.putc(xbee.getc()); + cmd2 = xbee.getc(); + //char cmd2 = xbee.getc(); + //xbee.printf("%c\r\n",cmd); + if(cmd2 == 'n'){//8 + press.detach(); + pc.printf("end\r\n"); + pc.printf("time = %f",t.read()); + fprintf(fp,"time = %f",t.read()); + t.stop(); + fclose(fp); + cmd2 = '\0'; + return 0; + }//8 + }//7 + wait_us(1); + }//6 + fclose(fp); + }//5 + }//4 + }//3 + }//2 +}//1 \ No newline at end of file