Anfänger hat fehler und findet sie nicht

HI ich möchte einen RFID Leser mit Master card programmieren komme aber nicht weiter.

habe ein Mega2560 board

vielen dank im Vorraus.

#include <SPI.h>
#include <Wire.h>
#include <MFRC522.h>
#include <LiquidCrystal.h>
#include <pitches.h>

#define RST_PIN 5
#define SS_PIN  53

#define STATE_STARTUP       0
#define STATE_STARTING      1
#define STATE_WAITING       2
#define STATE_SCAN_INVALID  3
#define STATE_SCAN_VALID    4
#define STATE_SCAN_MASTER   5
#define STATE_ADDED_CARD    6
#define STATE_REMOVED_CARD  7

//#define REDPIN 6
//#define GREENPIN 7

const int cardArrSize = 10;
const int cardSize    = 4;
byte cardArr[cardArrSize][cardSize];
byte masterCard[cardSize] = {153,252,148,153};
byte readCard[cardSize];
byte cardsStored = 0;

// Define the melodies for successful access and denied access
int access_melody[] = {NOTE_G4, 0, NOTE_A4, 0, NOTE_B4, 0, NOTE_A4,
                      0, NOTE_B4, 0, NOTE_C5, 0
                     };
int access_noteDurations[] = {8, 8, 8, 8, 8, 4, 8, 8, 8, 8, 8, 4};
int fail_melody[] = {NOTE_G2, 0, NOTE_F2, 0, NOTE_D2, 0};
int fail_noteDurations[] = {8, 8, 8, 8, 8, 4};

int speaker_pin = 4; // Pin connected to piezo sounder
int relayPin = 3;






// Create MFRC522 instance
MFRC522 mfrc522(SS_PIN, RST_PIN);
// Set the LCD I2C address
LiquidCrystal lcd (7, 8, 9, 10, 11, 12);

byte currentState = STATE_STARTUP;
unsigned long LastStateChangeTime;
unsigned long StateWaitTime;


//
void setup ()
{
 Serial.begin(9600);
 SPI.begin();         // Init SPI Bus
 mfrc522.PCD_Init();  // Init MFRC522
 lcd.begin(16,2);
 
 LastStateChangeTime = millis();
 updateState(STATE_STARTING);

 pinMode(speaker_pin, OUTPUT);
 pinMode(relayPin, OUTPUT);

 
}
//
void loop() ;  

 byte cardState;


 cardState = readCardState();
 updateState(cardState);

 do {
 if ((currentState != STATE_WAITING) &&
     (StateWaitTime > 0) &&
     (LastStateChangeTime + StateWaitTime < millis()))
 {
   updateState(STATE_WAITING);
 }

 // Look for new cards 
 if ( ! mfrc522.PICC_IsNewCardPresent()) 
 { 
   return; 
 } 
 
 // Select one of the cards 
 if ( ! mfrc522.PICC_ReadCardSerial()) 
 { 
   return; 
 }


   
 {
cardState = readCardState();
updateState(cardState); 
 }







//------------------------------------------------------------------------------------
int readCardState()
{
 int index;

 Serial.print("Card Data - ");
 for(index = 0; index < 4; index++)
 {
   readCard[index] = mfrc522.uid.uidByte[index];

   
   Serial.print(readCard[index]);
   if (index < 3)
   {
     Serial.print(",");
   }
 }
 Serial.println(" ");

 //Check Master Card
 if ((memcmp(readCard, masterCard, 4)) == 0)
 {
   return STATE_SCAN_MASTER;
 }

 if (cardsStored == 0)
 {
   return STATE_SCAN_INVALID;
 }

 for(index = 0; index < cardsStored; index++)
 {
   if ((memcmp(readCard, cardArr[index], 4)) == 0)
   {
     return STATE_SCAN_VALID;
   }
 }

return STATE_SCAN_INVALID;
}

//------------------------------------------------------------------------------------
void addReadCard()
{
 int cardIndex;
 int index;

 if (cardsStored <= 20)
 {
   cardsStored++;
   cardIndex = cardsStored;
   cardIndex--;
 }

 for(index = 0; index < 4; index++)
 {
   cardArr[cardIndex][index] = readCard[index];
 }
}

//------------------------------------------------------------------------------------
void removeReadCard() 
{     
 int cardIndex;
 int index;
 boolean found = false;
 
 for(cardIndex = 0; cardIndex < cardsStored; cardIndex++)
 {
   if (found == true)
   {
     for(index = 0; index < 4; index++)
     {
       cardArr[cardIndex-1][index] = cardArr[cardIndex][index];
       cardArr[cardIndex][index] = 0;
     }
   }
   
   if ((memcmp(readCard, cardArr[cardIndex], 4)) == 0)
   {
     found = true;
   }
 }

 if (found == true)
 {
   cardsStored--;
 }
}

//------------------------------------------------------------------------------------
void updateState(byte aState)
{
 if (aState == currentState)
 {
   return;
 }

 // do state change
 switch (aState)
 {
   case STATE_STARTING:
     lcd.clear();
     lcd.setCursor(0,0);
     lcd.print("RFID Scanner");
     lcd.setCursor(0,1);
     lcd.print("Starting up");
     StateWaitTime = 1000;
//      digitalWrite(REDPIN, HIGH);//
//      digitalWrite(GREENPIN, HIGH);
     break;
   case STATE_WAITING:
     lcd.clear();
     lcd.setCursor(0,0);
     lcd.print("Waiting for Card");
     lcd.setCursor(0,1);
     lcd.print("to be swiped");
     StateWaitTime = 0;
//      digitalWrite(REDPIN, LOW);
//      digitalWrite(GREENPIN, LOW);
     break;
   case STATE_SCAN_INVALID:
     if (currentState == STATE_SCAN_MASTER)
     {
       addReadCard();
       aState = STATE_ADDED_CARD;
       
       lcd.clear();
       lcd.setCursor(0,0);
       lcd.print("Card Scanned");
       lcd.setCursor(0,1);
       lcd.print("Card Added");
       StateWaitTime = 2000;
//        digitalWrite(REDPIN, LOW);
//        digitalWrite(GREENPIN, HIGH);
     }
     else if (currentState == STATE_REMOVED_CARD)
     {
       return;
     }
     else
     {
       lcd.clear();
       lcd.setCursor(0,0);
       lcd.print("Card Scanned");
       lcd.setCursor(0,1);
       lcd.print("Invalid Card");
       StateWaitTime = 2000;
 
  for (int i = 0; i < 6; i++) { // Play intruder melody
       int fail_noteDuration = 1000 / fail_noteDurations[i];
       tone(speaker_pin, fail_melody[i], fail_noteDuration);
       int fail_pauseBetweenNotes = fail_noteDuration * 1.30;
       delay(fail_pauseBetweenNotes);
       noTone(speaker_pin);

       
//        digitalWrite(REDPIN, HIGH);
//        digitalWrite(GREENPIN, LOW);
     }
     break;
   case STATE_SCAN_VALID:
     if (currentState == STATE_SCAN_MASTER)
     {
       removeReadCard();
       aState = STATE_REMOVED_CARD;
       
       lcd.clear();
       lcd.setCursor(0,0);
       lcd.print("Card Scanned");
       lcd.setCursor(0,1);
       lcd.print("Card Removed");
       StateWaitTime = 2000;
//        digitalWrite(REDPIN, LOW);
//        digitalWrite(GREENPIN, HIGH);
     }
     else if (currentState == STATE_ADDED_CARD)
     {
       return;
     }
     else
     {
       lcd.clear();
       lcd.setCursor(0,0);
       lcd.print("Card Scanned");
       lcd.setCursor(0,1);
       lcd.print("valid Card");
       StateWaitTime = 2000;


          for (int i = 0; i < 12; i++) { // Play welcome music
       int access_noteDuration = 1000 / access_noteDurations[i];
       tone(speaker_pin, access_melody[i], access_noteDuration);
       int access_pauseBetweenNotes = access_noteDuration * 1.30;
       delay(access_pauseBetweenNotes);
       noTone(speaker_pin);

       
//        digitalWrite(REDPIN, LOW);
//        digitalWrite(GREENPIN, HIGH);
     }
     break;
   case STATE_SCAN_MASTER:
     lcd.clear();
     lcd.setCursor(0,0);
     lcd.print("Master Card");
     lcd.setCursor(0,1);
     lcd.print("Cards = ");
     lcd.setCursor(8,1);
     lcd.print(cardsStored);
     StateWaitTime = 5000;
//      digitalWrite(REDPIN, LOW);
//      digitalWrite(GREENPIN, HIGH);
     break;
 }

 {
 /*lcd.clear();
 lcd.setCursor(0,0);
 lcd.print(aState);
 lcd.setCursor(0,1);
 lcd.print(currentState);*/

 currentState = aState;
 LastStateChangeTime = millis();
 }
}

Dein Sketch ist nicht lesbar.
Setze den bitte in Code-Tags, verwende dazu die Schaltfläche </> oben links im Editorfenster.
Dann ist der für alle lesbar.

Und was genau geht in deinem Sketch und was geht in dem Sketch nicht ?
Achja und ich hoffe der Fehler ist in deinem Sketch und nicht bei dir, wie du schreibst. :wink:

HI ich möchte einen RFID Leser mit Master card programmieren

Hääää?

Einen Leser kann man nicht programmieren, Wennschon mit dem Leser eine Karte. Sicher aber keine Master card Kreditkarte.
Du kannst die Seriennummer der Karte auslesen. Das wars auch.

Grüße Uwe

kais84:
HI ich möchte einen RFID Leser mit Master card programmieren komme aber nicht weiter.

Kannst Du ausschliessen, das Du nur mit copy&paste versucht hast deinen Code zusammenzustellen?

Wenn Du mit STRG-T Deinen Sketch formatierst, dann kommen soviele fehlende schliessende Klammern zu Tage, das es keine Sinn macht inhaltlich drüber zu schauen.

Formatiere und sehe zu, das die schliessenden Klammern } an den richtigen Stellen stehen.

Und stelle Deinen Code dann in Codetags. Das Symbol </> oben am Editorfenster. Das geht auch jetzt noch, unten an deinem Post auf modify klicken.

uwefed:
Du kannst die Seriennummer der Karte auslesen. Das wars auch.

das will er anscheindend auch - und darauf Aktionen ausführen.
Angesichts des doch sehr unvollkommenden Sketch jedoch sehr schwer rauszulesen.

OT:
Wie gehts bei Euch eigentlich derzeit?
Hoffentlich alle soweit gesund.

Ich vermute eher du willst sowas wie das Beispiel "Access Control" aus der Library machen oder?

Kannst du beschreiben, was du versuchst und wodurch sich das von Access Control unterscheiden soll?

kais84:
[Der Anfänger mit Fehler]

Der größte Fehler, den Du machst: Als Anfänger an ein Vorhaben von so einem Umfang zu gehen. Nimm Dir Zeit, in die Programmiererei einzusteigen und jede Teilfunktion einzeln zu behandeln. Wenn Du gut bist, schaffst Du es, in einem Jahr so weit zu sein, das Ding als Ganzes anzugehen.

Entscheide Dich:
[ ] Ein Jahr in ein Hobby investieren,
    das auf Dauer einen Haufen Spaß bringt.
[ ] Was Du suchst irgendwo fertig kaufen oder
    ganz darauf verzichten.

Gruß

Gregor

gregorss:
.....
Entscheide Dich:
.....

Die Entscheidung ist sicher schon gefallen.
Da ihm keiner den Sketch umschreibt, wird er es wohl sein lassen.
Lernen ist zu aufwändig.