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

Wyświetlacz widmowy, podział okręgu na części a wyświetlanie napisów

Leks12 20 Gru 2019 19:49 501 6
REKLAMA
  • #1 18351661
    Leks12
    Poziom 5  
    Hej,
    zaczęłam robić wyświetlacz widmowy i mam problem z zaprogramowaniem układu tak aby diody wyświetlały odpowiednie obrazy. Wiem, że materiałów jest sporo ale spotkałam się z różnym podejściem i chciałabym się zapytać czy na pewno dobrze rozumiem zasadę działania. Odpalam timer0 (jako licznik), który zlicza czas potrzebny do zrobienia jednego okrążenia śmigła. Korzystam z transoptora szczelinowego. Pod wpływem pojawiającej się w szczelinie blaszki dioda przestaje przewodzić i następuje zmiana stanu - wysłany zostaje sygnał do mikrokontrolera. Następnie konfiguruję timer1, aby przerwanie było ileś razy częściej niż obrót pełnego obrotu śmigła. Założyłam, że będzie to 30 części. A następnie w przerwaniu timera1 wystawiam na port diody, które odpowiadają za wyświetlenie odpowiedniego kąta obrazu i teraz moje pytanie: Jak dokładnie ma to działać? Mam 8 diod, silnik wykonuje 2500 obr/min => 41,67 obr/sek => ok 24 obr/ms przy podziale na 30 części (360/30). Mogę wyświetlać obraz z dokładnością do 12 stopni. Jak rozumieć to 12 stopni, jak wyglądałoby wyświetlanie napisów gdyby części było np. 100? Załóżmy, że chciałabym na początku wyświetlić napis "Hi" jak dokładnie powinnam to zrobić, pytanie i poglądowy rysunek zamieszczam na zdjęciu. Może to oczywista odpowiedź, ale to mój pierwszy taki projekt i byłabym bardzo wdzięczna za zrozumienie i jakiekolwiek sugestię. Nie chodzi mi o gotowe rozwiązanie ale o idee jak rozumieć i powiązać ten podział na części z wyświetlaniem odpowiednich części napisu.
    Pozdrawiam Leks
  • REKLAMA
  • Pomocny post
    #2 18353851
    szelus
    Poziom 34  
    Weź cyrkiel, narysuj koncentryczne okręgi, tyle ile masz LED-ów. Następnie podziel to koło na tyle części, ile chcesz. Powstanie Ci pole z "łukowych prostokątów".
    Następnie spróbuj sobie namalować założony obrazek zamalowując wyłącznie całe "prostokąty".
    Tak to właśnie będzie wyglądać przy podziale wirującego koła na odcinki o stałym czasie trwania.
  • REKLAMA
  • Pomocny post
    #3 18353852
    excray
    Poziom 41  
    Nie wiem co to za uC, ale w AVR Timer 0 jest zazwyczaj 8-bitowy. Lepiej jest więc użyć jakiegoś 16-bitowego timera do tego. Tym bardziej, że potrzebne będzie ICP oraz OCR. ICP podpinasz pod transoptor i w przerwaniu odczytujesz jego wartość, dzielisz przez 29 (30-1) i tę wartość (offset) z kolei wpisujesz do OCR, synchronizujesz obraz. Co każde przerwanie z OCR zwiększasz jego wartość o wyliczony offset o ile nie jest większy od odczytanego uprzednio maksymalnego zakresu i wyświetlasz kolejne segmenty obrazu. W przerwaniu od przepełnienia też synchronizujesz obraz. Preskaler dla timera możesz dobrać doświadczalnie albo pokusić się o jego dynamiczne wyliczanie. To tak w telegraficznym uproszczonym mocno skrócie.
  • Pomocny post
    #4 18354710
    m2c
    Poziom 19  
    Zmieniasz stan diod w momencie przejścia do następnej strefy więc im mniej stref tym obrazek będzie wyglądał bardziej pokracznie ;) Jakoś tak (wiem, jestem mistrzem painta):
    Wyświetlacz widmowy, podział okręgu na części a wyświetlanie napisów
  • REKLAMA
  • #5 18355160
    MOBIUS19
    Poziom 11  
    Aby zwiększyć rozdzielczość obrazu w większych odległościach od osi, obwód koła dla diod 4, 5, 6 można podzielić na 60 a dla diod 7 i 8 na 120 częsci. Taka zasadę stosowały niektóre napędy dyskietek.
  • #6 18360976
    Leks12
    Poziom 5  
    Bardzo Wam wszystkim dziękuję! Posty bardzo pomogły teraz mam problem niestety z programowaniem bo wyskakuje mi błąd weryfikacji.
  • REKLAMA
  • #7 18361171
    m2c
    Poziom 19  
    Jeżeli potrzebujesz pomocy to musisz dać więcej szczegółów. Jaki dokładnie błąd wyświetla AVRDUDE? Jakiej nakładki używasz? Jaki AVR?
REKLAMA