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