Spisu treści:

Korzystanie z diody LED Dot Matrix z Arduino i rejestrem przesuwnym: 5 kroków
Korzystanie z diody LED Dot Matrix z Arduino i rejestrem przesuwnym: 5 kroków

Wideo: Korzystanie z diody LED Dot Matrix z Arduino i rejestrem przesuwnym: 5 kroków

Wideo: Korzystanie z diody LED Dot Matrix z Arduino i rejestrem przesuwnym: 5 kroków
Wideo: Tydzień z Arduino - wyświetlacz 7 segmentowy 2024, Listopad
Anonim
Korzystanie z diody LED z matrycą punktową z Arduino i rejestrem przesuwnym
Korzystanie z diody LED z matrycą punktową z Arduino i rejestrem przesuwnym
Korzystanie z diody LED z matrycą punktową z Arduino i rejestrem przesuwnym
Korzystanie z diody LED z matrycą punktową z Arduino i rejestrem przesuwnym
Korzystanie z diody LED z matrycą punktową z Arduino i rejestrem przesuwnym
Korzystanie z diody LED z matrycą punktową z Arduino i rejestrem przesuwnym

Siemens DLO7135 Dot matrix LED to niesamowity kawałek optoelektroniki. Jest rozliczany jako inteligentny wyświetlacz 5x7 z matrycą punktową (r) z pamięcią/dekoderem/sterownikiem. Wraz z tą pamięcią ma 96-znakowy wyświetlacz ASCII z dużymi i małymi literami, wbudowany generator znaków i multiplekser, cztery poziomy natężenia światła i wszystko działa na 5V., a przy cenie 16 USD za sztukę zdecydowanie powinno. Spędzając pół dnia w moim ulubionym lokalnym sklepie z elektroniką, znalazłem pełen pojemnik za 1,50 dolara za sztukę. Wyszedłem ze sklepu z kilkoma. Ta instrukcja pokaże Ci, jak połączyć się z tymi diodami LED z matrycą punktową i wyświetlać znaki za pomocą Arduino opartego na AVR. Jeśli czytałeś któryś z moich poprzednich poradników, możesz pomyśleć, że często opowiadam się za najbardziej oszczędnym rozwiązaniem i nie pomylisz się, nawet jeśli od czasu do czasu nie osiągam celu. Dlatego pójdę również o krok dalej w tej instrukcji i pokażę, jak zmniejszyć liczbę portów I/O potrzebnych do obsługi tych dużych, honkinowych diod LED z matrycą punktową.

Krok 1: Zdobądź towar…

Zdobądź towar…
Zdobądź towar…

Do tego krótkiego małego projektu będziesz potrzebować:

  • mikrokontroler oparty na AVR, taki jak Arduino lub którykolwiek z nich. Te instrukcje można prawdopodobnie dostosować do wybranego MCU.
  • dioda LED z matrycą punktową DLO7135 lub inna z tej samej rodziny
  • 8-bitowy rejestr przesuwny, taki jak 74LS164, 74C299 lub 74HC594
  • deska do krojenia chleba
  • drut przyłączeniowy, przecinaki do drutu itp.

Lutownica nie jest potrzebna, chociaż używam jej później; możesz obejść się bez tego.

Krok 2: bezpośrednio połącz się z wyświetlaczem LED

Bezpośrednio podłącz do wyświetlacza LED
Bezpośrednio podłącz do wyświetlacza LED
Bezpośrednio podłącz do wyświetlacza LED!
Bezpośrednio podłącz do wyświetlacza LED!
Bezpośrednio podłącz do wyświetlacza LED!
Bezpośrednio podłącz do wyświetlacza LED!

Rozłóż małą listę części i chwyć diodę LED. Umieść go na płytce stykowej nieco pośrodku, między rowkiem linii środkowej. Pierwsza część łączenia odbywa się po lewej stronie diody LED. Pin #1 znajduje się w lewym górnym rogu, jak wskazuje trójkąt/strzałka. Umieszczam funkcje pinów na zdjęciu w celach informacyjnych, gdy czytasz lub podłączasz diodę LED.

Lewa strona

Dodatni i ujemny Zaczynając w lewym górnym rogu, podłącz Vcc do 5V. To może być dobry pomysł, aby nie zasilać swojej tablicy, dopóki nie ukończysz całej lewej strony; dioda LED może być jasna, jeśli próbujesz zobaczyć małe otwory do wsunięcia przewodów. Podłącz dolny lewy GND do masy. Test lampy, włączanie chipa i zapis Drugie i trzecie od góry po lewej stronie to Test lampy i włączanie chipa. Obie są logiką ujemną, co oznacza, że są włączone, gdy mają logiczne 0 zamiast 1. Mój obrazek poniżej powinien mieć nad nimi paski, ale nie zaznaczyłem tego dla żadnego z nich. Pin LT, gdy jest włączony, zapala każdą kropkę w matrycy punktowej z jasnością 1/7. To bardziej test pikseli, ale interesującą rzeczą w pinach LT jest to, że nie nadpisuje żadnego znaku, który jest w pamięci, więc jeśli masz kilka z nich połączonych razem (mają odległość oglądania 20 stóp), strobowanie LT może sprawić, że będzie wyglądał jak kursor. Aby upewnić się, że jest wyłączony, podłącz go do 5 V. Piny CE i WR są również logiką ujemną i muszą być włączone, aby można było zapisywać na tym inteligentnym urządzeniu. Możesz mikrozarządzać tymi pinami za pomocą wolnych portów I/O na swoim mikrokontrolerze, ale nie będziemy się tutaj zawracać. Wystarczy podłączyć je do uziemienia, aby były włączone. Poziomy jasności W rodzinie diod LED DLO dostępne są cztery programowalne poziomy jasności:

  • Pusty
  • 1/7 Jasność
  • 1/2 jasności
  • Pełna jasność

BL1 HIGH i BL0 LOW to 1/2 jasności. Zarówno HIGH to pełna jasność. Ustaw to, co chcesz. Ponownie, jeśli masz wolne porty I/O i jest to dla Ciebie wystarczająco ważne, może to być również kontrolowane przez Arduino. To owija lewą stronę. Jeśli podłączysz zasilanie do swojej deski, powinna zaświecić się dioda LED. Pobaw się regulacjami jasności i testem lampy, aby się z tym zapoznać, jeśli jesteś ciekawy.

Prawa strona

Prawa strona składa się w całości z portów danych. Dolny prawy, pin 8 lub D0, aby być precyzyjnym, reprezentuje najmniej znaczący bit w znaku 7-bitowym. Prawy górny, pin 14 lub D6 reprezentuje najbardziej znaczący bit. Dzięki temu wiesz, w jakiej kolejności należy przetasować bity podczas zapisywania do diody LED. Po podłączeniu portów wejściowych danych znajdź siedem pustych cyfrowych portów we/wy na swoim Arduino lub AVR i podłącz je. Prawdopodobnie będziesz chciał zapamiętać, który port wyjściowy danych w odbiorniku AVR przechodzi do którego portu wejściowego danych na diodzie LED. Teraz możesz przesłać dane do tej inteligentnej diody LED. Drżysz już z podniecenia? Wiem że jestem…

Krok 3: Określanie znaku do wyświetlenia

Określanie znaku do wyświetlenia
Określanie znaku do wyświetlenia

Zestaw znaków, który jest używany w tej diodzie CMOS, to zwykły kod ASCII, rozpoczynający się od 0x20 (dziesiętny 32; spacja) i kończący się na 0x7F (dziesiętny 127; usunięcie, chociaż reprezentowany na diodzie LED jako grafika kursora). Tak więc posiadanie znaku na wyświetlaczu LED nie pociąga za sobą nic więcej niż wciśnięcie logicznego 1 lub 0 na pinach wyjściowych danych, po którym zwykle następuje impuls WR, ale rezygnuję z tego w tym ćwiczeniu. Więc zapisałeś lub pamiętał jakie piny idą do jakich portów, prawda? Wybrałem PD[2..7] i PB0 (cyfrowe piny od 2 do 8 w Arduino-speak). Zwykle nie sugeruję używania PD[0..1], ponieważ dedykuję go do komunikacji szeregowej z powrotem do skrzynki FreeBSD, a Arduino i in. mapują te piny na ich kanał komunikacyjny FTDI USB i chociaż „oni” MÓWIĄ, że piny 0 i 1 będą działać, jeśli nie zainicjujesz komunikacji szeregowej, nigdy nie byłem w stanie używać tych pinów jako normalnych cyfrowych wejść / wyjść. W rzeczywistości spędziłem dwa dni próbując debugować problem, kiedy próbowałem użyć PD0 i PD1 i stwierdziłem, że zawsze były one WYSOKIE. *wzrusza ramionami* Prawdopodobnie byłoby dobrze mieć jakieś zewnętrzne wejście, takie jak klawiatura, przełącznik z pokrętłem lub pokrętłem, a może nawet wejście z terminala (mój ArduinoTerm nie jest jeszcze gotowy na prime time…). Wybór nalezy do ciebie. Na razie zilustruję tylko, jak uzyskać kod, aby umieścić żądany znak na diodzie LED. Do pobrania jest plik zip zawierający kod źródłowy i plik Makefile, a także krótki film pokazujący, jak dioda LED wyświetla swój zestaw znaków. Przepraszamy za kiepską jakość filmu. Poniższy kod wyświetla ciąg „Witamy w moim Instructable!” następnie przechodzi przez cały zestaw znaków obsługiwany przez diodę LED.

DDRD = 0xFF; // WyjścieDDRB = (1<<DDB0); char msg = "Witaj w mojej instrukcji!";uint8_t i;for (;;){ for(i=0;i<27; i++) { Print2LED(msg); _opóźnienie_ms(150); } for(i=0x20; i<0x80; i++) { Print2LED(i); _opóźnienie_ms(150); } Print2LED(&apos*&apos);}Wyjście portu jest obsługiwane w funkcji Print2Led()

voidPrint2LED(uint8_t i){ PORTD = (i << 2); jeśli (i & 0b01000000) PORTB = (1<

Kod i Makefile są zawarte w pliku zip poniżej.

Krok 4: Oszczędzaj porty we/wy za pomocą rejestru przesuwnego

Oszczędzaj porty we/wy za pomocą rejestru przesuwnego
Oszczędzaj porty we/wy za pomocą rejestru przesuwnego
Oszczędzaj porty we/wy za pomocą rejestru przesuwnego
Oszczędzaj porty we/wy za pomocą rejestru przesuwnego
Oszczędzaj porty we/wy za pomocą rejestru przesuwnego
Oszczędzaj porty we/wy za pomocą rejestru przesuwnego

Więc teraz nasz mikrokontroler może wysyłać dane do diody LED z matrycą punktową, ale korzysta z ośmiu portów I/O. To wyklucza użycie ATtiny w 8-pinowej obudowie DIP, a nawet z nowszym Arduino z ATmega328p, który ma dużo portów I/O dla jednej diody LED. Możemy jednak obejść ten problem, używając układu scalonego zwanego rejestrem przesuwnym. Chwila na „wrzucenie” biegów… Rejestr przesuwny można najlepiej zrozumieć, myśląc o dwóch słowach, które składają się na jego nazwę: „zmiana” i „rejestr”. Słowo przesunięcie odnosi się do tego, jak dane poruszają się w rejestrze. Tutaj (podobnie jak w naszym Arduino i ogólnie w mikrokontrolerach) rejestr jest miejscem, w którym przechowywane są dane. Czyni to poprzez implementację liniowego łańcucha cyfrowych obwodów logicznych zwanego „przerzutnikami”, który ma dwa stabilne stany, które mogą być reprezentowane przez 1 lub 0. Tak więc, łącząc osiem przerzutników razem, masz urządzenie, które jest w stanie utrzymać i reprezentujący 8-bitowy bajt. Tak jak istnieje kilka rodzajów przerzutników i kilka odmian na temat rejestrów przesuwnych (liczniki myślenie w górę / w dół i liczniki Johnsona), istnieje również kilka rodzajów rejestrów przesuwnych opartych na tym, jak dane jest zatrzaśnięty w rejestrze i jak te dane są wyprowadzane. Na tej podstawie rozważ następujące typy rejestrów przesuwnych:

  • Wejście szeregowe / wyjście równoległe (SIPO)
  • Wejście szeregowe / Wyjście szeregowe (SISO)
  • Wejście równoległe/wyjście szeregowe (PISO)
  • Równoległe wejście / równoległe wyjście (PIPO)

Dwa warte odnotowania to SIPO i PISO. Rejestry SIPO pobierają dane szeregowo, to znaczy jeden bit po drugim, przesuwając poprzedni bit wejściowy do następnego przerzutnika i wysyłając dane jednocześnie na wszystkie wejścia. To tworzy fajny konwerter szeregowy na równoległy. Rejestry przesuwne PISO, odwrotnie, mają wejścia równoległe, więc wszystkie bity są wprowadzane jednocześnie, ale są wyprowadzane pojedynczo. I zgadłeś, to tworzy ładny konwerter równoległy do szeregowego. Rejestr przesuwny, którego chcemy użyć do zmniejszenia liczby pinów I / O, pozwoli nam wziąć te 8 pinów IO, których używaliśmy wcześniej, i zredukować je do jednego, a może tylko kilku, biorąc pod uwagę, że możemy potrzebować kontrolować sposób wprowadzania bity. Dlatego rejestr przesuwny, którego użyjemy, to Serial In / Parallel Out. Podłącz rejestr przesuwny między diodą LED a Arduino Korzystanie z rejestru przesuwnego jest łatwe. Najtrudniejszą częścią jest po prostu wizualizacja pinów wyjściowych danych i tego, jak cyfry binarne trafią do układu scalonego i jak ostatecznie pojawią się na diodzie LED. Poświęć chwilę na zaplanowanie tego. 1. Podłącz napięcie 5V do styku 14 (prawy górny róg) i przesuń styk 7 (lewy dolny) do masy.2. Rejestr przesuwny ma dwa wejścia szeregowe, ale będziemy używać tylko jednego, więc podłącz drugi pin do 5V3. Nie będziemy używać czystego pinu (używanego do zerowania wszystkich wyjść), więc pozostaw go w stanie pływającym lub zaatakuj go do 5V4. Podłącz jeden cyfrowy port IO do pinu jednego z rejestru przesuwnego. To jest wejście szeregowe pin.5. Podłącz jeden cyfrowy port IO do pinu 8 (prawy dolny róg). To jest zegar pin.6. Połącz linie danych od Q0 do Q6. Używamy tylko 7 bitów, ponieważ zestaw znaków ASCII używa tylko siedmiu bitów. Użyłem PD2 do wysyłania moich danych szeregowych i PD3 do sygnału zegara. W przypadku pinów danych podłączyłem Q0 do D6 na diodzie LED i kontynuowałem w ten sposób (Q1 do D5, Q2 do D4 itd.). Ponieważ wysyłamy dane szeregowo, będziemy musieli zbadać binarną reprezentację każdego znaku, który chcemy wysłać, patrząc na jedynki i zera i wyprowadzając każdy bit na linii szeregowej. Dołączyłem drugą wersję źródła dotmatrixled.c wraz z Makefile poniżej. Przechodzi przez zestaw znaków i wyświetla wszystkie parzyste znaki (jeśli dziwne jest myślenie, że litera może być parzysta lub nieparzysta, pomyśl przez chwilę o reprezentacji binarnej). Spróbuj wymyślić, jak sprawić, by wyświetlał się cyklicznie wszystkie nieparzyste znaki. Możesz dalej eksperymentować z połączeniami między rejestrem przesuwnym, diodą LED z matrycą punktową i Arduino. Istnieje kilka funkcji kontrolnych między diodą LED a rejestrem, które umożliwiają precyzyjne dostrojenie kontroli w zakresie wyświetlania danych. Tak więc… przeszliśmy od konieczności używania ośmiu portów I/O do używania tylko dwóch!

Krok 5: Podsumowanie

Streszczenie
Streszczenie
Streszczenie
Streszczenie

W tej instrukcji przedstawiłem diodę LED z matrycą punktową DLO7135 i sposób jej działania. Dalej omówiłem, jak zmniejszyć liczbę wymaganych portów I / O z ośmiu do tylko dwóch za pomocą rejestru przesuwnego. Matrycę punktową LED DLO7135 można połączyć ze sobą, tworząc bardzo przyciągające wzrok i interesujące namioty imprezowe. Mam nadzieję, że dobrze się bawiłeś czytając tę instrukcję! Jeśli sądzisz, że mógłbym wprowadzić jakieś ulepszenia lub sugestie, które chciałbyś przekazać w tej lub którejkolwiek z moich umiejętności, cieszę się, że je słyszę! Wesołego AVR!

Zalecana: