Zum Inhalt springen

Andreas7254

Verfasste Forenbeiträge

Ansicht von 13 Beiträgen - 1 bis 13 (von insgesamt 13)
  • Autor
    Beiträge
  • als Antwort auf: RFID & Tastenfeld Schloss #7407
    Andreas7254
    Teilnehmer

    Vielen Dank für deine Hilfe. Ich probiere es erstmal so wie du es geschrieben hast und wenn ich dann noch Probleme habe melde ich mich wieder. :):):)

    als Antwort auf: RFID & Tastenfeld Schloss #7394
    Andreas7254
    Teilnehmer

    Also, ich habe geguckt, es funktioniert jetzt,:) aber auch ohne das ich vorher die Karte an den Leser gehalten hatte.:(
    Könntest du da vielleicht auch helfen?

    als Antwort auf: RFID & Tastenfeld Schloss #7393
    Andreas7254
    Teilnehmer

    Ok, probiere ich mal, dankeschön.
    Und wie ist es mit meiner zweiten Frage?

    als Antwort auf: RFID & Tastenfeld Schloss #7373
    Andreas7254
    Teilnehmer

    Im Seriellen Monitor steht es so:

    ⸮Türkontrolle aktiviert
    Erkanntes RFID-TAG ist => /8B/88/CA/1D/
    Zugriff erlaubt => Tür öffnen
    Password eingeben
    Erkanntes RFID-TAG ist => /8B/88/CA/1D/
    Zugriff erlaubt => Tür öffnen
    Password eingeben
    Erkanntes RFID-TAG ist => /8B/88/CA/1D/
    Zugriff erlaubt => Tür öffnen
    Password eingeben
    Eingegeben:1
    ⸮Eingegeben:2
    ⸮Eingegeben:3
    ⸮Eingegeben:A
    ⸮Eingegeben:*
    ⸮Zugriff erlaubt
    ⸮Tür schliessen
    Erkanntes RFID-TAG ist => /8B/88/CA/1D/
    Zugriff erlaubt => Tür öffnen
    Password eingeben
    Erkanntes RFID-TAG ist => /8B/88/CA/1D/
    Zugriff erlaubt => Tür öffnen
    Password eingeben
    Erkanntes RFID-TAG ist => /8B/88/CA/1D/
    Zugriff erlaubt => Tür öffnen
    Password eingeben
    Eingegeben:1
    ⸮Eingegeben:2
    ⸮Eingegeben:3
    ⸮Eingegeben:A
    ⸮Eingegeben:*
    ⸮Zugriff verweigert

    als Antwort auf: RFID & Tastenfeld Schloss #7372
    Andreas7254
    Teilnehmer

    Hier ist der Sketch ohne while(1) loop();:

    [code]
    #include <Password.h>
    #include <Keypad.h>
    #include <SPI.h>     // Import SPI-Bibiothek 
    #include <MFRC522.h> // Import RFID-Bibiothek
    #include <Servo.h>   // Import Servo Bibliothek
    
    const int SDAPIN   = 53; // Uno => Pin 10 
    const int RSTPIN   =  9; // Uno => Pin 9
    const int REDLED   = 13;  // Uno -> Pin 8
    const int GREENLED = 12;  // Uno -> Pin 7
    const int SERVOPIN = 11;  // Uno -> Pin 6
    
    const byte ROWS = 4;
    const byte COLS = 4;
    char keys[ROWS][COLS] = {
      {'1', '2', '3', 'A'},
      {'4', '5', '6', 'B'},
      {'7', '8', '9', 'C'},
      {'*', '0', '#', 'D'}
    };
    byte sesam[] = {0x8B, 0x88, 0xCA, 0x1D};
    byte rowPins[ROWS] = {48, 47, 46, 45}; //connect to the row pinouts of the keypad
    byte colPins[COLS] = {44, 43, 42, 41}; //connect to the column pinouts of the keypad
    
    Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
    MFRC522 rfidReader(SDAPIN, RSTPIN); // RFID-Empfänger
    Servo door; // Türverschluss (Servo)
    Password password = Password( "123A" );
    
    void setup()
    {
      Serial.begin(9600); // Serielle Verbindung 
      SPI.begin(); // SPI-Verbindung aufbauen
      Serial.write(254);
      Serial.write(0x01);
      delay(200); 
      
      door.attach(SERVOPIN);
      pinMode(REDLED, OUTPUT);
      pinMode(GREENLED, OUTPUT);
      pinMode(SERVOPIN, OUTPUT);
      keypad.addEventListener(keypadEvent); //add an event listener for this keypad
      
      rfidReader.PCD_Init(); // Initial. RFID-Leser
      Serial.println("Türkontrolle aktiviert");
    }
    
      bool acceptedRFID(byte uid[4]) {
      return
          (rfidReader.uid.uidByte[0] == sesam[0]) &&
          (rfidReader.uid.uidByte[1] == sesam[1]) &&
          (rfidReader.uid.uidByte[2] == sesam[2]) &&
          (rfidReader.uid.uidByte[3] == sesam[3]);
    }
    
    void openDoor() {
      for (int pos = 90; pos <= 180; pos++) {
        door.write(pos);
        delay(10);
      }
    }
    
    void closeDoor(){
        for (int pos = 180; pos >= 90; pos--) {
        door.write(pos);
        delay(10);
    }
    }
    void signalDoorLocked() {
      digitalWrite(REDLED, HIGH);
      digitalWrite(GREENLED, LOW);
    }
    
    void signalAccessGranted() {
      digitalWrite(REDLED, LOW);
      digitalWrite(GREENLED, HIGH);
    }
    
    void signalAccessRefused() {
      for (int i = 0; i < 5; i++) {
        digitalWrite(REDLED, HIGH);
        delay(250);
        digitalWrite(REDLED, LOW);
        delay(250);
      }
    }
    void keypadEvent(){
      keypad.getKey();
      signalDoorLocked();
      }
      //take care of some special events
      void keypadEvent(KeypadEvent eKey){
      switch (keypad.getState()){
      case PRESSED:
      
      Serial.print("Eingegeben:");
      Serial.println(eKey);
      delay(10);
      
      Serial.write(254);
      
      switch (eKey){
        case '*': checkPassword(); delay(1); break;
        
        case '#': password.reset(); delay(1); break;
        
         default: password.append(eKey); delay(1);
    }
    }
    }
    void checkPassword(){
      
    if (password.evaluate()){  //if password is right open
        signalAccessGranted();
        Serial.println("Zugriff erlaubt");
        Serial.write(254);delay(10);
        //Add code to run if it works
        openDoor(); //deg
        delay(3000);
        Serial.println("Tür schliessen");
        // Tuere wieder schliessen
        closeDoor();
        
        
    }else{
        Serial.println("Zugriff verweigert"); //if passwords wrong keep locked
        Serial.write(254);delay(10);
        //add code to run if it did not work
        signalAccessRefused();
        
    }
    }
    void loop()
    {
      char key = keypad.getKey();
      signalDoorLocked();
    
        // Karte erkannt und gelesen
         if (rfidReader.PICC_IsNewCardPresent() && rfidReader.PICC_ReadCardSerial()) {
    
          Serial.print("Erkanntes RFID-TAG ist =>  "); 
    
          // Bytes der ID lesen und ausgeben
          Serial.print("/");
          for (byte i = 0; i < rfidReader.uid.size; i++) {
            Serial.print(rfidReader.uid.uidByte[i], HEX); 
            Serial.print("/");
          }
    
          Serial.println();
    
          // Check ob Karte mit Variable sesam übereinstimmt
          if (acceptedRFID(rfidReader.uid.uidByte)) { // ja =>
             // Erlaubten Zugriff signalisieren
             signalAccessGranted();
             Serial.println("Zugriff erlaubt => Tür öffnen");
             // Oeffnen der Tuere
             Serial.println("Password eingeben");
             // 3 Sekunden Pause
             keypadEvent();
            }
            else // nein =>
            {
               Serial.println("Zugriff verweigert");
               // Rote LED blinkt als Warnung
               signalAccessRefused();
            }
       }
    }
    [/code]
    als Antwort auf: RFID & Tastenfeld Schloss #7370
    Andreas7254
    Teilnehmer
    [code]
    #include <Password.h>
    #include <Keypad.h>
    #include <SPI.h>     // Import SPI-Bibiothek 
    #include <MFRC522.h> // Import RFID-Bibiothek
    #include <Servo.h>   // Import Servo Bibliothek
    
    const int SDAPIN   = 53; // Uno => Pin 10 
    const int RSTPIN   =  9; // Uno => Pin 9
    const int REDLED   = 13;  // Uno -> Pin 8
    const int GREENLED = 12;  // Uno -> Pin 7
    const int SERVOPIN = 11;  // Uno -> Pin 6
    
    const byte ROWS = 4;
    const byte COLS = 4;
    char keys[ROWS][COLS] = {
      {'1', '2', '3', 'A'},
      {'4', '5', '6', 'B'},
      {'7', '8', '9', 'C'},
      {'*', '0', '#', 'D'}
    };
    byte sesam[] = {0x8B, 0x88, 0xCA, 0x1D};
    byte rowPins[ROWS] = {48, 47, 46, 45}; //connect to the row pinouts of the keypad
    byte colPins[COLS] = {44, 43, 42, 41}; //connect to the column pinouts of the keypad
    
    Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
    MFRC522 rfidReader(SDAPIN, RSTPIN); // RFID-Empfänger
    Servo door; // Türverschluss (Servo)
    Password password = Password( "123A" );
    
    void setup()
    {
      Serial.begin(9600); // Serielle Verbindung 
      SPI.begin(); // SPI-Verbindung aufbauen
      Serial.write(254);
      Serial.write(0x01);
      delay(200); 
      
      door.attach(SERVOPIN);
      pinMode(REDLED, OUTPUT);
      pinMode(GREENLED, OUTPUT);
      pinMode(SERVOPIN, OUTPUT);
      keypad.addEventListener(keypadEvent); //add an event listener for this keypad
      
      rfidReader.PCD_Init(); // Initial. RFID-Leser
      Serial.println("Türkontrolle aktiviert");
    }
    
      bool acceptedRFID(byte uid[4]) {
      return
          (rfidReader.uid.uidByte[0] == sesam[0]) &&
          (rfidReader.uid.uidByte[1] == sesam[1]) &&
          (rfidReader.uid.uidByte[2] == sesam[2]) &&
          (rfidReader.uid.uidByte[3] == sesam[3]);
    }
    
    void openDoor() {
      for (int pos = 90; pos <= 180; pos++) {
        door.write(pos);
        delay(10);
      }
    }
    
    void closeDoor(){
        for (int pos = 180; pos >= 90; pos--) {
        door.write(pos);
        delay(10);
    }
    }
    void signalDoorLocked() {
      digitalWrite(REDLED, HIGH);
      digitalWrite(GREENLED, LOW);
    }
    
    void signalAccessGranted() {
      digitalWrite(REDLED, LOW);
      digitalWrite(GREENLED, HIGH);
    }
    
    void signalAccessRefused() {
      for (int i = 0; i < 5; i++) {
        digitalWrite(REDLED, HIGH);
        delay(250);
        digitalWrite(REDLED, LOW);
        delay(250);
      }
    }
    void keypadEvent(){
      keypad.getKey();
      signalDoorLocked();
      }
      //take care of some special events
      void keypadEvent(KeypadEvent eKey){
      switch (keypad.getState()){
      case PRESSED:
      
      Serial.print("Eingegeben:");
      Serial.println(eKey);
      delay(10);
      
      Serial.write(254);
      
      switch (eKey){
        case '*': checkPassword(); delay(1); break;
        
        case '#': password.reset(); delay(1); break;
        
         default: password.append(eKey); delay(1);
    }
    }
    }
    void checkPassword(){
      
    if (password.evaluate()){  //if password is right open
        signalAccessGranted();
        Serial.println("Zugriff erlaubt");
        Serial.write(254);delay(10);
        //Add code to run if it works
        openDoor(); //deg
        delay(3000);
        Serial.println("Tür schliessen");
        // Tuere wieder schliessen
        closeDoor();
        
        
    }else{
        Serial.println("Zugriff verweigert"); //if passwords wrong keep locked
        Serial.write(254);delay(10);
        //add code to run if it did not work
        signalAccessRefused();
        
    }
    }
    void loop()
    {
      char key = keypad.getKey();
      signalDoorLocked();
    
        // Karte erkannt und gelesen
         if (rfidReader.PICC_IsNewCardPresent() && rfidReader.PICC_ReadCardSerial()) {
    
          Serial.print("Erkanntes RFID-TAG ist =>  "); 
    
          // Bytes der ID lesen und ausgeben
          Serial.print("/");
          for (byte i = 0; i < rfidReader.uid.size; i++) {
            Serial.print(rfidReader.uid.uidByte[i], HEX); 
            Serial.print("/");
          }
    
          Serial.println();
    
          // Check ob Karte mit Variable sesam übereinstimmt
          if (acceptedRFID(rfidReader.uid.uidByte)) { // ja =>
             // Erlaubten Zugriff signalisieren
             signalAccessGranted();
             Serial.println("Zugriff erlaubt => Tür öffnen");
             // Oeffnen der Tuere
             Serial.println("Password eingeben");
             // 3 Sekunden Pause
             keypadEvent();
            }
            else // nein =>
            {
               Serial.println("Zugriff verweigert");
               // Rote LED blinkt als Warnung
               signalAccessRefused();
            }
       }
    }
    [/code]
    als Antwort auf: RFID & Tastenfeld Schloss #7369
    Andreas7254
    Teilnehmer

    Ingnoriert das while(1) loop(); bitte. :)
    Also wenn ich das Schloss einmal geöffnet hatte und der sich wieder schließt kann ich ihn nicht wieder öffnen, weil er das Password nicht zum zweitenmal akzeptiert.
    Im seriellen Monitor habe ich gesehen, dass der die Türkontrolle nicht zum zweitenmal aktiviert hat. (Was der normalerweise, nach dem Türschließen, machen sollte.) Wenn ich die Karte an den RFID gehalten hatte, hat er es akzeptiert, aber das Password hat er danach nicht akzeptiert (auch davor nicht).

    als Antwort auf: RFID & Tastenfeld Schloss #7343
    Andreas7254
    Teilnehmer

    Tut mir leid, ich bin neu im Forum ich weiß nicht wie das geht, meintest du so?

    Code:

    [code]
    #include <Password.h>
    #include <Keypad.h>
    #include <SPI.h>     // Import SPI-Bibiothek 
    #include <MFRC522.h> // Import RFID-Bibiothek
    #include <Servo.h>   // Import Servo Bibliothek
    
    const int SDAPIN   = 53; // Uno => Pin 10
    const int RSTPIN   =  9; // Uno => Pin 9
    const int REDLED   = 13;  // Uno -> Pin 8
    const int GREENLED = 12;  // Uno -> Pin 7
    const int SERVOPIN = 11;  // Uno -> Pin 6
    
    const byte ROWS = 4;
    const byte COLS = 4;
    char keys[ROWS][COLS] = {
      {'1', '2', '3', 'A'},
      {'4', '5', '6', 'B'},
      {'7', '8', '9', 'C'},
      {'*', '0', '#', 'D'}
    };
    byte sesam[] = {0x8B, 0x88, 0xCA, 0x1D};
    byte rowPins[ROWS] = {48, 47, 46, 45}; //connect to the row pinouts of the keypad
    byte colPins[COLS] = {44, 43, 42, 41}; //connect to the column pinouts of the keypad
    
    Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
    MFRC522 rfidReader(SDAPIN, RSTPIN); // RFID-Empfänger
    Servo door; // Türverschluss (Servo)
    Password password = Password( "123A" );
    
    void setup()
    {
      Serial.begin(9600); // Serielle Verbindung
      SPI.begin(); // SPI-Verbindung aufbauen
      Serial.write(254);
      Serial.write(0x01);
      delay(200);
    
      door.attach(SERVOPIN);
      pinMode(REDLED, OUTPUT);
      pinMode(GREENLED, OUTPUT);
      pinMode(SERVOPIN, OUTPUT);
      keypad.addEventListener(keypadEvent); //add an event listener for this keypad
    
      rfidReader.PCD_Init(); // Initial. RFID-Leser
      Serial.println("Türkontrolle aktiviert");
    }
    
    bool acceptedRFID(byte uid[4]) {
      return
        (rfidReader.uid.uidByte[0] == sesam[0]) &&
        (rfidReader.uid.uidByte[1] == sesam[1]) &&
        (rfidReader.uid.uidByte[2] == sesam[2]) &&
        (rfidReader.uid.uidByte[3] == sesam[3]);
    }
    
    void openDoor() {
      for (int pos = 90; pos <= 180; pos++) {
        door.write(pos);
        delay(10);
      }
    }
    
    void closeDoor() {
      for (int pos = 180; pos >= 90; pos--) {
        door.write(pos);
        delay(10);
      }
      while (1) loop();
    }
    void signalDoorLocked() {
      digitalWrite(REDLED, HIGH);
      digitalWrite(GREENLED, LOW);
    }
    
    void signalAccessGranted() {
      digitalWrite(REDLED, LOW);
      digitalWrite(GREENLED, HIGH);
    }
    
    void signalAccessRefused() {
      for (int i = 0; i < 5; i++) {
        digitalWrite(REDLED, HIGH);
        delay(250);
        digitalWrite(REDLED, LOW);
        delay(250);
      }
    }
    void keypadEvent() {
      keypad.getKey();
      signalDoorLocked();
    }
    //take care of some special events
    void keypadEvent(KeypadEvent eKey) {
      switch (keypad.getState()) {
        case PRESSED:
    
          Serial.print("Eingegeben:");
          Serial.println(eKey);
          delay(10);
    
          Serial.write(254);
    
          switch (eKey) {
            case '*': checkPassword(); delay(1); break;
    
            case '#': password.reset(); delay(1); break;
    
            default: password.append(eKey); delay(1);
          }
      }
    }
    void checkPassword() {
    
      if (password.evaluate()) { //if password is right open
        signalAccessGranted();
        Serial.println("Zugriff erlaubt");
        Serial.write(254); delay(10);
        //Add code to run if it works
        openDoor(); //deg
        delay(3000);
        Serial.println("Tür schliessen");
        // Tuere wieder schliessen
        closeDoor();
    
      } else {
        Serial.println("Zugriff verweigert"); //if passwords wrong keep locked
        Serial.write(254); delay(10);
        //add code to run if it did not work
        signalAccessRefused();
    
      }
    }
    void loop()
    {
      char key = keypad.getKey();
      signalDoorLocked();
    
      // Karte erkannt und gelesen
      if (rfidReader.PICC_IsNewCardPresent() && rfidReader.PICC_ReadCardSerial()) {
    
        Serial.print("Erkanntes RFID-TAG ist =>  ");
    
        // Bytes der ID lesen und ausgeben
        Serial.print("/");
        for (byte i = 0; i < rfidReader.uid.size; i++) {
          Serial.print(rfidReader.uid.uidByte[i], HEX);
          Serial.print("/");
        }
    
        Serial.println();
    
        // Check ob Karte mit Variable sesam übereinstimmt
        if (acceptedRFID(rfidReader.uid.uidByte)) { // ja =>
          // Erlaubten Zugriff signalisieren
          signalAccessGranted();
          Serial.println("Zugriff erlaubt => Tür öffnen");
          // Oeffnen der Tuere
          Serial.println("Password eingeben");
          // 3 Sekunden Pause
          keypadEvent();
        }
        else // nein =>
        {
          Serial.println("Zugriff verweigert");
          // Rote LED blinkt als Warnung
          signalAccessRefused();
        }
      }
    }
    [/code]

    Bibliothek:
    https://github.com/phrac/arduino/blob/master/tutorials/Password.h

    als Antwort auf: RFID & Tastenfeld Schloss #7341
    Andreas7254
    Teilnehmer

    Code:

    [code]
    #include <Password.h>
    #include <Keypad.h>
    #include <SPI.h>     // Import SPI-Bibiothek 
    #include <MFRC522.h> // Import RFID-Bibiothek
    #include <Servo.h>   // Import Servo Bibliothek
    
    const int SDAPIN   = 53; // Uno => Pin 10
    const int RSTPIN   =  9; // Uno => Pin 9
    const int REDLED   = 13;  // Uno -> Pin 8
    const int GREENLED = 12;  // Uno -> Pin 7
    const int SERVOPIN = 11;  // Uno -> Pin 6
    
    const byte ROWS = 4;
    const byte COLS = 4;
    char keys[ROWS][COLS] = {
      {'1', '2', '3', 'A'},
      {'4', '5', '6', 'B'},
      {'7', '8', '9', 'C'},
      {'*', '0', '#', 'D'}
    };
    byte sesam[] = {0x8B, 0x88, 0xCA, 0x1D};
    byte rowPins[ROWS] = {48, 47, 46, 45}; //connect to the row pinouts of the keypad
    byte colPins[COLS] = {44, 43, 42, 41}; //connect to the column pinouts of the keypad
    
    Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
    MFRC522 rfidReader(SDAPIN, RSTPIN); // RFID-Empfänger
    Servo door; // Türverschluss (Servo)
    Password password = Password( "123A" );
    
    void setup()
    {
      Serial.begin(9600); // Serielle Verbindung
      SPI.begin(); // SPI-Verbindung aufbauen
      Serial.write(254);
      Serial.write(0x01);
      delay(200);
    
      door.attach(SERVOPIN);
      pinMode(REDLED, OUTPUT);
      pinMode(GREENLED, OUTPUT);
      pinMode(SERVOPIN, OUTPUT);
      keypad.addEventListener(keypadEvent); //add an event listener for this keypad
    
      rfidReader.PCD_Init(); // Initial. RFID-Leser
      Serial.println("Türkontrolle aktiviert");
    }
    
    bool acceptedRFID(byte uid[4]) {
      return
        (rfidReader.uid.uidByte[0] == sesam[0]) &&
        (rfidReader.uid.uidByte[1] == sesam[1]) &&
        (rfidReader.uid.uidByte[2] == sesam[2]) &&
        (rfidReader.uid.uidByte[3] == sesam[3]);
    }
    
    void openDoor() {
      for (int pos = 90; pos <= 180; pos++) {
        door.write(pos);
        delay(10);
      }
    }
    
    void closeDoor() {
      for (int pos = 180; pos >= 90; pos--) {
        door.write(pos);
        delay(10);
      }
      while (1) loop();
    }
    void signalDoorLocked() {
      digitalWrite(REDLED, HIGH);
      digitalWrite(GREENLED, LOW);
    }
    
    void signalAccessGranted() {
      digitalWrite(REDLED, LOW);
      digitalWrite(GREENLED, HIGH);
    }
    
    void signalAccessRefused() {
      for (int i = 0; i < 5; i++) {
        digitalWrite(REDLED, HIGH);
        delay(250);
        digitalWrite(REDLED, LOW);
        delay(250);
      }
    }
    void keypadEvent() {
      keypad.getKey();
      signalDoorLocked();
    }
    //take care of some special events
    void keypadEvent(KeypadEvent eKey) {
      switch (keypad.getState()) {
        case PRESSED:
    
          Serial.print("Eingegeben:");
          Serial.println(eKey);
          delay(10);
    
          Serial.write(254);
    
          switch (eKey) {
            case '*': checkPassword(); delay(1); break;
    
            case '#': password.reset(); delay(1); break;
    
            default: password.append(eKey); delay(1);
          }
      }
    }
    void checkPassword() {
    
      if (password.evaluate()) { //if password is right open
        signalAccessGranted();
        Serial.println("Zugriff erlaubt");
        Serial.write(254); delay(10);
        //Add code to run if it works
        openDoor(); //deg
        delay(3000);
        Serial.println("Tür schliessen");
        // Tuere wieder schliessen
        closeDoor();
    
      } else {
        Serial.println("Zugriff verweigert"); //if passwords wrong keep locked
        Serial.write(254); delay(10);
        //add code to run if it did not work
        signalAccessRefused();
    
      }
    }
    void loop()
    {
      char key = keypad.getKey();
      signalDoorLocked();
    
      // Karte erkannt und gelesen
      if (rfidReader.PICC_IsNewCardPresent() && rfidReader.PICC_ReadCardSerial()) {
    
        Serial.print("Erkanntes RFID-TAG ist =>  ");
    
        // Bytes der ID lesen und ausgeben
        Serial.print("/");
        for (byte i = 0; i < rfidReader.uid.size; i++) {
          Serial.print(rfidReader.uid.uidByte[i], HEX);
          Serial.print("/");
        }
    
        Serial.println();
    
        // Check ob Karte mit Variable sesam übereinstimmt
        if (acceptedRFID(rfidReader.uid.uidByte)) { // ja =>
          // Erlaubten Zugriff signalisieren
          signalAccessGranted();
          Serial.println("Zugriff erlaubt => Tür öffnen");
          // Oeffnen der Tuere
          Serial.println("Password eingeben");
          // 3 Sekunden Pause
          keypadEvent();
        }
        else // nein =>
        {
          Serial.println("Zugriff verweigert");
          // Rote LED blinkt als Warnung
          signalAccessRefused();
        }
      }
    }
    [/code]

    Bibliothek:
    https://github.com/phrac/arduino/blob/master/tutorials/Password.h

    als Antwort auf: RFID & Tastenfeld Schloss #7336
    Andreas7254
    Teilnehmer

    Besser so?

    als Antwort auf: RFID & Tastenfeld Schloss #7335
    Andreas7254
    Teilnehmer
    
    #include <Password.h>
    #include <Keypad.h>
    #include <SPI.h> // Import SPI-Bibiothek
    #include <MFRC522.h> // Import RFID-Bibiothek
    #include <Servo.h> // Import Servo Bibliothek
    
    const int SDAPIN = 53; // Uno => Pin 10
    const int RSTPIN = 9; // Uno => Pin 9
    const int REDLED = 13; // Uno -> Pin 8
    const int GREENLED = 12; // Uno -> Pin 7
    const int SERVOPIN = 11; // Uno -> Pin 6
    
    const byte ROWS = 4;
    const byte COLS = 4;
    char keys[ROWS][COLS] = {
    {‘1’, ‘2’, ‘3’, ‘A’},
    {‘4’, ‘5’, ‘6’, ‘B’},
    {‘7’, ‘8’, ‘9’, ‘C’},
    {‘*’, ‘0’, ‘#’, ‘D’}
    };
    byte sesam[] = {0x8B, 0x88, 0xCA, 0x1D};
    byte rowPins[ROWS] = {48, 47, 46, 45}; //connect to the row pinouts of the keypad
    byte colPins[COLS] = {44, 43, 42, 41}; //connect to the column pinouts of the keypad
    
    Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
    MFRC522 rfidReader(SDAPIN, RSTPIN); // RFID-Empfänger
    Servo door; // Türverschluss (Servo)
    Password password = Password( “123A” );
    
    void setup()
    {
    Serial.begin(9600); // Serielle Verbindung
    SPI.begin(); // SPI-Verbindung aufbauen
    Serial.write(254);
    Serial.write(0x01);
    delay(200);
    
    door.attach(SERVOPIN);
    pinMode(REDLED, OUTPUT);
    pinMode(GREENLED, OUTPUT);
    pinMode(SERVOPIN, OUTPUT);
    keypad.addEventListener(keypadEvent); //add an event listener for this keypad
    
    rfidReader.PCD_Init(); // Initial. RFID-Leser
    Serial.println(“Türkontrolle aktiviert”);
    }
    
    bool acceptedRFID(byte uid[4]) {
    return
    (rfidReader.uid.uidByte[0] == sesam[0]) &&
    (rfidReader.uid.uidByte[1] == sesam[1]) &&
    (rfidReader.uid.uidByte[2] == sesam[2]) &&
    (rfidReader.uid.uidByte[3] == sesam[3]);
    }
    
    void openDoor() {
    for (int pos = 90; pos <= 180; pos++) {
    door.write(pos);
    delay(10);
    }
    }
    
    void closeDoor(){
    for (int pos = 180; pos >= 90; pos–) {
    door.write(pos);
    delay(10);
    }
    }
    void signalDoorLocked() {
    digitalWrite(REDLED, HIGH);
    digitalWrite(GREENLED, LOW);
    }
    
    void signalAccessGranted() {
    digitalWrite(REDLED, LOW);
    digitalWrite(GREENLED, HIGH);
    }
    
    void signalAccessRefused() {
    for (int i = 0; i < 5; i++) {
    digitalWrite(REDLED, HIGH);
    delay(250);
    digitalWrite(REDLED, LOW);
    delay(250);
    }
    }
    void keypadEvent(){
    keypad.getKey();
    signalDoorLocked();
    }
    //take care of some special events
    void keypadEvent(KeypadEvent eKey){
    switch (keypad.getState()){
    case PRESSED:
    
    Serial.print(“Eingegeben:”);
    Serial.println(eKey);
    delay(10);
    
    Serial.write(254);
    
    switch (eKey){
    case ‘*’: checkPassword(); delay(1); break;
    
    case ‘#’: password.reset(); delay(1); break;
    
    default: password.append(eKey); delay(1);
    }
    }
    }
    void checkPassword(){
    
    if (password.evaluate()){ //if password is right open
    signalAccessGranted();
    Serial.println(“Zugriff erlaubt”);
    Serial.write(254);delay(10);
    //Add code to run if it works
    openDoor(); //deg
    delay(3000);
    Serial.println(“Tür schliessen”);
    // Tuere wieder schliessen
    closeDoor();
    
    }else{
    Serial.println(“Zugriff verweigert”); //if passwords wrong keep locked
    Serial.write(254);delay(10);
    //add code to run if it did not work
    signalAccessRefused();
    
    }
    }
    void loop()
    {
    char key = keypad.getKey();
    signalDoorLocked();
    
    // Karte erkannt und gelesen
    if (rfidReader.PICC_IsNewCardPresent() && rfidReader.PICC_ReadCardSerial()) {
    
    Serial.print(“Erkanntes RFID-TAG ist => “);
    
    // Bytes der ID lesen und ausgeben
    Serial.print(“/”);
    for (byte i = 0; i < rfidReader.uid.size; i++) {
    Serial.print(rfidReader.uid.uidByte[i], HEX);
    Serial.print(“/”);
    }
    
    Serial.println();
    
    // Check ob Karte mit Variable sesam übereinstimmt
    if (acceptedRFID(rfidReader.uid.uidByte)) { // ja =>
    // Erlaubten Zugriff signalisieren
    signalAccessGranted();
    Serial.println(“Zugriff erlaubt => Tür öffnen”);
    // Oeffnen der Tuere
    Serial.println(“Password eingeben”);
    // 3 Sekunden Pause
    keypadEvent();
    }
    else // nein =>
    {
    Serial.println(“Zugriff verweigert”);
    // Rote LED blinkt als Warnung
    signalAccessRefused();
    }
    }
    }
    als Antwort auf: RFID & Tastenfeld Schloss #7334
    Andreas7254
    Teilnehmer

    Oh, entschuldigung der sollte nicht drinnen sein, dass hatte ich nur zwischendurch ausprobiert. :)
    Der sollte so sein:

    #include <Password.h>
    #include <Keypad.h>
    #include <SPI.h> // Import SPI-Bibiothek
    #include <MFRC522.h> // Import RFID-Bibiothek
    #include <Servo.h> // Import Servo Bibliothek

    const int SDAPIN = 53; // Uno => Pin 10
    const int RSTPIN = 9; // Uno => Pin 9
    const int REDLED = 13; // Uno -> Pin 8
    const int GREENLED = 12; // Uno -> Pin 7
    const int SERVOPIN = 11; // Uno -> Pin 6

    const byte ROWS = 4;
    const byte COLS = 4;
    char keys[ROWS][COLS] = {
    {‘1’, ‘2’, ‘3’, ‘A’},
    {‘4’, ‘5’, ‘6’, ‘B’},
    {‘7’, ‘8’, ‘9’, ‘C’},
    {‘*’, ‘0’, ‘#’, ‘D’}
    };
    byte sesam[] = {0x8B, 0x88, 0xCA, 0x1D};
    byte rowPins[ROWS] = {48, 47, 46, 45}; //connect to the row pinouts of the keypad
    byte colPins[COLS] = {44, 43, 42, 41}; //connect to the column pinouts of the keypad

    Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
    MFRC522 rfidReader(SDAPIN, RSTPIN); // RFID-Empfänger
    Servo door; // Türverschluss (Servo)
    Password password = Password( “123A” );

    void setup()
    {
    Serial.begin(9600); // Serielle Verbindung
    SPI.begin(); // SPI-Verbindung aufbauen
    Serial.write(254);
    Serial.write(0x01);
    delay(200);

    door.attach(SERVOPIN);
    pinMode(REDLED, OUTPUT);
    pinMode(GREENLED, OUTPUT);
    pinMode(SERVOPIN, OUTPUT);
    keypad.addEventListener(keypadEvent); //add an event listener for this keypad

    rfidReader.PCD_Init(); // Initial. RFID-Leser
    Serial.println(“Türkontrolle aktiviert”);
    }

    bool acceptedRFID(byte uid[4]) {
    return
    (rfidReader.uid.uidByte[0] == sesam[0]) &&
    (rfidReader.uid.uidByte[1] == sesam[1]) &&
    (rfidReader.uid.uidByte[2] == sesam[2]) &&
    (rfidReader.uid.uidByte[3] == sesam[3]);
    }

    void openDoor() {
    for (int pos = 90; pos <= 180; pos++) {
    door.write(pos);
    delay(10);
    }
    }

    void closeDoor(){
    for (int pos = 180; pos >= 90; pos–) {
    door.write(pos);
    delay(10);
    }
    }
    void signalDoorLocked() {
    digitalWrite(REDLED, HIGH);
    digitalWrite(GREENLED, LOW);
    }

    void signalAccessGranted() {
    digitalWrite(REDLED, LOW);
    digitalWrite(GREENLED, HIGH);
    }

    void signalAccessRefused() {
    for (int i = 0; i < 5; i++) {
    digitalWrite(REDLED, HIGH);
    delay(250);
    digitalWrite(REDLED, LOW);
    delay(250);
    }
    }
    void keypadEvent(){
    keypad.getKey();
    signalDoorLocked();
    }
    //take care of some special events
    void keypadEvent(KeypadEvent eKey){
    switch (keypad.getState()){
    case PRESSED:

    Serial.print(“Eingegeben:”);
    Serial.println(eKey);
    delay(10);

    Serial.write(254);

    switch (eKey){
    case ‘*’: checkPassword(); delay(1); break;

    case ‘#’: password.reset(); delay(1); break;

    default: password.append(eKey); delay(1);
    }
    }
    }
    void checkPassword(){

    if (password.evaluate()){ //if password is right open
    signalAccessGranted();
    Serial.println(“Zugriff erlaubt”);
    Serial.write(254);delay(10);
    //Add code to run if it works
    openDoor(); //deg
    delay(3000);
    Serial.println(“Tür schliessen”);
    // Tuere wieder schliessen
    closeDoor();

    }else{
    Serial.println(“Zugriff verweigert”); //if passwords wrong keep locked
    Serial.write(254);delay(10);
    //add code to run if it did not work
    signalAccessRefused();

    }
    }
    void loop()
    {
    char key = keypad.getKey();
    signalDoorLocked();

    // Karte erkannt und gelesen
    if (rfidReader.PICC_IsNewCardPresent() && rfidReader.PICC_ReadCardSerial()) {

    Serial.print(“Erkanntes RFID-TAG ist => “);

    // Bytes der ID lesen und ausgeben
    Serial.print(“/”);
    for (byte i = 0; i < rfidReader.uid.size; i++) {
    Serial.print(rfidReader.uid.uidByte[i], HEX);
    Serial.print(“/”);
    }

    Serial.println();

    // Check ob Karte mit Variable sesam übereinstimmt
    if (acceptedRFID(rfidReader.uid.uidByte)) { // ja =>
    // Erlaubten Zugriff signalisieren
    signalAccessGranted();
    Serial.println(“Zugriff erlaubt => Tür öffnen”);
    // Oeffnen der Tuere
    Serial.println(“Password eingeben”);
    // 3 Sekunden Pause
    keypadEvent();
    }
    else // nein =>
    {
    Serial.println(“Zugriff verweigert”);
    // Rote LED blinkt als Warnung
    signalAccessRefused();
    }
    }
    }

    als Antwort auf: Bereits verwendeter Sketch hat plötzlich Fehler #7329
    Andreas7254
    Teilnehmer

    Also ich bin selber noch Anfänger, aber bei mir gab es auch öfter ähnliche Probleme und da habe ich mein Programm geschlossen und aufgehört zu programmieren und am nächsten Tag hat es wieder funktioniert. Vielleicht könntest du es auch einmal versuchen das Programm einwenig “ausruhen” zu lassen.

Ansicht von 13 Beiträgen - 1 bis 13 (von insgesamt 13)