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

[BASCOM] Jak zaprogramować efekt pływających kierunkowskazów w ATMEGA8 w BASCOM?

damian212 26 Lis 2017 20:31 1182 7
REKLAMA
  • #1 16851046
    damian212
    Poziom 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:

    Kod: VB.net
    Zaloguj się, aby zobaczyć kod
  • REKLAMA
  • #2 16851123
    Justyniunia
    Poziom 36  
    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)
  • REKLAMA
  • #3 16851157
    damian212
    Poziom 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ą
  • REKLAMA
  • #4 16851164
    Justyniunia
    Poziom 36  
    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.
  • REKLAMA
  • #5 16851219
    damian212
    Poziom 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 16851266
    Justyniunia
    Poziom 36  
    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 16852688
    damian212
    Poziom 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.
REKLAMA