mbed-xbee(ATmode/pc対マイコン) ,LPS25HBの統合一段階目。 cmdの初期化が問題となっている。errorがでない。 確かめ付けました(2022/08/10)
Dependencies: mbed LPS25HB_I2C
main.cpp@2:39ad330d9ec8, 2022-08-09 (annotated)
- Committer:
- kosukesuzuki
- Date:
- Tue Aug 09 14:07:28 2022 +0000
- Revision:
- 2:39ad330d9ec8
- Parent:
- 1:d7561bf65def
- Child:
- 3:c0d472625a4b
xbee-LPS
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 | 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 |