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



Teraz jest 20 mar 2026, o 08:38


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 3 ] 
Autor Wiadomość
PostNapisane: 17 paź 2018, o 14:17 
Offline
Użytkownik

Dołączył(a): 18 cze 2015
Posty: 377
Pomógł: 0

Witam.
Chciałem poprosić o pomoc w kwestii wyświetlania tekstu na lcd. Napisałem króciutki kod, który w zasadzie robi swoje, ale nie do końca, jak bym chciał.
Napiszę, jakie było założenie.

1. Dokonywany jest pomiar napięcia.
2. Jeśli wartość adc przekroczy np. 10. to wyświetl napis1 (natychmiast)
3. Jeśli wartość adc zejdzie poniżej 10, to odczekaj 3 sekundy i wyświetl napis2.

Problem polega na tym, że jak szybko ruszę pr-kiem i wrócę do punktu zerowego, to zmiana napisów następuje po trzech sekundach, ale jeśli powoli kręcę tam i z powrotem , to ten czas przełączenia jest losowy (różny). Ja chyba rozumiem, w czym tkwi problem, ale nie potrafię tego w kodzie obejść. Myślę, że kiedy Timer1 zacznie odliczać w dół, to ja mogę być w różnych miejscach na osi czasu tych trzech sekund ( czy mam rację??? ).

Jak by tu zrobić, a żeby Timer zaczął zawsze zliczanie od nowa za każdym razem ,kiedy zejdę poniżej wartości napięcia 10 ? i zawsze ten czas był jednakowy ?. Zastosowałem tu metodę z flagami, a żeby w Timerze nie wykonywać wielu operacji łącznie z wyświetlaniem różnych tekstów. Chciałem to w końcu zrozumieć i chyba zajarzyłem ???? Proszę o jakieś wskazówki i kubeł zimnej wody, jeśli ponownie nababoliłem. Czy ten zamysł z flagą napisałem mniej więcej poprawnie ?. Z góry dziękuję.


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: 17 paź 2018, o 21:17 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 mar 2014
Posty: 1475
Pomógł: 167

Musisz rozbudować kod by nie liczyć timerem jak masz >10, lub przy pierwszym zejściu poniżej 10 najpierw ustawić startową wartość timera. Bo tak jak napisałeś, to timer chodzi cały czas a trafiasz na jego losową startową wartość, czyli losowy czas.

Nie wiem jak masz zrobione resztę timera, ale najlepiej byłoby dodać zmienną pomocniczą oznaczającą czy zacząłeś liczyć 3 sekundy czy nie. W warunku dla > 10 zerować ją. W warunku < 10 sprawdzać ją i jak jest zero to ustawiać timer (oraz ją na 1) a jak nie jest zero to znaczy, że już liczymy te 3 sekundy.

--
Pozdrawiam,
Robert



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 paź 2018, o 18:17 
Offline
Użytkownik

Dołączył(a): 18 cze 2015
Posty: 377
Pomógł: 0

Dziękuję rskup za chęć pomocy.
Ja mam zastosowany kod z Timerem, gdzie następuje zliczanie w dół. Dzisiaj trochę męczyłem temat i nie wychodziło mi. Wracając do domu coś mi lekko zaświtało i jutro rano pokombinuję. Mam nadzieję, że się uda :) . Pozdrawiam. Robert.


Niestety, ale jakoś nie mogę tego ogarnąć. Niby podświadomie wiem, o co chodzi, ale logicznie nie mogę tego przełożyć na "Papier". Może zbyt proste :lol: .



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

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