2017-03-03 12 views
-1

nfc 532의 코드를 변경했지만 변경을 원했으며 어떻게 작동하는지 모릅니다. 타임 아웃을 원하십니까? 즉, 대기 시간 동안 휴대 전화를 칩 밑바닥에 꽂지 않았을 때 코드를 남깁니다. 즉, 나는 항상 휴대 전화를 칩에 올려서 정보를 보내길 기다리고 있지만, 내가 휴대하지 않을 때 일어날 수 있으며, 나는 그대로 기다린다. 시간 제한 유형 구함 스톱워치 십초PN532를 사용하는 ARDUINO 사용 - 응답 타이머에 대기

#include "SPI.h" 
#include "PN532_SPI.h" 
#include "snep.h" 
#include "NdefMessage.h" 

PN532_SPI pn532spi(SPI, 10); 
SNEP nfc(pn532spi); 
uint8_t ndefBuf[128]; 
const int buttonPin = 6; 
int buttonState = 0; 

void setup() 
{ 
    Serial.begin(115200); 
    pinMode(7, OUTPUT); 

} 
int var=0; 
boolean Acender=0; 
void loop() 
{ 
    buttonState = digitalRead(buttonPin); 


    if (buttonState == 1) { 

    digitalWrite(7,HIGH); //Desliga rele 2 

    Serial.println("Send a message to Android"); 
    NdefMessage message = NdefMessage(); 
    message.addTextRecord("Alertas acidente: DADOS"); 
    int messageSize = message.getEncodedSize(); 
    if (messageSize > sizeof(ndefBuf)) { 
     Serial.println("ndefBuf is too small"); 
     while (1) { 
     } 

    } 

    message.encode(ndefBuf); 
    if (0 >= nfc.write(ndefBuf, messageSize)) { 

     Serial.println("Failed"); 

    } else { 
     Serial.println("Success"); 
    } 

//  Serial.println("Failed"); 
    } 

    else{ 
    digitalWrite(7,LOW); //Desliga rele 2 
    } 
    } 
+1

귀하의 궁금한 점은 무엇입니까? –

+0

내가 10 초 동안 어떤 메시지도받지 못하면 LED가 꺼지고 (핀 7) –

답변

1

나는이 문제를 해결할 수 있다고 생각하지만, 코드 내가 당신에 내 코드를 삽입하려고하지 않을거야 아주 지저분하기 때문에, 당신이해야합니다 너 스스로해라.

long last = 0; 

void loop() { 

    ... 

    //run this when a message was received 
    last = millis(); 
    digitalWrite(7, HIGH); 

    ... 

    //run this every once in a while, eg. every loop() 
    long curr = millis(); 
    if (curr - last >= 1000*10) { 
     digitalWrite(7, LOW); 
    } 
} 

코드는 메시지가 수신되는 마지막 시간을 추적하고 긴 10 초 전 경우는 주도하지 않습니다 :

당신은 시간 차이를 계산하는 millis() 기능을 사용할 수 있습니다. 메시지를받을 때 타이머를 재설정하고 LED를 다시 활성화해야합니다.