Inhaltsverzeichnis:

Das Schieberegister 74HC164 und Ihr Arduino - Gunook
Das Schieberegister 74HC164 und Ihr Arduino - Gunook

Video: Das Schieberegister 74HC164 und Ihr Arduino - Gunook

Video: Das Schieberegister 74HC164 und Ihr Arduino - Gunook
Video: Lesson 24: 74HC595 Two Digit Display | Arduino Step By Step Course 2024, November
Anonim
Das Schieberegister 74HC164 und Ihr Arduino
Das Schieberegister 74HC164 und Ihr Arduino
Das Schieberegister 74HC164 und Ihr Arduino
Das Schieberegister 74HC164 und Ihr Arduino

Schieberegister sind ein sehr wichtiger Teil der digitalen Logik, sie fungieren als Klebstoff zwischen der parallelen und der seriellen Welt. Sie reduzieren die Anzahl der Kabel, die Verwendung von Pins und entlasten sogar Ihre CPU, indem sie ihre Daten speichern können. Sie sind in verschiedenen Größen, mit verschiedenen Modellen für unterschiedliche Anwendungen und mit unterschiedlichen Funktionen erhältlich. Das, was ich heute besprechen werde, ist das 74HC164 8-Bit-Schieberegister, seriell-in-parallel-Ausgang, nicht verriegelt. Warum? Nun, zum einen ist es eines der grundlegendsten Schieberegister da draußen, was das Lernen erleichtert, aber es war zufällig das einzige, das ich hatte (lol!) Dieses anweisbare behandelt, wie dieser Chip funktioniert, wie man ihn verdrahtet?, und verbinden Sie es mit einem Arduino, einschließlich einiger Beispielskizzen und LED-Schaltungen. Ich hoffe, es gefällt Ihnen!

Schritt 1: Was sind also Schieberegister?

Was sind also Schieberegister?
Was sind also Schieberegister?

Wie bereits erwähnt, gibt es sie in allen Variationen, und ich habe auch erwähnt, dass ich ein 74HC164 8-Bit-Schieberegister verwende, seriell-parallel-Ausgang, nicht verriegelt, also was bedeutet das alles?!? Erstens, der Name 74 - bedeutet seinen Teil der 74xx-Logikfamilie, und da seine Logik nicht sehr viel Strom direkt steuern kann (16-20 mA für den gesamten Chip ist üblich), leitet er nur Signale weiter, aber das bedeutet nicht Dieses Signal geht nicht an einen Transistor, der eine höhere Stromlast schalten kann. HC bedeutet, dass es sich um ein Hochgeschwindigkeits-CMOS-Gerät handelt Power-Gerät und läuft von 2 bis 5 Volt (wenn Sie also ein 3,3-Volt-Arduino verwenden, ist es in Ordnung) Auch bei hohen Geschwindigkeiten kann dieser spezielle Chip ordnungsgemäß funktionieren, aber Sie können so langsam oder so schnell gehen (bis es anfängt zu vermasseln) wie Sie wollenwww.kpsec.freeuk.com/components/74series.htm164 ist die Modellnummer für diesen Chip, es gibt eine große Tabelle davon auf wikipediaen.wikipedia.org/wiki/List_of_7400_series_integrated_circuits Next, 8 bit Ein Schieberegister besteht aus Flip-Flop-Schaltungen, ein Flip-Flop ist 1 Bit Speicher, dieser hat s 8 (oder 1 Byte Speicher). Da es sich um einen Speicher handelt, können Sie, wenn Sie das Register nicht aktualisieren müssen, einfach aufhören, mit ihm zu "sprechen", und es bleibt in dem Zustand, in dem Sie es verlassen haben, bis Sie wieder mit ihm "sprechen" oder die Stromversorgung zurücksetzen. andere Schieberegister der Logikserie 7400 können bis zu 16 Bit seriell parallel ausgehen Dies bedeutet, dass Ihr Arduino Daten seriell sendet (Ein-Aus-Impulse nacheinander) und das Schieberegister jedes Bit auf den richtigen Ausgangspin legt. Dieses Modell erfordert nur die Steuerung von 2 Drähten, sodass Sie 2 digitale Pins am Arduino verwenden und diese 2 auf 8 weitere digitale Ausgänge aufbrechen können. Einige andere Modelle sind parallel seriell (zum Beispiel ein NES-Gamepad) nicht verriegelt Dies kann ein Untergang dieses Chips sein, wenn Sie ihn brauchen. Wenn Daten seriell in ein Schieberegister eingehen, erscheinen sie am ersten Ausgangspin, wenn ein Taktimpuls eingeht, verschiebt sich das erste Bit um 1 Stelle, wodurch ein Scroll-Effekt an den Ausgängen erzeugt wird, zum Beispiel würde 00000001 an den Ausgängen angezeigt als 101001000100001000001000000100000001Wenn Sie mit anderen Logikgeräten sprechen, die dieselbe Uhr verwenden und dies nicht erwarten, kann dies zu Problemen führen. Latched Schieberegister haben einen zusätzlichen Speicher, so dass Sie, sobald die Daten in das Register eingegeben sind, einen Schalter umlegen und die Ausgänge anzeigen können, aber es fügt einen weiteren Draht, Software und Dinge hinzu, mit denen Sie Schritt halten müssen Wir steuern LED-Anzeigen, der Scroll-Effekt geschieht so schnell, dass Sie ihn nicht sehen können (außer wenn Sie den Chip zum ersten Mal einschalten), und sobald sich das Byte im Schieberegister befindet, gibt es kein Scrollen mehrWir werden den Bargraph-Typ, 7 Segmente, steuern, und eine 16LED 4x4 Punktmatrix mit diesem Chip und Software auf dem Arduino mit nur 2 digitalen Pins (+ Strom und Masse)

Schritt 2: Grundlegende Verkabelung und Bedienung

Grundlegende Verdrahtung und Bedienung
Grundlegende Verdrahtung und Bedienung
Grundlegende Verdrahtung und Bedienung
Grundlegende Verdrahtung und Bedienung

Verdrahtung Der 74HC164 ist ein 14-Pin-Chip, er hat 4 Eingangspins, 8 Ausgangspins, Strom und Masse, also fangen wir von oben an. Pins 1 und 2 sind beide serielle Eingänge, sie sind als logisches UND-Gatter eingerichtet, was bedeutet, dass sie müssen beide logisch hoch sein (dh 5 Volt), damit das Bit als 1 angesehen wird, ein niedriger Zustand (0 Volt) an beiden wird als Null gelesen. Wir brauchen das nicht wirklich und es ist einfacher in der Software zu handhaben, also wählen Sie eines aus und binden Sie es an V+, damit es immer hoch angezeigt wird. Ich wähle einen Jumper von Pin 1 bis Pin 14 (V+) zu verwenden, da Sie einfach einen Steckbrett-Jumper über den Chip stecken können. Der eine verbleibende serielle Eingang (Pin 2 in meinen Schaltplänen) geht zum digitalen Pin 2 des Arduino. Pins 3, 4, 5 und 6 des 74HC164 sind die ersten 4 Bytes des AusgangsPin 7 ist mit Masse verbundenSpringen nach rechts, Pin 8 ist der Takt-Pin, so weiß das Schieberegister, dass das nächste serielle Bit zum Lesen bereit ist. Dies sollte mit dem digitalen Pin 3 des Arduino verbunden werden. Pin 9 soll das gesamte Register auf einmal löschen, wenn es niedrig wird, Sie haben die Möglichkeit, es zu verwenden, aber nichts in diesem undurchschaubaren tut, also binden Sie es an V + Pins 10, 11 12 und 13 sind die letzten 4 Bytes des Ausgangspin 14 ist die Chipleistung Betrieb Zuerst müssen Sie den seriellen Eingang einstellen des Registers (digitaler Pin 2 auf dem Arduino) hoch oder niedrig, als nächstes müssen Sie den Taktstift (digitaler Pin 3) von niedrig auf hoch umdrehen, das Schieberegister liest die Daten am seriellen Eingang und verschiebt die Ausgangspins um 1, wiederholen Sie 8 Mal und Sie haben alle 8 Ausgänge eingestellt. Dies kann von Hand mit for-Schleifen und digitalen Schreibvorgängen in der Arduino-IDE erfolgen, aber seit t Dies ist eine sehr gebräuchliche Hardware-Level-Kommunikation (SPI). Sie hat eine einzige Funktion, die dies für Sie erledigt. shiftOut (dataPin, clockPin, bitOrder, value) Sagen Sie einfach, wo die Daten- und Clock-Pins mit dem Arduino verbunden sind, auf welche Weise die Daten gesendet und was gesendet werden soll, und es wird für Sie erledigt (praktisch)

Schritt 3: Projekte

Projekte
Projekte

Okay, genug Vortrag und Theorie, lass uns ein paar lustige Sachen mit diesem Chip machen! Es gibt 3 Projekte, die man in diesem anweisbaren ausprobieren kann, die ersten 2 sind einfach und können in wenigen Augenblicken ausgebreitet werden. Die dritte, die 4x4-LED-Matrix, erfordert aufgrund der LED-Verkabelung mehr Zeit und Nachdenken kompatibel (5V)1 * 330 Ohm 1/4 Watt Widerstand 8 * normale rote LEDs 12 * Überbrückungsdrähte Projekt 2: '2 Wire' 7-Segment-Anzeigecontroller 1 * 74HC164 Schieberegister1 * lötfreies Steckbrett1 * Arduino oder Arduino kompatibel (5V.))1 * 330 Ohm 1/4 Watt Widerstand 1 * gemeinsame Kathodensieben-Segment-Anzeige9 * Überbrückungsdrähte Projekt 3: '2 Wire' 4x4 LED-Matrix-Display 1 * 74HC164 Schieberegister1 * Arduino oder Arduino kompatibel (5V)4 * 150 Ohm 1 1/4-Watt-Widerstand8 * 1Kohm 1/8-Watt-Widerstand (oder größer)8 * NpN-Transistor (2n3904 oder besser)16 * rote LEDs mit normalem Ausgang sind ein Mittel zum Aufbau und geregelte 5-Volt-Leistung, die 160+mA verarbeiten kann (Sie können schalte alle LEDs gleichzeitig wie ein Bremslicht ein)

Schritt 4: Projekt 1[pt 1]: '2 Wire' Bargraph LED Display Controller Hardware

Projekt 1[pt 1]: '2 Wire' Bargraph LED Display Controller Hardware
Projekt 1[pt 1]: '2 Wire' Bargraph LED Display Controller Hardware
Projekt 1[pt 1]: '2 Wire' Bargraph LED Display Controller Hardware
Projekt 1[pt 1]: '2 Wire' Bargraph LED Display Controller Hardware

Schließen Sie das Arduino und das Schieberegister gemäß dem Schaltplan an. Ich habe bereits eine 10-Segment-Bargraph-Anzeige für die Verwendung auf dem Steckbrett bereit und das sehen Sie im Bild, aber Sie können dasselbe mit einzelnen LEDs machen Auf der zweiten Seite Ich erklärte, dass dies keine Treibergeräte sind, sondern logische Geräte, durch die winzige Strommengen fließen können. Um 8 LEDs zu betreiben, während die Schaltung einfach gehalten wird und das Schieberegister nicht gekocht wird, müssen wir den Strom ziemlich begrenzen. Die LEDs sind parallel verdrahtet und teilen eine gemeinsame Masse (gemeinsame Kathode), bevor sie in die Stromversorgung gehen Versorgungsmasse, die sie durch einen 330-Ohm-Widerstand führen müssen, wodurch die Gesamtstrommenge, die alle LEDs möglicherweise verwenden könnten, auf 10 mA (bei 5 Volt) begrenzt wird. Dies lässt die LEDs in einem kränklich aussehenden Zustand zurück, aber sie leuchten auf und dienen somit für In diesem Beispiel müssen Sie, um die LEDs mit dem richtigen Strom zu betreiben, einen Transistor einfügen, in dem das Schieberegister eine höhere Stromquelle ein- / ausschalten kann (siehe Projekt 3) Der Daten-Pin des Schieberegisters (Pin 2) benötigt zum Verbinden mit dem Arduino-Digital-Pin # 2Der Clock-Pin des Schieberegisters (Pin 8) muss mit dem Arduino-Digital-Pin # 3 verbunden werden

Schritt 5: Projekt 1[pt 2]: '2 Wire' Bargraph LED Display Controller Software

Projekt 1[pt 2]: '2 Wire' Bargraph LED Display Controller Software
Projekt 1[pt 2]: '2 Wire' Bargraph LED Display Controller Software
Projekt 1[pt 2]: '2 Wire' Bargraph LED Display Controller Software
Projekt 1[pt 2]: '2 Wire' Bargraph LED Display Controller Software

Beispiel 1: Öffnen Sie die Datei "_164_bas_ex.pde" In der Arduino-IDE. Es handelt sich um eine einfache Skizze, mit der Sie einfach die LEDs in der Bargraph-Anzeige ein- oder ausschalten können. Die ersten 2 Zeilen definieren die Pin-Nummern, die wir für Daten und Uhr verwenden werden Verwenden Sie #define über const integer, ich finde es einfacher, mich daran zu erinnern, und es gibt keinen Vorteil für den einen oder anderen, sobald er kompiliert ist #define data 2#define clock 3 Als nächstes kommt die void setup-Funktion, sie läuft nur einmal, also dreht sich das arduino on, setzt das Schieberegister und hat sonst nichts zu tun. Innerhalb der void setup-Funktion setzen wir die Clock- und Data-Pins als OUTPUT-Pins, dann senden wir mit der shiftOut-Funktion die Daten an das Schieberegister void setup () { pinMode (clock, OUTPUT); // Machen Sie den Taktstift zu einem Ausgang pinMode (data, OUTPUT); // den Daten-Pin zu einem Ausgang machen shiftOut (Daten, Takt, LSBFIRST, B10101010); // diesen Binärwert an das Schieberegister senden} In der Funktion shiftOut sehen Sie seine Argumentedata ist der Datenpin, Clock ist der Taktpin Element nach dem B ist das niedrigstwertige Bit Zuerst wird dieses zuerst eingespeist, so dass es am letzten Ausgang landet, sobald alle 8 Bits eingespeist wurdenB10101010 ist der Binärwert, der an das Schieberegister gesendet wird, und es wird jedes ungerade Licht einschalten, versuchen Sie mit verschiedenen Werten zu spielen, um verschiedene Muster ein- oder auszuschalten und schließlich eine leere Void-Schleife (weil Sie eine brauchen, auch wenn Sie sie nicht verwenden) Void loop () {} // leere Schleife für den Moment Beispiel 2: Die ersten 8 Zeilen sind genauso wie die ersten 8 Zeilen des ersten Beispiels, tatsächlich ändern sie sich für keines der anderen Projekte, also #define data 2#define clock 3void setup(){ pinMode(clock, OUTPUT); // Machen Sie den Taktstift zu einem Ausgang pinMode (data, OUTPUT); // Machen Sie den Daten-Pin zu einem Ausgang Aber jetzt gibt es im Void-Setup eine 8-Zählung für die Schleife, die ein leeres Byte nimmt und jeweils 1 Bit nach innen verschiebt, beginnend mit dem ganz linken Bit und nach rechts. Dies ist rückwärts vom ersten Beispiel, bei dem wir mit dem ganz rechten Bit begonnen und links gearbeitet haben, aber mit MSBFIRST sendet die Shift-Out-Funktion die Daten auf die richtige Weise. Außerdem fügen wir eine Verzögerung in der for-Schleife hinzu, damit sie langsam genug wird, um sichtbar zu sein. for (int i = 0; i < 8; ++i) // für 0 - 7 do {shiftOut (Daten, Takt, MSBFIRST, 1 << i); // Bitverschiebung eines logisch hohen (1) Werts um i delay (100); // verzögere 100 ms oder du könntest es nicht sehen } }void loop () {} // leere Schleife für jetzt Laden Sie das Skript hoch und Sie sollten jetzt sehen, dass das Balkendiagramm jedes Licht einzeln aufleuchtet

Schritt 6: Projekt 2: '2 Wire' 7 Segment Display Controller

Projekt 2: '2 Wire' 7-Segment-Display-Controller
Projekt 2: '2 Wire' 7-Segment-Display-Controller
Projekt 2: '2 Wire' 7-Segment-Display-Controller
Projekt 2: '2 Wire' 7-Segment-Display-Controller

Schauen Sie sich die Pinbelegung Ihrer 7-Segment-Anzeige an (ich hatte nur eine Dual-Anzeige, aber nur die Hälfte) und verwenden Sie die folgende Zeichnung, um jedes Segment mit dem richtigen Bit im Schieberegister zu verbinden Bit 1 = Pin 3 Bit 2 = Pin 4 Bit 3 = Pin 5 Bit 4 = Pin 6bit 5 = Pin 10bit 6 = Pin 11bit 7 = Pin 12bit 8 = Pin 13 (wenn Sie den Dezimalpunkt verwenden möchten)Und die Kathode des Displays durch den 330 Ohm Widerstand und die Stromversorgungsmasse öffnen jetzt die seven_seg_demo.pde in der arduino IDEZuerst sehen Sie, wo wir die Daten- und Takt-Pins definieren #define data 2#define clock 3 Als nächstes stellen wir alle Zeichenmuster in Binärform ein, das ist ziemlich einfach, schauen Sie sich die Zeichnung unten an, wenn Sie das mittlere Segment benötigen Geben Sie eine Eins ein, als nächstes brauchen Sie das oberste Segment, wenn ja, geben Sie ein anderes ein, machen Sie dies so lange, bis Sie alle 8 Segmente abgedeckt haben, beachten Sie, dass mein ganz rechts Bit (Bit 8) immer 0 ist, weil ich nie die Dezimalstelle einschalte Punkt. Byte null = B01111110;Byte eins = B00000110;Byte zwei = B11011010;Byte drei = B11010110;Byte vier = B10100110;Byte fünf = B11110100;Byte sechs = B11111100;Byte sieben = B01000110;Byte acht = B11111110;Byte neun = B11110110; Als nächstes setzen wir in void setup unsere Daten- und Clock-Pins auf die Ausgänge void setup () { pinMode (clock, OUTPUT); // Machen Sie den Taktstift zu einem Ausgang pinMode (data, OUTPUT); // Machen Sie den Daten-Pin zu einem Ausgang3} Dann verwenden wir in der Void-Schleife shiftOut, um jedes Muster (Zahl) anzuzeigen, warten Sie 1/2 Sekunde und zeigen Sie das nächste an, 0 bis 9, da es in der Void-Schleife-Funktion ausgeführt wird, wird es gezählt 0-9 und für immer wiederholen. Void Schleife () {shiftOut (Daten, Takt, LSBFIRST, Null); Verzögerung (500); shiftOut (Daten, Takt, LSBFIRST, eins); Verzögerung (500); shiftOut (Daten, Takt, LSBFIRST, zwei); Verzögerung (500); shiftOut (Daten, Takt, LSBFIRST, drei); Verzögerung (500); shiftOut (Daten, Takt, LSBFIRST, vier); Verzögerung (500); shiftOut (Daten, Takt, LSBFIRST, fünf); Verzögerung (500); shiftOut (Daten, Takt, LSBFIRST, sechs); Verzögerung (500); shiftOut (Daten, Takt, LSBFIRST, sieben); Verzögerung (500); shiftOut (Daten, Takt, LSBFIRST, acht); Verzögerung (500); shiftOut (Daten, Takt, LSBFIRST, neun); Verzögerung(500);}

Schritt 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

Das 4x4-LED-Matrix-Projekt ist etwas komplexer, aber es ist fast alles im Aufbau, ich habe mich dafür entschieden, meins auf Perfboard gelötet zu machen, aber es sollte möglich sein, auf einem Steckbrett zu replizieren, nur mit viel mehr Abstand unterscheidet sich dadurch, dass das Schieberegister die LEDs nicht direkt ansteuert, sondern die Ausgänge des Schieberegisters über einen 1-Kohm-Widerstand an die Basis eines NpN-Transistors gesendet werden, wenn der Ausgang des Bits hoch ist, lässt es genug Strom und Spannung in die Transistor zum Umschalten der Verbindung zwischen Kollektor und Emitter, die Kollektoren sind an "robuste" geregelte 5 Volt angeschlossen. Die Emitter der Transistoren sind mit 150 Ohm Widerständen verbunden und die Widerstände sind mit den Anoden von 4 LEDs in Reihe verbunden und begrenzt die Zeile auf 20 mA, obwohl beim Zeichnen von Bildern auf dem Display nur 1 LED gleichzeitig eingeschaltet ist und daher fast die volle Helligkeit hat (fast, weil sie sich sehr schnell ein- und ausschalten, um das gesamte Bild zu bilden) Es gibt 4 Zeilen und 4 Spalten, jede Zeile bekommt einen Widerstand und einen Transistor, auf jeder Spalte werden die Kathoden der LED zusammengebunden, in den Kollektor eines Transistors geführt, dessen Basis ebenfalls vom Schieberegister gesteuert wird, und schließlich auf Masse. Große Version des Schaltplans www.instructables.com/files/orig/F7J/52X0/G1ZGOSRQ/F7J52X0G1ZGOSRQ.jpg

Schritt 8: Projekt 3[pt 2]: '2 Wire' 4x4 LED-Matrix-Display

Projekt 3[pt 2]: '2 Wire' 4x4 LED-Matrix-Display
Projekt 3[pt 2]: '2 Wire' 4x4 LED-Matrix-Display
Projekt 3[pt 2]: '2 Wire' 4x4 LED-Matrix-Display
Projekt 3[pt 2]: '2 Wire' 4x4 LED-Matrix-Display
Projekt 3[pt 2]: '2 Wire' 4x4 LED-Matrix-Display
Projekt 3[pt 2]: '2 Wire' 4x4 LED-Matrix-Display

Das Schieberegister steuert sowohl die Anode als auch die Kathode der LEDs im YX-Format, siehe folgendes Bit 1 = Spalte 1 (ganz rechts) Bit 2 = Spalte 2 Bit 3 = Spalte 3 Bit 4 = Spalte 4 Bit 5 = Zeile 1 (oberstes) Bit 6 = Zeile 2 Bit 7 = Zeile 3 Bit 8 = Zeile 4 Um ein Bild zu erstellen, zeichnen Sie ein 4x4-Quadrat auf Millimeterpapier und füllen Sie die aus, die Sie anzeigen möchten, und erstellen Sie als nächstes eine YX-Tabelle. Unten sehen Sie eine Zuordnung für ein Gleichnis, so wie es am besten auf 4x4 "Pixeln" möglich ist In der Datei _4x4.pde in der Arduino-IDE sehen Sie unsere alten 2 Freunde #define data 2#define clock 3 dann ein Array von Ganzzahlen int img = {1, 1, 4, 1, 1, 3, 4, 3, 2, 4, 3, 4}; Wenn Sie sich nur eine Liste meiner aufgeschriebenen YX-Koordinaten ansehen, wäre es eine große Qual, diese Werte von Hand umzuwandeln, und wir haben einen Computer … lassen Sie es tun! unsere Takt- und Datenpins AUSGÄNGE void setup () {pinMode (clock, OUTPUT); // Machen Sie den Taktstift zu einem Ausgang pinMode (data, OUTPUT); // Machen Sie den Daten-Pin zu einem Ausgang3} Und eine verwirrend aussehende Void-Schleife, um die Dinge zu starten, müssen wir einige lokale Variablen deklarieren Void loop () { int Y; intX; Byte aus; Dann eine for-Schleife, diese Schleife muss so lang sein wie die Anzahl der Einträge im img-Array, für dieses Bild habe ich nur 6 Pixel verwendet, also 12 YX-Koordinaten. Ich lasse jede zweite Zahl überspringen, indem ich i + = 2 verwende, weil wir 2 Koordinaten pro Schleife lesen for(int i = 0; i < 12; i += 2) // Anzahl der Punkte im img-Array, in diesem Fall 12 { Jetzt lesen wir den Y-Eintrag bei im Array und subtrahieren eins von seinem Wert, da Bytes nicht bei eins beginnen, sondern bei null, aber wir haben ab 1 gezählt // erhalten das erste Paar YX-Kabel Y = (img – 1); // subtrahiere eins, da die Bitzahl bei 0 beginnt Als nächstes lesen wir die X-Eingabe bei [i + 1] im Array und subtrahieren eins von seinem Wert, aus dem gleichen Grund X = (img[i+1] - 1); Nachdem wir die YX-Werte des Pixels haben, machen wir etwas bitweise oder mathematisch und verschieben nach links. Zuerst müssen wir den X-Wert lesen, und was auch immer sein Wert ist, verschieben Sie ihn um so viele Stellen + 4 nach links, also wenn X 4. ist und addiere 4, es ist Bit 8 (MSB), schau dir das Diagramm noch einmal an …Bit 1 = Spalte 1 (ganz rechts)Bit 2 = Spalte 2Bit 3 = Spalte 3Bit 4 = Spalte 4bit 5 = Zeile 1 (oberste)Bit 6 = Zeile 2bit 7 = Reihe 3bit 8 = Reihe 4Bit 8 ist die letzte Reihe Als nächstes wird auch der Y-Wert nach links verschoben, diesmal nur von selbst, nichts hinzugefügt. Schließlich werden die beiden zu 1 Byte statt 2 Halbbytes zusammengefügt (Nibbles), die Verwendung von bitweise oder (das Symbol |) nimmt zwei Bytes und addiert sie im Grunde genommen zusammen, nehmen wir an X = 10000000Y = 00000001-------------------- ODER = 10000001Zeile 4 Spalte 1 aus = 1 << (X + 4) | 1 << J; Und schließlich shiftOut, um das aktuelle Bild anzuzeigen, und das so lange tun, bis wir keine Daten mehr im Array haben … zögere einen Moment und schleife ewig, da wir die Daten nach links verschoben haben und das MSB am letzten Ausgangspin sein muss des Schieberegisters senden es zuerst aus. shiftOut (Daten, Takt, MSBFIRST, aus); // Verschiebe das Byte in unser Register delay (1); // verzögere es ein wenig, damit es einen Lichtfleck in deinen Augen hinterlässt Fühle dich frei, deine eigenen Bilder und Effekte zu erstellen. Es gibt 3 Beispieldateien, das Smiley-Gesicht und ein Schachbrett (das eher wie Streifen aussieht), und endlich ein zufälliger Sparkle Maker

Schritt 9: Fazit

Abschluss
Abschluss
Abschluss
Abschluss
Abschluss
Abschluss

Alles in allem ist dies ein ziemlich praktischer kleiner Chip, und ich bin froh, dass ich ihn von einem alten Stück Elektronik verschrottet habe, das in den Müll ging. Es kann für andere Dinge als Display-Systeme verwendet werden, aber jeder mag Licht und das sofortige Feedback des Sehens Was vor sich geht, ist für visuelle Denker wie mich äußerst hilfreich. Bitte verzeihen Sie auch meinen Code, ich habe das Arduino erst seit der dritten Oktoberwoche und es war ein ziemlich großer Crashkurs. Aber das ist das Tolle an dem System, wenn man sich hinsetzt und damit arbeitet, es steckt voller netter Funktionen, die die Steuerung der Welt mit einem 8-Bit-Mikrocontroller ganz einfach machen. Wie immer sind Fragen und Kommentare herzlich willkommen, und danke dafür lesen, ich hoffe du hast viel gelernt

Empfohlen: