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



Teraz jest 20 sie 2026, o 11:48


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 6 ] 
Autor Wiadomość
PostNapisane: 11 kwi 2013, o 10:55 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 31 lip 2012
Posty: 157
Pomógł: 8

Witam.

Jak w temacie napisałem, chodzi mi o zasady poprawnego czyszczenie LCD. Napisałem jakis taki powiedzmy programik do pomiaru prędkości obrotowej wentylatora.
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


wygląda on mniej więcej tak, przerwanie zewnętrzne zlicza impulsy z wiatraczka, natomiast licznik odlicza podstawe czasu pomiaru tych impulsów. Problem występuje jeśli wiatrak wyjdzie np na 31 obr/s a po chwili spadnie na np. 8 obr/min. Wyswietlany wynik wtedy to 81 obr/min poniewaz jak wiadomo niema czyszczenia LCD. Kombinowalem na wiele sposobów, włącznie z wpisywaniem w petli if(time==count) polecenia lcd_str(" "); jednak nie daje to oczekiwanego efektu. Poza tym jeszcze jedno pytanie, jeśli gdziekolwiek w programie wpiszę polecenie lcd_cls(); dostaje ostrzeżenie "statement with no effect" co to oznacza??



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 11 kwi 2013, o 11:17 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 08 mar 2013
Posty: 236
Lokalizacja: Warszawa
Pomógł: 5

Jest przeciez na pewno jakas gotowa funckja na czyszczenie LCD, ale jak wiadomo ona trwa bardzo dlugo, wiec lcd_locate jest dobrym posunieciem.
moze przed kolejneym pomiarem napisa lcd-locate(0,6); i nastepnie lcd_int(" ")- dwie spacje wtedy powinno wyczyscic. w petli while(1) to wwal. Ale najlepiej jest mi sie wydaje po prostu napisac funckje na czyszczenie, skoro masz wyswietlacz, to po prostu zobacz jak to tam jest dla mojego to poprostu
lcd_write_instr(0x01);
-delay_ms(1.64);

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 11 kwi 2013, o 11:20 

Pomógł: 0

Sam poradziłem sobie w następujący sposób

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


czyli sprawdzam ile wynosi zmienna jeżeli przekracza granice 1-2-3, albo 3-2-1 cyfrową to za pomocą ifów wypełniam dane miejsce spacjami. Trochę to toporne ale działa ;).



Góra
  
cytowanie selektywne  Cytuj  
PostNapisane: 11 kwi 2013, o 11:22 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 10 sty 2013
Posty: 844
Lokalizacja: Przemyśl
Zbananowany użytkownik

Pomógł: 43

Takiego ostrzeżenia jeszcze nie miałem ;)
A co do czyszczenia zamiast lcd_cls() lcd_str(" ") ja tak robię ponieważ przy czyszczeniu całego wyświetlacza widać mruganie



Edit zostałem wyprzedzony :D

_________________
Klimatyzacja Przemyśl



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 11 kwi 2013, o 11:25 

Pomógł: 0

Zawsze zostaje jeszcze motyw z warstwami jak stosuje Mirek, wtedy można szaleć ;).



Góra
  
cytowanie selektywne  Cytuj  
PostNapisane: 11 kwi 2013, o 11:33 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27464
Lokalizacja: Szczecin
Pomógł: 1045

k_mirek napisał(a):
... Poza tym jeszcze jedno pytanie, jeśli gdziekolwiek w programie wpiszę polecenie lcd_cls(); dostaje ostrzeżenie "statement with no effect" co to oznacza??


No to oznacza, że kolega nie przeczytał rozdziału o LCD w Bluebook dokładnie niestety :( ... proszę się nie obrażać - nie o to chodzi - ale w książce opisuję jak buduję krok po kroku taką bibliotekę. I nie chodzi mi o to w książce żeby zaraz każdy sam sobie takie biblioteki musiał budować - można oczywiście spokojnie korzystać z tego co w książce ale...

no ale przede wszystkim na przykładzie budowy takich bibliotek - przekazuję praktyczne techniki programowania w C i rozwijam te czyste teoretyczne krótkie przykłady z pierwszej części .... po to aby można było lepiej się uczyć tego C ;)

po drugie przy tej okazji można rzeczywiście poznać chociaż jak działa obsługa czegoś tam (tu np LCD) w jakiejś bibliotece


no i po trzecie - jak ktoś nie przeczyta tego to właśnie potem ma kłopoty nawet z używaniem tej biblioteki bo została napisana z użyciem kompilacji warunkowej i ma sporo ciekawych opcji. Między innymi domyślnie np wyłączona jest z kompilacji funkcja lcd_cls() i dlatego się koledze taki komunikat pokazuje, tymczasem wystarczy tylko w pliku nagłówkowym konfiguracyjnym lcd4478.h ustawić sobie opcję na 1 (bo domyślnie jest 0) ... zdaje się USE_LCD_CLS i już będzie działać

tyle że mówię jest tam wiele fajnych ciekawostek - zarówno funkcjonalnych dla LCD jak i związanych z nauką programowania - więc zachęcam jednak do szczegółowego - chociaż raz, jeden raz przeanalizowania tego całego rozdziału a wszystko stanie się jasne. Bo wręcz w książce jest odpowiedź na to ale i pewnie wiele innych pytań ;) ... A być może kolega nawet nie zdając sobie sprawy z pełnych możliwości takiej biblioteki korzysta tylko z kilku podstawowych ? - szkoda

więc polecam przeczytać koniecznie ten rozdział ;) ok ?

------------------------ [ Dodano po: kilkunastu sekundach ]

poza tym lcd_cls() najlepiej NIGDY nie używać ... a można sobie bez tego poradzić spokojnie

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



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: 6 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

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


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:  
cron
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO