nie to ma byc wyświetlacz taki jak napisałem ma wyświetlac tylko jeden znak
Tyle co sam rozkminiłem
Dekoder morsa:
Dekodowanie znaków:
1. ustawić kody od najkrótszego do najdłuższego
2. zliczanie długości:
kropka (.) - 1 jednostka (~60 ms ciągłego sygnału)
kreska (-) - 3 jednostki (3 kropki)
przerwa między kropką/kreską - 1 kropka
odstęp między literami - 3 kropki
odstęp między słowami - 7 kropek
3. Algorytm
3.1 Ustalić czas trwania jednej jednostki
3.2 Nasłuch (wersja o stałej prędkości wprowadzania):
3.2.1 Mierzyć wypełnienie impulsu w ustalonym czasie jednostki
jeżeli był wciśnięty przez 75-90% założonego czasu zapisać jako 1 do łańcucha tekstowego morsa (ma to na celu wyeliminowanie drgań przycisku i eliminację "przeciągniętej 3 jednostki")
jeżeli nie był wciśnięty przez 75-90% założonego czasu zapisać jako 0 do łańcucha tekstowego morsa
jeżeli 3 ostatnie znaki w łańcuchu tekstowym morsa to "0" przerwać nasłuch i rozpocząć dekodowanie znaku (przejdź do 3.3)
przejdź do 3.2.1
3.3 Przygotować łańcuch do dekodowania
Usunąć zera poprzedzające pierwsze wystąpienie "1" w łańcuchu
Usunąć 3 zera które znalazły się na końcu łańcucha
(Przykład: łańcuch przed dekodowaniem: "0010101000" -> po przygotowaniu -> "10101")
Po przygotowaniu łańcucha przejść do dekodowania
3.4 Dekodowanie
Jeżeli łańcuch jest pusty nie rób nic i pozostaw ostatnią znaną literę na wyświetlaczu
Jeżeli łańcuch nie jest pusty:
Porównaj z tabelą zero-jedynkową (pkt. 4) i znajdź pasujący ciąg
Jeżeli wyszukiwanie się powiedzie wyświetl na wyświetlaczu literę lub cyfrę przypisaną do ciągu
Jeżeli wyszukiwanie się nie powiedzie wyczyść wyświetlacz.
3.5 Przejdź do 3.2 (Nasłuch)
4. Tabela kodów zero/jeden (nie mylić z binarną)
A:10111
B:111010101
C:11101011101
D:1110101
E:1
F:101011101
G:111011101
H:1010101
I:101
J:10111
itd. resztę sam sobie przygotuj na podstawie:
http://upload.wikimedia.org/wikipedia/commons...e.svg/2000px-International_Morse_Code.svg.png
Tabelę należy posortować od najkrótszego kodu do najdłuższego (czyli "E" teoretycznie powinno być pierwsze w tabeli, potem "I" i wszystko "E-podobne" potem "T" (111) i wszystko "T-podobne" itd...)
5. Prosty test
zakładając że przyjmiemy jednostkę na poziomie 60 ms wciskając przycisk krótko jednokrotnie po ok. 180 ms powinna pojawić się litera "E", znowu przytrzymując przycisk przez 180ms po ok. 360ms powinna pojawić się litera "T"
Ale nie potrafię zapisać tego timera do zliczania tych cykli.
W sumie to dopiero zacznam mieć z tym jakąś styczność.