Nie rozumie czym się tak martwić, na razie, to znaczy do poprzedniej wersji, działało to na tej zasadzie, że
Kod: Zaznacz cały
// liczba całkowita - odleglosc na impuls w 0,000001mm, max 32000
int distance = 1000;
powyższa liczba miała wpływ na to ile Arduino wyświetla na wyświetlaczu i zawsze nie było problemu z tym, żeby wyświetliło mniej niż ilość impulsów na obrót enkodera. I tak dla enkodera 1000 imp/obr dawało się wyświetlić

i każdą liczbę mniejszą w zależności od tego jaką cyfrę się wpisze w linii [int distance = 1000;]
A więc zależy to od użytkownika a nie od programisty i nie ma sensu o to zawracać głowę koledze strikexp.
Pisałem, że przydało by się wprowadzić coś co dawało by możliwość by zwielokrotnić tę liczbę. Z tym był problem i miał się rozwiązać po zdobyciu enkodera.
pioterek pisze: Zgłaszałem pewne rzeczy które by warto udoskonalić. I tak: Zera które są dalej na lewo niż jedno przed przecinkiem wyłączyć.
( to zostało zrobione - ekstra ) Gdyby ten minus był obok pierwszej cyfry to było by elegancko.
pioterek pisze: Wprowadzić dodatkowe cztery przyciski z których jedna para by ustawiała cyfrę, a kolejna para dawała możliwość zmiany jej wartości w górę i w dół, tak jak to jest na wielu monitorach do zmiany parametrów obrazu. Pierwszy z przycisków "Setup" ma włączać możliwość edycji aktualnie wyświetlanej wartości, funkcja ta powinna sprawić, że pierwsza cyfra zacznie migać i dzięki temu wiadomo, że to właśnie ją można zmieniać. Ponownie włączenie tego przycisku ma wyłączać możliwość (wpisywania) - zmiany wartości na wyświetlaczu. Funkcja ta, po jej włączeniu oprócz mrugania edytowaną cyfrą powinna aktywować pozostałe przyciski i zmieniać działanie trzeciego - patrz "Uwaga". ( Jeżeli te mruganie jest za trudne do wykonania, to można by włączyć wszystkie kropki poza tą której cyfrę edytujemy.)
Drugi przycisk "Select" powinien sprawić, że zaczyna migać kolejna cyfra i dzięki temu wiadomo, że to ją można edytować, ponowne wciskanie przełącza na kolejną cyfrę i tak w kółko bez końca, następna, następna, aż dojdzie do ostatniej i znów od pierwszej.
Trzeci przycisk "UP" wciśnięcie jego powoduje zmianę wartości migającej cyfry na kolejną wyższą, i tak gdy było 2, to zmieni ją na 3, itd zawsze o jedną w górę a po dojściu do wartości 9 zmienia ją na 0, potem na 1 i tak w kółko. Uwaga! gdy wcześniej nie został wybrany przycisk "Setup" i żadna cyfra nie mruga to ten trzeci przycisk powinien powodować wyzerowanie całego licznika tak jak dotychczasowy zastosowany w napisanym wcześniej programie.
Czwarty przycisk "DOWN" wciśnięcie jego powoduje zmianę wartości migającej cyfry na kolejną niższą, i tak gdy było 4, to zmieni ją na 3, itd zawsze o jedną w dół a po dojściu do wartości 0 zmienia ją na 9, potem na 8 i tak w kółko.
Zostało zrobione, ale inaczej - wprowadzone zostały dodatkowe przyciski, a lepiej było by, żeby niektóre z nich miały kilka funkcji tak jak to opisałem. W ostateczności miałem nadzieję, że wystarczą trzy przyciski gdyby zrezygnować z ostatniego "Down" a tu się narobiło aż pięć.
pioterek pisze: liczy tak samo, nadal nie ma zwielokrotnienia wyświetlanej wartości. Trzymam kciuki, żeby dobrze poszło dalej z pozostałymi udoskonaleniami.
Przy wpisaniu 5000 na obrót wychodzi [000 0,541]. Jest jakaś dziwna zależność, bo wydaje mi się, że po wielokrotnym odjęciu liczby 256 od wpisanej liczby pozostała reszta mniejsza od 256 działa tak samo jak pierwotnie wpisana liczba. A więc 5000 -(18*256)=392 i gdy wpiszę 392 to wynik jest identyczny jak dla 5000. Czyli ilość doliczanych impulsów do licznika w reakcji na impulsy enkodera są regulowane tylko w dół, a przydało by się jeszcze w górę.
Wpisywanie w program liczby większej niż [int distance = 250;] nie ma sensu, bo i tak nie zwiększa to wyniku na wyświetlaczu.
Ostatniej wersji nie testowałem jeszcze dokładnie więc proszę poczekać.