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

(bascom) Menu - porady dla początkującego

14 Lip 2011 14:55 2120 14
  • Poziom 9  
    Witam
    ostatnio zainteresowałem się programowaniem, diody i te sprawy mam już za sobą.
    teraz interesuje mnie menu z obsługą trzech przycisków, wyświetlane na lcd.
    i bardzo spodobał mi się pomysł kolegi Mictronic z tematu https://www.elektroda.pl/rtvforum/topic1731484.html . tylko nie mogę rozgryźć tego kodu, po prostu jak go zastosować, próbowałem na kilka sposobów ale zawsze na lcd pojawia mi się sam kursor i śmiga po całym lcd.
    proszę o pomoc, może nie od razu o gotowca ale o wyjaśnienie mi tego i nakierowanie na dobrą drogę.
  • Poziom 9  
    kod był zmieniany kilka razy i teraz jest on taki tylko do sprawdzenia o co w ogóle chodzi z tym programem ale i tak mi nie wyszło. proszę się nie śmiać bo jestem początkujący i wiem że najlepiej to nie wygląda:[code]
    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod
  • Poziom 9  
    no więć dalej to samo, to znaczy doszedłem do tego jak wyświetlić coś na LCD ale wciąż mam problem z tym programem. Ma to być menu gdzie poruszam się kursorem i zmieniam zmienną na której się znajduję (tak zrozumiałem to na stronie gdzie autor udostępnił ten kod).
    Cytat:
    Ja to rozwiązałem poprzez zastosowanie zmiennej głównej nazwanej np Ekran,w której przechowywana jest wartość odpowiednia dla wyświetlania zawartości na lcd np programowanie zegara,wyświetlanie daty,zmiana jasności podświetlenia.

    tych słów autora również nie rozumiem, jak wykorzystać tą zmienną i o co tu chodzi .W swoich projektach autor używa tego samego kodu i działa mu to świetnie np.
    https://www.elektroda.pl/rtvforum/topic1867596.html#8945710
    czy ktoś bawił się tym kodem albo może go rozumie?
  • Poziom 9  
    Jeśli chodzi o punkt drugi to zmieniłem i teraz na wyświetlaczu przynajmniej napis nie mruga, ale nadal zero reakcji na przyciski. I jak sterować tym kursorem? I jeśli tam jest zmienna program 1 i program 2 do przechowywania wartości do wyświetlania to jak wybrać program 2 bo teraz mam cały czas program 1, w ogóle nie rozumiem tego programu.
  • Poziom 36  
    DomEN08 napisał:
    Jeśli chodzi o punkt drugi to zmieniłem i teraz na wyświetlaczu przynajmniej napis nie mruga, ale nadal zero reakcji na przyciski. I jak sterować tym kursorem? I jeśli tam jest zmienna program 1 i program 2 do przechowywania wartości do wyświetlania to jak wybrać program 2 bo teraz mam cały czas program 1, w ogóle nie rozumiem tego programu.


    Wizualny effect po tej zmianie jest tylko zwyczajnym przypadkiem lub złudzeniem, a rzeczywista przyczyna leży gdzie indziej.
    Bascom, przy konfiguracji kierunku portu akceptuje użycie terminu "PORT" na równi z terminem "PIN". Równie poprawna konfiguracja byłaby wyedytować bezpośrednio register "DDRd = xxx", gdzie xxx oznacza aktualna wartośc wpisu do rejestru w dowolnej notacji: np, dziesiętnej: (48), hex: (&H30), binary: (&B110000). Równie poprawna konfiguracja portu byłaby; wyedytować tylko piny wyjścia (4 i 5) a pozostałe "pominąć", które 'by default' we wszystkich AVR są WEJŚCIAMI, jeżeli nie są skonfigurowano inaczej.
    Przyczyn 'mrugania' napisu na wyświetlaczu może być kilka.
    Najczęsciej, poza sroną techniczną (wadliwą/kiepską, nie filtrowaną linią zasilania, zbyt długie i krzyżujące się połączena na pytce terstowej - ewentualna interferencja sygnałów), może być nieprawidłowe i nagminne stosowanie CLS, lub nawet zbyt częste odświerzanie treści tego napisu, albo tez sama jego procedura może powodować wrażenie "mrugania".
    Wydaje mi się być kompletnym błędem 'wpychanie' CLS do pętli Do... Loop .
    Bardziej praktycznym sposobem jest nadpisywanie wyznaczonego miejsca na lcd stosując procedurę 'Locate x,y;' w wymaganych momentach programu.
    Użycie CLS (inaczej czyszczenie całego buffora pamięci display) ma uzasadnienie na początku programu gdy stosuje sie swoistego rodzaju 'salut powitalny', a po nim przechodzimy do normalnej rutyny pracy, lub też gdy treść całej screen jest odmiena od kolejnej, albo też wyświeltane parametry lub ich labels przyjmuja inną formę lub miejsce.
    Zwykle odbywa sie to w formie "na rządanie" - powodowane zazwyczaj jakąś flagą generowaną w innej częsci programu i która jest sprawdzana w "Do ...Loop".

    Pracując z menu jak to wygląda z pytania, NIE edytujesz samej screen (nie ma potrzeby przesuwania cursora) a edytujesz zmienna, która jest w tym momencie wyświetlana. Miejsce tej zmiennej jest zdefiniowane wcześniej i powinno być znane dla programisty na wypadek zastosowania znanego "mrugania" tym miejscem; w określonych odstępach czasu wyświetlana jest na przemian: rzeczywista wartość zmiennej lub " " - pomiędzy znakami odpowiednia ilość spacji.
    Tutaj też użyjesz 'Locate x, y...' w odpowiedniej jak rozumiem subrutynie obsługującej menu.


    e marcus
  • Poziom 27  
    emarcus: żeś się rozpisał ;)

    Podprogramy:Setting, plus, minus w obecnej postaci nie będą działały. Mają się nijak do głównego programu.
    Zmień podprogramy na coś takiego i coś w końcu będzie działać.
    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod
  • Poziom 9  
    przykład podany przez ciebie już opanowałem ale mnie najbardziej interesuje pomysł autora z poruszaniem się kursorem po lcd i zmianie zmiennej na której ten kursor się znajduje. udało mi się poruszanie kursorem ale zmienia się tylko godzina a kursora nie widać tylko na wyczucie gdy wcisnę setting 15 razy to spowrotem znajduje się na zmiennej godzina. teraz kod wygląda tak[code]
    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod


    Dziękuję koledze emercus za lekturkę, na pewno się przyda.
  • Pomocny post
    Użytkownik usunął konto  
  • Poziom 9  
    Dziękuję bardzo autorowi. Wszystko działa super na płytce testowej. a mam jeszcze pytanie jak zrobić aby wchodzić do tego menu i zmieniać te zmienne a nie tak jak teraz że od początku jest w ustawieniach. chodzi tu o zmienną program, jak ze zmiennej program=2 przejść do program=1, czyli do ustawień i później wrócić do głównego obrazu ??
  • Użytkownik usunął konto  
  • Poziom 9  
    Jeszcze raz wielkie dzięki. Na pewno coś wymyślę, a program działa super ;)