Ina hackathon 2nd
Dependencies: ADXL345_I2C Chainable_RGB_LED EEAB-P1 MMA8652FC Sht31 TinyGPS mbed
Fork of ina-hack-test by
main.cpp@6:ae7b9f0a13f7, 2017-08-22 (annotated)
- Committer:
- sonson
- Date:
- Tue Aug 22 08:50:17 2017 +0000
- Revision:
- 6:ae7b9f0a13f7
- Parent:
- 5:09935c0aa297
- Child:
- 7:6a352003742d
??????Grove????
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
koyo_take | 0:97a57be77fbb | 1 | #include "mbed.h" |
koyo_take | 0:97a57be77fbb | 2 | #include "TinyGPS.h" |
koyo_take | 0:97a57be77fbb | 3 | #include "Eeabp1.h" |
koyo_take | 0:97a57be77fbb | 4 | |
sonson | 6:ae7b9f0a13f7 | 5 | #define TEST_ANALOG // WaterSensor(ハイインピ過ぎる),SoundSensor(動くが設計に問題有),MoistureSensor,LightSensor,MotionSensor |
sonson | 6:ae7b9f0a13f7 | 6 | //#define TEST_TEMP_HUMID //SHT31 |
sonson | 6:ae7b9f0a13f7 | 7 | //#define TEST_ACC // ADXL345 |
sonson | 6:ae7b9f0a13f7 | 8 | //#define TEST_DIGITAL_IN // Button,Switch |
sonson | 6:ae7b9f0a13f7 | 9 | //#define TEST_DIGITAL_OUT // Buzzer,LED |
sonson | 6:ae7b9f0a13f7 | 10 | //#define TEST_DIGITAL_IN_INTTERUPT |
sonson | 5:09935c0aa297 | 11 | |
sonson | 5:09935c0aa297 | 12 | // |
sonson | 5:09935c0aa297 | 13 | // 1Wire Support |
sonson | 5:09935c0aa297 | 14 | // |
sonson | 5:09935c0aa297 | 15 | I2C i2c(P0_30, P0_7); |
sonson | 5:09935c0aa297 | 16 | |
sonson | 5:09935c0aa297 | 17 | // 指定アドレスにアクセスする |
sonson | 5:09935c0aa297 | 18 | static void SendRegDataI2c(uint8_t address, uint8_t regdata) |
sonson | 5:09935c0aa297 | 19 | { |
sonson | 5:09935c0aa297 | 20 | i2c.start(); |
sonson | 5:09935c0aa297 | 21 | i2c.write((address << 1)); |
sonson | 5:09935c0aa297 | 22 | i2c.write(regdata); |
sonson | 5:09935c0aa297 | 23 | i2c.stop(); |
sonson | 5:09935c0aa297 | 24 | wait_us(1000); |
sonson | 5:09935c0aa297 | 25 | } |
sonson | 5:09935c0aa297 | 26 | |
sonson | 5:09935c0aa297 | 27 | // 指定アドレスに1バイトデータを送信する |
sonson | 5:09935c0aa297 | 28 | static void SendRegByteDataI2c(uint8_t address, uint8_t regaddr, uint8_t data) |
sonson | 5:09935c0aa297 | 29 | { |
sonson | 5:09935c0aa297 | 30 | i2c.start(); |
sonson | 5:09935c0aa297 | 31 | i2c.write((address << 1)); |
sonson | 5:09935c0aa297 | 32 | i2c.write(regaddr); |
sonson | 5:09935c0aa297 | 33 | i2c.write(data); |
sonson | 5:09935c0aa297 | 34 | i2c.stop(); |
sonson | 5:09935c0aa297 | 35 | wait_us(1000); |
sonson | 5:09935c0aa297 | 36 | } |
sonson | 5:09935c0aa297 | 37 | |
sonson | 5:09935c0aa297 | 38 | static void RecieveDataI2c(uint8_t address, uint8_t reg1, uint8_t reg2, uint8_t* data, uint8_t datacount) |
sonson | 5:09935c0aa297 | 39 | { |
sonson | 5:09935c0aa297 | 40 | i2c.start(); |
sonson | 5:09935c0aa297 | 41 | i2c.write((address << 1)); |
sonson | 5:09935c0aa297 | 42 | i2c.write(reg1); |
sonson | 5:09935c0aa297 | 43 | i2c.write(reg2); |
sonson | 5:09935c0aa297 | 44 | i2c.start(); |
sonson | 5:09935c0aa297 | 45 | i2c.write((address << 1) + 1); |
sonson | 5:09935c0aa297 | 46 | |
sonson | 5:09935c0aa297 | 47 | if (datacount == 1) |
sonson | 5:09935c0aa297 | 48 | { |
sonson | 5:09935c0aa297 | 49 | *data = i2c.read(false); |
sonson | 5:09935c0aa297 | 50 | } |
sonson | 5:09935c0aa297 | 51 | else |
sonson | 5:09935c0aa297 | 52 | { |
sonson | 5:09935c0aa297 | 53 | int i = 0; |
sonson | 5:09935c0aa297 | 54 | for (i = 0; i < datacount - 1; i++) |
sonson | 5:09935c0aa297 | 55 | { |
sonson | 5:09935c0aa297 | 56 | *(data + i) = i2c.read(false); |
sonson | 5:09935c0aa297 | 57 | } |
sonson | 5:09935c0aa297 | 58 | *(data + datacount - 1) = i2c.read(true); |
sonson | 5:09935c0aa297 | 59 | } |
sonson | 5:09935c0aa297 | 60 | i2c.stop(); |
sonson | 5:09935c0aa297 | 61 | wait_us(1000); |
sonson | 5:09935c0aa297 | 62 | |
sonson | 5:09935c0aa297 | 63 | } |
sonson | 5:09935c0aa297 | 64 | |
sonson | 5:09935c0aa297 | 65 | static void Reset1Wire() |
sonson | 5:09935c0aa297 | 66 | { |
sonson | 5:09935c0aa297 | 67 | SendRegDataI2c(0x18, 0xF0); // Device Reset (After Power-Up) |
sonson | 5:09935c0aa297 | 68 | } |
sonson | 5:09935c0aa297 | 69 | |
sonson | 5:09935c0aa297 | 70 | static float GetTempFrom1Wire() |
sonson | 5:09935c0aa297 | 71 | { |
sonson | 5:09935c0aa297 | 72 | SendRegDataI2c(0x18, 0xB4); // 1-Wire Reset (To Begin or End 1-Wire Communication) |
sonson | 5:09935c0aa297 | 73 | wait_us(10000); |
sonson | 5:09935c0aa297 | 74 | SendRegByteDataI2c(0x18, 0xA5, 0xCC); // CCh SKIP ROM COMMAND |
sonson | 5:09935c0aa297 | 75 | SendRegByteDataI2c(0x18, 0xA5, 0x44); // 44h CONVERT TEMPERATURE |
sonson | 5:09935c0aa297 | 76 | wait_us(10000); |
sonson | 5:09935c0aa297 | 77 | SendRegDataI2c(0x18, 0xB4); // 1-Wire Reset (To Begin or End 1-Wire Communication) |
sonson | 5:09935c0aa297 | 78 | wait_us(10000); |
sonson | 5:09935c0aa297 | 79 | SendRegByteDataI2c(0x18, 0xA5, 0xCC); // CCh SKIP ROM COMMAND |
sonson | 5:09935c0aa297 | 80 | SendRegByteDataI2c(0x18, 0xA5, 0xBE); // BEh READ SCRATCHPAD |
sonson | 5:09935c0aa297 | 81 | wait_us(10000); |
sonson | 5:09935c0aa297 | 82 | //Read from DS |
sonson | 5:09935c0aa297 | 83 | // LE 1-2バイト目が温度 0.0625℃精度 |
sonson | 5:09935c0aa297 | 84 | uint8_t l = 0; |
sonson | 5:09935c0aa297 | 85 | uint8_t data[8]; |
sonson | 5:09935c0aa297 | 86 | for (l = 0; l < 8; l++) |
sonson | 5:09935c0aa297 | 87 | { |
sonson | 5:09935c0aa297 | 88 | SendRegDataI2c(0x18, 0x96); // 1-Wire Read Byte Command(0x96) |
sonson | 5:09935c0aa297 | 89 | wait_us(10000); |
sonson | 5:09935c0aa297 | 90 | RecieveDataI2c(0x18, 0xE1, 0xE1, &data[l], 1); // Read from Pointer's DATA(0xE1) |
sonson | 5:09935c0aa297 | 91 | wait_us(10000); |
sonson | 5:09935c0aa297 | 92 | } |
sonson | 5:09935c0aa297 | 93 | //board.debug("TEMP:0x%02X%02X\r\n",data[1],data[0]); |
sonson | 5:09935c0aa297 | 94 | int16_t tempp = data[0] + (data[1] << 8); |
sonson | 5:09935c0aa297 | 95 | return tempp*0.0625; |
sonson | 5:09935c0aa297 | 96 | } |
sonson | 5:09935c0aa297 | 97 | // |
sonson | 5:09935c0aa297 | 98 | // GPS Support |
sonson | 5:09935c0aa297 | 99 | // |
sonson | 5:09935c0aa297 | 100 | //#define GPSDEBUG |
sonson | 5:09935c0aa297 | 101 | TinyGPS gps; |
sonson | 5:09935c0aa297 | 102 | SPI spi(P0_25,P0_28,P0_29,P0_24); |
sonson | 5:09935c0aa297 | 103 | DigitalOut gpsreset(P0_21); |
sonson | 5:09935c0aa297 | 104 | DigitalOut gpspower(P0_20); |
sonson | 5:09935c0aa297 | 105 | bool isGpsInitFirst = true; |
sonson | 5:09935c0aa297 | 106 | bool gpsPowerOn = false; |
sonson | 5:09935c0aa297 | 107 | static bool needGpsRefresh; |
sonson | 5:09935c0aa297 | 108 | static uint8_t gpsTick; |
sonson | 5:09935c0aa297 | 109 | static long latitude, longitude; |
sonson | 5:09935c0aa297 | 110 | static int16_t altitude; |
sonson | 5:09935c0aa297 | 111 | static uint8_t spiData; |
sonson | 5:09935c0aa297 | 112 | #ifdef GPSDEBUG |
sonson | 5:09935c0aa297 | 113 | static uint8_t buffer[1024]; |
sonson | 5:09935c0aa297 | 114 | #endif |
sonson | 5:09935c0aa297 | 115 | static unsigned long fix_age; |
sonson | 5:09935c0aa297 | 116 | |
sonson | 5:09935c0aa297 | 117 | static void gpsReset() |
sonson | 5:09935c0aa297 | 118 | { |
sonson | 5:09935c0aa297 | 119 | gpsreset= 0; |
sonson | 5:09935c0aa297 | 120 | wait_us(10000); |
sonson | 5:09935c0aa297 | 121 | gpsreset= 1; |
sonson | 5:09935c0aa297 | 122 | wait_us(200000); |
sonson | 5:09935c0aa297 | 123 | } |
sonson | 5:09935c0aa297 | 124 | |
sonson | 5:09935c0aa297 | 125 | static void gpsTogglePower() |
sonson | 5:09935c0aa297 | 126 | { |
sonson | 5:09935c0aa297 | 127 | gpspower= 1; |
sonson | 5:09935c0aa297 | 128 | wait_us(200000); |
sonson | 5:09935c0aa297 | 129 | gpspower= 0; |
sonson | 5:09935c0aa297 | 130 | } |
sonson | 5:09935c0aa297 | 131 | // GPS電源を有効にします |
sonson | 5:09935c0aa297 | 132 | // 電源をOFFにした場合でも、GPS座標を保持する為に低電力状態で動作します。 |
sonson | 5:09935c0aa297 | 133 | static void GpsPower(bool state) |
sonson | 5:09935c0aa297 | 134 | { |
sonson | 5:09935c0aa297 | 135 | if(state == true) { |
sonson | 5:09935c0aa297 | 136 | if(gpsPowerOn == false) { |
sonson | 5:09935c0aa297 | 137 | if(isGpsInitFirst == true) gpsReset();// GPS Reset(保持座標が全部消える) |
sonson | 5:09935c0aa297 | 138 | gpsTogglePower(); // GPS Wakeup(ToggleでON/OFFする) |
sonson | 5:09935c0aa297 | 139 | if(isGpsInitFirst == true) { |
sonson | 5:09935c0aa297 | 140 | // GPS用SPIを初期化する |
sonson | 5:09935c0aa297 | 141 | spi.format(8,1); |
sonson | 5:09935c0aa297 | 142 | spi.frequency(1000000); |
sonson | 5:09935c0aa297 | 143 | isGpsInitFirst = false; |
sonson | 5:09935c0aa297 | 144 | } |
sonson | 5:09935c0aa297 | 145 | gpsPowerOn = true; |
sonson | 5:09935c0aa297 | 146 | } |
sonson | 5:09935c0aa297 | 147 | } else { |
sonson | 5:09935c0aa297 | 148 | if(gpsPowerOn == true) { |
sonson | 5:09935c0aa297 | 149 | gpsTogglePower(); // GPS Wakeup(ToggleでON/OFFする) |
sonson | 5:09935c0aa297 | 150 | gpsPowerOn = false; |
sonson | 5:09935c0aa297 | 151 | } |
sonson | 5:09935c0aa297 | 152 | } |
sonson | 5:09935c0aa297 | 153 | } |
sonson | 5:09935c0aa297 | 154 | |
sonson | 5:09935c0aa297 | 155 | // GPS処理用のループです |
sonson | 5:09935c0aa297 | 156 | // 2000ms以内のタイミングで必ず呼んで下さい |
sonson | 5:09935c0aa297 | 157 | static void LoopGps() |
sonson | 5:09935c0aa297 | 158 | { |
sonson | 5:09935c0aa297 | 159 | if(gpsPowerOn == true) { |
sonson | 5:09935c0aa297 | 160 | // データが無い時は、0xB4,0xA7を繰り返す |
sonson | 5:09935c0aa297 | 161 | // 有効なデータが来るまで、FIFOを最大1/4読む |
sonson | 5:09935c0aa297 | 162 | for(int j=0;j<512;j++){ |
sonson | 5:09935c0aa297 | 163 | spiData = spi.write(0x00); |
sonson | 5:09935c0aa297 | 164 | if(spiData != 0xB4 && spiData != 0xA7)break; |
sonson | 5:09935c0aa297 | 165 | } |
sonson | 5:09935c0aa297 | 166 | if(spiData == 0xB4 || spiData == 0xA7) return; // 有効なデータが無かった |
sonson | 5:09935c0aa297 | 167 | // NMEAをデコードする |
sonson | 5:09935c0aa297 | 168 | // 0xB4がSPIデータ終端 各NMEAセンテンスは0x0d,0x0Aでセパレートされている為、一度だけのリードで問題無い。 |
sonson | 5:09935c0aa297 | 169 | #ifdef GPSDEBUG |
sonson | 5:09935c0aa297 | 170 | int i=0; |
sonson | 5:09935c0aa297 | 171 | buffer[i] = spiData; |
sonson | 5:09935c0aa297 | 172 | i++; |
sonson | 5:09935c0aa297 | 173 | #endif |
sonson | 5:09935c0aa297 | 174 | while(1) { |
sonson | 5:09935c0aa297 | 175 | spiData = spi.write(0x00); |
sonson | 5:09935c0aa297 | 176 | if(spiData == 0xB4) { // 終端検出 |
sonson | 5:09935c0aa297 | 177 | #ifdef GPSDEBUG |
sonson | 5:09935c0aa297 | 178 | buffer[i] = 0x00; |
sonson | 5:09935c0aa297 | 179 | #endif |
sonson | 5:09935c0aa297 | 180 | break; |
sonson | 5:09935c0aa297 | 181 | } |
sonson | 5:09935c0aa297 | 182 | #ifdef GPSDEBUG |
sonson | 5:09935c0aa297 | 183 | buffer[i] = spiData; |
sonson | 5:09935c0aa297 | 184 | i++; |
sonson | 5:09935c0aa297 | 185 | #endif |
sonson | 5:09935c0aa297 | 186 | gps.encode(spiData); |
sonson | 5:09935c0aa297 | 187 | } |
sonson | 5:09935c0aa297 | 188 | gps.get_position(&latitude, &longitude, &fix_age); |
sonson | 5:09935c0aa297 | 189 | altitude = gps.altitude(); // 高度取得は正しく動かない? |
sonson | 5:09935c0aa297 | 190 | /* |
sonson | 5:09935c0aa297 | 191 | #ifdef GPSDEBUG |
sonson | 5:09935c0aa297 | 192 | pc.debug("%s", buffer); // NMEAデータ表示 |
sonson | 5:09935c0aa297 | 193 | pc.debug("POS:%d,%d,%d\r\n", latitude,longitude,altitude); // GPS情報表示 |
sonson | 5:09935c0aa297 | 194 | #endif |
sonson | 5:09935c0aa297 | 195 | */ |
sonson | 5:09935c0aa297 | 196 | // GPS状態判定の為、GPS座標を定期的にリセットする |
sonson | 5:09935c0aa297 | 197 | if(needGpsRefresh == true) { |
sonson | 5:09935c0aa297 | 198 | gps.reset_ready(); |
sonson | 5:09935c0aa297 | 199 | gps.reset_pos(); |
sonson | 5:09935c0aa297 | 200 | needGpsRefresh = false; |
sonson | 5:09935c0aa297 | 201 | } |
sonson | 5:09935c0aa297 | 202 | } |
sonson | 5:09935c0aa297 | 203 | } |
sonson | 5:09935c0aa297 | 204 | |
koyo_take | 1:195da8230785 | 205 | #if defined(TEST_DIGITAL_IN_INTTERUPT) |
koyo_take | 1:195da8230785 | 206 | Eeabp1 *gp; |
koyo_take | 1:195da8230785 | 207 | bool led_on = true; |
koyo_take | 1:195da8230785 | 208 | |
koyo_take | 1:195da8230785 | 209 | void flip() { |
koyo_take | 1:195da8230785 | 210 | if (led_on) |
koyo_take | 1:195da8230785 | 211 | gp->setLedState(LED_OFF); |
koyo_take | 1:195da8230785 | 212 | else |
koyo_take | 1:195da8230785 | 213 | gp->setLedState(LED_ON); |
koyo_take | 1:195da8230785 | 214 | led_on = !led_on; |
koyo_take | 1:195da8230785 | 215 | } |
koyo_take | 1:195da8230785 | 216 | #endif /* defined(TEST_DIGITAL_IN_INTTERUPT) */ |
koyo_take | 1:195da8230785 | 217 | |
koyo_take | 0:97a57be77fbb | 218 | int main(void) |
koyo_take | 0:97a57be77fbb | 219 | { |
koyo_take | 0:97a57be77fbb | 220 | Eeabp1 board; |
koyo_take | 0:97a57be77fbb | 221 | int ret = 0; |
koyo_take | 0:97a57be77fbb | 222 | |
koyo_take | 1:195da8230785 | 223 | #if defined(TEST_DIGITAL_IN_INTTERUPT) |
koyo_take | 1:195da8230785 | 224 | gp = &board; |
koyo_take | 1:195da8230785 | 225 | led_on = true; |
koyo_take | 1:195da8230785 | 226 | #endif /* defined(TEST_DIGITAL_IN_INTTERUPT) */ |
koyo_take | 1:195da8230785 | 227 | |
koyo_take | 1:195da8230785 | 228 | board.setLedState(LED_ON); |
koyo_take | 0:97a57be77fbb | 229 | board.debug("Hello ina-hack!\r\n"); |
koyo_take | 0:97a57be77fbb | 230 | |
koyo_take | 0:97a57be77fbb | 231 | board.setGrovePower(true); |
sonson | 5:09935c0aa297 | 232 | |
sonson | 6:ae7b9f0a13f7 | 233 | /* |
sonson | 5:09935c0aa297 | 234 | // GPSデモ |
sonson | 5:09935c0aa297 | 235 | GpsPower(true); // バッテリー駆動の場合、GPS電源をこまめに切ることを推奨します |
sonson | 5:09935c0aa297 | 236 | while(true) |
sonson | 5:09935c0aa297 | 237 | { |
sonson | 5:09935c0aa297 | 238 | LoopGps(); // バッファが溢れる迄(目安2秒)にこのループを回して下さい。 |
sonson | 5:09935c0aa297 | 239 | board.debug("POS:%d,%d,%d\r\n", latitude,longitude,altitude); // GPS情報表示 |
sonson | 5:09935c0aa297 | 240 | wait(1); |
sonson | 5:09935c0aa297 | 241 | // GPSの電波状況が悪くなった場合、最終座標で固定される |
sonson | 5:09935c0aa297 | 242 | // 10秒毎にGPSが測位できているか再確認する |
sonson | 5:09935c0aa297 | 243 | if(gpsTick >= 10) { |
sonson | 5:09935c0aa297 | 244 | gpsTick =0; |
sonson | 5:09935c0aa297 | 245 | needGpsRefresh = true; //このフラグを立てることによりリフレッシュする。 |
sonson | 5:09935c0aa297 | 246 | } else { |
sonson | 5:09935c0aa297 | 247 | gpsTick ++; |
sonson | 5:09935c0aa297 | 248 | } |
sonson | 5:09935c0aa297 | 249 | } |
sonson | 6:ae7b9f0a13f7 | 250 | */ |
sonson | 5:09935c0aa297 | 251 | |
sonson | 5:09935c0aa297 | 252 | /* |
sonson | 5:09935c0aa297 | 253 | // 1Wireデモ |
sonson | 5:09935c0aa297 | 254 | while(1){ |
sonson | 5:09935c0aa297 | 255 | wait(1); |
sonson | 5:09935c0aa297 | 256 | board.debug("TEMP:%f\r\n", GetTempFrom1Wire()); |
sonson | 5:09935c0aa297 | 257 | } |
sonson | 5:09935c0aa297 | 258 | */ |
koyo_take | 1:195da8230785 | 259 | #if defined(TEST_DIGITAL_OUT) || defined(TEST_DIGITAL_IN) || defined(TEST_DIGITAL_IN_INTTERUPT) |
koyo_take | 1:195da8230785 | 260 | board.setGrovePortType(GROVE_CH1, GROVE_DIO); |
koyo_take | 1:195da8230785 | 261 | board.setGrovePortType(GROVE_CH2, GROVE_DIO); |
koyo_take | 1:195da8230785 | 262 | #endif |
koyo_take | 1:195da8230785 | 263 | #if defined(TEST_DIGITAL_OUT) |
koyo_take | 1:195da8230785 | 264 | board.setGroveDioDirection(GROVE_CH1, GROVE_DIO_OUT); |
koyo_take | 1:195da8230785 | 265 | board.setGroveDioDirection(GROVE_CH2, GROVE_DIO_OUT); |
koyo_take | 1:195da8230785 | 266 | #endif /* defined(TEST_DIGITAL_OUT) */ |
koyo_take | 1:195da8230785 | 267 | #if defined(TEST_DIGITAL_IN) |
koyo_take | 1:195da8230785 | 268 | board.setGroveDioDirection(GROVE_CH1, GROVE_DIO_IN); |
koyo_take | 1:195da8230785 | 269 | board.setGroveDioDirection(GROVE_CH2, GROVE_DIO_IN); |
koyo_take | 1:195da8230785 | 270 | #endif /* defined(TEST_DIGITAL_IN) */ |
koyo_take | 1:195da8230785 | 271 | #if defined(TEST_DIGITAL_IN_INTTERUPT) |
koyo_take | 1:195da8230785 | 272 | board.setGroveDioDirection(GROVE_CH1, GROVE_DIO_IN, flip); |
koyo_take | 1:195da8230785 | 273 | board.setGroveDioDirection(GROVE_CH2, GROVE_DIO_IN, flip); |
koyo_take | 1:195da8230785 | 274 | #endif /* defined(TEST_DIGITAL_IN_INTTERUPT) */ |
koyo_take | 1:195da8230785 | 275 | #if defined(TEST_ANALOG) |
koyo_take | 1:195da8230785 | 276 | board.setGrovePortType(GROVE_CH1, GROVE_ANALOG); |
koyo_take | 1:195da8230785 | 277 | board.setGrovePortType(GROVE_CH2, GROVE_ANALOG); |
koyo_take | 1:195da8230785 | 278 | #endif /* defined(TEST_ANALOG) */ |
koyo_take | 1:195da8230785 | 279 | |
koyo_take | 1:195da8230785 | 280 | #if defined(TEST_LORA) |
koyo_take | 0:97a57be77fbb | 281 | ret = board.setLoRaPower(true); |
koyo_take | 0:97a57be77fbb | 282 | if (ret != 0) { |
koyo_take | 0:97a57be77fbb | 283 | board.debug("error %d\r\n", ret); |
koyo_take | 0:97a57be77fbb | 284 | } |
koyo_take | 1:195da8230785 | 285 | #endif /* defined(TEST_LORA) */ |
koyo_take | 1:195da8230785 | 286 | #if defined(TEST_TEMP_HUMID) |
koyo_take | 1:195da8230785 | 287 | ret = board.enableTempHumidSensor(); |
koyo_take | 1:195da8230785 | 288 | if (ret != 0) |
koyo_take | 1:195da8230785 | 289 | board.debug("error %d\r\n", ret); |
koyo_take | 1:195da8230785 | 290 | #endif /* TEST_TEMP_HUMID */ |
koyo_take | 1:195da8230785 | 291 | #if defined(TEST_ACC) |
koyo_take | 1:195da8230785 | 292 | ret = board.enableAccelerometer(); |
koyo_take | 1:195da8230785 | 293 | if (ret != 0) |
koyo_take | 1:195da8230785 | 294 | board.debug("error %d\r\n", ret); |
koyo_take | 1:195da8230785 | 295 | #endif /* defined(TEST_ACC) */ |
koyo_take | 0:97a57be77fbb | 296 | |
koyo_take | 1:195da8230785 | 297 | #if defined(TEST_LORA) |
koyo_take | 0:97a57be77fbb | 298 | int i = 0; |
koyo_take | 1:195da8230785 | 299 | #endif /* defined(TEST_LORA) */ |
koyo_take | 1:195da8230785 | 300 | #if defined(TEST_DIGITAL_OUT) |
koyo_take | 1:195da8230785 | 301 | bool on = true; |
koyo_take | 1:195da8230785 | 302 | #endif /* defined(TEST_DIGITAL_OUT) */ |
koyo_take | 0:97a57be77fbb | 303 | do { |
sonson | 5:09935c0aa297 | 304 | wait(0.5); |
koyo_take | 0:97a57be77fbb | 305 | board.loop(); |
koyo_take | 1:195da8230785 | 306 | #if defined(TEST_DIGITAL_OUT) |
koyo_take | 1:195da8230785 | 307 | if (on) { |
sonson | 6:ae7b9f0a13f7 | 308 | //board.setGroveDio(GROVE_CH1, GROVE_DIO_HIGH); // SIG1&2両方変更したい場合 |
sonson | 6:ae7b9f0a13f7 | 309 | board.setGroveDio(GROVE_CH1, GROVE_SIG1 , GROVE_DIO_HIGH); |
sonson | 6:ae7b9f0a13f7 | 310 | board.setGroveDio(GROVE_CH1, GROVE_SIG2 , GROVE_DIO_LOW); |
sonson | 6:ae7b9f0a13f7 | 311 | board.setGroveDio(GROVE_CH2, GROVE_SIG1 , GROVE_DIO_HIGH); |
sonson | 6:ae7b9f0a13f7 | 312 | board.setGroveDio(GROVE_CH2, GROVE_SIG2 , GROVE_DIO_LOW); |
sonson | 5:09935c0aa297 | 313 | } |
sonson | 5:09935c0aa297 | 314 | else { |
sonson | 6:ae7b9f0a13f7 | 315 | board.setGroveDio(GROVE_CH1, GROVE_SIG1 , GROVE_DIO_LOW); |
sonson | 6:ae7b9f0a13f7 | 316 | board.setGroveDio(GROVE_CH1, GROVE_SIG2 , GROVE_DIO_HIGH); |
sonson | 6:ae7b9f0a13f7 | 317 | board.setGroveDio(GROVE_CH2, GROVE_SIG1 , GROVE_DIO_LOW); |
sonson | 6:ae7b9f0a13f7 | 318 | board.setGroveDio(GROVE_CH2, GROVE_SIG2 , GROVE_DIO_HIGH); |
koyo_take | 1:195da8230785 | 319 | } |
koyo_take | 1:195da8230785 | 320 | on = !on; |
koyo_take | 1:195da8230785 | 321 | #endif /* defined(TEST_DIGITAL_OUT) */ |
koyo_take | 1:195da8230785 | 322 | #if defined(TEST_DIGITAL_IN) |
koyo_take | 1:195da8230785 | 323 | board.debug("------------\r\n"); |
koyo_take | 1:195da8230785 | 324 | board.debug("P1 S1: %d\r\n", board.getGroveDio(GROVE_CH1, GROVE_SIG1)); |
koyo_take | 1:195da8230785 | 325 | board.debug("P1 S2: %d\r\n", board.getGroveDio(GROVE_CH1, GROVE_SIG2)); |
koyo_take | 1:195da8230785 | 326 | board.debug("P2 S1: %d\r\n", board.getGroveDio(GROVE_CH2, GROVE_SIG1)); |
koyo_take | 1:195da8230785 | 327 | board.debug("P2 S2: %d\r\n", board.getGroveDio(GROVE_CH2, GROVE_SIG2)); |
koyo_take | 1:195da8230785 | 328 | #endif /* defined(TEST_DIGITAL_IN) */ |
koyo_take | 1:195da8230785 | 329 | #if defined(TEST_ANALOG) |
koyo_take | 1:195da8230785 | 330 | board.debug("------------\r\n"); |
koyo_take | 1:195da8230785 | 331 | board.debug("P1 S1: %2.2f\r\n", board.getGroveAnalog(GROVE_CH1, GROVE_SIG1)); |
koyo_take | 1:195da8230785 | 332 | board.debug("P1 S2: %2.2f\r\n", board.getGroveAnalog(GROVE_CH1, GROVE_SIG2)); |
koyo_take | 1:195da8230785 | 333 | board.debug("P2 S1: %2.2f\r\n", board.getGroveAnalog(GROVE_CH2, GROVE_SIG1)); |
koyo_take | 1:195da8230785 | 334 | board.debug("P2 S2: %2.2f\r\n", board.getGroveAnalog(GROVE_CH2, GROVE_SIG2)); |
koyo_take | 1:195da8230785 | 335 | #endif /* defined(TEST_ANALOG) */ |
koyo_take | 1:195da8230785 | 336 | #if defined(TEST_TEMP_HUMID) |
koyo_take | 1:195da8230785 | 337 | board.debug("------------\r\n"); |
koyo_take | 1:195da8230785 | 338 | board.debug("Temp: %2.2f, Humid: %2.2f\r\n", board.getTemp(), board.getHumid()); |
koyo_take | 1:195da8230785 | 339 | #endif /* defined(TEST_ANALOG) */ |
koyo_take | 1:195da8230785 | 340 | #if defined(TEST_ACC) |
koyo_take | 1:195da8230785 | 341 | int x, y, z; |
koyo_take | 1:195da8230785 | 342 | board.getAcc(&x, &y, &z); |
koyo_take | 1:195da8230785 | 343 | board.debug("------------\r\n"); |
koyo_take | 1:195da8230785 | 344 | board.debug("X: %d, Y: %d, Z: %d\r\n", x, y, z); |
koyo_take | 1:195da8230785 | 345 | #endif /* defined(TEST_ACC) */ |
koyo_take | 1:195da8230785 | 346 | |
koyo_take | 1:195da8230785 | 347 | #if defined(TEST_LORA) |
koyo_take | 0:97a57be77fbb | 348 | board.sendLoRaString("hello %d", i++); |
koyo_take | 1:195da8230785 | 349 | #endif /* defined(TEST_LORA) */ |
sonson | 5:09935c0aa297 | 350 | } while (true); |
sonson | 5:09935c0aa297 | 351 | } |