Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Elektroda.pl
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

[BASCOM] [ATMEGA8] Program na diody

damian212 26 Nov 2017 20:31 1056 7
  • #1
    damian212
    Level 10  
    Witam,

    Jestem początkujący jeżeli chodzi o programowanie i mam mały problem z moim programem. Chcę uzyskać efekt pływających kierunkowskazów tak jak w nowych AUDI, czyli diody zapalają się po sobie i gasną naraz. W momencie sygnału z kierunkowskazu przekaźnik wyłącza światło, a po zakończeniu procedury diod po chwili zapala światło. Generalnie program mi działa, ale jest jeden szczegół którego nie mogę rozgryźć tzn: jak zaprogramować aby po podaniu sygnału kierunkowskazu program wykonał tylko jedno przejście diod bo w tej chwili jak podam na stałe sygnał kierunkowskazu czyli komenda kierunkowskaz=0 to procedura jest zapętlona i wykonywana co chwilę po sobie a dążę do tego żeby każdą procedurę przejścia diod wymuszało ponowne odjęcie i dodanie sygnału kierunkowskazu (mam nadzieję że czytelny jest mój opis :) )

    Kod:

    Code: vbnet
    Log in, to see the code
  • #2
    Justyniunia
    Level 35  
    Przydał by się jakiś licznik, wg którego będą zaświecane kolejne diody, a po zaświeceniu ostatniej gasił wszystko i czekał (na reset) na kolejny sygnał z przerywacza (jak dobrze rozumiem)
  • #3
    damian212
    Level 10  
    Korzystam z wbudowanego licznika i niejako program na takim schemacie jest zbudowany ale dodatkowo muszę w międzyczasie sterować przekaźnikiem i tutaj się schody zaczynają
  • #4
    Justyniunia
    Level 35  
    Właśnie nie bardzo rozumiem, jakim przekaźnikiem?
    Załączony kierunkowskaz dostaje napięcie przerywane przerywaczem (w normalnym aucie)
    Zadaniem programu jest w tym czasie zaświecenie kolejno 16 LED i zgaszenie wszystkiego w czasie trwania napięcia z przerywacza.

    Potem proces zaczyna się od początku.
  • #5
    damian212
    Level 10  
    Na czas działania kierunkowskazu program uruchamia przekaźnik który wyłącza światło dzienne, a po skończonej procedurze kierunkowskazów światło dzienne ponownie jest wlaczane. Chodzi mi o to teraz żeby w przypadku dłuższego sygnału z kierunkowskazu program nie wykonał 2 razy przejścia diod czyli chce zrobić tak aby jeden sygnał z kierunku = jedno przejście diod.
  • #6
    Justyniunia
    Level 35  
    Dobrze by było, gdyby przekaźnik wyłączający światła dzienne był nie zależny od programu, ani program od niego.
    Taki kierunek w wersji modułowej pasował by do każdego auta.
    Kierunkowskaz ma 2-3Hz i w tym minimalnym czasie musi zmieścić się Twoja sekwencja.
    Pomijam już fakt stosowania takiej niehomologowanej lampy (bo zaraz się ktoś doczepi ;) )

    Dodano po 5 [minuty]:

    Robisz zmienną X, którą inkrementujesz co np 100ms, potem w SELECT CASE X dokładasz kolejne wyjścia (diody) aż do ostatniej, na koniec (w ostatnim CASE) gasisz wszystko, jeśli zmienna X osiągnęła max, zatrzymujesz licznik.
    Po wyłączeniu zasilania przez przerywacz i ponownym włączeniu proc się resetuje i procedura się powtarza.
  • #7
    damian212
    Level 10  
    A jak napisać taką inkrementację stałą żeby dodawała jeden co powiedzmy te 100 ms?

    EDIT:

    Już sobie poradziłem, dzięki za pomoc.