Перейти к публикации
iT4iT.CLUB

Oksymoron

Пользователи
  • Публикации

    7
  • Зарегистрирован

  • Посещение

Сообщения, опубликованные пользователем Oksymoron


  1. Сори вот скетч

    Скрытый текст
    
    //* is to validate password   короче чтобы войти
    //# is to reset password attempt Ну чтоб сделать сброс
    
    //внимаение ! если выдает ошибки качаем все библиотеки что указанны ниже !
    #include <SPI.h> // скачайте эту библиотеку !
    #include <MFRC522.h> // скачайте эту библиотеку !
    #include <Password.h> // скачайте эту библиотеку !
    #include <Keypad.h> // скачайте эту библиотеку !
    #define SS_PIN 10
    #define RST_PIN 9
    
    MFRC522 mfrc522(SS_PIN, RST_PIN);  // объект MFRC522C / reate MFRC522 instance.
    unsigned long uidDec, uidDecTemp;
    
    int door =8;
    int key = A5;
    int green = A1;
    int red = A2;
    
    Password password = Password( "DDCBC97" );
    
    const byte ROWS = 4; // Four rows
    const byte COLS = 4; //  columns
    // Define the Keymap
    char keys[ROWS][COLS] = {
    {'1','2','3','A'},
    {'4','5','6','B'},
    {'7','8','9','C'},
    {'*','0','#','D'}
    };
    
    byte rowPins[ROWS] = { 0,A0,7,6 };// Connect keypad ROW0, ROW1, ROW2 and ROW3 to these Arduino pins.
    byte colPins[COLS] = { 5,4,3,2, };// Connect keypad COL0, COL1 and COL2 to these Arduino pins.
    
    // Create the Keypad
    Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
    
    void setup()
    {
        
        pinMode (door,OUTPUT);
        pinMode (key,INPUT);
        pinMode (green,OUTPUT);
        pinMode (red,OUTPUT);
        Serial.begin(9600);
        
        SPI.begin();  //  инициализация SPI / Init SPI bus.
        mfrc522.PCD_Init();     // инициализация MFRC522 / Init MFRC522 card.
    
        keypad.addEventListener(keypadEvent); //add an event listener for this keypad
    
        Serial.println("");
        Serial.println("");
        Serial.println(" ======================== ");
    
        Serial.println(" Waiting for card... ");
    }
    
    void loop()
    {
        { keypad.getKey(); }
        if (digitalRead(key) == HIGH)
        {
            digitalWrite(door,HIGH);
            Serial.println("Open ==>");
            digitalWrite(green, HIGH);
            delay(100);
            digitalWrite(red, HIGH);
            delay(100);
            digitalWrite(door,LOW);
            delay(100);
            digitalWrite(green, LOW);
            delay(100);
            digitalWrite(green, HIGH);
            delay(50);
            digitalWrite(red, HIGH);
            delay(50);
            digitalWrite(door,LOW);
            delay(50);
            digitalWrite(green, LOW);
            digitalWrite(green, HIGH);
            delay(50);
            digitalWrite(red, HIGH);
            delay(50);
            digitalWrite(door,LOW);
            delay(50);
            digitalWrite(green, LOW);
            delay(50);
            digitalWrite(green, HIGH);
            delay(50);
            digitalWrite(red, HIGH);
            delay(50);
            digitalWrite(green, LOW);
            delay(50);
            digitalWrite(red,LOW);
            digitalWrite(door,LOW);
        }
        // Поиск новой карточки / Look for new cards.
        if ( ! mfrc522.PICC_IsNewCardPresent()) {
            return;
        }
    
        // Выбор карточки / Select one of the cards.
        if ( ! mfrc522.PICC_ReadCardSerial()) {
            return;
        }
    
        uidDec = 0;
    
        // Выдача серийного номера карточки "UID".
        for (byte i = 0; i < mfrc522.uid.size; i++)
        {
            uidDecTemp = mfrc522.uid.uidByte[i];
            uidDec = uidDec*256+uidDecTemp;
        }
        Serial.println("Card UID: ");
        Serial.println(uidDec);
    
        
        if (uidDec == 384627541) // если "UID" номер совпал.
        {
            // включим светодиод.
            digitalWrite(door,HIGH);
            // Печатаем в Serial монитор .
            Serial.println("Open ==>");
        }
        // также и с другими номерами карт.
        else if (uidDec == 959884118)
        {
            Serial.println("Hi Sergey");
        }
        else if (uidDec == 695670870)
        {
            Serial.println("Hi Peter");
        }
        else  // если "UID" номер карты не совпал.
        {
            Serial.println(" unknown card");
            delay(10000);
        }
    
        Serial.println("=====================================");
    
        delay(3000); // пауза 3 секунды.
        digitalWrite(door,LOW);
    
        // и выключим все светодиоды.
    }
    
    //take care of some special events
    void keypadEvent(KeypadEvent eKey){
        switch (keypad.getState()){
            case PRESSED:
                Serial.print("Pressed: ");
                Serial.println(eKey);
                digitalWrite(green,HIGH);
                digitalWrite(red,HIGH);
                delay(50);
                digitalWrite(green,LOW);
                digitalWrite(red,LOW);
    
                switch (eKey){
                    case '*': checkPassword(); break;
                    case '#': password.reset(); break;
                    default: password.append(eKey);
                }
        }
    }
    
    void checkPassword(){
        if (password.evaluate()){
            Serial.println("Success");
            digitalWrite(door,HIGH); // открываем дверь
            digitalWrite(green, HIGH); //включаем выключаем светодиоды =) моргаем короче
            delay(200);
            digitalWrite(green,LOW);
            delay(200);
            digitalWrite(green, HIGH);
            delay(200);
            digitalWrite(green,LOW);
            delay(200);
            digitalWrite(green, HIGH);
            delay(200);
            digitalWrite(green,LOW);
            delay(200);
            digitalWrite(green, HIGH);
            delay(200);
            digitalWrite(green,LOW);
            delay(200);
            digitalWrite(green, HIGH);
            delay(200);
            digitalWrite(green,LOW);
            delay(200);
            digitalWrite(green, HIGH);
            delay(200);
            digitalWrite(green,LOW);
            delay(200);
            digitalWrite(green, HIGH);
            delay(200);
            digitalWrite(green,LOW);
            delay(200);
            digitalWrite(green, HIGH);
            delay(200);
            digitalWrite(green,LOW);
            delay(200);
            digitalWrite(green, HIGH);
            delay(200);
            digitalWrite(green,LOW);
            delay(200);
            digitalWrite(green, HIGH);
            delay(200);
            digitalWrite(green,LOW);
            delay(200);
            Serial.println("Open ==>");
            digitalWrite(door,LOW);
        }else{
            Serial.println("Wrong");
            digitalWrite(red, HIGH); // моргаем красным светодиодом (долго, а потомучто нефиг взламывать мой замок ! это затруднит взлом )
            delay(400);
            digitalWrite(red,LOW);
            delay(400);
            digitalWrite(red, HIGH);
            delay(400);
            digitalWrite(red,LOW);
            delay(400);
            digitalWrite(red, HIGH);
            delay(400);
            digitalWrite(red,LOW);
            delay(400);
            digitalWrite(red, HIGH);
            delay(400);
            digitalWrite(red,LOW);
            delay(400);
            digitalWrite(red, HIGH);
            delay(400);
            digitalWrite(red,LOW);
            delay(400);
        }
    }

     

     


  2. Доброго времени суток! Прошу помощи с доработкой кодового замка, замок работает на ура, но при вводе правильного пароля реле срабатывает и отключается а если нажать еще рас * тогда реле так же сработает. Каким способом можно организовать программный сброс который включиться после нажатия любой кнопки клавиатуры и сбросит arduino по истечению 10 сек. За ранее благодарю.

    DbrlVas01lo.jpg

    скетч.7z

×
×
  • Создать...