Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 19 mar 2026, o 13:10


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 11 ] 
Autor Wiadomość
PostNapisane: 8 kwi 2018, o 13:40 
Offline
Nowy

Dołączył(a): 20 sty 2017
Posty: 15
Lokalizacja: Aleksandrówek/Konin
Pomógł: 0

Witam Panowie.

Robię woltomierz na wyświetlaczu multipleksowanym. 3 cyfry. Wszystko działa fajnie i pięknie.
Wyświetla wynik ale chciałbym wygasić jedno zero nieznaczące na wyświetlaczu.

Gdy mam taki kod:

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Wyświetla prawidłowo, np. 12V wyświetli jak 12.0 ale 4,5V wyświetli jak 04.5 i to mnie boli. To zero przed.

Troszkę kombinuję sam. Dodałem warunek sprawdzający czy napięcie jest mniejsze niż 10V. Ale po tym zabiegu na wszystkich wyświetlaczach pojawiają się głupoty.
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Tworzyłem też dodatkową zmienną tak jak w kodzie z płyty od BB ale efekt podobny jak powyżej bo też pokazuje głupoty
Może ktoś poradzi na szybko jak to rozwiązać?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 kwi 2018, o 14:04 
Offline
Użytkownik

Dołączył(a): 09 gru 2016
Posty: 47
Pomógł: 4

Ja bym zrobił coś takiego:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 kwi 2018, o 14:33 
Offline
Nowy

Dołączył(a): 20 sty 2017
Posty: 15
Lokalizacja: Aleksandrówek/Konin
Pomógł: 0

Niestety ta metoda także nie działa :(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 kwi 2018, o 14:48 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 23 paź 2014
Posty: 1041
Lokalizacja: Trójmiasto
Pomógł: 190

danko91 napisał(a):
Może ktoś poradzi na szybko jak to rozwiązać?
Masz BB to na szybko zajrzyj do rozdziału Multipleksowanie LED, w kodach źródłowych do tego rozdziału masz przykład licznika który lata po wyświetlaczu ledowym 7-segmentowym - i tam zera nieznaczące są pomijane przy wyświetlaniu.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 kwi 2018, o 21:08 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 01 lis 2015
Posty: 1448
Lokalizacja: okolice Warszawa
Pomógł: 149

danko91 napisał(a):
Ale po tym zabiegu na wszystkich wyświetlaczach pojawiają się głupoty.
Składnia: [ Pobierz ] [ Ukryj ]
język c
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


zobacz:
jeżeli np. C1 ma wartość 9, to wyswietla ??? tablica[9] .... {kody_cyferki_9}
a jeżeli każesz programowi wyświetlić cyferkę : C1=255; ??? jaka jest cyferka na pozycji tab[255]. ??? ;)
jesteś poza..aaaa..tablicą , chyba gdzieś w lochach. musisz uważać na toperze. :)
hihi.. pozdrawiam.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 kwi 2018, o 05:30 
Offline
Użytkownik

Dołączył(a): 03 gru 2014
Posty: 32
Pomógł: 3

Moim zdaniem za wcześniej wstawiłeś tego ifa. Dopóki nie obliczysz wartości każdej cyfry nie wolno zmieniać wartości cyfr już obliczonych. Wstaw tego ifa po wszystkich obliczeniach, jeśli nie używasz wartości cyfr w innym miejscu w kodzie lub daj warunek tylko dla wyświetlania np. Jeżeli 0==cy1 to NIC nie wyświetlaj (pusty znak) else wyświetl cyfrę.

Wysłane z mojego SM-G900F przy użyciu Tapatalka



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 kwi 2018, o 06:48 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 01 lis 2015
Posty: 1448
Lokalizacja: okolice Warszawa
Pomógł: 149

Kolejny kroczek zblizajacy do poprawnego działania kodu.
nie musisz używać już obliczonych cyfr do dalszych działań.
Spróbuj tak;:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

itd..
:)

Wysłane z mojego Lenovo K33a42 przy użyciu Tapatalka



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 kwi 2018, o 10:30 
Offline
Nowy

Dołączył(a): 20 sty 2017
Posty: 15
Lokalizacja: Aleksandrówek/Konin
Pomógł: 0

Dzięki za odzew. Walczę nadal z tym woltomierzem. Jet prawie dobrze.

Zastosowałem coś takiego jak poradził kolega Daro69. Wygląda to tak:

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Zero się wygasza ale w tej formie jest mała niedoskonałość. Gdy reguluję napięciem to okazuje się, że w pewnych zakresach jest niepoprawny wskaz.
Wygląda to tak zwiększając napięcie:


1.8
2.9 - powinno wyświetlić 2.0
2.0
dalej dobrze
2.8
2.9
3.9 - powinno wyświetlić 3.0
3.0
3.1
dalej dobrze
3.8
4.9 - powinno wyświetlić 4.0
4.0
dalej dobrze

i tak dalej. Nie mogę się z tym uporać. Czemu tak się dzieje?

W przypadku tego kodu poniżej napięcie wyświetlane jest prawidłowo w całym zakresie ale jak wiadomo zero jest niewygaszane.
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Próbowałem z wyłączaniem anody ale to również daje podobny efekt. Macie jeszcze jakieś pomysły



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 kwi 2018, o 13:46 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 01 lis 2015
Posty: 1448
Lokalizacja: okolice Warszawa
Pomógł: 149

danko91 napisał(a):
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

zapytam tak:
jaką wartość w Twoim kodzie ma 'OFF' ? na który element tablicy ze wzorami segmentów wskazuje?
przecież cyfra to nr pozycji w tablicy, pod którym przechowywany jest szablon z ustawieniami segmentów do zapalenia.
i tak na pozycji np. 11tej - tab[10], powinien być wzór wygaszenia wszystkich segmentów. tzw. NIC. zaczynając od elementu 0: "0,1,2,3,4,5,6,7,8,9, ," << ostatnie jest nic.
spróbuj ...)(c1=10); , jeżeli masz w tablicy po dziewiątce wzór 'NIC'.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 kwi 2018, o 14:12 
Offline
Użytkownik

Dołączył(a): 07 cze 2016
Posty: 563
Pomógł: 143

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Funkcja jest sprawdzona i na pewno działa. Musisz tylko zamiast c1, c2 c3, c4 użyć odpowiednich wartości z tablicy c[0], c[1], c[2], c[3] (przyjąłem Twoją kolejność, choć osobiście preferuję odwrotną, czyli c[0] to jednostki, c[1] - dziesiątki itd.). Ewentualnie jeśli chcesz wyświetlać wartość trzycyfrową, powinieneś funkcję odpowiednio zmodyfikować.

Można oczywiście napisać funkcję bardziej uniwersalną, ale chciałem tylko pokazać przykład jak to można zrobić.

Jeśli Twoja zmienna napiecie jest zdefiniowana jako volatile i jest modyfikowana w przerwaniu, może być wskazane takie wywoływanie funkcji:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


danko91 napisał(a):
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Chciałbym zwrócić uwagę, że taki zapis nie jest zbyt poprawny. Powinno być:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 kwi 2018, o 20:31 
Offline
Nowy

Dołączył(a): 20 sty 2017
Posty: 15
Lokalizacja: Aleksandrówek/Konin
Pomógł: 0

OFF mam zdefiniowane w pliku nagłówkowym:

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Tablice z segmentami mam dwie. Jedna jest z samymi cyframi a druga cyfry + kropka. Wydaje mi się że jest okej. Pobiera wartość 11 z tablicy a więc 0xff czyi wszystkie segmenty zgaszone.
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 11 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 0 gości


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO