NFC and ht_sensor
Dependencies: NDefLib X_NUCLEO_IKS01A1 X_NUCLEO_NFC01A1 mbed
Fork of HelloWorld_NFC01A1 by
Diff: main.cpp
- Revision:
- 17:35193469bda8
- Parent:
- 14:1b99908360c5
--- a/main.cpp Wed Feb 03 10:17:14 2016 +0000
+++ b/main.cpp Wed May 18 07:41:15 2016 +0000
@@ -1,61 +1,46 @@
-/**
- ******************************************************************************
- * @file main.cpp
- * @author ST Central Labs
- * @version V1.0.0
- * @date 21 Dic 2015
- * @brief This demo writes an ndef message with an url inside.
- ******************************************************************************
- * @attention
- *
- * <h2><center>© COPYRIGHT(c) 2015 STMicroelectronics</center></h2>
- *
- * Redistribution and use in source and binary forms, with or without modification,
- * are permitted provided that the following conditions are met:
- * 1. Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- * 3. Neither the name of STMicroelectronics nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- ******************************************************************************
- */
+#include <stdio.h>
#include "mbed.h"
-
#include "X_NUCLEO_NFC01A1.h"
#include "NDefLib/NDefNfcTag.h"
#include "NDefLib/RecordType/RecordURI.h"
+#include "NDefLib/RecordType/RecordText.h"
+#include "x_nucleo_iks01a1.h"
-/**
- * Write a Ndef URI message linking to st.com site.
- */
-int main(void){
-
- //use default board pinout
+/* Instantiate the expansion board */
+
+static X_NUCLEO_IKS01A1 *mems_expansion_board = X_NUCLEO_IKS01A1::Instance(D14, D15);
+
+/* Retrieve the composing elements of the expansion board */
+static GyroSensor *gyroscope = mems_expansion_board->GetGyroscope();
+static MotionSensor *accelerometer = mems_expansion_board->GetAccelerometer();
+//static HumiditySensor *humidity_sensor = mems_expansion_board->ht_sensor;
+static TempSensor *temp_sensor1;// = mems_expansion_board->ht_sensor;
+
+ //use default board pinout
I2C i2cChannel(X_NUCLEO_NFC01A1::DEFAULT_SDA_PIN,X_NUCLEO_NFC01A1::DEFAULT_SDL_PIN);
X_NUCLEO_NFC01A1 *nfcNucleo = X_NUCLEO_NFC01A1::Instance(i2cChannel,NULL,
X_NUCLEO_NFC01A1::DEFAULT_GPO_PIN,X_NUCLEO_NFC01A1::DEFAULT_RF_DISABLE_PIN,
X_NUCLEO_NFC01A1::DEFAULT_LED1_PIN,X_NUCLEO_NFC01A1::DEFAULT_LED2_PIN,
X_NUCLEO_NFC01A1::DEFAULT_LED3_PIN);
-
- //retrieve the NdefLib interface
+
+ char itoc(int i){
+ return i+ 0x30;
+ }
+/**
+ * Write a Ndef URI message linking to st.com site.
+ */
+float Temp(float temp)
+{
+ temp_sensor1 = mems_expansion_board->ht_sensor;
+ temp_sensor1->GetTemperature(&temp);
+ return temp;
+}
+int NFC_send(char c[]){
+
+
+ printf("System Init done: !\n\r");
NDefLib::NDefNfcTag& tag =nfcNucleo->getM24SR().getNDefTag();
- printf("System Init done: !\n\r");
//open the i2c session with the nfc chip
if(tag.openSession()){
@@ -64,15 +49,106 @@
//create the NDef message and record
NDefLib::Message msg;
- NDefLib::RecordURI rUri(NDefLib::RecordURI::HTTP_WWW,"st.com");
+ //::RecordURI rUri(NDefLib::RecordURI::FILE,c);
+ NDefLib::RecordText rUri(c);
+
+ msg.addRecord(&rUri);
+
+ //write the tag
+ if(tag.write(msg) && tag.closeSession()){
+ printf("Tag written\n\r");
+ nfcNucleo->getLed2()=1;
+ // nfcNucleo->getLed3()=1; //상태확인
+ return 0;
+ }else{
+ printf("Error writing \n\r");
+ return 0;
+ }//if-else
+
+ //close the i2c session
+ /* if(tag.closeSession()){
+ printf("Session closed\n\r");
+ nfcNucleo->getLed3()=0;
+ return 0;
+ // That's point stop
+ }else{
+ printf("Error closing the session\n\r");
+ return 0;
+ }//if-else
+ */
+ }else
+ printf("Error opening the session\n\r");
+ return 0;
+ }
+
+
+void Temp_NFC(float temp){
+
+ char c[7];
+ int i=0;
+
+
+
+ //float temp;
+ //temp=Temp(temp);
+ //온도값을 최대를 100자리와 소숫점 첫자리까지 결과로 코딩
+ c[3]='.'; //소숫점
+ c[5]=0X60;
+ c[6]='C';
+
+ i=temp*10;
+ i=i%10; //소숫점아랫자리
+ c[4]=itoc(i);
+
+ i=temp/1; //1자리
+ i=i%10;
+ c[2]=itoc(i);
+
+ i=temp/10; //10자리
+ i=i%10;
+ c[1]=itoc(i);
+
+ i=temp/100;//100자리
+ i=i%10;
+ if(i>0) c[0]=itoc(i);
+ else c[0]='0';
+
+
+ NFC_send(c);
+
+ /*retrieve the NdefLib interface
+ NDefLib::NDefNfcTag& tag =nfcNucleo->getM24SR().getNDefTag();
+ tag.openSession();
+ NDefLib::Message msg;
+ //::RecordURI rUri(NDefLib::RecordURI::FILE,c);
+ NDefLib::RecordText rUri(c);
+
+ msg.addRecord(&rUri);
+ wait(0.1);
+ tag.closeSession();
+ NDefLib::NDefNfcTag& tag =nfcNucleo->getM24SR().getNDefTag();
+
+ printf("System Init done: !\n\r");
+ NDefLib::NDefNfcTag& tag =nfcNucleo->getM24SR().getNDefTag();
+
+ //open the i2c session with the nfc chip
+ if(tag.openSession()){
+ printf("Session opened\n\r");
+ nfcNucleo->getLed1()=1;
+
+ //create the NDef message and record
+ NDefLib::Message msg;
+ //::RecordURI rUri(NDefLib::RecordURI::FILE,c);
+ NDefLib::RecordText rUri(c);
+
msg.addRecord(&rUri);
//write the tag
if(tag.write(msg)){
printf("Tag written\n\r");
nfcNucleo->getLed2()=1;
- }else{
- printf("Error writing \n\r");
+ }else{
+ printf("Error writing \n\r");
}//if-else
//close the i2c session
@@ -85,4 +161,21 @@
}else
printf("Error opening the session\n\r");
+ */
+
+}
+
+
+int main()
+{
+ float temp;
+ while(1){
+ temp = Temp(temp);
+ Temp_NFC(temp);
+ nfcNucleo->getLed3()=1;
+ wait(0.1);
+ nfcNucleo->getLed3()=0;
+ wait(0.1);
+
+}
}
\ No newline at end of file
