mirror of
https://github.com/Vale54321/schafkopf-bot.git
synced 2025-12-16 11:49:33 +01:00
added arduino nfcReader files (#42)
This commit is contained in:
committed by
GitHub
parent
76cb0eaf1a
commit
6259d0bef3
@@ -0,0 +1,71 @@
|
||||
// Receive a NDEF message from a Peer and
|
||||
// display the payload of the first record on a LCD
|
||||
//
|
||||
// SeeedStudio NFC shield http://www.seeedstudio.com/depot/NFC-Shield-V20-p-1370.html
|
||||
// LCD using the Adafruit backpack http://adafru.it/292
|
||||
// Adafruit Liquid Crystal library https://github.com/adafruit/LiquidCrystal
|
||||
// Use a Android of BlackBerry phone to send a message to the NFC shield
|
||||
|
||||
#include "SPI.h"
|
||||
#include "PN532_SPI.h"
|
||||
#include "snep.h"
|
||||
#include "NdefMessage.h"
|
||||
|
||||
#include "Wire.h"
|
||||
#include "LiquidCrystal.h"
|
||||
|
||||
PN532_SPI pn532spi(SPI, 10);
|
||||
SNEP nfc(pn532spi);
|
||||
uint8_t ndefBuf[128];
|
||||
|
||||
// Connect via i2c, default address #0 (A0-A2 not jumpered)
|
||||
LiquidCrystal lcd(0);
|
||||
|
||||
void setup() {
|
||||
Serial.begin(9600);
|
||||
// set up the LCD's number of rows and columns:
|
||||
lcd.begin(16, 2);
|
||||
Serial.println("NFC Peer to Peer Example - Receive Message");
|
||||
}
|
||||
|
||||
void loop() {
|
||||
Serial.println("Waiting for message from a peer");
|
||||
int msgSize = nfc.read(ndefBuf, sizeof(ndefBuf));
|
||||
if (msgSize > 0) {
|
||||
NdefMessage msg = NdefMessage(ndefBuf, msgSize);
|
||||
msg.print();
|
||||
|
||||
NdefRecord record = msg.getRecord(0);
|
||||
|
||||
int payloadLength = record.getPayloadLength();
|
||||
byte payload[payloadLength];
|
||||
record.getPayload(payload);
|
||||
|
||||
// The TNF and Type are used to determine how your application processes the payload
|
||||
// There's no generic processing for the payload, it's returned as a byte[]
|
||||
int startChar = 0;
|
||||
if (record.getTnf() == TNF_WELL_KNOWN && record.getType() == "T") { // text message
|
||||
// skip the language code
|
||||
startChar = payload[0] + 1;
|
||||
} else if (record.getTnf() == TNF_WELL_KNOWN && record.getType() == "U") { // URI
|
||||
// skip the url prefix (future versions should decode)
|
||||
startChar = 1;
|
||||
}
|
||||
|
||||
// Force the data into a String (might fail for some content)
|
||||
// Real code should use smarter processing
|
||||
String payloadAsString = "";
|
||||
for (int c = startChar; c < payloadLength; c++) {
|
||||
payloadAsString += (char)payload[c];
|
||||
}
|
||||
|
||||
// print on the LCD display
|
||||
lcd.setCursor(0, 0);
|
||||
lcd.print(payloadAsString);
|
||||
|
||||
Serial.println("\nSuccess");
|
||||
} else {
|
||||
Serial.println("Failed");
|
||||
}
|
||||
delay(3000);
|
||||
}
|
||||
Reference in New Issue
Block a user