logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[Rozwiązano] [BASCOM] Jak zrobić menu sterowane pilotem NEC w sterowniku?

piterek-23 14 Lis 2017 17:42 1311 13
REKLAMA
  • #1 16822892
    piterek-23
    Poziom 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)

    Kod: VB.net
    Zaloguj się, aby zobaczyć kod

    Z góry dziękuję za pomoc.
  • REKLAMA
  • Pomocny post
    #2 16823024
    pablo666gliwice
    Poziom 14  
    W przykładzie AN157 jest
    Tikers: 'work on timer
    Timer0 = 253

    u Ciebie jest
    Timer0 = 255
  • REKLAMA
  • #3 16823038
    piterek-23
    Poziom 33  
    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
    #4 16823063
    pablo666gliwice
    Poziom 14  
    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 16823362
    piterek-23
    Poziom 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
  • REKLAMA
  • #6 16824395
    Zouk
    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
  • REKLAMA
  • #7 16825147
    piterek-23
    Poziom 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 16825496
    Zouk
    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.
  • #9 16825901
    piterek-23
    Poziom 33  
    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: VB.net
    Zaloguj się, aby zobaczyć kod

    Podpowiedzcie czy to idzie w dobrym kierunku odnośnie poruszania się po menu?
  • Pomocny post
    #10 16827138
    Zouk
    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
    #11 16836613
    Zouk
    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: VB.net
    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]
  • #12 16837929
    piterek-23
    Poziom 33  
    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
    #13 16845476
    Zouk
    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.
REKLAMA