Samstag, 16. Mai 2015

Schieberegister aufgemotzt

Im letzten Post habe ich ja erklärt wie ein Schieberegister  funktioniert, wie man es anschließen muss und wie man es programmiert. Nun wollen wir das Schieberegister weiter ausreizen, indem wir die 8 LEDs nicht nur anschalten sondern einen wandernden Punk kreieren.
Dazu kann die Verkabelung gleich bleiben. Das Programm muss jedoch angepasst werden:
Als erstes muss man einen Array definieren der die Informationen enthält welche LED an sein soll und welche aus sein soll. Ein Array hat ähnlich wie eine Variable einen Datentyp ist jedoch wie eine Art Variablenliste anzusehen. So sind im Array: int zahlen[6] = {0,1,2,3,4,5}; eigentlich 6 Variablen gespeichert. Ein Array wird definiert indem man den Datentyp angibt, dann den Namen und in eckigen Klammern die Anzahl der in ihm gespeicherten Variablen. Nach dem = werden die einzelnen Variablen in der geschweiften Klammer mit Kommas getrennt angegeben. Man kann über Arrayname[index] eine Variable aus dem Array abfragen. Beispielsweise wäre der Inhalt von zahlen[2] die Zahl 1. In dem Beispiel oben wurde ein mehrdimensionaler Array verwendet. Das bedeutet, dass jede Variable des ersten Array wieder ein Array ist. Dies wird deutlich wenn man den Programm-Code ansieht. Um jeweils einen neue Variable abzufragen muss die Abfrage in zwei for-Schleifen. Insgesamt denke ich ist das Programm bei genauerem Nachdenken relativ logisch. Das Ergebnis ist dann ein laufender Lichtpunkt. 
Als nächstes wollen wir mehrere Schieberegister benutzen. Dazu kann man diese "in Reihe schalten".
Normalerweise füllt man 8 Bits in ein 8 Bit Schieberegister. Wenn man jedoch mehr "einschiebt" so wird jeweils das letzte Bit durch Q7S weitergeschoben. Also müssen wir für das zweite Schieberegister Q7S des vorherigen Schieberegisters als dataPin verwenden. Wir können bei beiden den selben shiftPin und den selben storePin verwenden, da sie ja jeweils gleichzeitig das nächste Bit bekommen und gleichzeit ihre 8 Bits(LOW oder HIGH) in das zweite Register schreiben müssen. Dazu stecken wir das Kabel für den shiftPin des zweiten Schieberegisters in die selbe Reihen wie das Kabel des Arduino für den shiftPin für das erste Schieberegister. Die Schaltung sähe dann so aus:

Das zweite Schieberegister muss genauso wie das erste an Pin 8 und Pin 13 an den Ground und an Pin 10 und Pin 16 an die 5V Spannungsversorgung.
Um das zweite Schieberegister zu verwenden muss man nun jeweils 16 Bits(also LOW oder HIGH) schieben statt nur 8 Bits. Ansonsten bleibt alles gleich. Viel Spaß beim ausprobieren. Wenn ihr lernen wollt, wie man LEDs dimmen kann könnt ihr das hier tun.

Keine Kommentare:

Kommentar veröffentlichen