NFC Shield 2.0 Türschloss

Hallo Gemeinde,
ist jemand hier der mir bei folgendem Problem weiterhelfen kann?
Der Compiler bleibt bei der { in Zeile 50 stehen…

//Programm zum Schreiben des generierten Zufallsschlssels
//Contributed by Seeed Technology Inc (www.seeedstudio.com)
/////////////////////////////////////////////////////////////////////
//EINGABE
uint8_t keys[]= {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF}; // Key-B
uint8_t blockzahl = 0xe; //In welchem Block soll geschrieben werden?
////////////////////////////////////////////////////////////////////
uint8_t writeBuffer[16]; //Scurity-Schlssel Variable
uint8_t written=0;
#include <PN532.h>
#define SCK 13
#define MOSI 11
#define SS 10
#define MISO 12
PN532 nfc(SCK, MISO, MOSI, SS);
void setup(void) {
Serial.begin(9600);
randomSeed(analogRead(0));
Serial.println("Hello!");
uint8_t ii;
//Sicherheitsschlssel erzeugen
for(ii=0;ii<16;ii++)
{
writeBuffer[ii]=random(); //Zufallszahlen
}
// Anzeigen des Security-Schlssels zur Weiterverarbeitung:
Serial.print("Wert:");
for(uint8_t i=0;i<16;i++)
{
Serial.print("0x");
Serial.print(writeBuffer[i],HEX);
Serial.print(",");
}
Serial.println();
nfc.begin(); //NFC Initalisierung
uint32_t versiondata = nfc.getFirmwareVersion();
if (! versiondata) {
Serial.print("Fehler: NFC Board nicht gefunden!");
while (1); // halt
}
Serial.print("OK");
Serial.println();
nfc.SAMConfig(); //Initialisierung des Read/Write Modus
}
void loop(void) {
uint32_t id;
id = nfc.readPassiveTargetID(PN532_MIFARE_ISO14443A); //Suche von NFC-Tag
if (id != 0)
20
{
Serial.println();
if(nfc.authenticateBlock(1, id ,blockzahl,KEY_B,keys))
{
if(written == 0)
{
written = nfc.writeMemoryBlock(1,blockzahl,writeBuffer);
if(written)
Serial.println("Write Successful");
}
uint8_t block[16];
if(nfc.readMemoryBlock(1,blockzahl,block))
{
Serial.println("Read block:");
for(uint8_t i=0;i<16;i++)
{
Serial.print(block[i],HEX);
Serial.print(" ");
}
Serial.println();
}
}
}
delay(500);
}

II NFCSchreibenKey.ino

//Programm zum Schreiben der Key A, Access-Bits und Key B
//Contributed by Seeed Technology Inc (www.seeedstudio.com)
/////////////////////////////////////////////////////////////////////
//EINGABE
uint8_t blockzahl = 0xf; //In welchem Block soll geschrieben werden?
uint8_t keys[]= {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF}; // Key-B zum Login
uint8_t access[] = {0x7f,0x07,0x88,0x40}; // Access-Bits
////////////////////////////////////////////////////////////////////
uint8_t
 writeBuffer[16]; //Zusammengesetzter Security-Schlssel
uint8_t
 newkeya[6];
uint8_t
 newkeyb[6];
uint8_t
 written=0;
#include <PN532.h>
#define SCK 13
#define MOSI 11
#define SS 10
#define MISO 12
PN532 nfc(SCK, MISO, MOSI, SS);
void setup(void) {
Serial.begin(9600);
randomSeed(analogRead(0));
Serial.println("Hello!");
uint8_t ii;
//KeyA+KeyB erzeugen und anzeigen
for(ii=0;ii<6;ii++)
{
newkeya[ii]=random();
21
}
Serial.print("KeyA:");
for(uint8_t i=0;i<6;i++)
{
Serial.print("0x");
Serial.print(newkeya[i],HEX);
Serial.print(",");
}
for(ii=0;ii<6;ii++)
{
newkeyb[ii]=random();
}
Serial.println();
Serial.print("KeyB:");
for(uint8_t i=0;i<6;i++)
{
Serial.print("0x");
Serial.print(newkeyb[i],HEX);
Serial.print(",");
}
// Keys+Access Bits zusammenfgen und ausgeben
memcpy(writeBuffer,newkeya,6);
memcpy(writeBuffer +6,access,4);
memcpy(writeBuffer +10,newkeyb,6);
Serial.println();
Serial.print("Zusamengesetze Keys: ");
for(uint8_t i=0;i<16;i++)
{
Serial.print("0x");
Serial.print(writeBuffer[i],HEX);
Serial.print(",");
}
Serial.println();
nfc.begin(); //NFC Initalisierung
uint32_t versiondata = nfc.getFirmwareVersion();
if (! versiondata) {
Serial.print("Fehler: NFC Board nicht gefunden!");
while (1); // halt
}
Serial.print("OK");
Serial.println();
nfc.SAMConfig(); // Initalisierung des Read/Write Modus
}
void loop(void) {
uint32_t id;
id = nfc.readPassiveTargetID(PN532_MIFARE_ISO14443A); //Suche von NFC-Tag
if (id != 0)
{
Serial.println();
if(nfc.authenticateBlock(1, id ,blockzahl,KEY_B,keys))
{
if(written == 0)
{
written = nfc.writeMemoryBlock(1,blockzahl,writeBuffer);
if(written)
Serial.println("Write Successful");
}
uint8_t block[16];
22
}
if(nfc.readMemoryBlock(1,blockzahl,block))
{
Serial.println("Read block:");
for(uint8_t i=0;i<16;i++)
{
Serial.print(block[i],HEX);
Serial.print(" ");
}
Serial.println();
}
}
}
delay(500);

III NFCAuslesen_Vergleich_Steuerung.ino

//Programm zum Auslesen und Vergleichen des Sicherheitsschlssels
//Contributed by Seeed Technology Inc (www.seeedstudio.com)
//////////////////////////////////////////////////////////
//EINGABE
uint8_t blockzahl = 0xe; //Block des Sicherheitsschlssels
uint8_t code[] =
{0xD0,0xE8,0x76,0xA6,0x46,0xDE,0x94,0xC5,0x35,0x83,0x25,0x50,0xA6,0x6E,0x27
,0xB4};
uint8_t keys[]= {0xB0,0xD,0xAE,0xF4,0x97,0xE5}; //KeyA
//////////////////////////////////////////////////////////
int relay = 4;
int ledr = 3;
int ledg = 2;
#include <PN532.h>
#define SCK 13
#define MOSI 11
#define SS 10
#define MISO 12
PN532 nfc(SCK, MISO, MOSI, SS);
void setup(void) {
pinMode(relay, OUTPUT);
pinMode(ledr, OUTPUT);
pinMode(ledg, OUTPUT);
Serial.begin(9600);
nfc.begin(); //NFC Initalisierung
nfc.SAMConfig(); // Initalisierung des Read/Write Modus
}
void loop(void) {
uint32_t id; // look for MiFare type cards
id = nfc.readPassiveTargetID(PN532_MIFARE_ISO14443A);
if (id != 0)
{
if(nfc.authenticateBlock(1, id ,blockzahl,KEY_A,keys))
{
uint8_t block[16]; //Zwischenspeicher des ausgelesenen Schlssels
if(nfc.readMemoryBlock(1,blockzahl,block)
{
23
// Vergleich der beiden Codes
if(memcmp(code, block,16) == 0){
digitalWrite(relay, HIGH);
digitalWrite(ledg, HIGH);
delay(4000);
digitalWrite(relay, LOW);
digitalWrite(ledg, LOW);
}
}
}
else {
digitalWrite(ledr, HIGH);
delay(2000);
digitalWrite(ledr, LOW);
}
}
delay(500);
}

Beim Überprüfen des Codes spuckt der Kompiler

sketch_oct15a.ino: In function 'void loop()':
sketch_oct15a:50: error: expected `;' before '{' token
sketch_oct15a:237: error: expected `}' at end of input

expected `;` before ´{´ token

um Zeile 49 steht:

if (id != 0)
20
{

Was macht das "20" dort?

Was macht das "21" in Zeile 35 und das "22" in Zeile 91 des zweiten Sketches? Was macht das "21" in Zeile 33 des dritten Sketches?

Verwende einen anderen Editor wie zB notebook++. Da hast Du mehr übersicht als im IDE Editor und kannst 2 Fenster paralell nebeneinander offen halten.

Ein solcher Spaghetticode ist unleserlich. Bitte gewöhne Dir einrücken und Leerzeilen an um den Code leserlicher zu machen.

Grüße Uwe