mbed-xbee(ATmode/pc対マイコン) ,LPS35HBの統合一段階目。 cmdの初期化が問題となっている。errorがでない。

Dependencies:   mbed LPS25HB_I2C

Committer:
kosukesuzuki
Date:
Tue Aug 09 14:07:28 2022 +0000
Revision:
2:39ad330d9ec8
Parent:
1:d7561bf65def
xbee-LPS

Who changed what in which revision?

UserRevisionLine numberNew contents of line
kosukesuzuki 0:5ffa13919073 1 #include "mbed.h"
kosukesuzuki 1:d7561bf65def 2 #include "LPS.h"
kosukesuzuki 0:5ffa13919073 3
kosukesuzuki 0:5ffa13919073 4 Timer t;
kosukesuzuki 0:5ffa13919073 5
kosukesuzuki 0:5ffa13919073 6 Serial pc(USBTX, USBRX); // tx, rx
kosukesuzuki 1:d7561bf65def 7 Serial xbee(D1, D0); // tx, rx
kosukesuzuki 0:5ffa13919073 8
kosukesuzuki 1:d7561bf65def 9 /////////////////////////////
kosukesuzuki 1:d7561bf65def 10 I2C i2c(D4,D5);
kosukesuzuki 1:d7561bf65def 11 LPS ps(i2c);
kosukesuzuki 1:d7561bf65def 12 ///////////////////////////
kosukesuzuki 1:d7561bf65def 13
kosukesuzuki 2:39ad330d9ec8 14 Ticker press;
kosukesuzuki 1:d7561bf65def 15
kosukesuzuki 2:39ad330d9ec8 16 void pre() {
kosukesuzuki 1:d7561bf65def 17 if (!ps.init()){//2
kosukesuzuki 1:d7561bf65def 18 printf("Failed to autodetect pressure sensor!\r\n");
kosukesuzuki 1:d7561bf65def 19 while (1);
kosukesuzuki 1:d7561bf65def 20 }//2
kosukesuzuki 2:39ad330d9ec8 21
kosukesuzuki 1:d7561bf65def 22 ps.enableDefault();
kosukesuzuki 2:39ad330d9ec8 23
kosukesuzuki 2:39ad330d9ec8 24 float pressure = ps.readPressureMillibars();
kosukesuzuki 2:39ad330d9ec8 25 float altitude = ps.pressureToAltitudeMeters(pressure);
kosukesuzuki 2:39ad330d9ec8 26 float temperature = ps.readTemperatureC();
kosukesuzuki 2:39ad330d9ec8 27 pc.printf("p:%.2f\t mbar\ta:%.2f m\tt:%.2f deg C\r\n",pressure,altitude,temperature);
kosukesuzuki 2:39ad330d9ec8 28
kosukesuzuki 2:39ad330d9ec8 29 }
kosukesuzuki 2:39ad330d9ec8 30
kosukesuzuki 2:39ad330d9ec8 31
kosukesuzuki 2:39ad330d9ec8 32
kosukesuzuki 2:39ad330d9ec8 33 int main() {//1
kosukesuzuki 2:39ad330d9ec8 34 pc.printf("settig start\r\n");
kosukesuzuki 2:39ad330d9ec8 35 xbee.printf("settig start\r\n");
kosukesuzuki 2:39ad330d9ec8 36
kosukesuzuki 1:d7561bf65def 37 ///////////////////////////////
kosukesuzuki 2:39ad330d9ec8 38 /*if (!ps.init()){//2
kosukesuzuki 2:39ad330d9ec8 39 printf("Failed to autodetect pressure sensor!\r\n");
kosukesuzuki 2:39ad330d9ec8 40 while (1);
kosukesuzuki 2:39ad330d9ec8 41 }//2
kosukesuzuki 2:39ad330d9ec8 42 ps.enableDefault();*/
kosukesuzuki 2:39ad330d9ec8 43 ///////////////////////////////
kosukesuzuki 2:39ad330d9ec8 44
kosukesuzuki 1:d7561bf65def 45 /**************************************************************/
kosukesuzuki 2:39ad330d9ec8 46
kosukesuzuki 2:39ad330d9ec8 47
kosukesuzuki 1:d7561bf65def 48 //ここに気圧の標高の較正とGPSの接続を行う。
kosukesuzuki 2:39ad330d9ec8 49
kosukesuzuki 2:39ad330d9ec8 50
kosukesuzuki 1:d7561bf65def 51 /**************************************************************/
kosukesuzuki 2:39ad330d9ec8 52
kosukesuzuki 1:d7561bf65def 53 pc.printf("begin\r\n");
kosukesuzuki 1:d7561bf65def 54 xbee.printf("begin\r\n");
kosukesuzuki 2:39ad330d9ec8 55
kosukesuzuki 1:d7561bf65def 56 for (;;) {//2
kosukesuzuki 2:39ad330d9ec8 57
kosukesuzuki 0:5ffa13919073 58 //if (pc.readable()) xbee.putc(pc.getc());
kosukesuzuki 0:5ffa13919073 59 if (xbee.readable()) pc.putc(xbee.getc());
kosukesuzuki 0:5ffa13919073 60 wait_us(1);
kosukesuzuki 2:39ad330d9ec8 61
kosukesuzuki 2:39ad330d9ec8 62 char cmd1 = xbee.getc();//cmd共有
kosukesuzuki 1:d7561bf65def 63
kosukesuzuki 1:d7561bf65def 64 //機体の放出後→データを取る
kosukesuzuki 2:39ad330d9ec8 65 if(cmd1 == 'm'){//3
kosukesuzuki 0:5ffa13919073 66 pc.printf("start\r\n");
kosukesuzuki 0:5ffa13919073 67 t.start();
kosukesuzuki 2:39ad330d9ec8 68 cmd1 = 0;
kosukesuzuki 2:39ad330d9ec8 69
kosukesuzuki 2:39ad330d9ec8 70 press.attach(&pre, 1.0);
kosukesuzuki 2:39ad330d9ec8 71
kosukesuzuki 1:d7561bf65def 72 while(1){//4
kosukesuzuki 1:d7561bf65def 73 //if (pc.readable()) xbee.putc(pc.getc());
kosukesuzuki 1:d7561bf65def 74 if (xbee.readable()) pc.putc(xbee.getc());
kosukesuzuki 1:d7561bf65def 75 //printf("oo");
kosukesuzuki 1:d7561bf65def 76 wait_us(1);
kosukesuzuki 2:39ad330d9ec8 77
kosukesuzuki 1:d7561bf65def 78 /***********************************************************/
kosukesuzuki 1:d7561bf65def 79 //////////////////////////////////////
kosukesuzuki 2:39ad330d9ec8 80 //float pressure = ps.readPressureMillibars();
kosukesuzuki 2:39ad330d9ec8 81 //float altitude = ps.pressureToAltitudeMeters(pressure);
kosukesuzuki 2:39ad330d9ec8 82 //float temperature = ps.readTemperatureC();
kosukesuzuki 2:39ad330d9ec8 83 //pc.printf("p:%.2f\t mbar\ta:%.2f m\tt:%.2f deg C\r\n",pressure,altitude,temperature);
kosukesuzuki 2:39ad330d9ec8 84
kosukesuzuki 1:d7561bf65def 85 //////////////////////////////////////
kosukesuzuki 2:39ad330d9ec8 86
kosukesuzuki 1:d7561bf65def 87 //データ(気圧,GPS,地磁気)を取る。
kosukesuzuki 1:d7561bf65def 88 //データの保存を10回行い, 保存する。
kosukesuzuki 2:39ad330d9ec8 89
kosukesuzuki 2:39ad330d9ec8 90
kosukesuzuki 1:d7561bf65def 91 /***********************************************************/
kosukesuzuki 2:39ad330d9ec8 92 char cmd2 = xbee.getc();//共有化
kosukesuzuki 2:39ad330d9ec8 93 //xbee.printf("%x\r\n",cmd);
kosukesuzuki 2:39ad330d9ec8 94
kosukesuzuki 2:39ad330d9ec8 95
kosukesuzuki 1:d7561bf65def 96 //機体の着陸後→プログラムを終わらす。
kosukesuzuki 2:39ad330d9ec8 97 if(cmd2 == 'n'){//5
kosukesuzuki 1:d7561bf65def 98 pc.printf("end\r\n");
kosukesuzuki 1:d7561bf65def 99 pc.printf("time = %f",t.read());
kosukesuzuki 1:d7561bf65def 100 t.stop();
kosukesuzuki 2:39ad330d9ec8 101 cmd2 = 0;
kosukesuzuki 2:39ad330d9ec8 102
kosukesuzuki 1:d7561bf65def 103 return 0;
kosukesuzuki 2:39ad330d9ec8 104
kosukesuzuki 1:d7561bf65def 105 }//5
kosukesuzuki 2:39ad330d9ec8 106
kosukesuzuki 1:d7561bf65def 107 }//4
kosukesuzuki 2:39ad330d9ec8 108
kosukesuzuki 2:39ad330d9ec8 109
kosukesuzuki 1:d7561bf65def 110 }//3
kosukesuzuki 1:d7561bf65def 111 }//2
kosukesuzuki 1:d7561bf65def 112 }//1