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

[AVR][C] - Sterowanie diodą RGB, intensywnośc sterowana klawiszami.

terminator321 14 Mar 2013 20:09 4191 6
REKLAMA
  • #1 12060875
    terminator321
    Poziom 10  
    Witam,
    Zaczynam swoją przygodę z obsługą portów PWM i postanowiłem zrobić sterowanie barwą diody RGB wraz z prostym menu na LCD. Po włączeniu układu porty PWM zostają zainicjowane na wartość 128, dioda świeci na biało mogę się poruszać po menu lecz nie mogę klawiszami zmienić wartości nasycenia dla poszczególnych kolorów. Od strony elektrycznej układ sprawdziłem kilka razy i nie ma problemu. Załączem kod programu:

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


    Byłbym wdzięczny za podpowiedź w czym może leżeć problem, pozdrawiam!
  • REKLAMA
  • #2 12061086
    BlueDraco
    Specjalista - Mikrokontrolery
    A jak to miałoby działać? Dopisz sobie w miejscach, gdzie sprawdzasz stan przycisków komentarze dotyczące przycisków i staraj się przejść przez program na tej podstawie.

    Jak są podłączone przyciski? Czy masz rezystory podciągające na zewnątrz? Jeśli nie - to włącz wewnętrzne.

    Popatrz, co się dzieje przy wciśniętym przycisku dołączonym do PC1 i PC0 - program gania w kółko.
  • REKLAMA
  • #3 12061232
    terminator321
    Poziom 10  
    Rezystory podciągające mam wewnętrzne włączone, zewnętrznych nie mam, co do przycisków pod PC0 i PC1 to spełniają one swoje zadanie, stany się zmieniają a co za tym idzie można się poruszać po menu. Tylko wciskanie klawiszy pod PC2 i PC3 nie powoduje zmiany wartości.
  • #4 12061291
    BlueDraco
    Specjalista - Mikrokontrolery
    A jakim cudem PC0 może się skutecznie poruszać po menu? To bardziej wygląda na losowanie stanów menu niż na ich przełączanie.
    Samo wciskanie PC2 i PC3 nie zmienia wypełnienia - tak to napisałeś. Dopiero przejście do stanu 1 przeprogramowuje timer.

    Program jest zresztą fatalnie napisany, bo kiedy nic nie wciskasz procesor w kółko wysyła to samo na wyświetlacz, tak często, jak się tylko da, a powinien to robić tylko wtedy, gdy coś się na wyświetlaczu ma zmienić.
  • REKLAMA
  • #5 12061334
    terminator321
    Poziom 10  
    Przy testowaniu nie miałem żadnych problemów z przeskakiwaniem stanów, ale opóźnienie za warunkiem można zastosować. Czyli w tej wersji programu nie zaobserwuję nawet na wyświetlaczu zmian zmiennych? I nie jest tobłąd w programie tylko cała jego idea jest zła?
  • Pomocny post
    #6 12061546
    BlueDraco
    Specjalista - Mikrokontrolery
    Napisałeś program tak, żeby jasność diod zmieniała się wtedy, gdy sl jest równe 1. Kiedy jesteś w menu, sl jest różne od 1.

    Powtórzę - obecnie stany są losowane. Tego się tak nie robi - przynajmniej przy poruszaniu się po menu masz reagować na zmianę stanu przycisku (moment naciśnięcia), a nie trzymanie go w stanie naciśniętym.

    Możesz to zrobić np. na takiej zasadzie:
    http://mikrokontrolery.blogspot.com/2011/02/o-drganiach-stykow-bez-bajek-przykad.html
  • REKLAMA
  • #7 12061607
    terminator321
    Poziom 10  
    Rozumiem, do poruszania po menu trzeba zastosować coś w stylu zbocza narastającego a nie tylko reakcji na stan wysoki jak tojest u mnie. A co do całej ideii programu to chyba pozostaje przestudiowanie jakiejś literatury i zabranie się do tematu na nowo. Dzięki za pomoc!
REKLAMA