FORUM

Zamek Szyfrowy

WitekR
Posty: 33
https://www.oferia.pl/wykonawca/meble-kuchenne-warszawa/1240988
Rejestracja: 24 lip 2021, 2:11
Kontakt:

Zamek Szyfrowy

Post autor: WitekR »

Zamek Szyfrowy
7-1000x750.jpg
7-1000x750.jpg (68.62 KiB) Przejrzano 1312 razy


MATERIAŁY:
Arduino
keypad 4×4
wyświetlacz LCD 2×16 + konwerter I2C
dioda + rezystor(100 Ohm dla zielonej)
płytka stykowa
przewody
serwo (np. SG-90)

Wszystkie potrzebne elementy przedstawia zdjęcie.
1.jpg
1.jpg (86.85 KiB) Przejrzano 1314 razy
Zaczynamy od złożenia wszystkiego w całość na płytce stykowej. Wszystko łączymy jak rysunku:
6-1000x750.jpg
6-1000x750.jpg (53.01 KiB) Przejrzano 1313 razy
3.jpg
3.jpg (84.58 KiB) Przejrzano 1311 razy
Teraz należy ściągnąć wszystkie potrzebne biblioteki(LiquidCrystal_I2C, Password, Keypad) i możemy wgrać program, szkic napisałem samemu jest bardzo prosty w swojej budowie, zachęcam do przeanalizowania, starałem się wszystko skomentować.

Kod: Zaznacz cały

/* Zamek szyfrowy
 * sierpień 2017
 */
 
//dołączanie bibliotek
#include <LiquidCrystal_I2C.h>
#include <Wire.h>
#include <Servo.h>
#include <Keypad.h>
#include <Password.h>
 
LiquidCrystal_I2C lcd(0x27, 16, 2);//hasło konwertera
 
int ledG = 9; //dioda
 
Servo myservo;//servomechanizm
 
Password password = Password( "1234" ); //ustalanie hasła
//klawiatura
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 rowPins[ROWS] = {A0,A1,A2,A3};//piny klawiatury
byte colPins[COLS]= {A4,A5,A6,A7};
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
 
void setup(){
  lcd.init();
  Serial.begin(9600);
  myservo.attach(8);//pin serva(PWM)
  myservo.write(0);//servo w pozycji startowej
  pinMode(ledG,OUTPUT);//ust. pinu jako wyjście
  digitalWrite(ledG, LOW);//dioda zgaszona
  lcd.backlight();
  lcd.home();
  lcd.print("HASLO: ");//wyświetlanie
  lcd.setCursor(0, 1);
  keypad.addEventListener(keypadEvent);
}
 
void checkPassword(){//sprawdzanie hasła
  if (password.evaluate()){//jeśli hasło się zgadza
    Serial.println(" OTWARTE");//napisz OTWARTE
    lcd.print(" OTWARTE");
    digitalWrite(ledG, HIGH);//zaświecenie diody
    myservo.write(90);//ruch serva o 90*
    delay(5000);//dlugość otwarcia - 5s
    cls();// funkcja clear
    digitalWrite(ledG, LOW);//zgaszenie diody
    myservo.write(0);//zamknięcie serva
    password.reset();
  }else{//w przeciwnym razie
    Serial.println(" ZLE");//napisz ZLE
    lcd.print(" ZLE");
    delay(1000);//poczekaj 1s
    cls();
    password.reset();
  }
}
void keypadEvent(KeypadEvent eKey){
  switch (keypad.getState()){
    case PRESSED:
  Serial.print("HASLO: ");
  Serial.println(eKey);
  lcd.print('*');
  switch (eKey){
    case '*': checkPassword(); break;//sprawdzanie hasła
    case '#': password.reset(); cls(); break;//reset hasła
    default: password.append(eKey);
     }
  }
}
void cls(){//funkcja czyszczenia
  lcd.clear();
  lcd.print("HASLO: ");
  lcd.setCursor(0, 1);
}
void loop(){
  keypad.getKey();
}

Teraz wystarczy wpisać hasło(1234) i nacisnąć gwiazdkę na klawiaturze. Na ekranie pojawi się napis “OTWARTE”, dioda się zaświeci, servo się przekręci o 90*(kąt do ustawienia w programie) po 5 sekundach(czas do ustawienia w programie) wszystko wróci do pierwotnego stanu.
Podczas gdy wpiszemy złe lub niepełne hasło wyświetla się napis “ZLE”, który po chwili gaśnie. Jeżeli wpiszemy przypadkiem złe hasło wystarczy nacisnąć przycisk # aby wyczyścić ekran i móc wpisać prawidłowe hasło.

Wróć do „5. Zamek Szyfrowy”