
Gabriel Brooks
0
1917
405
Dzisiaj postaram się nauczyć cię trochę o rejestrach zmianowych. Są to dość ważną częścią programowania Arduino, głównie dlatego, że zwiększają liczbę wyjść, których można użyć, w zamian za tylko 3 piny sterujące. Możesz także łączyć szeregowo rejestry przesuwne, aby uzyskać jeszcze więcej wyników.
Jest to znaczący skok w trudności w porównaniu z poprzednimi samouczkami i zdecydowanie sugeruję, że dobrze rozumiesz poprzedni materiał (linki na końcu tego artykułu), a także rozumiesz podstawy binarnego What Is Binary? [Wyjaśniona technologia] Co to jest binarny? [Wyjaśnione technologie] Biorąc pod uwagę fakt, że pliki binarne są tak absolutnie fundamentalne dla istnienia komputerów, wydaje się dziwne, że nigdy wcześniej nie zajmowaliśmy się tym tematem - więc dzisiaj pomyślałem, że dam krótki przegląd tego, co binarne… które napisałem ostatni raz.
Czym jest rejestr zmianowy?
Rejestr przesuwny wyjścia, technicznie rzecz biorąc, odbiera dane szeregowo i wysyła je równolegle. W praktyce oznacza to, że możemy szybko wysłać wiązkę poleceń wyjściowych do układu, nakazać mu aktywację, a wyjścia zostaną wysłane do odpowiednich styków. Zamiast iteracji przez każdy pin, po prostu wysyłamy wymagane dane wyjściowe do wszystkich pinów jednocześnie, jako jeden bajt lub więcej informacji.
Jeśli pomaga ci to zrozumieć, możesz myśleć o rejestrze przesuwnym jako o „tablicy” wyjść cyfrowych, ale możemy pominąć zwykłe polecenia digitalWrite i po prostu wysłać serię bitów, aby je włączyć lub wyłączyć.
Jak to działa?
Rejestr przesuwny, którego będziemy używać - 74HC595N zawarty w zestawie startowym Oomlout - potrzebuje tylko 3 pinów sterujących. Pierwszym jest zegar - nie musisz się tym zbytnio przejmować, ponieważ kontrolują go biblioteki szeregowe Arduino - ale zegar to w zasadzie tylko impuls elektryczny włączający / wyłączający, który określa tempo sygnału danych.
Kołek zatrzaskowy służy do informowania rejestru przesuwnego, kiedy powinien włączać i wyłączać swoje wyjścia zgodnie z bitami, które właśnie wysłaliśmy - tj. Blokując je na miejscu.
Wreszcie, pin danych jest miejscem, w którym wysłaliśmy rzeczywiste dane szeregowe z bitami w celu określenia stanu włączenia / wyłączenia wyjść rejestru przesuwnego.
Cały proces można opisać w 4 krokach:
- Ustaw pin danych na wysoki lub niski dla pierwszego pinu wyjściowego w rejestrze przesuwnym.
- Pulsuj zegarem, aby „przenieść” dane do rejestru.
- Kontynuuj ustawianie danych i pulsowanie zegara, aż ustawisz wymagany stan dla wszystkich pinów wyjściowych.
- Pulsuj zatrzask, aby włączyć sekwencję wyjściową.
Realizacja
Potrzebujesz tego komponentu do tego projektu:
- Chip rejestru przesuwnego 7HC595N
- 8 diod LED i odpowiednie rezystory lub cokolwiek, na co chcesz wysyłać sygnał
- Zwykła deska do krojenia, złącza i podstawowe Arduino
Jeśli masz zestaw startowy Oomlout, możesz pobrać układ płyty breadboard tutaj.
Oto wideo z montażu:
Układ planszy:
I moja zmontowana wersja:
Zmodyfikowałem oryginalny kod dostarczony przez Ooolmout, ale jeśli chcesz go wypróbować, możesz go pobrać w całości tutaj. Objaśnienie kodu jest uwzględnione, więc skopiuj i wklej całość od dołu lub wklej, aby przeczytać objaśnienie kodu.
/ * ------------------------------------------------ --------- * | Shift Register Tutorial, oparty na | * | Zestaw do eksperymentów Arduino CIRC-05 | * | .: 8 Więcej diod LED:. (Rejestr przesuwny 74HC595) | * ------------------------------------------------- -------- * | Zmodyfikowany przez James @ MakeUseOf.com | * ------------------------------------------------- -------- * / // Definicje pinów // 7HC595N ma trzy piny int data = 2; // gdzie wysyłamy bity do sterowania wyjściami int clock = 3; // utrzymuje synchronizację danych int zatrzask = 4; // informuje rejestr przesuwający, kiedy uaktywnić sekwencję wyjściową void setup () // ustaw trzy piny kontrolne na wyjściowy pinMode (dane, WYJŚCIE); pinMode (zegar, WYJŚCIE); pinMode (zatrzask, WYJŚCIE); Serial.begin (9600); // abyśmy mogli wysyłać komunikaty debugowania do monitora szeregowego void loop () outputBytes (); // nasze podstawowe wyjście, które zapisuje 8 bitów, aby pokazać, jak działa rejestr przesuwny. // outputIntegers (); // wysyła wartość całkowitą jako dane zamiast bajtów, skutecznie licząc binarnie. void outputIntegers () for (int i = 0; i<256;i++) digitalWrite(latch, LOW); Serial.println(i); // Debug, sending output to the serial monitor shiftOut(data, clock, MSBFIRST, i); digitalWrite(latch, HIGH); delay(100); void outputBytes() /* Bytes, or 8-bits, are represented by a B followed by 8 0 or 1s. In this instance, consider this to be like an array that we'll use to control the 8 LEDs. Here I've started the byte value as 00000001 */ byte dataValues = B00000001; // change this to adjust the starting pattern /* In the for loop, we begin by pulling the latch low, using the shiftOut Arduino function to talk to the shift register, sending it our byte of dataValues representing the state of the LEDs then pull the latch high to lock those into place. Finally, we shift the bits one place to the left, meaning the next iteration will turn on the next LED in the series. To see the exact binary value being sent, check the serial monitor. */ for (int i=0;i<8;i++) digitalWrite(latch, LOW); Serial.println(dataValues, BIN); // Debug, sending output to the serial monitor shiftOut(data, clock, MSBFIRST, dataValues); digitalWrite(latch, HIGH); dataValues = dataValues <> ustawić opóźnienie kierunku (100);
Przesunięcie bitów (funkcja OutputBytes)
W pierwszym przykładzie pętli - outputBytes () - kod wykorzystuje 8-bitową sekwencję (bajt), którą następnie przesuwa w lewo przy każdej iteracji pętli for. Ważne jest, aby pamiętać, że jeśli przesuniesz się dalej niż to możliwe, bit po prostu zginie.
Przesunięcie bitów odbywa się za pomocą <>, a następnie liczby bitów, o którą chcesz przesunąć.
Sprawdź poniższy przykład i upewnij się, że rozumiesz, co się dzieje:
bajt val = B00011010 val = val << 3 // B11010000 val = val <> 5 // B00000010
Zamiast tego wysyłanie liczb całkowitych (OutputIntegers Function)
Jeśli wyślesz cały numer do rejestru przesuwnego zamiast bajtu, po prostu przekształci on liczbę w binarną sekwencję bajtów. W tej funkcji (odkomentowanie w pętli i przesyłanie, aby zobaczyć efekt), mamy pętlę for, która liczy się od 0-255 (najwyższa liczba całkowita, którą możemy reprezentować jednym bajtem), i wysyła ją zamiast tego. Zasadniczo liczy się w postaci binarnej, więc sekwencja może wydawać się trochę losowa, chyba że diody LED są ułożone w długiej linii.
Na przykład, jeśli czytasz binarny artykuł wyjaśniający, będziesz wiedział, że liczba 44 będzie reprezentowana jako 00101100, więc diody LED 3,5,6 będą świecić w tym punkcie sekwencji.
Rejestrowanie łańcuchowe więcej niż jednej zmiany
Niezwykłą rzeczą w rejestrach Shift jest to, że jeśli otrzymają więcej niż 8-bitowe informacje (lub jak duży jest ich rejestr), ponownie przesuną pozostałe bity. Oznacza to, że możesz połączyć ich serię, wcisnąć jeden długi łańcuch bitów i rozdzielić go do każdego rejestru osobno, bez dodatkowego kodowania z twojej strony.
Chociaż nie będziemy tutaj szczegółowo opisywać procesu ani schematów, jeśli masz więcej niż jeden rejestr zmian, możesz wypróbować projekt z oficjalnej strony Arduino tutaj.
Inne artykuły z serii:
- Co to jest Arduino i co możesz z tym zrobić Co to jest Arduino i co możesz z tym zrobić? Co to jest Arduino i co możesz z tym zrobić? Arduino to niezwykłe małe urządzenie elektroniczne, ale jeśli nigdy wcześniej go nie używałeś, jakie dokładnie są i co możesz z nimi zrobić? ?
- Co to jest zestaw startowy Arduino i co zawiera? Co zawiera zestaw startowy Arduino? [MakeUseOf wyjaśnia] Co zawiera pakiet startowy Arduino? [MakeUseOf wyjaśnia] Wcześniej wprowadziłem tutaj sprzęt Open Source Arduino na MakeUseOf, ale potrzebujesz czegoś więcej niż samego Arduino, aby coś z niego zbudować i zacząć. „Zestawy startowe” Arduino to…
- Więcej fajnych komponentów do kupienia za pomocą zestawu startowego 8 Więcej fajnych komponentów do twoich projektów Arduino 8 Więcej fajnych komponentów do twoich projektów Arduino Więc myślisz o zakupie zestawu startowego Arduino, ale zastanawiasz się, czy niektóre podstawowe diody LED i rezystory będą dostępne wystarczy, abyś był zajęty na weekend? Prawdopodobnie nie. Oto kolejne 8…
- Rozpoczęcie pracy z zestawem startowym Arduino? Instalowanie sterowników i konfigurowanie płyty głównej i portu Pierwsze kroki z zestawem startowym Arduino - Instalowanie sterowników i konfigurowanie płyty głównej i portu Pierwsze kroki z zestawem startowym Arduino - Instalowanie sterowników i konfigurowanie płyty głównej i portu Więc kupiłeś sobie zestaw startowy Arduino i ewentualnie inne losowe fajne komponenty - co teraz? Jak właściwie zacząłeś programować to Arduino? Jak to skonfigurować…
- Fritzing, bezpłatne narzędzie do rysowania schematów połączeń Fritzing - doskonałe narzędzie do szkicowania projektów elektronicznych [wieloplatformowa] Fritzing - najlepsze narzędzie do szkicowania projektów elektronicznych [wieloplatformowa] Pomimo brzmienia jak alcopop, Fritzing jest w rzeczywistości niesamowitym kawałkiem darmowe oprogramowanie, którego możesz użyć do tworzenia schematów obwodów i komponentów do użycia z szybkimi prototypami płytek elektronicznych, takich jak fantastyczne oprogramowanie Arduino typu open source…
- Bliższe spojrzenie na strukturę aplikacji Arduino i przykładowy program Blink Pierwsze kroki z Arduino: Bliższe spojrzenie na płytkę drukowaną i strukturę programu Pierwsze kroki z Arduino: Bliższe spojrzenie na płytkę drukowaną i strukturę O programie Ostatnim razem zostawiłem wam skonfigurowanie Arduino do pracy z Mac lub Windows i przesłanie prostej aplikacji testowej, która mrugała pokładową diodę LED. Dzisiaj wyjaśnię kod…
- Projekt świateł choinkowych Arduino Xmas Projekt Arduino: Jak zrobić ozdoby na świąteczne lampki Projekt Arduino: Jak zrobić ozdoby na świąteczne lampki To kolejna część naszej nauki z serii Arduino. Tym razem poznamy i wykorzystamy tablice zrobić małą ozdobę choinki z różnymi migającymi sekwencjami. Byłby to… (nauka AKA o tablicach)
- Co to jest Binary? Co to jest binarny? [Wyjaśniona technologia] Co to jest binarny? [Wyjaśnienie technologii] Biorąc pod uwagę, że binarność jest tak absolutnie fundamentalna dla istnienia komputerów, wydaje się dziwne, że nigdy wcześniej nie zajmowaliśmy się tym tematem - więc dzisiaj pomyślałem, że dam krótki przegląd tego, co binarne…
To tyle, ile dziś pójdziemy z rejestrami zmianowymi, ponieważ myślę, że dużo omówiliśmy. Jak zawsze, zachęcam do zabawy i dostosowania kodu oraz do zadawania pytań w komentarzach, a nawet do udostępnienia linku do twojego niesamowitego projektu opartego na rejestrze zmian.