mbed-xbee(ATmode/pc対マイコン) ,LPS25HBの統合一段階目。 cmdの初期化が問題となっている。errorがでない。 確かめ付けました(2022/08/10)

Dependencies:   mbed LPS25HB_I2C

Committer:
kosukesuzuki
Date:
Wed Aug 10 10:00:16 2022 +0000
Revision:
4:0ab4ae3013ae
Parent:
3:c0d472625a4b
xbee-LPC(20220810)

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 4:0ab4ae3013ae 27 //pc.printf("p:%.2f\t mbar\ta:%.2f m\tt:%.2f deg C\r\n",pressure,altitude,temperature);
kosukesuzuki 4:0ab4ae3013ae 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 2:39ad330d9ec8 60
kosukesuzuki 2:39ad330d9ec8 61 char cmd1 = xbee.getc();//cmd共有
kosukesuzuki 4:0ab4ae3013ae 62 int va1 = xbee.readable();//これ1にならないと一向に進まないよ
kosukesuzuki 3:c0d472625a4b 63
kosukesuzuki 3:c0d472625a4b 64 if(va1==1){//3 //これいいがいは永遠にまつ。
kosukesuzuki 3:c0d472625a4b 65 wait_us(1);
kosukesuzuki 3:c0d472625a4b 66 //機体の放出後→データを取る
kosukesuzuki 3:c0d472625a4b 67 if(cmd1 == 'm'){//4
kosukesuzuki 3:c0d472625a4b 68 pc.printf("start\r\n");
kosukesuzuki 3:c0d472625a4b 69 t.start();
kosukesuzuki 4:0ab4ae3013ae 70 cmd1 = 'a';
kosukesuzuki 2:39ad330d9ec8 71
kosukesuzuki 3:c0d472625a4b 72 press.attach(&pre, 1.0);
kosukesuzuki 2:39ad330d9ec8 73
kosukesuzuki 3:c0d472625a4b 74 while(1){//4
kosukesuzuki 3:c0d472625a4b 75 //if (pc.readable()) xbee.putc(pc.getc());
kosukesuzuki 3:c0d472625a4b 76 if (xbee.readable()) pc.putc(xbee.getc());
kosukesuzuki 3:c0d472625a4b 77 //printf("oo");
kosukesuzuki 4:0ab4ae3013ae 78
kosukesuzuki 3:c0d472625a4b 79 /***********************************************************/
kosukesuzuki 3:c0d472625a4b 80 //float pressure = ps.readPressureMillibars();
kosukesuzuki 3:c0d472625a4b 81 //float altitude = ps.pressureToAltitudeMeters(pressure);
kosukesuzuki 3:c0d472625a4b 82 //float temperature = ps.readTemperatureC();
kosukesuzuki 3:c0d472625a4b 83 //pc.printf("p:%.2f\t mbar\ta:%.2f m\tt:%.2f deg C\r\n",pressure,altitude,temperature);
kosukesuzuki 3:c0d472625a4b 84
kosukesuzuki 3:c0d472625a4b 85 //データ(気圧,GPS,地磁気)を取る。
kosukesuzuki 3:c0d472625a4b 86 //データの保存を10回行い, 保存する。
kosukesuzuki 2:39ad330d9ec8 87
kosukesuzuki 3:c0d472625a4b 88 /***********************************************************/
kosukesuzuki 3:c0d472625a4b 89 char cmd2 = xbee.getc();
kosukesuzuki 4:0ab4ae3013ae 90 int va2 = xbee.readable();//これ1にならないと一向に進まないよ
kosukesuzuki 3:c0d472625a4b 91
kosukesuzuki 3:c0d472625a4b 92 //xbee.printf("%x\r\n",cmd);
kosukesuzuki 3:c0d472625a4b 93
kosukesuzuki 3:c0d472625a4b 94 if(va2 == 1){//5
kosukesuzuki 3:c0d472625a4b 95 wait_us(1);
kosukesuzuki 3:c0d472625a4b 96 //機体の着陸後→プログラムを終わらす。
kosukesuzuki 3:c0d472625a4b 97 if(cmd2 == 'n'){//5
kosukesuzuki 3:c0d472625a4b 98 press.detach();
kosukesuzuki 3:c0d472625a4b 99 pc.printf("end\r\n");
kosukesuzuki 3:c0d472625a4b 100 pc.printf("time = %f",t.read());
kosukesuzuki 3:c0d472625a4b 101 t.stop();
kosukesuzuki 4:0ab4ae3013ae 102 cmd2 = 'a';
kosukesuzuki 2:39ad330d9ec8 103
kosukesuzuki 3:c0d472625a4b 104 return 0;
kosukesuzuki 2:39ad330d9ec8 105
kosukesuzuki 3:c0d472625a4b 106 }//5
kosukesuzuki 3:c0d472625a4b 107 va2 = 0;
kosukesuzuki 3:c0d472625a4b 108 }//5
kosukesuzuki 3:c0d472625a4b 109 }//4
kosukesuzuki 1:d7561bf65def 110 }//4
kosukesuzuki 2:39ad330d9ec8 111
kosukesuzuki 3:c0d472625a4b 112 va1 =0;
kosukesuzuki 1:d7561bf65def 113 }//3
kosukesuzuki 1:d7561bf65def 114 }//2
kosukesuzuki 1:d7561bf65def 115 }//1