Ina hackathon 2nd

Dependencies:   ADXL345_I2C Chainable_RGB_LED EEAB-P1 MMA8652FC Sht31 TinyGPS mbed

Fork of ina-hack-test by dondoko don

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?

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"
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 }