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

Atmega32 - Zmiana napisów na wyświetlaczu HD4470

marrrtyn 31 Paź 2013 13:32 1407 14
  • #1 31 Paź 2013 13:32
    marrrtyn
    Poziom 10  

    Witam.

    Mam pytanie odnośnie sterowania wyświetlaczem HD4470. Procesorem Atmega32 wykonuję pomiar za pomocą dwóch czujników: ds18b20 oraz SHT75. Posiadam wyświetlacz 16x2. Chciałbym, aby na wyświetlaczu, po naciśnięciu przycisku nr 1 (microswitch) został wyświetlany pomiar temperatury z czujnika 1, a po naciśnięciu przycisku nr 2 pokazywał on wartości z czujnika nr 2. Wszystko działa jak należy oprócz tego, że wartości na wyświetlaczu są odświeżane tylko w momencie, gdy trzymam wciśnięty odpowiedni przycisk (tak też wynika z pętli programu, gdyż ma wykonywać odpowiednią funkcję tylko wtedy, gdy przycisk jest wciśnięty). Jak można to zrobić, aby wartości były wyświetlane również po zwolnieniu odpowiedniego przycisku? Jeszcze lepszym rozwiązaniem było by, aby zmieniać wyświetlane wartości za pomocą tylko 1 przycisku (na zmianę). Oto pętla programu:

    Kod: c
    Zaloguj się, aby zobaczyć kod


    Proszę o pomoc.

    0 14
  • #2 31 Paź 2013 13:43
    GSM
    Poziom 25  

    Zamiast warunkować wyświetlanie stanem przycisków, uzależnij od nich tylko stan zmiennej pomocniczej, a główna pętla niech się wykonuje cały czas i w zależności od wartości zmiennej, wyświetla odpowiednią treść.

    Pozdrawiam,
    GSM

    0
  • #3 31 Paź 2013 16:04
    BlueDraco
    Specjalista - Mikrokontrolery

    Mamy dwa błędne rozwiązania, to może dla odmiany coś prostego, co jakoś działa:

    Kod: c
    Zaloguj się, aby zobaczyć kod

    0
  • #4 31 Paź 2013 16:21
    marrrtyn
    Poziom 10  

    Dziękuję za podsunięcie pomysłu rozwiązania problemu. Czy istnieje możliwość zaimplementowania 4 stanów wyświetlacza (na 4 przyciskach, lecz najlepiej było by na 1)? Piszę, gdyż dojdą jeszcze inne pomiary i będę potrzebował czterech stanów wyświetlacza.

    0
  • Pomocny post
    #5 31 Paź 2013 16:47
    BlueDraco
    Specjalista - Mikrokontrolery

    Przecież to, co pokazałem, tak samo dobrze zadziała i dla 10 stanów - wystarczy zmienić typ zmiennej z _Bool na uint8_t, zapisywać w niej numer aktualnie wyświetlanego czujnika i zmienić warunki:

    Kod: c
    Zaloguj się, aby zobaczyć kod
    itd.

    0
  • #6 31 Paź 2013 16:51
    marrrtyn
    Poziom 10  

    Rozumiem. A czy istnieje możliwość zmieniania stanów wyświetlacza za pomocą jednego przycisku (z odświeżaniem wartości czujników)?

    0
  • #7 31 Paź 2013 16:57
    BlueDraco
    Specjalista - Mikrokontrolery

    Istnieje.

    0
  • #8 31 Paź 2013 17:01
    marrrtyn
    Poziom 10  

    Czy mógłbym prosić o podpowiedź jak to zrobić? Myślałem, aby za każdym przyciśnięciem klawisza zwiększać zmienną o 1, tj. np. 1, 2, 3, 4. I danej zmiennej przypisać co ma być wyświetlane. Lecz po zaimplementowaniu niestety nie działa w praktyce

    0
  • #10 31 Paź 2013 17:38
    marrrtyn
    Poziom 10  

    BlueDraco napisał:
    Mamy dwa błędne rozwiązania, to może dla odmiany coś prostego, co jakoś działa:

    Kod: c
    Zaloguj się, aby zobaczyć kod


    niestety, korzystając z powyższego kodu występuje brak reakcji na jeden z przycisków, wyświetlającego dane z czujnika 2 (próbowane na różnych portach). Dla czujnika 1 jest ok, lecz nie mogę zmienić na wyświetlanie danych z czujnika nr 2

    0
  • #11 31 Paź 2013 17:46
    BlueDraco
    Specjalista - Mikrokontrolery

    Racja, wyrzuć deklarację
    _Bool czujnik1 =0;
    przed pętlę.

    0
  • #12 31 Paź 2013 18:25
    marrrtyn
    Poziom 10  

    Sposób działa, lecz dane z czujników nie są odświeżane na bieżąco.

    Edit:
    Działa w ten sposób:

    Kod: c
    Zaloguj się, aby zobaczyć kod

    0
  • #13 31 Paź 2013 19:40
    BlueDraco
    Specjalista - Mikrokontrolery

    Tak to na pewno nie będzie działało poprawnie.

    Może przez chwilę spróbowałbyś sam pomyśleć nad tym projektem i go pomodyfikować?
    To forum służy do udzielania pomocy tym, którzy sami chcą coś zrobić i czegoś się nauczyć.

    0
  • #14 31 Paź 2013 20:15
    marrrtyn
    Poziom 10  

    BlueDraco napisał:
    Tak to na pewno nie będzie działało poprawnie.


    Działa poprawnie i odświeża się na bieżąco.

    0
  • #15 31 Paź 2013 22:20
    BlueDraco
    Specjalista - Mikrokontrolery

    Nawet bardzo na bieżąco - nieustannie się odświeża. Jaki sens ma konstrukcja "jeśli zmienna ma wartość 1, to przypisz jej wartość 1"?

    0