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.

Czujnik odległości HC-SR04, LED i Atmega32, język C

blackophium 24 Kwi 2017 22:16 969 7
  • #1 24 Kwi 2017 22:16
    blackophium
    Poziom 2  

    Witam,
    mam problem z projektem. Za pomocą czujnika odległości mam wywołać rozjaśnienie, lub ściemnienie diody led w zależności od tego, jak blisko jest wykryta przeszkoda. Ustawiłam pomiar, który aktywowany jest w momencie, gdy zostanie wykryte przerwanie. Timer liczy czas i konwertuje go na wartość w centymetrach. W kodzie nie jest jeszcze zaimplementowane ściemnianie i rozjaśnianie, bo póki co próbuję wywołać zapalenie diody w reakcji na wykrytą odległość np. mniejszą niż 50cm. Co robię źle? Proszę o pomoc.

    0 7
  • #3 25 Kwi 2017 21:11
    blackophium
    Poziom 2  

    Jeśli dobrze rozumiem to wpisanie w części 1 jedynki, a wiec ustalenie wysokiego stanu na pin triggera, a w drugiej zaś ustawienie stanu niskiego. Led powinien być odbiornikiem sygnału odbijanego, a więc wychodzącego na port echo/przerwania. Nie jestem pewna, czy dobrze to wszystko rozgryzam.

    0
  • Pomocny post
    #4 26 Kwi 2017 09:29
    dondu
    Moderator Mikrokontrolery Projektowanie

    Z tego:

    Kod: c
    Zaloguj się, aby zobaczyć kod

    de facto wykonane zostanie :
    Kod: c
    Zaloguj się, aby zobaczyć kod

    czyli:
    Kod: c
    Zaloguj się, aby zobaczyć kod

    czyli:
    Kod: c
    Zaloguj się, aby zobaczyć kod

    co skończy się ustawieniem bitu PD1 w PORTD
    a powinno być:
    Kod: c
    Zaloguj się, aby zobaczyć kod

    czyli:
    Kod: c
    Zaloguj się, aby zobaczyć kod

    czyli ustawienie bitu PD0 w PORTD.

    W związku z tym przy takiej definicji Trig:
    Kod: c
    Zaloguj się, aby zobaczyć kod

    należy używać jej tak:
    Kod: c
    Zaloguj się, aby zobaczyć kod

    choć lepszym byłoby:
    Kod: c
    Zaloguj się, aby zobaczyć kod

    a jeszcze lepszym funkcja inline:
    Kod: c
    Zaloguj się, aby zobaczyć kod

    0
  • #5 26 Kwi 2017 11:17
    blackophium
    Poziom 2  

    Dziękuje, poprawie to. Dostałam tez radę żeby przejrzeć na oscyloskopie wyjście triggera i echa, właśnie jadę to posprawdzać. Czyli wówczas wykrycie ruchu i pomiar zachodzi na pinie echo(int1) i na podstawie tej jedynki powinnam aktywować mechanizm Led? Czy może uzależnienie leda od samej wartości zmiennej distance wystarczy?

    0
  • Pomocny post
    #6 26 Kwi 2017 12:05
    EuroGenio
    Poziom 17  

    Załączanie LED na podstawie zmiennej distance.
    Wykrywanie ruchu to zmiana wartości distance.

    0
  • #7 26 Kwi 2017 12:09
    BlueDraco
    Specjalista - Mikrokontrolery

    Dodajmy, że pytania o obsługę HC-04 pojawiają się tu nie rzadziej niż raz na miesiąc, a gdyby tak przejrzeć te wątki, to znalazłoby się wyjaśnienie wszelkich wątpliwości i linki do przykładowych rozwiązań.

    0
  • #8 28 Kwi 2017 18:31
    blackophium
    Poziom 2  

    Serdecznie dziękuję za pomoc - aktualnie udało mi się opanować czujnik w taki sposób, że oscyloskop pokazuje jego prawidłowe działanie na pinach echo i trigger, a zakomentowana funkcja na dole powoduje zaświecenie lampki na - powiedzmy - 50% jej mocy.
    Próbuję dojść do tego, jak połączyć działanie funkcji PWM wraz z funkcją od Timer0, ponieważ w obu pojawiaja się rejestr TCCR0 i wydaje mi się, że to jest przyczyną braku reakcji LED na ruch. Jak sobie z tym poradzić?

    0