Spisu treści:

Matryca wyświetlacza LED 5x4 przy użyciu stempla podstawowego 2 (bs2) i Charlieplexing: 7 kroków
Matryca wyświetlacza LED 5x4 przy użyciu stempla podstawowego 2 (bs2) i Charlieplexing: 7 kroków

Wideo: Matryca wyświetlacza LED 5x4 przy użyciu stempla podstawowego 2 (bs2) i Charlieplexing: 7 kroków

Wideo: Matryca wyświetlacza LED 5x4 przy użyciu stempla podstawowego 2 (bs2) i Charlieplexing: 7 kroków
Wideo: Matryca Led bascom 2024, Listopad
Anonim
Matryca wyświetlacza LED 5x4 przy użyciu stempla podstawowego 2 (bs2) i Charlieplexing
Matryca wyświetlacza LED 5x4 przy użyciu stempla podstawowego 2 (bs2) i Charlieplexing

Czy masz Basic Stamp 2 i kilka dodatkowych diod LED? Dlaczego nie pobawić się koncepcją charlieplexingu i stworzyć wyjście za pomocą zaledwie 5 pinów.

W tym celu będę używał BS2e, ale każdy członek rodziny BS2 powinien działać.

Krok 1: Charlieplexing: co, dlaczego i jak

Wyjaśnijmy najpierw dlaczego. Po co używać charlieplexing z Basic Stamp 2? --- Dowód koncepcji: dowiedz się, jak działa charlieplexing i dowiedz się czegoś o BS2. Może to być dla mnie przydatne później, używając szybszych 8-pinowych chipów (tylko 5 z nich będzie we/wy).---Przydatny powód: Zasadniczo nie ma. BS2 jest zbyt wolny, aby wyświetlać bez zauważalnego migotania. Co to jest charlieplexing? ---Charlieplexing to metoda sterowania dużą liczbą diod LED za pomocą małej liczby pinów we/wy mikroprocesora. Dowiedziałem się o charlieplexingu z www.instructables.com i ty też możesz:Charlieplexing LEDs- Teoria Jak sterować wieloma diodami LED z kilku pinów mikrokontrolera. Również na wikipedii: CharlieplexingJak mogę sterować 20 diodami LED z 5 pinami we/wy? ---Proszę przeczytać trzy linki w sekcji "Co to jest charlieplexing?". To wyjaśnia to lepiej niż kiedykolwiek. Charlieplexing różni się od tradycyjnego multipleksowania, które wymaga jednego pinu we/wy dla każdego wiersza i każdej kolumny (byłoby to łącznie 9 pinów we/wy dla wyświetlacza 5/4).

Krok 2: Sprzęt i schemat

Sprzęt i schemat
Sprzęt i schemat

Lista materiałów: 1x - Basic Stamp 220x - diody elektroluminescencyjne (LED) tego samego typu (kolor i spadek napięcia) 5x - rezystory (patrz poniżej wartości rezystorów) Pomocnicze/Opcjonalne: Sposób programowania przycisku BS2Chwilowy jako przełącznika resetowania6v -9vZasilanie w zależności od wersji BS2 (przeczytaj instrukcję) Schemat: Ten schemat został złożony z myślą o układzie mechanicznym. Zobaczysz siatkę diod ustawionych po lewej stronie, jest to orientacja, dla której zapisano kod BS2. Zauważ, że każda para diod LED ma anodę podłączoną do katody drugiej. Są one następnie podłączane do jednego z pięciu pinów we/wy. Wartości rezystora: Należy obliczyć własne wartości rezystora. Sprawdź arkusz danych swoich diod LED lub użyj ustawienia diody LED na multimetrze cyfrowym, aby znaleźć spadek napięcia swoich diod LED. Zróbmy kilka obliczeń: Napięcie zasilania - Spadek napięcia / Pożądany prąd = Wartość rezystora BS2 dostarcza regulowaną moc 5 V i może dostarczać 20 mA prądu. Moje diody LED mają spadek 1.6V i działają przy 20ma.5v - 1.6v /.02amps = 155ohms Aby chronić swój BS2 powinieneś użyć następnej wyższej wartości rezystora od tego, co otrzymujesz z obliczeniami, w tym przypadku uważam, że będzie to 180ohm. Użyłem 220 omów, ponieważ moja płytka rozwojowa ma taką wartość wbudowanego rezystora dla każdego pinu we/wy. UWAGA: Uważam, że ponieważ na każdym pinie znajduje się rezystor, skutecznie podwaja to opór na każdej diodzie, ponieważ jeden pin to V+, a drugi to Gnd. W takim przypadku należy zmniejszyć wartości rezystorów o połowę. Negatywnym efektem zbyt dużej wartości rezystora jest ściemnianie diody LED. Czy ktoś może to zweryfikować i zostawić mi wiadomość lub komentarz, abym mógł zaktualizować te informacje? Programowanie: Używałem płyty rozwojowej ze złączem DB9 do programowania układu bezpośrednio na płycie. Używam również tego układu na mojej płytce prototypowej bez lutowania i mam nagłówek In Circuit Serial Programming (ICSP). Nagłówek ma 5 pinów, piny od 2 do 5 łączą się z pinami 2-5 na kablu szeregowym DB9 (pin 1 jest nieużywany). Należy pamiętać, że aby użyć tego nagłówka ICSP, piny 6 i 7 na kablu DB9 muszą być ze sobą połączone. Reset: chwilowy przycisk resetowania jest opcjonalny. To po prostu przyciąga kołek 22 do ziemi po naciśnięciu.

Krok 3: Deska do krojenia chleba

Deska do krojenia chleba
Deska do krojenia chleba
Deska do krojenia chleba
Deska do krojenia chleba

Teraz nadszedł czas na zbudowanie matrycy na płytce stykowej. Użyłem listwy zaciskowej do połączenia jednej nogi z każdej pary diod i małego przewodu do połączenia pozostałych nóg. Jest to szczegółowo opisane na zdjęciu w zbliżeniu i wyjaśnione szczegółowo tutaj:1. Ustaw swoją płytkę prototypową tak, aby pasowała do większego obrazu2. Umieść diodę LED 1 z anodą (+) do siebie i katodą (-) z dala od siebie.3. Umieść diodę LED 2 w tej samej orientacji z anodą (+) w listwie zaciskowej katody diody LED 1.4. Użyj małego przewodu połączeniowego, aby połączyć anodę diody LED 1 z katodą diody LED 2.5. Powtarzaj, aż każda para diod LED zostanie dodana do płyty. Używam tego, co normalnie byłyby listwami magistrali zasilania płytki chlebowej jako listwami magistrali dla pinów we/wy BS2. Ponieważ są tylko 4 listwy magistrali, używam listwy zaciskowej dla P4 (piąte połączenie I/O). Widać to na większym obrazku poniżej.6. Podłączyć listwę zaciskową katody LED 1 do listwy P0. Powtórz dla każdej nieparzystej diody LED, zastępując odpowiednią P* dla każdej pary (patrz schemat).7. Podłączyć listwę zaciskową katody LED 2 do listwy magistrali P1. Powtórzyć dla każdej nieparzystej diody LED zastępując odpowiednią P* dla każdej pary (patrz schemat).8. Podłącz każdą listwę magistrali do odpowiedniego pinu I/O na BS2 (P0-P4).9. Sprawdź wszystkie połączenia, aby upewnić się, że pasują do schematu.10. Celebrate. UWAGA: Na zbliżeniu zobaczysz, że nie wygląda na to, że wykonałem krok 7, ponieważ połączenie z drugim pinem I/O znajduje się na anodzie diod LED o nieparzystych numerach. Pamiętaj, że katoda parzystych diod LED jest podłączona do anody nieparzystych diod LED, więc połączenie jest takie samo. Jeśli ta notatka Cię dezorientuje, po prostu ją zignoruj.

Krok 4: Podstawy programowania

Aby charlieplexing działał, włączasz tylko jedną diodę na raz. Aby to zadziałało z naszym BS2 potrzebujemy dwóch podstawowych kroków:1. Ustaw tryby wyjścia dla kołków za pomocą polecenia OUTS.2. Powiedz BS2, które szpilki mają być używane jako wyjścia za pomocą polecenia DIRS. Działa to, ponieważ BS2 można powiedzieć, które szpilki mają być sterowane wysoko i nisko, i poczeka na to, aż określisz, które szpilki są wyjściami. Zobaczmy, czy wszystko jest prawidłowo podłączone przez po prostu próbuję mrugnąć diodą LED 1. Jeśli spojrzysz na schemat, zobaczysz, że P0 jest podłączony do katody (-) diody LED 1, a P1 jest podłączony do anody tej samej diody LED. Oznacza to, że chcemy, aby P0 było niskie, a P1 wysokie. Można to zrobić w następujący sposób: „OUTS = %11110”, co powoduje, że P4-P1 jest wysoki, a P0 niski.(% oznacza, że ma nastąpić liczba binarna. Najniższa cyfra binarna jest zawsze po prawej stronie. 0=NISKI, 1=WYSOKI) BS2 przechowuje te informacje, ale nie będzie na nich działać, dopóki nie zadeklarujemy, które piny są wyjściami. Ten krok jest kluczowy, ponieważ tylko dwa piny powinny być jednocześnie wyjściami. Reszta powinna być wejściami, które ustawiają te piny w tryb High Impedance, aby nie pobierały żadnego prądu. Musimy sterować P0 i P1, więc ustawimy je na wyjścia, a resztę na wejścia, jak na przykład: "DIRS = %00011". (% wskazuje, że ma nastąpić liczba binarna. Najniższa cyfra binarna jest zawsze po prawej stronie. 0 =WEJŚCIE, 1=WYJŚCIE)Złóżmy to razem w jakiś użyteczny kod:' {$STAMP BS2e}' {$PBASIC 2.5}DO OUTS = %11110 'Napęd P0 niski i wysoki P1-P4 DIRS = %00011 'Ustaw P0- P1 jako wyjścia i P2-P4 jako wejścia PAUSE 250 'Pauza, aby dioda LED pozostała włączona DIRS = 0 'Ustaw wszystkie styki na wejście. Spowoduje to wyłączenie diody LED PAUSE 250 „Pauza, aby dioda LED pozostała wyłączonaLOOP”

Krok 5: Cykl rozwoju

Teraz, gdy widzieliśmy czas pracy jednego pinu, aby upewnić się, że wszystkie działają. 20led_Zig-Zag.bse Ten załączony kod powinien zaświecić każdą z 20 diod LED w zygzakowaty wzór. Zauważysz, że po tym, jak każdy pin zaświeci się, używam "DIRS = 0", aby zamienić wszystkie piny z powrotem na wejścia. Jeśli zmienisz OUTS bez wyłączania pinów wyjściowych, możesz uzyskać pewne „ghosting”, w którym dioda, która nie powinna się świecić, może migać między cyklami. Jeśli zmienisz zmienną W1 na początku tego kodu na „W1 = 1” będzie tylko 1 milisekundowa przerwa między każdym mignięciem diody LED. Spowoduje to efekt utrzymywania się wzroku (POV), który sprawia, że wygląda na to, że wszystkie diody LED są zapalone. Ma to efekt przyciemniania diod LED, ale jest esencją tego, jak będziemy wyświetlać znaki na tej matrycy. Diody LED w użyteczny wzór. Ten plik to moja pierwsza próba. Zobaczysz, że na dole pliku znaki są przechowywane w czterech wierszach 5-cyfrowego binarnego. Każda linia jest wczytywana, analizowana, a podprogram jest wywoływany za każdym razem, gdy dioda musi się zapalić. Ten kod działa, przechodząc przez cyfry 1-0. Jeśli spróbujesz go uruchomić, zauważ, że jest nękany przez bardzo niską częstotliwość odświeżania, co powoduje, że znaki migają prawie zbyt wolno, aby można je było rozpoznać. Ten kod jest zły z wielu powodów. Po pierwsze, pięć cyfr binarnych zajmuje tyle samo miejsca w EEPROM, co 8 cyfr binarnych, ponieważ wszystkie informacje są przechowywane w grupach po cztery bity. Po drugie, SELECT CASE używany do decydowania, który pin ma być zapalony, wymaga 20 przypadków. BS2 jest ograniczony do 16 przypadków na operację SELECT. Oznacza to, że musiałem ominąć to ograniczenie za pomocą instrukcji IF-THEN-ELSE. Musi być lepszy sposób. Po kilku godzinach drapania się po głowie odkryłem to.

Krok 6: Lepszy tłumacz

Każdy rząd naszej matrycy składa się z 4 diod LED, każda może być włączona lub wyłączona. BS2 przechowuje informacje w swojej pamięci EEPROM w grupach po cztery bity. Ta korelacja powinna nam znacznie ułatwić sprawę. Oprócz tego cztery bity odpowiadają liczbom dziesiętnym 0-15, co daje w sumie 16 możliwości. To znacznie ułatwia lub WYBIERZ PRZYPADEK. Oto cyfra 7 przechowywana w EEPROM: '7 %1111, %1001, %0010, %0100, %0100, Każdy wiersz ma dziesiętny odpowiednik 0-15, więc czytamy wiersz z pamięci i przekaż go bezpośrednio do funkcji SELECT CASE. Oznacza to, że kluczem dla interpretera jest czytelna dla człowieka macierz binarna używana do tworzenia każdego znaku (1=dioda włączona, 0=wyłączona). aby ustawić DIRS i OUTS jako zmienne. Najpierw przeczytałem każdy z pięciu wierszy znaku do zmiennych ROW1-ROW5. Program główny następnie wywołuje podprogram, aby wyświetlić znak. Ten podprogram zajmuje pierwszy wiersz i przypisuje cztery możliwe kombinacje OUTS do zmiennej outp1-outp4, a dwie możliwe kombinacje DIRS do direc1 i direc2. Diody LED migają, licznik wierszy jest zwiększany i ten sam proces jest uruchamiany dla każdego z pozostałych czterech wierszy. Jest to znacznie szybsze niż w przypadku pierwszego programu interpretującego. Biorąc to pod uwagę, nadal jest zauważalne migotanie. Spójrz na wideo, kamera sprawia, że migotanie wygląda znacznie gorzej, ale masz pomysł. Przeniesienie tej koncepcji na znacznie szybszy układ, taki jak układ picMicro lub układ AVR, umożliwiłby wyświetlanie tych znaków bez zauważalnego migotania.

Krok 7: Gdzie iść stąd?

Nie mam freza cnc ani materiałów do wytrawiania do robienia płytek drukowanych, więc nie będę okablować tego projektu. Jeśli masz młyn i jesteś zainteresowany współpracą, aby przejść dalej, wyślij mi wiadomość. Chętnie zapłacę za materiały i wysyłkę jeszcze chętniej, aby pokazać coś z gotowego produktu do tego projektu.

Inne możliwości: 1. Przenieś to na inny chip. Ta konstrukcja matrycy może być używana z dowolnym układem, który ma dostępnych 5 pinów we/wy, które są zdolne do pracy w trybie trójstanowym (piny, które mogą być wysokie, niskie lub wejściowe (wysoka impedancja)). 2. Używając szybszego chipa (być może AVR lub picMicro) możesz zwiększyć skalę. Dzięki 20-pinowemu chipowi możesz użyć 14 pinów do charlieplex wyświetlacza 8x22, a pozostałych pinów użyć do odbierania poleceń szeregowych z komputera lub innego kontrolera. Użyj jeszcze trzech 20-pinowych chipów i możesz mieć przewijany wyświetlacz o wymiarach 8x88, co daje w sumie 11 znaków naraz (oczywiście w zależności od szerokości każdego znaku). Powodzenia baw się dobrze!

Zalecana: