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 02:44:55 2017 +0000
Revision:
5:09935c0aa297
Parent:
3:1df2b5938eb7
Child:
6:ae7b9f0a13f7
1Wire,GPS?????

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