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