Measured results of an XBee wireless sensor device are displayed a LCD on Nucleo board with an XBee coordinator which is in API mode.
Dependencies: TextLCD mbed xbee sample04_sens
Please refer to the following site for the details:
- http://developer.mbed.org/users/bokunimowakaru/code/xbee/wiki/Homepage (English)
- http://www.geocities.jp/bokunimowakaru/diy/xbee/xbee-nucleo.html (Japanese)
Diff: main.cpp
- Revision:
- 4:09c0f8f67e63
- Parent:
- 0:0de2116533e1
- Child:
- 5:173a41d73454
--- a/main.cpp Sun Sep 21 02:25:24 2014 +0000 +++ b/main.cpp Tue Sep 23 14:06:57 2014 +0000 @@ -20,16 +20,15 @@ 解説: http://www.geocities.jp/bokunimowakaru/diy/xbee/xbee-nucleo.html - Copyright (c) 2010-2012 Wataru KUNINO + Copyright (c) 2010-2014 Wataru KUNINO http://www.geocities.jp/bokunimowakaru/ *********************************************************************/ #include <xbee.h> #include "TextLCD.h" +#define FORCE_INTERVAL 10 // 1~254 データ要求間隔 TextLCD lcd(PA_9, PC_7, PB_5, PB_4, PB_10, PA_8); // rs, e, d4-d7 - -byte dev_sens[] = {0x00,0x13,0xA2,0x00,0x40,0x00,0x00,0x00}; // 仮設定 -byte dev_en = 0; // センサー発見の有無(0:未発見) +byte dev_sens[8]; // IEEE Address void setup(){ lcd.cls(); lcd.printf("Sample 4 SENS"); @@ -37,10 +36,11 @@ } void loop(){ - byte i; - byte trig=0; + int i; + int dev_en = 0; // センサー発見の有無(0:未発見) + XBEE_RESULT xbee_result; // 受信データ用の構造体 + int trig=0; float value; - XBEE_RESULT xbee_result; // 受信データ用の構造体 // デバイス探索 lcd.cls(); lcd.printf("Searching:SENSOR"); @@ -50,19 +50,33 @@ dev_en = 1; // sensor発見済 xbee_gpio_config( dev_sens, 1 , AIN ); // 接続相手のポート1をAIN入力へ xbee_gpio_config( dev_sens, 2 , AIN ); // 接続相手のポート2をAIN入力へ - // xbee_gpio_config( dev_sens, 3 , AIN ); // 接続相手のポート3をAIN入力へ }else{ lcd.cls(); lcd.printf("Failed:no dev."); } wait(0.5); - lcd.cls(); lcd.printf("DONE"); // メイン処理 - lcd.cls(); lcd.printf("Receiving"); while(1){ // 永久に受信する - if( dev_en && trig == 0){ - xbee_force( dev_sens ); // デバイスdev_sensへデータ要求(100回に1回の頻度で) - trig = 100; + if(dev_en){ + if(trig<=0){ + if(xbee_force(dev_sens)){ // デバイスdev_sensへデータ要求 + lcd.locate(12,0); + lcd.printf("Trig"); + wait(0.1); + lcd.locate(12,0); + lcd.printf(" "); + }else{ + lcd.locate(10,0); + lcd.printf("Error"); + lcd.locate(14,1); + lcd.printf("%02X",(byte)trig); + } + trig = FORCE_INTERVAL; + } + }else{ + lcd.cls(); + lcd.printf("Waiting for XBee"); + wait(.5); } trig--; @@ -86,9 +100,9 @@ for( i=0;i<8;i++ ) dev_sens[i]=xbee_result.FROM[i]; // 発見したアドレスをdev_sensに読み込み dev_en = 1; // sensor発見済 + trig = 0; xbee_gpio_config( dev_sens, 1 , AIN ); // 接続相手のポート1をAIN入力へ xbee_gpio_config( dev_sens, 2 , AIN ); // 接続相手のポート2をAIN入力へ - // xbee_gpio_config( dev_sens, 3 , AIN ); // 接続相手のポート3をAIN入力へ break; default: break;