Dam_elektronik Napisano Kwiecień 6, 2021 Udostępnij Napisano Kwiecień 6, 2021 #include <Servo.h> #include <LiquidCrystal_I2C.h> // biblioteka do LCD #include <Keypad.h> //biblioteka do klawiatury #include <Wire.h> Servo servo; int pos = 40; char* password ="2004"; //hasło int pozisyon = 0; int przycisk = 0; const byte rows = 4; const byte cols = 4; char keyMap [rows] [cols] = { {'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', '8', '9', 'C'}, {'*', '0', '#', 'D'} }; byte rowPins [rows] = {2, 3, 4, 5}; byte colPins [cols] = {6, 7, 8, 9}; Keypad myKeypad = Keypad( makeKeymap(keyMap), rowPins, colPins, rows, cols); LiquidCrystal_I2C lcd(0x3F, 16, 2); void setup(){ servo.attach(10); lcd.begin(); setLocked (true); przycisk = 0; } void loop(){ setLocked (true); char whichKey = myKeypad.getKey(); lcd.setCursor(0, 0); lcd.print(" Witam"); lcd.setCursor(0, 1); lcd.print(" Wpisz haslo"); if(whichKey == '*' || whichKey == '#' || whichKey == 'A' || // przyciski złe whichKey == 'B' || whichKey == 'C' || whichKey == 'D'){ przycisk=0; pozisyon=0; setLocked (true); lcd.clear(); lcd.setCursor(0, 0); lcd.print("ZLY PRZYCISK"); delay(1000); lcd.clear(); } if(whichKey == '0' || whichKey == '1' || whichKey == '2' || whichKey == '3' || //define keys whichKey == '4' || whichKey == '5' || whichKey == '6' || whichKey == '7' || whichKey == '9' || whichKey == '10'){ przycisk++; } if(przycisk == 5){ przycisk = 0; lcd.clear(); lcd.setCursor(0,0); lcd.write(" ZA DUZO"); lcd.setCursor(0,1); lcd.write(" ZNAKOW"); delay(1000); lcd.clear(); } if(przycisk == 1){ lcd.clear(); lcd.setCursor(0,1); lcd.write(" *"); } if(przycisk == 2){ lcd.clear(); lcd.setCursor(0,1); lcd.write(" **"); } if(przycisk == 3){ lcd.clear(); lcd.setCursor(0,1); lcd.write(" ***"); } if(przycisk == 4){ lcd.clear(); lcd.setCursor(0,1); lcd.write(" ****"); } if(przycisk == 4 && pozisyon < 3){ lcd.clear(); lcd.setCursor(0,0); lcd.write(" Złe"); lcd.setCursor(0,1); lcd.write(" Haslo"); delay(1000); przycisk = 0; lcd.clear(); } if(whichKey == password [pozisyon]){ pozisyon ++; } if(pozisyon == 4){ przycisk = 0; pozisyon = 0; setLocked (false); lcd.clear(); lcd.setCursor(0, 0); lcd.print("DOBRE HASLO"); delay(3000); lcd.clear(); lcd.setCursor(0, 0); lcd.print("Skrytka zamknie"); lcd.setCursor(0, 1); lcd.print(" sie za minute"); delay(60000); lcd.clear(); } delay(100); } void setLocked(int locked){ if(locked){ servo.write(40); } else{ przycisk = 0; servo.write(130); } } Gdy wpisuję hasło nie pojawiają się * oraz gdy wpiszę błędne hasło nie wyświetla się "Zle haslo" tylko pojawia się niebieskie tło tak jak na zdjęciu. Cytuj Link do komentarza Share on other sites More sharing options...
wiktorqwe Kwiecień 6, 2021 Udostępnij Kwiecień 6, 2021 A czy na wyświetlaczu wyświetla się cokolwiek? Jak wpiszesz w Void setup, albo Void loop : lcd.print("Hello, world!"); To czy się wyświetla? Jak wejdziesz w przykłady/ LiquidCristal_I2C/Hello, world, To popatrz na siódmą linijkę: LiquidCrystal_I2C lcd(0x27,20,4); // set the LCD address to 0x27 for a 16 chars and 2 line display Pomijając, że jest to przykład dla wyświetlacza 20:4 to jak ja się tym bawiłem to ten adres 0x27 zawsze działał A ty masz: LiquidCrystal_I2C lcd(0x3F, 16, 2); Zmień na: LiquidCrystal_I2C lcd(0x27, 16, 2); I napisz czy działa. 1 Cytuj Link do komentarza Share on other sites More sharing options...
Dam_elektronik Kwiecień 6, 2021 Autor tematu Udostępnij Kwiecień 6, 2021 @wiktorqwe wyświetla się tylko nie wyświetla się to co napisałem powyżej Cytuj Link do komentarza Share on other sites More sharing options...
farmaceuta Kwiecień 6, 2021 Udostępnij Kwiecień 6, 2021 Moze dlatego ze jesli "przycisk" ma 2 to wyswietlasz gwiazdki, po delay(100) kasujesz i wyswietlasz to co masz na poczatku loop() i tak w kolko...poprostu za szybko.. 1 Cytuj Link do komentarza Share on other sites More sharing options...
Polecacz 101 Zarejestruj się lub zaloguj, aby ukryć tę reklamę. Zarejestruj się lub zaloguj, aby ukryć tę reklamę. Produkcja i montaż PCB - wybierz sprawdzone PCBWay! • Darmowe płytki dla studentów i projektów non-profit • Tylko 5$ za 10 prototypów PCB w 24 godziny • Usługa projektowania PCB na zlecenie • Montaż PCB od 30$ + bezpłatna dostawa i szablony • Darmowe narzędzie do podglądu plików Gerber Zobacz również » Film z fabryki PCBWay
Dam_elektronik Kwiecień 6, 2021 Autor tematu Udostępnij Kwiecień 6, 2021 @farmaceuta jak wpisuję dobre hasło to wszystko działa dobrze. A jak wpisuję wolno to jest bez zmian Cytuj Link do komentarza Share on other sites More sharing options...
farmaceuta Kwiecień 6, 2021 Udostępnij Kwiecień 6, 2021 (edytowany) Ja bym to uproscil...robisz dwie tablice, w jednej na sztywno wpisane haslo, do drugiej zapisujesz to co wciskasz...w warunku sprawdzasz jaki klawisz wcisniety. Po uzyskaniu odpowiedniej ilosci znakow porownujesz tablice i odpowiednio interpretujesz... Edit..poza tym takie rozwiazanie daje Ci mozliwosc zmiany hasla z poziomu arduino i zapisu do eepromu.. Edytowano Kwiecień 6, 2021 przez farmaceuta 1 Cytuj Link do komentarza Share on other sites More sharing options...
farmaceuta Kwiecień 10, 2021 Udostępnij Kwiecień 10, 2021 No i jak tam @Dam_elektronik ? Wymysliles cos?😉 1 Cytuj Link do komentarza Share on other sites More sharing options...
Dam_elektronik Kwiecień 15, 2021 Autor tematu Udostępnij Kwiecień 15, 2021 @farmaceuta zmieniłem z lcd.write na lcd.print i dziła 1 Cytuj Link do komentarza Share on other sites More sharing options...
farmaceuta Kwiecień 15, 2021 Udostępnij Kwiecień 15, 2021 24 minuty temu, Dam_elektronik napisał: @farmaceuta zmieniłem z lcd.write na lcd.print i dziła nie pamietam juz ale chyba "write" sluzy do wyswietlania pojedynczego bajtu??/bitmapy??...moge glupoty gadac...no ale do zwyklych napisow to "print" z regoly sie uzywa.. 1 Cytuj Link do komentarza Share on other sites More sharing options...
ethanak Kwiecień 15, 2021 Udostępnij Kwiecień 15, 2021 1 godzinę temu, farmaceuta napisał: nie pamietam juz ale chyba "write" sluzy do wyswietlania pojedynczego bajtu Dobrze pamiętasz. write() wypisuje pojedynczy bajt. 2 Cytuj Link do komentarza Share on other sites More sharing options...
Pomocna odpowiedź
Dołącz do dyskusji, napisz odpowiedź!
Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!