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

Jak zmienić napis na matrycy przy okazji jakiegoś zdarzenia?

marek-czarny 04 Paź 2016 10:55 1008 6
REKLAMA
  • #1 15971651
    marek-czarny
    Poziom 10  
    witam Kolegów

    Swojego czasu zrobiłem matrycę led z przesuwającym się napisem.
    Wszystko działa poprawnie, ale przyszedł czas na małą modyfikację a mianowicie w trakcie pracy chciałbym w zależności od jakiegoś zdarzenia (np.wciśnięcie przycisku)
    zmienić napis na matrycy.
    Da się to zrobić w jakiś prosty sposób?

    zdefiniowane napisy
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    przed pętlą główną wywołuję funkcję
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    która wygląda tak
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    w pętli głównej operacje tylko na buforze
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    w tym momencie matryca wyświetla pierwszy napis i to jest ok.
    Jeżeli w funkcji
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    podmienię drugi argument na "Napis2" to matryca wyświetli drugi napis
    Teraz chodzi o to żeby podmieniać napisy po naciśnięciu np.przycisku
    Powołałem sobie zmienną
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    funkcja wyglądała by tak
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    i teraz tylko jak i gdzie dokonać podmiany na
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    lub
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    będę zobowiązany za wszelką pomoc
    pozdrawiam
  • REKLAMA
  • #2 15972684
    JacekCz
    Poziom 42  
    Musisz to zrobić jak w nastarszym C, bez modyfikatorów na flash itd ...

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    i gdzieś w kodzie decyzyjnym tam wpisywać.

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    Jak w każdym podręczniku C na "duże" komputery.
  • REKLAMA
  • #3 15972723
    grko
    Poziom 33  
    @JacekCz A podmiana wskaźników czemu miałaby nie zadziałać? Poza tym nie wiem skąd przekonanie, że na duże komputery robi się coś inaczej. Dobry kod charakteryzuje się tym, że działa wszędzie. Nie wiem czemu ten przykład miałby być wyjątkiem.

    @marek-czarny Pokaż trochę więcej kodu.
  • #4 15972737
    JacekCz
    Poziom 42  
    grko napisał:
    @JacekCz A podmiana wskaźników czemu miałaby nie zadziałać? Poza tym nie wiem skąd przekonanie, że na duże komputery robi się coś inaczej. Dobry kod charakteryzuje się tym, że działa wszędzie. Nie wiem czemu ten kod miałby być wyjątkiem.


    W tym sensie "szkolny" język C z (dużych) pecetów, sensie że NIE będący dialektem (AVR). Myślę że się czepiasz dla czepiania.

    Podmiana wskaźnika też, ale to już trzeba mieć 2 bufory, więcej ... zależnie od koncepcji zmiany.

    PS. Wskaznik musiał by być uniwersalny na flash i ram, czyli dialektowy 24 bitowy, czego jak byś chciał sugerować należy unikać. Więc się zdecyduj, dialekt, czy w jak największym zakresie "klasyczne" C.
  • REKLAMA
  • #5 15972755
    grko
    Poziom 33  
    JacekCz napisał:

    Podmiana wskaźnika też, ale to już trzeba mieć 2 bufory, więcej ... zależnie od koncepcji zmiany.


    Potrzebujesz 2 buforów zadeklarowanych w pamięci programu i jednego wskaźnika.

    W niby Twoim "klasycznym" rozwiązaniu potrzebujesz 2 buforów na napisy (które, suprise suprise, na AVR wylądują w RAM) oraz dodatkowego bufora w RAM. Rzeczywiście, mniej to zajmuje.

    JacekCz napisał:

    PS. Wskaznik musiał by być uniwersalny na flash i ram, czyli dialektowy 24 bitowy, czego jak byś chciał sugerować należy unikać. Więc się zdecyduj, dialekt, czy w jak największym zakresie "klasyczne" C.


    Definicje PROGMEM uważasz za dialekt?? Program da sę tak napisać aby w wersji np na PC ta definicja rozwijała się w puste makro. Naprawdę nigdy takich rzeczy nie widziałeś?

    Zresztą podmiana adresu to jest rozwiązaniem naturalnym tego problemu. Niezależnie czy piszemy na AVR, AMIGE czy na superkompuer.
  • REKLAMA
  • #6 15973921
    marek-czarny
    Poziom 10  
    grko napisał:


    @marek-czarny Pokaż trochę więcej kodu.


    @grko
    reszta kodu to tylko zdefiniowane piny, inicjalizacja timera i procedura przerwania w której multipleksuję wiersze
    a no i zdefiniowane fonty
  • #7 15973926
    grko
    Poziom 33  
    @marek-czarny Ok. W takim razie podmień wskaźnik gdy wykryjesz wciśnięty przycisk.
REKLAMA