Elektroda.pl
Elektroda.pl
X
PCBway
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[Rozwiązano] [BASCOM] Menu sterowane pilotem

14 Lis 2017 17:42 843 13
  • Poziom 32  
    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)

    Kod: vbnet
    Zaloguj się, aby zobaczyć kod

    Z góry dziękuję za pomoc.
  • PCBway
  • Pomocny post
    Poziom 13  
    W przykładzie AN157 jest
    Tikers: 'work on timer
    Timer0 = 253

    u Ciebie jest
    Timer0 = 255
  • PCBway
  • Poziom 32  
    pablo666gliwice napisał:
    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
  • Pomocny post
    Poziom 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
  • Poziom 32  
    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
  • Poziom 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
  • Poziom 32  
    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 ;)
  • Poziom 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.
  • Poziom 32  
    Zouk napisał:
    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 napisał:
    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 :(
    Kod: vbnet
    Zaloguj się, aby zobaczyć kod

    Podpowiedzcie czy to idzie w dobrym kierunku odnośnie poruszania się po menu?
  • Pomocny post
    Poziom 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
  • Pomocny post
    Poziom 12  
    Nie wiem czy temat aktualny ale bawiłem się w używanie CASE.
    Lepiej i prościej niż instrukcje warunkowe if else.

    Kod: vbnet
    Zaloguj się, aby zobaczyć kod


    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]
  • Poziom 32  
    Zouk napisał:
    Nie wiem czy temat aktualny

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

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

    Dziękuję za kod, będę testował.
  • Pomocny post
    Poziom 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.