ATNEL tech-forum https://forum.atnel.pl/ |
|
Multipleksowany wyswietlacz LED,problem z kropką https://forum.atnel.pl/topic24037.html |
Strona 1 z 1 |
Autor: | krawi92 [ 20 lis 2021, o 18:52 ] |
Tytuł: | Multipleksowany wyswietlacz LED,problem z kropką |
hejka, bawię się troche wyswietlaczem LED i postanowiłem sobie zrobić np: stoper. Wyswietlacz 4 pozycyjny. Ogólnie zastanawiam się jak podejść do problemu wyświetlania kropki czyli segmentu DP. Chodzi oto, żeby sekundy od minut były oddzielone kropką. Nie mogę dodać po prostu kropki do linijki ~(SEG_B|SEG_C), odpowiadającej liczbie 1. bo każda jedynka będzie z kropką. Idąc dalej np: gdy chciałbym wyświetlać temp z DS18B20 na wyświetlacz LED to temperatura by mi się zmieniała. Raz by było np: 5.8 a raz 27.5... więc ta kropka by mi się przesuwała. Nie wiem jak do tego podejść. |
Autor: | micky [ 20 lis 2021, o 23:06 ] |
Tytuł: | Re: Multipleksowany wyswietlacz LED,problem z kropką |
Dokładaj kropkę za pomocą OR do segmentów które masz zapalać. |
Autor: | krawi92 [ 21 lis 2021, o 01:11 ] |
Tytuł: | Re: Multipleksowany wyswietlacz LED,problem z kropką |
Mógłbyś troszkę rozwinąć bo nie bardzo czaje. Jakiś mały przykład. |
Autor: | embedownik [ 21 lis 2021, o 02:08 ] |
Tytuł: | Re: Multipleksowany wyswietlacz LED,problem z kropką |
Z kropki zrob osobna flage i jesli jest zapalona to do danej liczby dodaj zapalenie segmentu z kropka - w praktyce bedzie to operacja OR o ktorej pisal micky |
Autor: | krawi92 [ 21 lis 2021, o 19:12 ] |
Tytuł: | Re: Multipleksowany wyswietlacz LED,problem z kropką |
a gdzie tą operacje OR dodać ? do tej linijki ? if(licznik==1) LED_DATA = pgm_read_byte( &cyfry[cy1] ); Kombinuje, ale nie bardzo mogę to zrozumieć. Już myślałem o osobnej tablicy na liczby z kropką. ------------------------ [ Dodano po: 25 minutach ] Rozwiązanie z dodatkową tablicą dość słabe, bo mogę po prostu kropkę ustawić na stałe na danym wyświetlaczu. |
Autor: | RadekB86 [ 21 lis 2021, o 19:54 ] |
Tytuł: | Re: Multipleksowany wyswietlacz LED,problem z kropką |
Ja robiłem coś takiego: w procedurze obsługi przerwania ISR(TIMER0_COMP_vect)... |
Autor: | krawi92 [ 21 lis 2021, o 19:59 ] |
Tytuł: | Re: Multipleksowany wyswietlacz LED,problem z kropką |
to "cywsze" mnie zmiażdżyło Ok, podobnie kombinowałem, ale zaraz ponownie siądę do tego. |
Autor: | RadekB86 [ 21 lis 2021, o 20:05 ] |
Tytuł: | Re: Multipleksowany wyswietlacz LED,problem z kropką |
krawi92 napisał(a): to "cywsze" mnie zmiażdżyło Ok, podobnie kombinowałem, ale zaraz ponownie siądę do tego. xD Poprawiłem tego "babola" |
Autor: | krawi92 [ 21 lis 2021, o 20:17 ] |
Tytuł: | Re: Multipleksowany wyswietlacz LED,problem z kropką |
else if(licznik==4) LED_DATA = pgm_read_byte( &cyfry[cy3] ),LED_DATA &=~(SEG_DP); Zrobiłem tak i OK. Mogę dodatkową tablice wyrzucić Ale co nie zmienia faktu, że tym razem również ustawiłem kropkę w stałym miejscu. Zastanawiam się teraz jak podejść do tematu np: wyświetlania temperatury, gdzie kropka będzie zmieniać swoje położenie. Muszę chyba jakoś dobrać warunki, że np: if(cy2) jeśli cy2 większe od 0 to wtedy do danego segmentu dodać kropkę. Zobaczymy, czy uda mi się to zorganizować w kodzie. |
Autor: | SylwekK [ 22 lis 2021, o 10:34 ] |
Tytuł: | Re: Multipleksowany wyswietlacz LED,problem z kropką |
Operację dodania kropki (OR) rób w ostatnim momencie przed wyświetleniem odpowiedniej cyfry, czyli tam gdzie chcesz już wynik przepisać na zmienne wyświetlacza. |
Autor: | micky [ 22 lis 2021, o 15:43 ] |
Tytuł: | Re: Multipleksowany wyswietlacz LED,problem z kropką |
Dokładnie tak jak pisze przedmówca |
Autor: | embedownik [ 22 lis 2021, o 19:20 ] |
Tytuł: | Re: Multipleksowany wyswietlacz LED,problem z kropką |
krawi92 napisał(a): a gdzie tą operacje OR dodać ? do tej linijki ? if(licznik==1) LED_DATA = pgm_read_byte( &cyfry[cy1] ); Kombinuje, ale nie bardzo mogę to zrozumieć. Już myślałem o osobnej tablicy na liczby z kropką. ------------------------ [ Dodano po: 25 minutach ] Rozwiązanie z dodatkową tablicą dość słabe, bo mogę po prostu kropkę ustawić na stałe na danym wyświetlaczu. dokładnie tak jak już mnie ubiegli koledzy - najpierw na segmenty wystawiasz daną cyfrę, a potem jeśli trzeba dodajesz do tego kropkę na określonej pozycji. Nie chodziło mi o dodatkową tablicę, tylko flagę - jak dodasz to na fladze - czy zapalić kropkę, czy nie - to uzyskasz możliwość sterowania tym - będzie można migać jak w zegarkach -> o ile to potrzebne oczywiście. |
Autor: | krawi92 [ 22 lis 2021, o 21:25 ] |
Tytuł: | Re: Multipleksowany wyswietlacz LED,problem z kropką |
Ok, powiedzmy że ogarnąłem tą kropkę. Przymierzam się do wyświetlania wyniku z ds18b20 na wyświetlaczu LED. Założyłem że będę wyświetlał temp do 1 miejsca po przecinku i temp będzie dwucyfrowa. Zrobiłem przeliczenia, żeby rozdzielić taką zmienną na 3 części. Chciałbym, żeby ktoś ocenił czy dobrze do tego podszedłem i czy by to działało z biblioteką z bluebooka ktora obsluguje ds18b20. język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Zastanawiam się czy mogę sobie pozwolić na skrócenie wyniku do liczby dziesiętnej, skoro DS jest do 100+C . Jak w ten sposób testuje przykladową zmienną typu float no to mi się wszystko dobrze wyświetla. |
Autor: | mirekk36 [ 22 lis 2021, o 23:23 ] |
Tytuł: | Re: Multipleksowany wyswietlacz LED,problem z kropką |
krawi92 napisał(a): i czy by to działało z biblioteką z bluebooka ktora obsluguje ds18b20 No to może najpierw przeczytaj ten rozdział w Bluebooku o tym jak korzystać z DS18B20 bo z tą zmienną float - to przesadziłeś na maxa przeczytaj mówię ci, i zapomnij że jest taki typ jak float |
Autor: | krawi92 [ 23 lis 2021, o 20:07 ] |
Tytuł: | Re: Multipleksowany wyswietlacz LED,problem z kropką |
Rozdział czytałem, nawet sobie zbudowałem w obudowie termometr z 2 czujnikami z lcd. Faktycznie przerzucenie tego na LED będzie proste, bo sobie rozbije zmienne "cel" i "cel_fract_bits na części i przypisze do zmiennych do LED. Pytanko jeszcze mam takie, czy dobrze podszedłem do konstrukcji warunku. Powiedzmy, że wyświetlam na LED napięcie w voltach z ADC. Jeśli będę miał odczyt 7.44 to nie chcę, żeby mi się wyświetliło 07.44 tylko 7.44 więc chcę zgasić pierwszy wyświetlacz kiedy cy1=0. Zrobiłem to tak: język c Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod. gdzie 10 element tablicy to: |
Strona 1 z 1 | Strefa czasowa: UTC + 1 |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |