Spisu treści:

Rejestr zmian 74HC164 i Arduino: 9 kroków
Rejestr zmian 74HC164 i Arduino: 9 kroków

Wideo: Rejestr zmian 74HC164 i Arduino: 9 kroków

Wideo: Rejestr zmian 74HC164 i Arduino: 9 kroków
Wideo: Elektroniczna rewolucja. Jak dokonywać zmian w KRS online? 2024, Listopad
Anonim
Rejestr zmian 74HC164 i Arduino
Rejestr zmian 74HC164 i Arduino
Rejestr zmian 74HC164 i Arduino
Rejestr zmian 74HC164 i Arduino

Rejestry przesuwne są bardzo ważną częścią logiki cyfrowej, działają jak spoiwo pomiędzy światem równoległym i szeregowym. Zmniejszają liczbę przewodów, użycie pinów, a nawet pomagają odciążyć procesor, umożliwiając przechowywanie ich danych. Są dostępne w różnych rozmiarach, z różnymi modelami do różnych zastosowań i różnymi funkcjami. Ten, o którym będę dzisiaj dyskutował, to 74HC164 8-bitowy, szeregowy równolegle, niezatrzaskowy, przesuwny rejestr. Dlaczego? Po pierwsze, jest to jeden z najbardziej podstawowych rejestrów przesuwnych, co ułatwia naukę o tym, ale tak się złożyło, że był to jedyny, jaki miałem (lol!) Ta instrukcja opisuje, jak działa ten układ, jak go podłączyć, i połącz go z arduino, w tym kilka przykładowych szkiców i obwodów led. Mam nadzieję, że wszystkim się spodoba!

Krok 1: Czym są rejestry przesuwne?

Czym więc są rejestry zmianowe?
Czym więc są rejestry zmianowe?

Jak wspomniano wcześniej, są one dostępne we wszystkich różnych smakach, a także wspomniałem, że używam 8-bitowego, szeregowego równoległego 74HC164, niezatrzaskowego, przesuwnego rejestru, więc co to wszystko znaczy?!? Po pierwsze, nazwa 74 - oznacza część rodziny logiki 74xx, a ponieważ jej logika nie może bezpośrednio sterować bardzo dużym prądem (16-20mA dla całego układu jest wspólne), przekazuje tylko sygnały, ale to nie znaczy ten sygnał nie trafia do tranzystora, który może przełączać wyższe obciążenie prądowe. HC oznacza, że jest to szybkie urządzenie cmos, możesz o tym przeczytać na poniższym linku, ale zasadniczo musisz o tym wiedzieć, że jest to niskie urządzenie zasilające i będzie działać od 2 do 5 woltów (więc jeśli używasz 3,3 woltowego arduino, jesteś w porządku) Ponadto może działać poprawnie przy dużych prędkościach, ten konkretny układ ma typową prędkość 78 mhz, ale możesz jechać tak wolno lub tak szybko (dopóki nie zacznie się wygłupiać) jak chceszwww.kpsec.freeuk.com/components/74series.htm164 to numer modelu tego układu, jest ich duży wykres na wikipediaen.wikipedia.org/wiki/List_of_7400_series_integrated_circuits Dalej, 8 bitów Rejestr przesuwny składa się z obwodów flip flop, flip flop to 1 bit pamięci, ten ma s 8 (lub 1 bajt pamięci). Ponieważ jest to pamięć, jeśli nie potrzebujesz aktualizować rejestru, możesz po prostu przestać z nim „rozmawiać” i pozostanie w takim stanie, w jakim go zostawiłeś, dopóki nie „porozmawiasz” z nim ponownie lub zresetujesz zasilanie. inne rejestry przesuwne serii 7400 mogą przejść równolegle do 16 bitów szeregowych. Oznacza to, że twoje arduino wysyła dane szeregowo (włączone impulsy jeden po drugim), a rejestr przesuwny umieszcza każdy bit na właściwym pinie wyjściowym. Ten model wymaga tylko sterowania 2 przewodami, więc możesz użyć 2 cyfrowych pinów na arduino i rozbić te 2 na 8 więcej cyfrowych wyjść, niektóre inne modele są równoległe w wyjściu szeregowym, robią to samo, ale jako wejścia do arduino (na przykład gamepad NES) niezatrzaśnięty Może to być upadek tego chipa, jeśli go potrzebujesz. Gdy dane wchodzą do rejestru przesuwnego przez port szeregowy, pojawiają się na pierwszym pinie wyjściowym, gdy wchodzi impuls zegarowy, pierwszy bit przesuwa się o 1 miejsce, tworząc efekt przewijania na wyjściach, na przykład 00000001 pojawi się na wyjściach jako 101001000100001000001000000100000001Jeśli rozmawiasz z innymi urządzeniami logicznymi, które korzystają z tego samego zegara i nie spodziewasz się tego, może to powodować problemy. Zatrzaśnięte rejestry przesuwne mają dodatkowy zestaw pamięci, więc po wprowadzeniu danych do rejestru można przestawić przełącznik i pokazać wyjścia, ale dodaje kolejny przewód, oprogramowanie i rzeczy, za którymi trzeba nadążyć. sterujemy wyświetlaczami LED, efekt przewijania dzieje się tak szybko, że go nie widać (z wyjątkiem pierwszego włączenia chipa), a gdy bajt znajdzie się w rejestrze przesuwnym, nie ma już przewijania Będziemy kontrolować typ bargrafu, 7 segmentów oraz matryca punktowa 16LED 4x4 z tym układem i oprogramowaniem na arduino przy użyciu tylko 2 pinów cyfrowych (+zasilanie i masa)

Krok 2: Podstawowe okablowanie i obsługa

Podstawowe okablowanie i obsługa
Podstawowe okablowanie i obsługa
Podstawowe okablowanie i obsługa
Podstawowe okablowanie i obsługa

Okablowanie 74HC164 jest 14-pinowym układem, ma 4 piny wejściowe, 8 pinów wyjściowych, zasilanie i uziemienie, więc zacznijmy od góry. Piny 1 i 2 są wejściami szeregowymi, są ustawione jako logiczna bramka AND, co oznacza, że oba muszą być logiczne wysokie (tj. 5 woltów), aby bit był postrzegany jako 1, stan niski (0 woltów) na którymkolwiek z nich będzie odczytywany jako zero. Tak naprawdę nie potrzebujemy tego i łatwiej jest sobie z tym poradzić w oprogramowaniu, więc wybierz jeden i powiąż go z V+, aby zawsze czytał wysoko. Zdecydowałem się użyć zworki od pinu 1 do pinu 14 (V+), ponieważ wystarczy przełożyć zworkę płytki stykowej na chip. Jedyne pozostałe wejście szeregowe (pin 2 na moim schemacie) przejdzie do cyfrowego pinu 2 arduino. Piny 3, 4, 5 i 6 74HC164 to pierwsze 4 bajty wyjściaPin 7 łączy się z uziemieniemSkacząc w prawo, pin 8 jest pinem zegara, w ten sposób rejestr przesuwny wie, że następny bit szeregowy jest gotowy do odczytu, powinien być podłączony do cyfrowego pinu 3 na arduino. Pin 9 ma na celu wyczyszczenie całego rejestru na raz, jeśli spadnie, masz możliwość z niego skorzystać, ale nic w tym nieodgadnionym nie robi, więc podepnij go do V+piny 10, 11 12 i 13 to ostatnie 4 bajty wyjścia pin 14 to zasilanie chipów Działanie Najpierw musisz ustawić wejście szeregowe rejestru (pin cyfrowy 2 na arduino) wysoki lub niski, następnie należy przestawić pin zegara (pin cyfrowy 3) z niskiego na wysoki, rejestr przesuwny odczyta dane na wejściu szeregowym i przesunie piny wyjściowe o 1, powtórz 8 razy i ustawiłeś wszystkie 8 wyjść. Można to zrobić ręcznie za pomocą pętli for i cyfrowych zapisów w arduino IDE, ale ponieważ t jest to bardzo powszechna komunikacja na poziomie sprzętowym (SPI), mają jedną funkcję, która robi to za Ciebie. shiftOut(dataPin, clockPin, bitOrder, value) Po prostu powiedz, gdzie dane i piny zegara są podłączone do arduino, w jaki sposób wysłać dane i co wysłać, i zadbano o to (przydatne)

Krok 3: Projekty

Projektowanie
Projektowanie

Dobra, dość wykładów i teorii, zróbmy trochę zabawnych rzeczy z tym chipem! W tej instrukcji są 3 projekty do wypróbowania, pierwsze 2 są łatwe i można je błyskawicznie przeanalizować. Trzecia, matryca led 4x4, wymaga więcej czasu i przemyśleń do zbudowania, ze względu na okablowanie led. Lista części Projekt 1: „2 Wire” Bargraf Kontroler wyświetlacza LED 1 * 74HC164 Shift register1 * solderless breadboard1 * arduino lub arduino kompatybilny (5 v) 1 * 330 omów rezystor 1/4 wata 8 * normalne wyjście czerwone diody LED 12 * przewody połączeniowe Projekt 2: 7-segmentowy kontroler wyświetlacza „2 Wire” 1 * 74HC164 Rejestr przesuwny1 * płytka stykowa bez lutowania1 * kompatybilny z arduino lub arduino (5 v) 1 * rezystor 330 omów 1/4 wata 1 * wyświetlacz siedmiosegmentowy ze wspólną katodą 9 * przewody połączeniowe Projekt 3: wyświetlacz matrycowy LED 4x4 "2 Wire" 1 * 74HC164 Shift register1 * kompatybilny z arduino lub arduino (5 v) 4 * 150 omów 1 Rezystor 1/4 wat8 * rezystor 1Kohm 1/8 wat (lub większy)8 * tranzystor NpN (2n3904 lub lepszy)16 włącz wszystkie diody LED na raz jak światło hamowania)

Krok 4: Projekt 1[pt 1]: „2 przewody” Bargrafowy sterownik wyświetlacza LED Sprzęt

Projekt 1[pt 1]: Sprzęt kontrolera wyświetlacza LED „2 Wire”
Projekt 1[pt 1]: Sprzęt kontrolera wyświetlacza LED „2 Wire”
Projekt 1[pt 1]: Sprzęt kontrolera wyświetlacza LED „2 Wire”
Projekt 1[pt 1]: Sprzęt kontrolera wyświetlacza LED „2 Wire”

Podpinam arduino i shift register wg schematu mam już 10 segmentowy bargraf gotowy do pracy z płytką stykową i to zobaczysz na obrazku, ale możesz zrobić to samo z poszczególnymi ledami na drugiej stronie Stwierdziłem, że nie są to urządzenia sterujące, że są to urządzenia logiczne, przez które przepływają niewielkie ilości prądu. Aby uruchomić 8 diod LED, zachowując prostotę obwodu i nie gotując rejestru przesuwnego, musimy trochę ograniczyć prąd. Diody LED są połączone równolegle i dzielą wspólną masę (wspólna katoda), zanim zostaną włączone do zasilania uziemienie zasilające muszą przejść przez rezystor 330 omów, ograniczając całkowitą ilość prądu, który wszystkie diody LED mogą ewentualnie wykorzystać do 10mA (przy 5 woltach). W tym przykładzie, aby sterować diodami LED odpowiednim prądem, będziesz musiał wstawić tranzystor, w którym rejestr przesuwny może włączać / wyłączać źródło o wyższym prądzie (patrz projekt 3) Pin danych rejestru przesuwnego (pin 2) wymaga aby połączyć się z cyfrowym pinem arduino nr 2 Pin zegara rejestru przesuwnego (pin 8) musi być połączony z cyfrowym pinem arduino nr 3

Krok 5: Projekt 1[pt 2]: Oprogramowanie sterownika wyświetlacza LED z wykresem słupkowym „2 przewody”

Projekt 1[pt 2]: Oprogramowanie sterownika wyświetlacza LED „2 przewody”
Projekt 1[pt 2]: Oprogramowanie sterownika wyświetlacza LED „2 przewody”
Projekt 1[pt 2]: Oprogramowanie sterownika wyświetlacza LED „2 przewody”
Projekt 1[pt 2]: Oprogramowanie sterownika wyświetlacza LED „2 przewody”

Przykład 1: Otwórz plik "_164_bas_ex.pde" Wewnątrz arduino IDE, jest to prosty szkic, który pozwala po prostu zdefiniować włączanie lub wyłączanie diod LED na wyświetlaczu słupkowym. Pierwsze 2 linie definiują numery pinów, których będziemy używać do danych i zegara, ja użyj #define over const integer, łatwiej mi to zapamiętać i po skompilowaniu nie ma żadnej przewagi #define data 2#define clock 3 następna jest funkcja void setup, działa tylko raz, więc arduino się obraca włączony, ustawia rejestr przesuwny i nie ma nic więcej do roboty. Wewnątrz funkcji void setup ustawiamy zegar i piny danych jako piny OUTPUT, a następnie za pomocą funkcji shiftOut wysyłamy dane do rejestru przesuwnego void setup(){ pinMode(clock, OUTPUT); // ustaw pin zegara jako wyjście pinMode(data, OUTPUT); // ustaw pin danych jako wyjście shiftOut(data, clock, LSBFIRST, B10101010); // wyślij tę wartość binarną do rejestru przesuwnego} W funkcji shiftOut możesz zobaczyć jej argumentydane to pin danych, zegar to pin zegara LSBFIRST odnosi się do kolejności, w jakiej się znajduje, podczas zapisywania jej w notacji binarnej (Bxxxxxxxx) 7. element za B jest najmniej znaczącym bitem Pierwszy, ten jest podawany jako pierwszy, więc kończy się na ostatnim wyjściu, gdy wszystkie 8 bitów zostanie wprowadzonych w B10101010 jest wartością binarną wysyłaną do rejestru przesuwnego i włącza się każde nieparzyste światło, spróbuj grać z różnymi wartościami, aby włączyć lub wyłączyć różne wzorce i na koniec pustą pętlę void (ponieważ jej potrzebujesz, nawet jeśli jej nie używasz) void loop(){} // na razie pusta pętla Przykład 2: pierwsze 8 linii tak samo jak w pierwszych 8 wierszach pierwszego przykładu, w rzeczywistości nie zmienią się one dla żadnego z innych projektów, więc #define data 2#define clock 3void setup(){ pinMode(clock, OUTPUT); // ustaw pin zegara jako wyjście pinMode(data, OUTPUT); // spraw, aby pin danych był wyjściem Ale teraz w konfiguracji void jest pętla licząca 8, pobierająca pusty bajt i przesuwająca się o 1 bit na raz, zaczynając od skrajnego lewego bitu i przesuwając się w prawo. Jest to wstecz od pierwszego przykładu, w którym zaczęliśmy od skrajnego prawego bitu i pracowaliśmy w lewo, ale używając funkcji MSBFIRST, funkcja shift out wysyła dane we właściwy sposób. Ponadto dodajemy opóźnienie w pętli for, aby zwalniała na tyle, aby była widoczna. for(int i = 0; i < 8; ++i) //for 0 - 7 do { shiftOut(data, clock, MSBFIRST, 1 << i); // przesunięcie bitowe wysokiej wartości logicznej (1) o i delay(100); // opóźnij 100ms lub nie będziesz mógł tego zobaczyć } }void loop(){} // pusta pętla na razie prześlij skrypt i powinieneś teraz zobaczyć, jak bargraf zapala się każda kontrolka pojedynczo

Krok 6: Projekt 2: „2-przewodowy” 7-segmentowy kontroler wyświetlacza

Projekt 2: "2 Wire" 7-segmentowy kontroler wyświetlacza
Projekt 2: "2 Wire" 7-segmentowy kontroler wyświetlacza
Projekt 2: "2 Wire" 7-segmentowy kontroler wyświetlacza
Projekt 2: "2 Wire" 7-segmentowy kontroler wyświetlacza

Spójrz na pinout swojego 7-segmentowego wyświetlacza (miałem tylko podwójny, ale używałem tylko połowy) i użyj poniższego rysunku, aby podłączyć każdy segment do odpowiedniego bitu w rejestrze przesuwnymbit 1 = pin 3bit 2 = pin 4bit 3 = pin 5bit 4 = pin 6bit 5 = pin 10bit 6 = pin 11bit 7 = pin 12bit 8 = pin 13 (jeśli chcesz użyć kropki dziesiętnej)I katoda wyświetlacza przez rezystor 330ohm i do masy zasilania teraz otwórz seven_seg_demo.pde w arduino IDEFNajpierw widzisz, gdzie definiujemy dane i piny zegara #define data 2#define clock 3 Następnie ustawiamy wszystkie wzorce znaków w systemie binarnym, jest to całkiem proste, spójrz na poniższy rysunek, jeśli potrzebujesz środkowego segmentu wpisz jeden, następnie potrzebujesz górnego segmentu, jeśli tak, wpisz inny, rób to, aż pokryjesz wszystkie 8 segmentów, zauważ, że mój najbardziej prawy bit (bit 8) to zawsze 0, ponieważ nigdy nie włączam dziesiętnego punkt. bajt zero = B01111110;bajt pierwszy = B00000110;bajt drugi = B11011010;bajt trzeci = B11010110;bajt czwarty = B10100110;bajt piąty = B11110100;bajt szósty = B11111100;bajt siódmy = B01000110;bajt ósmy = B11111110;bajt dziewiąty = B11110110; następnie w void setup ustawiamy nasze piny danych i zegara na wyjścia void setup(){ pinMode(clock, OUTPUT); // ustaw pin zegara jako wyjście pinMode(data, OUTPUT); // ustaw dane pin jako output3} następnie w void loop używamy shiftOut do wyświetlenia każdego wzorca (liczby) czekamy 1/2 sekundy i wyświetlamy następny, od 0 do 9, ponieważ jest to wykonywane w funkcji void loop, będzie on liczony 0-9 i powtarzaj w nieskończoność. void loop(){ shiftOut(dane, zegar, LSBFIRST, zero); opóźnienie (500); shiftOut(dane, zegar, LSBFIRST, jeden); opóźnienie (500); shiftOut(dane, zegar, LSBFIRST, dwa); opóźnienie (500); shiftOut(dane, zegar, LSBFIRST, trzy); opóźnienie (500); shiftOut(dane, zegar, LSBFIRST, cztery); opóźnienie (500); shiftOut(dane, zegar, LSBFIRST, pięć); opóźnienie (500); shiftOut(dane, zegar, LSBFIRST, sześć); opóźnienie (500); shiftOut(dane, zegar, LSBFIRST, siedem); opóźnienie (500); shiftOut(dane, zegar, LSBFIRST, osiem); opóźnienie (500); shiftOut(dane, zegar, LSBFIRST, dziewięć); opóźnienie(500);}

Krok 7: Projekt 3[pt 1]: '2 Wire' 4x4 Led Matrix Display

Projekt 3[pt 1]: '2 Wire' 4x4 Led Matrix Display
Projekt 3[pt 1]: '2 Wire' 4x4 Led Matrix Display
Projekt 3[pt 1]: '2 Wire' 4x4 Led Matrix Display
Projekt 3[pt 1]: '2 Wire' 4x4 Led Matrix Display

Projekt matrycy LED 4x4 jest nieco bardziej złożony, ale prawie wszystko jest w budowie, ja zdecydowałem się na lutowanie mojej na płycie perforowanej, ale powinno być możliwe powielenie na płytce stykowej, tylko o wiele bardziej rozstawione. Obwody również różni się tym, że rejestr przesuwny nie steruje bezpośrednio diodami LED, zamiast tego wyjścia rejestru przesuwnego są wysyłane przez rezystor 1Kohm do bazy tranzystora NpN, gdy wyjście bitu jest wysokie, przepuszcza wystarczającą ilość prądu i napięcia do Tranzystor do przełączania połączenia między kolektorem a emiterem, kolektory są podłączone do "solidnego" regulowanego 5 V. Emitery tranzystorów są podłączone do rezystorów 150 omów, a rezystory są połączone z anodami 4 diod LED w rzędzie i ogranicza rząd do 20mA, chociaż podczas rysowania obrazów na wyświetlaczu świeci tylko 1 dioda na raz, a więc blisko pełnej jasności (prawie, ponieważ bardzo szybko włączają się i wyłączają, tworząc cały obraz) Są 4 rzędy i 4 kolumny, każda wiersz otrzymuje rezystor i tranzystor, na każdej kolumnie katody LED są ze sobą powiązane, wpadają do kolektora tranzystora, którego baza jest również kontrolowana przez rejestr przesuwny, a na koniec do masy. Duża wersja schematu www.instructables.com/files/orig/F7J/52X0/G1ZGOSRQ/F7J52X0G1ZGOSRQ.jpg

Krok 8: Projekt 3[pt 2]: '2 Wire' 4x4 Led Matrix Display

Projekt 3[pt 2]: Wyświetlacz z matrycą LED „2 przewody” 4x4
Projekt 3[pt 2]: Wyświetlacz z matrycą LED „2 przewody” 4x4
Projekt 3[pt 2]: Wyświetlacz z matrycą LED 4x4 „2 przewody”
Projekt 3[pt 2]: Wyświetlacz z matrycą LED 4x4 „2 przewody”
Projekt 3[pt 2]: Wyświetlacz z matrycą LED 4x4 „2 przewody”
Projekt 3[pt 2]: Wyświetlacz z matrycą LED 4x4 „2 przewody”

Rejestr przesuwny kontroluje zarówno anodę, jak i katody diod LED w formacie YX, spójrz na następujący bit 1 = kolumna 1 (najbardziej po prawej) bit 2 = kolumna 2 bit 3 = kolumna 3 bit 4 = kolumna 4 bit 5 = wiersz 1 (najwyższy) bit 6 = rząd 2 bit 7 = rząd 3 bit 8 = rząd 4 Aby zrobić obrazek, narysuj kwadrat 4x4 na papierze milimetrowym i wypełnij te, które chcesz wyświetlić, następnie utwórz tabelę YX. Poniżej zobaczysz mapowanie dla porównania, najlepiej, jak można zrobić na 4x4 "piksele"Dla każdej wypełnionej sekcji zapisuję, w której kolumnie (Y) się znajduje, a następnie w którym wierszu się znajduje (X)Teraz otwórz się plik _4x4.pde w arduino IDE zobaczysz naszych starych 2 znajomych #define data 2#define clock 3 następnie tablica liczb całkowitych int img = {1, 1, 4, 1, 1, 3, 4, 3, 2, 4, 3, 4}; Jeśli spojrzysz na to tylko listę moich zapisanych współrzędnych YX, byłoby ciężko przekonwertować te wartości ręcznie, a mamy komputer… niech to zrobi! Idąc dalej, jest konfiguracja void, w której tworzymy nasz zegar i piny danych WYJŚCIA void setup(){ pinMode(clock, OUTPUT); // ustaw pin zegara jako wyjście pinMode(data, OUTPUT); // ustaw dane przypinane jako wyjście3} I myląca pętla void, aby zacząć wszystko, musimy zadeklarować kilka lokalnych zmiennych void loop(){ int Y; int X; bajt się; Następnie pętla for, ta pętla musi być tak długa, jak liczba wpisów w tablicy img, dla tego obrazu użyłem tylko 6 pikseli, co daje 12 współrzędnych YX. Pomijam co drugą liczbę, używając i +=2, ponieważ czytamy 2 współrzędne na pętlę for(int i = 0; i < 12; i += 2) // liczba punktów w tablicy img, w tym przypadku 12 { Teraz czytamy wpis Y w w tablicy i odejmujemy jeden od jego wartości, ponieważ bajty nie zaczynają się od jedynki, zaczynają się od zera, ale policzyliśmy od 1 // otrzymujemy pierwszą parę przewodów YX Y = (img-1); // odejmij jeden, ponieważ liczba bitów zaczyna się od 0 Następnie odczytujemy w tablicy wpis X w [i + 1] i odejmujemy jeden od jego wartości, z tego samego powodu X = (img[i+1] - 1); Po uzyskaniu wartości YX piksela wykonujemy trochę bitów lub matematykę i przesuwamy w lewo. Najpierw musimy odczytać wartość X i niezależnie od jej wartości, przesunąć ją o tyle miejsc + 4 w lewo, więc jeśli X wynosi 4 i dodaj 4 to jest bit 8 (MSB), ponownie patrząc na wykres … bit 1 = kolumna 1 (najbardziej po prawej) bit 2 = kolumna 2 bit 3 = kolumna 3 bit 4 = kolumna 4 bit 5 = rząd 1 (najwyższy) bit 6 = rząd 2 bit 7 = wiersz 3 bit 8 = wiersz 4 Bit 8 to ostatni wiersz Następnie wartość Y jest również przesuwana w lewo, tym razem po prostu sama, nic nie dodaje się. W końcu oba są sprowadzane razem do 1 bajtu zamiast 2 pół bajtów (nibbles), użycie bitowe lub (symbol |) zajmuje dwa bajty i zasadniczo je sumuje, załóżmy X = 10000000Y = 00000001-------------------- LUB = 100000001wiersz 4 kolumna 1 na zewnątrz = 1 << (X + 4) | 1 << Y; I wreszcie shiftOut, aby wyświetlić bieżący obraz, i rób to, aż nie będziemy mieć więcej danych w tablicy… opóźnij chwilę i zapętl w nieskończoność, ponieważ przesuwaliśmy dane w lewo i potrzebujemy, aby MSB był na ostatnim pinie wyjściowym rejestru przesuwnego wyślij go jako pierwszy. shiftOut(dane, zegar, MSBFIRST, out); // przesuń bajt do naszego rejestru delay(1); // opóźnij trochę, aby miał szansę zostawić plamkę światła w twoich oczach Zapraszam do tworzenia własnych obrazów i efektów, Dostępne są 3 przykładowe pliki, uśmiechnięta buźka i szachownica (która bardziej przypomina paski), i wreszcie losowy twórca blasku

Krok 9: Wniosek

Wniosek
Wniosek
Wniosek
Wniosek
Wniosek
Wniosek

W sumie jest to całkiem poręczny mały chip i cieszę się, że zeskrobałem go ze starego kawałka elektroniki, który trafił do kosza. Może być używany do innych rzeczy poza systemami wyświetlania, ale każdy lubi światła i natychmiastową informację zwrotną widząc to, co się dzieje, jest niezwykle pomocne dla myślicieli wizualnych takich jak ja. Proszę również wybaczyć mój kod, mam arduino dopiero od trzeciego tygodnia października i był to dość duży kurs przyspieszony. Ale to wspaniała rzecz w systemie, jeśli usiądziesz i zaczniesz z nim pracować, jest on pełen zgrabnych funkcji, które sprawiają, że kontrolowanie świata za pomocą 8-bitowego mikrokontrolera jest całkiem łatwe. Jak zawsze pytania i komentarze są mile widziane i dzięki za czytając, mam nadzieję, że dużo się nauczyłeś

Zalecana: