INFORMACJA: Poniższy post nie wydostał się z Poczekalni :(
Cześć :) Jest to mój pierwszy post na Majsterkowie. Chciałbym Wam pokazać jak zrobić prosty system otwierania drzwi 4-cyfrowym kodem z użyciem Arduino. Taki układ możemy zamontować do drzwi używając serwa. W kodzie nie ma użytego serwa ale łatwo można go dodać :) Tak jak powiedziałem zamek jest zabezpieczony 4- cyfrowym kodem który sami możemy ustawić. Wyświetlacz będzie nas komunikował o tym czy hasło zostało dobrze wpisane czy źle.
Musimy ustawić 4-cyfrowe hasło, jest to 13 linijka w kodzie. Zmieniamy te 4 cyfry.
Do wykonania zadania będziemy potrzebowali:
- Arduino Link
- Klawiatura numeryczna Link
- Buzzer Link
- Wyświetlacz LCD z konwerterem I2C Link lub sam konwerter Link
- Płytkę stykową Link
Więc zaczynamy :)
Tutaj jest schemat wykonany w Fritzingu:
Podłączamy klawiaturę zgodnie z schematem:
Rezystory to 10 KΩ, ale można je odpuścić.
Skecz: (jest to trochę zmodyfikowany przykładowy skecz)
#include <Password.h> //http://www.arduino.cc/playground/uploads/Code/Password.zip #include <Keypad.h> //http://www.arduino.cc/playground/uploads/Code/Keypad.zip #include <Wire.h> #include <LiquidCrystal_I2C.h> #define BACKLIGHT_PIN 3 const int buzzer = 12; LiquidCrystal_I2C lcd(0x27,2,1,0,4,5,6,7); Password password = Password( "3781" ); // Define the Keymap const byte ROWS = 4; //four rows const byte COLS = 3; //three columns char keys[ROWS][COLS] = { {'1','2','3'}, {'4','5','6'}, {'7','8','9'}, {'#','0','*'} }; byte rowPins[ROWS] = {5, 4, 3, 2}; //connect to the row pinouts of the keypad byte colPins[COLS] = {8, 7, 6}; //connect to the column pinouts of the keypad // Create the Keypad Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS ); void setup(){ pinMode(buzzer, OUTPUT); Serial.begin(9600); lcd.begin (16,2); lcd.setBacklightPin(BACKLIGHT_PIN,POSITIVE); lcd.setBacklight(HIGH); lcd.home(); lcd.print("WPISZ HASLO:"); lcd.setCursor(0,1); keypad.addEventListener(keypadEvent); //add an event listener for this keypad } void cls() { lcd.clear(); lcd.home(); lcd.print("WPISZ HASLO:"); lcd.setCursor(0,1); } void loop(){ keypad.getKey(); } void keypadEvent(KeypadEvent eKey){ switch (keypad.getState()){ case PRESSED: Serial.print("Pressed: "); Serial.println(eKey); lcd.print('*'); switch (eKey){ case '*': checkPassword(); break; case '#': password.reset(); cls(); break; default: password.append(eKey); } } } void checkPassword(){ if (password.evaluate()){ Serial.println("Sukces"); lcd.print("Sukces"); delay(5000); cls(); password.reset(); }else{ Serial.println("ZLE haslo"); lcd.print("ZLE haslo"); digitalWrite(buzzer,HIGH); delay(2000); cls(); digitalWrite(buzzer,LOW); password.reset(); } }
Dla wyjaśnienia, buzzer podpinamy pod pin 12, lcd tak jak wskazuje konwerter czyli SCL do SCL i SDA do SDA, klawiaturę tak jak na schemacie.
Po wgraniu programu i po podłączenia zasilania powinno to wyglądać tak:
Gdy wpisujemy hasło:
Sukces:
Złe hasło:
To by było na tyle z tego poradnika myślę że się spodobał, w razie wątpliwości proszę pytać w komentarzach :)
INFORMACJA: Poniższy post nie wydostał się z Poczekalni :(
Tam trzeba zmienić nie 13 linijkę a 12.
Majsterkowo schodzi na psy… Sam piszesz, że to jest zmodyfikowany przykład, to poco to tu publikujesz, chyba każdy po 2h bawienia się Arduino i podstawami programowania potrafi coś takiego zrobić, szczególnie wykorzystując gotowe biblioteki.
Widać, że potrzebujesz rabatu do Botlandu… czego ludzie nie zrobią dla hajsu….
Jeżeli chodzi o sam wpis, to następnym razem pamiętaj o lepszej jakości zdjęć i żeby nie były poruszone jak to ostatnie.
Zgadzam się z Mateuszem Jarosem. Chyba każdy kto wykonał już kilka projektów z iście genialną platformą jaką jest Arduino wie już, jak zrobić coś takiego.
Dodatkowo powinieneś dać równolegle z buzzerem zaporowo jakąś diodę shottky’ego.
P.S Bloody do laptopa??? :/
Gdzie system otwierania drzwi ? Coś ten projekt niezgodny z tytułem.
jeszcze ja się wtrącę, to WPISZ HASLO SUKCES wygląda trochę z d* przed 75 i 81 linijką powinno być lcd.clear