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



Teraz jest 21 sty 2026, o 19:59


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 10 ] 
Autor Wiadomość
PostNapisane: 2 paź 2014, o 13:32 
Offline
Użytkownik

Dołączył(a): 22 lut 2014
Posty: 52
Pomógł: 0

Witam.

Mam Atmege8, tact switch i LCD. Problem polega na tym, iż chce za pomocą tact switch'a zmieniać wartość, w moim przypadku wartość temperatury jaką chce ustawić. Wartość się zmienia, startuje od 0 i przy każdym wciśnięciu switcha zwiększa się o jeden. Lecz problem pojawia się gdy zmniejszam wartość, gdy zmieniam z 10 na 9 to na wyświetlaczu pojawia mi się wartość 90, a nie 9... Potem odlicza 80, 70, 60... Jak poradzić sobie z tym problemem?

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

_________________
www.electrobot.pl



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 paź 2014, o 14:09 
Offline
Użytkownik

Dołączył(a): 29 wrz 2014
Posty: 28
Pomógł: 5

Działa Ci tak, ponieważ po zejściu z liczby dwucyfrowej na pojedyncze cyfry(w twoim przypadku z 10 na 9 itd.) nie ma użytej funkcji czyszczenia lcd. Znak(u Ciebie 0) nie jest zastępowany innym i pozostaje nadal w pamięci ram wyświetlacza mimo, że w atmedze zmienna ma inną wartość.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 paź 2014, o 14:18 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 03 mar 2014
Posty: 580
Lokalizacja: Jastrzębie-Zdrój
Pomógł: 71

Witam,

Kolega wyżej mnie ubiegł :)

Na początku pętli while daj lcd_cls();

z Niebieskim pozdRowieniem,
Doman89



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 paź 2014, o 14:35 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 13 maja 2013
Posty: 288
Ostrzeżenia: -2
Pomógł: 23

doman89 napisał(a):
Na początku pętli while daj lcd_cls();


O ile używa bibliotek Mirka :)

Tylko należy pamiętać że rozkaz "Clear Display" czyści cały ekran.

Możesz zrobić czyszczenie na wiele sposobów.
Np. powiedzmy masz zmienna której max zakres to 255.
Czyli masz zarezerwowane 3 wiersze na wyświetlaczu.
Przed wyświetleniem zmiennej wystaw w to miejsce 3 spacje a potem wyświetl swoja zmienną po odjęciu (post-dekrementacji)
Oczywiście używając rozkazu DDRAM set by wyświetlić w określonej lokalizacji.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 paź 2014, o 14:37 
Offline
Użytkownik

Dołączył(a): 22 lut 2014
Posty: 52
Pomógł: 0

Tylko jak to zrealizować w kodzie? Nie użyję lcd_cls(); ponieważ będzie mi kasować cały ekran, i podczas odczytu temperatury z czujnika ds18b20 cały czas będzie odświeżało pomiar co spowoduje mruganie aktualnej temperatury z czujnika...

_________________
www.electrobot.pl



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 paź 2014, o 14:51 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 sie 2013
Posty: 3797
Lokalizacja: Grudziądz
Pomógł: 143

lcd_locate(0,0);
lcd_str("3xspacja");

Tak mozesz wyczyscic 3 pierwsze kolumny w 1 wierszu.

Namazane ze smarta.

_________________
Usługi druku przestrzennego - www.drumik.pl



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 paź 2014, o 14:57 
Offline
Użytkownik

Dołączył(a): 22 lut 2014
Posty: 52
Pomógł: 0

bogdanc napisał(a):
Przed wyświetleniem zmiennej wystaw w to miejsce 3 spacje a potem wyświetl swoja zmienną po odjęciu (post-dekrementacji)
Oczywiście używając rozkazu DDRAM set by wyświetlić w określonej lokalizacji.

Trochę nie bardzo rozumiem o co Ci chodzi. Chyba za bardzo zawile napisałeś jak dla mnie... :D Jeśli przed wyświetleniem zmiennej wstawię 3 space w tej samej kolumnie i linii to owszem będzie to działać ale pojawi się mruganie.

Tego nie rozumiem "potem wyświetl swoja zmienną po odjęciu (post-dekrementacji). Oczywiście używając rozkazu DDRAM set by wyświetlić w określonej lokalizacji."

_________________
www.electrobot.pl



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 paź 2014, o 15:29 
Offline
Użytkownik

Dołączył(a): 29 wrz 2014
Posty: 28
Pomógł: 5

Spróbuj w pętli while pod napisem wstawić 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.

Wtedy powinno dziłaać.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 paź 2014, o 15:35 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 29 sty 2012
Posty: 777
Lokalizacja: Karpicko k. Wolsztyna
Pomógł: 197

Kolegom wyżej pewnie chodziło o 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.


Przed wyświetleniem zmiennej stopnie ekran w tym miejscu zostanie wyzerowany poprzez nadpisanie wyniku spacjami. Wstaw dwie lub trzy spacje w zależności od wartości jaką przyjmie zmienna stopnie.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 paź 2014, o 15:42 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 03 mar 2014
Posty: 580
Lokalizacja: Jastrzębie-Zdrój
Pomógł: 71

Witam,

Kolega jak masz BlueBooka to przeczytaj o timerach programowych, znacząco to zniweluje Twój problem. Ustalisz sobie sam czas co ile ma się odświeżać obraz :)

z Niebieskim pozdRowieniem,
Doman89



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

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 3 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:  
cron
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO