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

Dependents:   sample04_sens

Please refer to the following site for the details:

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;