mbed-xbee(ATmode/pc対マイコン) ,LPS25HBの統合一段階目。 cmdの初期化が問題となっている。errorがでない。 確かめ付けました(2022/08/10) f
Dependencies: mbed LPS25HB_I2C
main.cpp@3:c0d472625a4b, 2022-08-10 (annotated)
- Committer:
- kosukesuzuki
- Date:
- Wed Aug 10 09:29:03 2022 +0000
- Revision:
- 3:c0d472625a4b
- Parent:
- 2:39ad330d9ec8
- Child:
- 4:0ab4ae3013ae
va1 - va2
Who changed what in which revision?
User | Revision | Line number | New 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 | 2:39ad330d9ec8 | 60 | |
kosukesuzuki | 2:39ad330d9ec8 | 61 | char cmd1 = xbee.getc();//cmd共有 |
kosukesuzuki | 3:c0d472625a4b | 62 | char 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 | 3:c0d472625a4b | 70 | cmd1 = 0; |
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 | 3:c0d472625a4b | 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 | 3:c0d472625a4b | 90 | char 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 | 3:c0d472625a4b | 102 | cmd2 = 0; |
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 |