kapipapi Napisano Czerwiec 8, 2019 Udostępnij Napisano Czerwiec 8, 2019 Mam pytanie i proszę o pomoc Więc tak, zaprogramowałem wyświetlacz LCD 2x16 z klawiaturą membranową w ten sposób, że to co wcisnę to się pojawia na wyświetlaczu. Ma to służyć do wpisywania PINu i tu zaczyna się mój problem gdyż w razie pomyłki chciałem klawiszem 'A' usunąć znak przed kursorem (po jego lewej stronie) ale kompletnie nie wiem jak to zrobić 😞 Kombinowałem coś z funkcją lcd.rightToLeft() i żeby wtedy wypisał pusty znak ale nie działa Pomoże ktoś?? Cytuj Link do komentarza Share on other sites More sharing options...
Treker (Damian Szymański) Czerwiec 10, 2019 Udostępnij Czerwiec 10, 2019 @kapipapi, witam na forum 😉 Widzę, że to Twoje pierwsze kroki na Forbocie, oto najważniejsze informacje na start: Chcesz przywitać się z innymi członkami naszej społeczności? Skorzystaj z tematu powitania użytkowników.Opis najciekawszych funkcji, które ułatwiają korzystanie z forum znajdziesz w temacie instrukcja korzystania z forum - co warto wiedzieć?Poszczególne posty możesz oceniać (pozytywnie i negatywnie) za pomocą reakcji - ikona serca w prawym dolnym rogu każdej wiadomości. Dnia 8.06.2019 o 17:51, kapipapi napisał: Ma to służyć do wpisywania PINu i tu zaczyna się mój problem gdyż w razie pomyłki chciałem klawiszem 'A' usunąć znak przed kursorem (po jego lewej stronie) ale kompletnie nie wiem jak to zrobić 😞 Wklej swój program bez tego ciężko coś doradzić 😉 Cytuj Link do komentarza Share on other sites More sharing options...
marek1707 Czerwiec 10, 2019 Udostępnij Czerwiec 10, 2019 Podejrzewam, że traktujesz wyświetlacz jak notatnik na kolejne znaki. Wciągając z klawiatury jedną cyfrę wypisujesz ją od razu na wyswietlaczu korzystając z tego, że automatycznie przesuwa się kursor a kolejne wpisy będa pojawiać się coraz bardziej na prawo. No i teraz brakuje Ci "zjadania" już pokazanych znaków i cofania kursora. Moim zdaniem, zamiast bazować na pewnej własności wyświetlacza (i narzekania że brakuje jakiejś innej) zupełnie zmień podejście. Potraktuj wyświetlacz tylko jako ekran ppokazujący za każdym razem wszystko co już zgormadziłeś. Zrób sobie zatem jakiś bufor (tablicę znaków) w pamięci RAM wypełniona na początku spacjami. Potrzebny też będzie wskaźnik, indeks do tej tablicy, który będzie odpowiadał za pozycję wirtualnego kursora. Po otrzymaniu kolejnego znaku z klawiatury podejmujesz decyzję czy jest to: kolejna cyfra PINu znak końca (Enter?) znak wycofania (Backspace?) W pierwszym przypadku wstawiasz znak do tablicy w miejsce wskazane przez indeks i popychasz go do przodu, o ile oczywiście nie osiągnął końca tablicy. W drugim kończysz całą zabawę i zaczynasz analizować wczytany PIN - wiesz ile masz znaków, bo tę liczbę wskazuje pozycja indeksu/kursora. W trzecim najpierw cofasz indeks o 1 pozycję (o ile nie stoi już na początku tablicy) i wstawiasz tam spację. To wszystko. Dopiero teraz wypisujesz od razu całą tablicę na LCD (zaczynając zawsze od tego samego miejsca na ekranie) i umieszczsz jego kursor w miejscu wskazanym pzez indeks tablicy. Dzięki temu możesz robić cuda ze znakami (np. przesuwać kursor po znakach, robić insert wewnątrz tekstu, kasować wszystkie naraz itp) byle tylko były do tego odpowiednie klawisze. Ani razu nie korzystasz z jakichś dziwnych cech wyświetlacza ani biblioteki LCD, bo jedyną rzeczą jakiej potrzebujesz to wypisanie kilku/nastu? znaków i ustawienie kursora. Wszystkie "sztuczki" robi procesor na swojej tablicy, a ten ma możliwości prawie nieograniczone. Spróbuj takiego podejścia i pokaż nowy kod. Zacznij od stworzenia tablicy znaków, wypełnienia jej spacjami i wypisania całości na LCD. Potem po kolei zajmiesz się obsługą zwykłych cyfr, Entera i Backspace. Powodzenia 🙂 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!