Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Elektroda.pl
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

[Solved] [BASCOM] Menu sterowane pilotem

piterek-23 14 Nov 2017 17:42 1125 13
  • #1
    piterek-23
    Level 33  
    Hej,
    Próbuję zrobić menu ustawień swojego sterownika i kompletnie mi to nie wychodzi :(
    Menu ma być sterowane pilotem NEC (pilot działa poprawnie)

    Jak ja to sobie wymyśliłem:
    1. ekran główny (tu jest OK)
    - przycisk strzałka w lewo przełącza ekran na zegar "MAXI"
    - przycisk strzałka w prawo przełącza na ekran główny
    - przycisk strzałka w górę blokuje sterowanie przyciskami klawiatury
    - przycisk strzałka w dół odblokowuje sterowanie przyciskami klawiatury
    2. menu
    - przycisk "OK" wejście do menu
    - przycisk "#" przełącza na następny ekran ustawień (ekranów jest sześć)
    - przycisk "*" przełącza na poprzedni ekran ustawień
    - przycisk strzałka w prawo przełącza na następną ustawianą wartość na danym ekranie ustawień
    - przycisk strzałka w lewo przełącza na poprzednią ustawianą wartość na danym ekranie ustawień
    - przycisk strzałka w górę zwiększa ustawianą wartość
    - przycisk strzałka w dół zmniejsza ustawianą wartość

    Problemy:
    - nie mogę przełączać się między ustawianymi wartościami w ekranach ustawień (przełączanie ekranów ustawień działa poprawnie)
    - ustawiana wartość ma sobie mrugać
    - mam jeszcze kilka problemów, ale najpierw chciałbym uruchomić menu

    Wklejam swoje "wypociny" (kod jest trochę odchudzony bo tu chodzi tylko o to nieszczęsne menu)

    Code: vbnet
    Log in, to see the code

    Z góry dziękuję za pomoc.
    [28-30.06.2022, targi] PowerUP EXPO 2022 - zasilanie w elektronice. Zarejestruj się za darmo
  • #3
    piterek-23
    Level 33  
    pablo666gliwice wrote:
    W przykładzie AN157 jest
    Tikers: 'work on timer
    Timer0 = 253

    u Ciebie jest
    Timer0 = 255

    U mnie jest inaczej, ponieważ mam inny kwarc ;)
    Ale tak jak mówiłem, pilot działa. Problemem jest menu
  • Helpful post
    #4
    pablo666gliwice
    Level 13  
    Na początku podmenu masz
    'ekran MENU 2-ustawienia temperatur
    Case 1
    Gosub Wczytaj_dane_2
    Index=0
    Co każdą pętlę przypisuje ci do Index = 0
  • #5
    piterek-23
    Level 33  
    Chciałem wykorzystać tylko jedną zmienną do ustawień wartości i dlatego przy każdym ekranie ustawień jest INDEX=0
    Tak teraz jeszcze patrzę na to wszystko i chyba moim problemem jest złe umiejscowienie komend pilota w menu
  • #6
    Zouk
    Level 12  
    Kolega może użyć gotowego generatora menu działającym z Bascom. Wiem, że najlepiej samemu od podstaw pisać program lecz czasem warto sięgnąć po pomoc..
    Nie wiem tylko jaki jest status prawny tego generatora, trzeba by poczytać zasady podczas instalacji. Chyba nie da się tego komercyjnie użyć.

    setup_lcd_menu_1_4.exe
  • #7
    piterek-23
    Level 33  
    Dzięki @Zouk za program. Już go widziałem, ale coś się w nim nie mogę ogarnąć :(

    No nic, walczę dalej-kiedyś na pewno się uda zrobić menu ;)
  • #8
    Zouk
    Level 12  
    Bardzo dobre podejście. Ja kiedyś nie miałem takiego samozaparcia i użyłem tego programu. Był użyty niekomercyjnie u znajomego i jego wycinarką do styropianu. Prototyp mam w szufladzie:) Powodzenia w pisaniu.
  • #9
    piterek-23
    Level 33  
    Zouk wrote:
    Nie wiem tylko jaki jest status prawny tego generatora, trzeba by poczytać zasady podczas instalacji. Chyba nie da się tego komercyjnie użyć.

    Wszystko co tu tworzę to robię dla siebie. Teraz siedzę nad sterownikiem do domu-sterowanie światłami, kotłem gazowym. Na bank nigdy tego nie będę sprzedawał czy coś w tym stylu-jedyne co mogę zrobić to udostępnić/pochwalić się innym na forum :)
    Zouk wrote:
    Bardzo dobre podejście.

    Podobno każdy musi odsiedzieć swoje...
    ---
    Nie mogę tego ogarnąć więc "przepisałem" kod na taki trochę bardziej "ludzki" (komendy pilota zastąpiłem słowami)
    Patrzę w ekran i pustka... najgorzej zatrybić, a mi coś z tym menu wyjątkowo nie idzie :(
    Code: vbnet
    Log in, to see the code

    Podpowiedzcie czy to idzie w dobrym kierunku odnośnie poruszania się po menu?
  • Helpful post
    #10
    Zouk
    Level 12  
    Pewnie niewiele pomogę ale zrób to na zasadzie nadpisywania ekranu.
    1. Zrób ekran z opisami
    2. wykryj przyciski pilota i przypisz flagi, np. góra, dol, lewo, prawo - zakładając, że przycisk włączony to 1 a wyłączony to 0
    3. sprawdź flagi i gdy np. góra=1 to;
    powtórz punkt 1 ale już z innymi opisami.
    4. Nie zerujesz zmiennej góra, zerowana jest dopiero po Twojej reakcji czyli wciśnięciu przycisku na pilocie.
    4. sprawdź ponownie klawisze.
    Może w ten sposób spróbuj.
    W używaniu Case niestety nie pomogę. Cienki w tym jestem.

    Powodzenia
  • Helpful post
    #11
    Zouk
    Level 12  
    Nie wiem czy temat aktualny ale bawiłem się w używanie CASE.
    Lepiej i prościej niż instrukcje warunkowe if else.

    Code: vbnet
    Log in, to see the code


    Miganie ustawien umieścił bym w petli do until zasłaniając na sekundę zmienianą wartość.
    np.
    do
    lcdat 1,1 ," ": wait 1 ' zamiast wait 1 proponuję timer
    lcdat 1,1 ,zmienna
    loop until exit=5


    Powodzenia[/code]
  • #12
    piterek-23
    Level 33  
    Zouk wrote:
    Nie wiem czy temat aktualny

    Oczywiście, że tak :)
    Nie miałem teraz czasu na hobby bo w pracy od groma roboty...
    Zouk wrote:
    zamiast wait 1 proponuję timer

    To nie jest problem ponieważ już ich używam, a nawet trzech ;)

    Dziękuję za kod, będę testował.
  • Helpful post
    #13
    Zouk
    Level 12  
    Pomyślałem, że kolega może wspomóc się terminalem.
    Zwykła przejściówka usb - com na prolific'u lub ftdi podłączona do uart atmegi.

    W kluczowych fragmentach programu wystarczy dopisać print zmienna i już mamy informację co się dzieje ze zmiennymi.
    Podgląd na dowolnym terminalu.
    Ta metoda nie raz mi pomogła.

    Pozdrawiam.