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

[ATMEGA16][C] Lampka RGB (PWM) - przyciski sterujące

sarsik87 16 Kwi 2012 20:37 1873 3
REKLAMA
  • #1 10801783
    sarsik87
    Poziom 11  
    Witam,

    Jestem w trakcie realizacji lampki RGB jednak napotkałem na pewien problem a mianowicie mam 3 przyciski:
    1. zmienia tryb wyświetlania
    2. zwiększa szybkość lub kolor (w zależności od trybu)
    3. zmniejsza szybkość lub kolor (w zależności od trybu)

    Pierwszy przycisk obsługiwany jest w przerwaniu pozostałe dwa niestety nie. Po przełączeniu się w tryb "zmienny" bardzo trudno wrócić do trybu "stałego" - przypuszczam że chodzi o opóźnienia "delay" w pętli które utrudniają wciśnięcie przycisku w odpowiednim momencie. Jak mógłbym poprawić obsługę przycisków ??

    Schemat:
    [ATMEGA16][C] Lampka RGB (PWM) - przyciski sterujące

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


    Liczę na jakieś sugestie które pozwolą poprawić sytuacje.

    Pozdrawiam
  • REKLAMA
  • #2 10801819
    gaskoin
    Poziom 38  
    Nie wgłębiałem się bardzo w problem, spróbuj odczyt przycisków zrealizować na przerwaniu od Timera, co np 20 ms (możesz próbować mniej/więcej jeśli to będzie za dużo/mało). Odpalasz timer, który odliczy 20 ms, w przerwaniu odczytujesz piny i na tej podstawie stwierdzasz czy coś naciśnięto. Jeszcze lepiej mieć bufor na wciśnięte przyciski i badać programowo zbocze co Cię uchroni przed cudami gdy ktoś przytrzyma przycisk etc.
  • REKLAMA
  • #3 10802385
    sarsik87
    Poziom 11  
    Jak powinien byc zrealizowany taki bufor? Jak/kiedy do niego zapisywać itp. ??
  • Pomocny post
    #4 10802429
    gaskoin
    Poziom 38  
    W przerwaniu od timera, które ma następować co ileś tam ms (20, 30).
    Bufor to dość patetyczne słowo :D chodzi o tablicę lub po prostu jakieś zmienne gdzie jest przechowywany stan przycisku.
REKLAMA