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



Teraz jest 9 sty 2025, o 17:21


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 38 ]  Przejdź na stronę 1, 2  Następna strona
Autor Wiadomość
 Tytuł: Wyjście z menu
PostNapisane: 28 kwi 2013, o 12:02 
Offline
Użytkownik

Dołączył(a): 24 lut 2013
Posty: 405
Pomógł: 0

Jak mam napisać kod w Bascomie "Jeżeli żaden z 5 przycisków nie będzie przyciśnięty w ciągu 5 sekund to skocz do programu " chodzi mi głównie o odmierzanie tego czasu napisałem coś takiego
Składnia: [ Pobierz ] [ Ukryj ]
język basic4gl
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
i nie wiem co dalej



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

Dołączył(a): 20 gru 2012
Posty: 72
Pomógł: 6

Na bascomie nie znam się za wiele i zależy jak masz to menu zrobione, ale zazwyczaj główne "okno" jest pierwszą pozycją (czy tam inną) menu.
Jeżeli pozycje menu masz w jakiejś zmiennej np. Pozycja_menu to po prostu bierzesz inną zmienną do odliczania czasu np. Czas_powrotu to robisz tak że jak naciśniesz przycisk ustawiasz Czas_powrotu = 10s i odliczasz gdzieś ten czas np. w przerwaniu, a jeżeli Czas_powrotu == 0 wtedy Pozycja_menu = 0.
Oczywiście zanim ten czas minie a ty naciśniesz jakiś przycisk on ustawi na nowo Czas_powrotu = 10s. Ja to tak rozwiązałem.

Dziwnie to napisane ale przeczytaj ze trzy razy to coś może wychwycisz o co mi chodzi.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 kwi 2013, o 17:40 
Offline
Użytkownik

Dołączył(a): 29 lis 2012
Posty: 1074
Lokalizacja: Sochaczew
Pomógł: 21

Po pierwsze napisz temat/post po polsku.
Po drugie, jeśli chcesz wyjść z menu po określonym czasie nienaciskania czegokolwiek to zaprzęgasz timer, wykonujesz na nim odpowiednie przerwanie i co przerwanie zwiększasz zmienną. Jeśli zmienna osiągnie wartość pożądanego czasu bezczynności to piszesz exit do i masz wyjście z menu. Każde naciśnięcie przycisku ma zerować zmienną odliczającą czas tak by była liczona od nowa.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 kwi 2013, o 17:58 
Offline
Użytkownik

Dołączył(a): 24 lut 2013
Posty: 405
Pomógł: 0

Ok rozumie , tylko nie umie jeszcze przełożyć to na język bascoma



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 kwi 2013, o 18:14 
Offline
Użytkownik

Dołączył(a): 29 lis 2012
Posty: 1074
Lokalizacja: Sochaczew
Pomógł: 21

slawek3000 napisał(a):
Ok rozumie , tylko nie umie jeszcze przełożyć to na język bascoma


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



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 maja 2013, o 15:20 
Offline
Użytkownik

Dołączył(a): 24 lut 2013
Posty: 405
Pomógł: 0

mam jeszcze pytanie czy mogę wykorzystać piny - przyciski , które obsługują pętlę główną programu do sterowania tymi w menu ?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 maja 2013, o 16:47 
Offline
Użytkownik

Dołączył(a): 29 lis 2012
Posty: 1074
Lokalizacja: Sochaczew
Pomógł: 21

Pewnie że możesz. Te same przyciski w menu głównym mogą obsługiwać na przykład zwiększanie lub zmniejszanie temperatury, w podmenu poruszanie się po menu a w pętli głównej do zwiększania czy zmniejszania jasności lcd. Wszystko zależy od inwencji twórczej autora-programisty.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 maja 2013, o 18:05 
Offline
Użytkownik

Dołączył(a): 24 lut 2013
Posty: 405
Pomógł: 0

czyli np. wykorzystując instrukcję Debounce mogę wykorzystać ją na tym samym pinie w menu głównym jak podmenu , co do regulacji jasności wyświetlacza jak to można rozwiązać optymalnie , zamówiłem sobie wyświetlacze graficzne LCD-AG-C128064CF-FHW K/W-E6 PBF jak można regulować jasność podświetlania wyświetlacza ?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 maja 2013, o 18:56 
Offline
Użytkownik

Dołączył(a): 24 lut 2013
Posty: 405
Pomógł: 0

a jak mam podłączyć ten tranzystor i jakiego typu będzie najlepszy ?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 maja 2013, o 19:29 
Offline
Użytkownik

Dołączył(a): 24 lut 2013
Posty: 405
Pomógł: 0

właśnie ,że procesorem chce możesz mi podać przykładowy kod w Bascomie do sterowania PWM tego transystora ?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 maja 2013, o 23:28 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 27 gru 2011
Posty: 186
Lokalizacja: Dublin
Pomógł: 8

BC547 może być za słaby.
mam podświetlenie w wyświetlaczu 240x128 i pobiera 470mA przy 5V.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 cze 2013, o 08:00 
Offline
Użytkownik

Dołączył(a): 24 lut 2013
Posty: 405
Pomógł: 0

Wracając do programu matrixa napisałem coś takiego
Składnia: [ Pobierz ] [ Ukryj ]
język basic4gl
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


nie wiem czy mam dobrze ustawione timer ,żeby wrócił do wyświetlacza głównego



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 cze 2013, o 09:18 
Offline
Użytkownik

Dołączył(a): 29 lis 2012
Posty: 1074
Lokalizacja: Sochaczew
Pomógł: 21

Ogólnie musisz to przetestować na żywym organizmie. Natomiast jedna uwaga, w timerze 0 nie osiągniesz wartości przerwania co 100ms. Max co można na nim wycisnąć przy tym taktowaniu (16MHz) i tym podziale (1024) to 16,3840ms.
Musiałbyś taktować procek zegarem 1MHz wtedy 100ms osiągniesz.
Rada?
Ustal przerwanie na 10ms a zmienną odliczającą zwiększ o 10 czyli nie 50 a 500.

Jak przy tych wartościach wpiszesz do timera wartość 99 to przerwanie będziesz miał co 10,0480ms
a jak wpiszesz 100 to przerwanie wywołane zostanie co 9,9840ms.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 cze 2013, o 12:33 
Offline
Użytkownik

Dołączył(a): 24 lut 2013
Posty: 405
Pomógł: 0

Właśnie testuje na organizmie żywym, i zmienna nie zlicza się w podprogramie Przerwanie , jak wrzucę
Składnia: [ Pobierz ] [ Ukryj ]
język basic4gl
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
do podprogramu menu wtedy się zlicza



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 cze 2013, o 17:03 
Offline
Użytkownik

Dołączył(a): 29 lis 2012
Posty: 1074
Lokalizacja: Sochaczew
Pomógł: 21

slawek3000 napisał(a):
Właśnie testuje na organizmie żywym, i zmienna nie zlicza się w podprogramie Przerwanie , jak wrzucę
Składnia: [ Pobierz ] [ Ukryj ]
język basic4gl
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
do podprogramu menu wtedy się zlicza


Zupełnie niemożliwe.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 cze 2013, o 17:48 
Offline
Użytkownik

Dołączył(a): 24 lut 2013
Posty: 405
Pomógł: 0

niestety , ale prawdziwe



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 cze 2013, o 22:19 
Offline
Użytkownik

Dołączył(a): 29 lis 2012
Posty: 1074
Lokalizacja: Sochaczew
Pomógł: 21

No weź sobie wyobraź. Jeśli piszesz że działa Ci jak masz wpisane do timera liczbę 6 to jak może nie działać gdy wpiszesz 99 czy 100 ?
Albo działa w obu przypadkach albo nie działa wcale.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 cze 2013, o 17:22 
Offline
Użytkownik

Dołączył(a): 24 lut 2013
Posty: 405
Pomógł: 0

teraz to poprawiłem i działa opóźnienie
Składnia: [ Pobierz ] [ Ukryj ]
język basic4gl
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


próbuje napisać menu w Case na podstawie kodu z elektrony ale coś mi nie wychodzi http://www.elektroda.pl/rtvforum/viewto ... 8#11667308



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 cze 2013, o 18:19 
Offline
Użytkownik

Dołączył(a): 29 lis 2012
Posty: 1074
Lokalizacja: Sochaczew
Pomógł: 21

Ten kawalek:

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

Zamień na:

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


Nie ma tu błędu, ale po to robiłeś aliasy by używać przyjaznych sobie nazw.

A nie wychodzi Ci bo masz błąd. Zapewne nie działa Ci odliczanie czasu pobytu w manu.
Nie działa bo przeanalizować musisz dwa kawałki kodu.

Czego brakuje w tym kawałku a co na pewno masz w kawałku poniżej?

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


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



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 cze 2013, o 18:46 
Offline
Użytkownik

Dołączył(a): 24 lut 2013
Posty: 405
Pomógł: 0

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



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 cze 2013, o 19:09 
Offline
Użytkownik

Dołączył(a): 29 lis 2012
Posty: 1074
Lokalizacja: Sochaczew
Pomógł: 21

Nie o to chodzi. Chodzi o coś innego. W części końcowej masz wyłączanie przerwań w postaci ich globalnego zabronienia - Disable Interrupts, ale już na początku brak Ci globalnego zezwolenia czyli Enable Interrupts.

Wstaw jak poniżej i daj znać.

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



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 cze 2013, o 19:44 
Offline
Użytkownik

Dołączył(a): 24 lut 2013
Posty: 405
Pomógł: 0

Samo wejście i wyjście z menu działa jeżeli nie nacisnę przycisku tak jak chciałem po jakiś 7 sec wyskakuje mi do wyświetlacza głównego



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 cze 2013, o 20:07 
Offline
Użytkownik

Dołączył(a): 29 lis 2012
Posty: 1074
Lokalizacja: Sochaczew
Pomógł: 21

No to w czym kłopot? Bo już nie bardzo rozumiem.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 11 cze 2013, o 17:12 
Offline
Użytkownik

Dołączył(a): 24 lut 2013
Posty: 405
Pomógł: 0

w czym mam problem ,zacznę od kawałka kodu
Składnia: [ Pobierz ] [ Ukryj ]
język basic4gl
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
to jest menu , w którym chcę się poruszać wchodzę do Case 1 później po naciśnięciu PINB.4 chce wejść do Case 11 i dalej ale tu poruszam się za pomocą PINB.2 i PINB.3 czyli GÓRA i DÓŁ gdy jestem Case 13 i naciskam PINB.4 chce wrócić do CASE 1 a tak nie jest po wskakuje mi na CASE 10 nie wiem jak to poprawić



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 11 cze 2013, o 17:36 
Offline
Użytkownik

Dołączył(a): 29 lis 2012
Posty: 1074
Lokalizacja: Sochaczew
Pomógł: 21

Wchodzisz do CASE 1 tylko tego nie widzisz.
W tej części:

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


Po Menusub = 1 dodaj na próbę wait 1. Jeśli będziesz miał dobrze to albo domyślisz się co masz nie tak, albo Ci powiem.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 11 cze 2013, o 17:51 
Offline
Użytkownik

Dołączył(a): 24 lut 2013
Posty: 405
Pomógł: 0

No właśnie nie widzę 8-) , może jednak poproszę o podpowiedz ;) dodałem te wait tylko,że by bardziej rozbudowanym menu spowoduje zawieszenie programu w zliczaniu wyjścia z całego menu :o



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 11 cze 2013, o 18:10 
Offline
Użytkownik

Dołączył(a): 29 lis 2012
Posty: 1074
Lokalizacja: Sochaczew
Pomógł: 21

Wait było tylko na próbę, nie na zawsze.

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


Linie nr 1,2 i 3 ustawiasz sobie flagę, ok.
Linia nr 12 wchodzisz w case 1, ok
Teraz pomińmy trochę i skoczmy sobie do linii 24. Wchodzisz do case 13.
Linia 29 nadajesz zmiennej MENUSUB wartość 1, ok
Teraz jakoś tam wychodzisz z menu i teraz będą moje ulubione efekty video czyli dajemy FREEZE TIME lub jak kto woli TIME STOP.
Trzymasz przycisk bo w linii 28 go nacisnąłeś.
Nadal trzymasz a już na powrót znajdujesz się w linii 12 gdzie wchodzisz do CASE 1.
Wciąż trzymasz przycisk i kolejno wykonujesz rozkazy linia po linii.
Linia 14 znajdujesz pozycję na LCD
Linia 15 wpisujesz na lcd napis >AGC
Linia 16 a Ty nadal doznajesz efektu freeze time i znowu procesor sprawdza czy trzymasz przycisk, a Ty go trzymasz więc nadajesz swojej zmiennej MENUSUB wartość 10 choć przed chwilką miała ona wartość 1.
Wychodzisz z CASE 1 i co? Twoja zmienna ma wartość 10 więc wchodzisz w CASE 10 czyli linia 19.
No i masz powód czemu znajdujesz się w CASE 10 a nie w 1.

Pisząc programy na procesor musisz nauczyć się zatrzymywać w czasie. Pomocne efekty video to FREEZE TIME oraz SLOW MOTION.

PS. Wykład o efektach video traktuj z przymrużeniem oka.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 11 cze 2013, o 18:21 
Offline
Użytkownik

Dołączył(a): 24 lut 2013
Posty: 405
Pomógł: 0

dodałem drugie case z "
podcase "
Składnia: [ Pobierz ] [ Ukryj ]
język basic4gl
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
z waitem faktycznie wychodzi do AGC i teraz mam BEEP klikam na przycisk pinb.4 i teraz niespodzianka jestem w Case 10 zamiast w 20



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 11 cze 2013, o 18:32 
Offline
Użytkownik

Dołączył(a): 29 lis 2012
Posty: 1074
Lokalizacja: Sochaczew
Pomógł: 21

Bo ogólnie jak dla mnie to strasznie zamotałeś ten program. Tam jest groch z kapustą.
Zamiast powypisywać kolejno select case żeby mieć jasność to poprzestawiałeś to strasznie.
Ja w pętli do...loop napisałbym obsługę przycisków lub wykrycie ich naciśnięcia, zależnie od złożoności całego programu.
W każde CASE dałbym tylko wyświetlanie tego co mi potrzebne, a po zatwierdzeniu wejścia dopiero skok do danego podprogramu.

To że nie bardzo wiesz co w programie się dzieje dowodzi tylko tego że jest napisany chaotycznie i nie do końca przemyślałeś koncepcję jego działania.

Ja jak pisałem menu do sterownika (centrali) bramy wjazdowej to popełniłem sporo błędów, ale zawsze po analizie wiedziałem gdzie jest błąd i jak go poprawić. Tu się nie przechwalam tylko staram się pokazać jak ważne jest odpowiednie ułożenie sobie bloków w programie.

------------------------ [ Dodano po: 1 minucie ]

I jeszcze jedno. Jeśli masz tylko menu i nie odczytujesz niczego w trakcie ani nie używasz timerów czy też innych ścisłych czasowo zależności to możesz sobie używać wait'ów do woli.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 11 cze 2013, o 18:34 
Offline
Użytkownik

Dołączył(a): 24 lut 2013
Posty: 405
Pomógł: 0

Jak się domyślam jest to efekt , który opisałeś mi powyżej ... tylko jak napisać tych parę linijek kodu aby działało to prawidłowo



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: 38 ]  Przejdź na stronę 1, 2  Następna strona

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 2 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