Ina hackathon 2nd

Dependencies:   ADXL345_I2C Chainable_RGB_LED EEAB-P1 MMA8652FC Sht31 TinyGPS mbed

Fork of ina-hack-test by dondoko don

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?

UserRevisionLine numberNew 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 }