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

KURS HOME ASSISTANT

Chcesz zautomatyzować swój dom bez skomplikowanego kodowania?
Zastanawiasz się nad wyborem sprzętu, oprogramowania i aplikacji?
Od czego zacząć przygodę z HA w 2025? Co będzie najlepsze na start?

Nasz kurs Home Assistant nauczy Cię krok po kroku, jak łatwo zautomatyzować swój dom i oszczędzić na rachunkach za prąd i ogrzewanie. Bez chmur, bez zbędnych abonamentów. Twoja przygoda z Home Assistant zaczyna się tutaj!

↓↓↓

    Szanujemy Twoją prywatność. Możesz wypisać się w dowolnym momencie.




    Teraz jest 9 kwi 2025, o 19:33


    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 ] [ Zaznacz wszystko ]
    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 ] [ Zaznacz wszystko ]
    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 ] [ Zaznacz wszystko ]
    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 ] [ Zaznacz wszystko ]
    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 ] [ Zaznacz wszystko ]
    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 ] [ Zaznacz wszystko ]
    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 ] [ Zaznacz wszystko ]
    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 0 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