cltp(仮), 日本語があるので修正必要。
Dependencies: mbed HEPTA_CDH_lite LPS25HB_I2C
main.cpp
- Committer:
- kosukesuzuki
- Date:
- 2022-08-15
- Revision:
- 4:36a7b7878738
- Parent:
- 3:f64ab3adcac5
File content as of revision 4:36a7b7878738:
#define mC 261.626//ド #define mD 293.665//レ #define mE 329.628//ミ #define mF 349.228//ファ #define mG 391.995//ソ #define mA 440.000//ラ #define mB 493.883//シ #include "mbed.h" #include "HEPTA_CDH.h" #include "LPS.h" DigitalOut sp1(A0); Ticker sound; Timer t; HEPTA_CDH cdh(PB_5, PB_4, PB_3, PA_8, "sd"); //mosi, miso, sclk, nonconnect Serial xbee(D1, D0); // tx, rx Serial pc(USBTX,USBRX,9600); //UART I2C i2c(D4,D5); //sda, scl LPS ps(i2c); int count=0; int j; int oto = 0; void tick(void) { sp1.write(oto); oto=!oto; } int main(){ //音色 float mm[]={mC*4,mD*4,mE*4,mF*4,mG*4,mA*4,mB*4,mC*8}; //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"); } //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 ////Variable definitions for command input //if (pc.readable()) xbee.putc(pc.getc()); if (xbee.readable()) pc.putc(xbee.getc()); wait_us(1); 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'){//3 pc.printf("start\r\n"); xbee.printf("start\r\n"); t.start(); //cmd = 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); while(1){//4 //FILE *fp = fopen("/sd/mydir/sdtest.txt", "a"); //if (pc.readable()) xbee.putc(pc.getc()); if (xbee.readable()) pc.putc(xbee.getc()); //The operation of saving the data obtained from 10 data acquired to the SD card is repeated 40 times. for(j=0;j<50;j++){//5 FILE *fp = fopen("/sd/mydir/sdtest.txt", "a"); for(int i=0;i<10;i++){//6 count=count+1; float pressure = ps.readPressureMillibars(); float altitude = ps.pressureToAltitudeMeters(pressure); float temperature = ps.readTemperatureC(); pc.printf("%d %.2f\t \t%.2f \t%.2f \r\n",count,pressure,altitude,temperature); xbee.printf("%d %.2f\t \t%.2f \t%.2f \r\n",count,pressure,altitude,temperature); fprintf(fp,"%d %.2f\t \t%.2f \t%.2f \r\n",count,pressure,altitude,temperature); wait_us(10); }//5 fclose(fp); }//4 //wait_us(10); FILE *fp = fopen("/sd/mydir/sdtest.txt", "a"); pc.printf("end\r\n"); pc.printf("time = %f",t.read()); xbee.printf("end\r\n"); xbee.printf("time = %f",t.read()); fprintf(fp,"end\r\n"); fprintf(fp,"time = %f",t.read()); t.stop(); fclose(fp); //cmd = 0; char cmd2 = xbee.getc(); if(cmd2 == 'n'){//5 while(1){//6 if (xbee.readable()) pc.putc(xbee.getc()); char cmd3 = xbee.getc();//cmd共有 for(j=0;j < sizeof(mm)/sizeof(mm[0]);j++) {//7 sound.attach(&tick,1.0/mm[j]/2.0); //並列プログラムによるえらーなので,無視 wait(0.5f); }//7 sound.detach(); j = 0; if(cmd3 == 'k'){//7 pc.printf("end\r\n"); sound.detach(); //return 0;//end }//7 }//6 }//5 }//4 }//3 }//2 }//1