Schieberegister 74HC595 am Arduino - Tutorial
Вставка
- Опубліковано 17 січ 2015
- Wenn man bei einem Arduino Projekt viele LEDs ansteuern möchte, dann steht man bald einmal vor dem Problem, dass auf einem normalen Arduino eigentlich zu wenige Ausgangspins zur Verfügung stehen.
Der Zustand lässt sich mit einem Schieberegister leicht beheben. Mit dem weit verbreiteten IC vom Typ 74HC595 beispielsweise erhält man mit lediglich 3 Arduino-Pins 8 weitere Ausgangspins am Shift Register.
Im Video zeige ich euch, wie ein Schieberegister (Shift Register) funktioniert, wie es am Breadboard verschaltet wird und wie man es in einem Arduino Sketch ansteuert.
Weitere Infos und den Beispielcode findet ihr im Blog-Eintrag:
www.makerblog.at/2015/01/das-s... - Наука та технологія
Besser kann man es kaum erklären. Klasse. Vielen Dank.
Äußerst gut und leicht verständlich erklärt, ein großen Dank dafür. Mehr solcher Videos über diverse andere IC's wäre klasse.
Meiner Erfahrung nach machst du die besten Arduino-Tutorials im deutsch-sprachigen Netz. Vielen Dank!
Endlich mal ein Video, dessen Inhalt man versteht. Super erklärt. Es wäre perfekt, wenn noch ein weiteres Video kommen würde mit dem Inhalt wie man noch ein weiteres Schieberegister oder ein drittes..- usw. nutzen kann. Vielen Dank 😀
Herzlichen Dank für dieses ausgezeichnete Video! Wirklich sehr verständlich erklärt und dadurch einfach verständlich. Boris🇨🇭
Vielen Dank für dein tolles Video, und auch deine anderen Videos sind schön gemacht und vor allem gut verständlich. Weiter so!
Echt toll und verständnisvoll erklärt! Vielen Dank für die Mühe!
Sehr anschaulich. Bravo! Ich habe die Funktion des 74HC595 verstanden. Danke. TOP TOP
Mensch klasse! Ich habs auf anhieb verstanden! Gut erklärt!
Klasse Erklärung. Sehr deutlich erklärt und du hast eine angenehme Stimme
Super Video.
Die Erklärung mit den Muttern, hat vollkommen ausgereicht, um damit arbeiten zu können 😉
Aber nach dem Test Programm, habe ich mir natürlich auch den Rest vom Video angesehen und der war auch lehrreich.
Sehr informatives und gut erklärtes Video!
Vielen dank! Damit eröffnen sich sehr viele möglichkeiten
Super Erklärung es hat unser Schul Projekt gerettet, Danke
Super Videos, toll erklärt! Daumen hoch!!!
Genial, schönes, sauberes Video! Muss man direkt nach basteln!^^
sehr gut erklärt hast dir echt nen Daumen verdient, abbo hast du ja schon lange :)
hab mich immer gefragt die die Leute nen 5*5*5 led Würfel ansteuern mit !einem! andruino.... jetzt ist es mir klar, und ich kann endlich mit meinem anfangen :)
danke
Toll erklärt und super dargestellt, Hut ab
Einfach genial!!! weiter so!
Klasse Video und super erklärt!
super erklärt. Zeitlos. Vielen Dank!
Sehr gut erklätt und somit leicht verständlich, besten Dank für diese Videos.
Ich hätte einige Fragen bezüglichst des hier im Video beschriebenen Schieberegister 74HC595-
ist es möglich über den 74HC595 eine mehrstellige 7 Segmentanzeige in einer gemultiplexten Umgebung ,zu betreiben ?
Die 7 Segmentanzeigen bestehen aus jeweils insgesamt 2 Ziffern, also sozusagen einer Gesamtsumme an grünen LEDs von 16 Stück sowie pro LEDBAUSTEIN, wovon 3 benötigt werden
und welche ich mit jeweils einen 220 Ohm Widerstand an den digitalen Ausgangspins des Mega 2560 Rev.3, betreiben will !
Mein Arduino Mega 2560 hat pro Digitalen Ausgangspin eine elektrische Spabbung von 4,6 Volt, habe ich mit den Voltmeter heraus gefunden.
16 LEDs deswegen, da sich jede dieser Ziffern/Zahlen mit einer zusätzlichen Dotpoint-LED (dp-LED), darstellen lässt,
und was die Segmente a-g sowie zusätzlich die Dotpoint-LED als Anoden beschreibt,
da diese LEDANZEIGEN jeweils sowie pro Ziffer/Zahl, über gemeinsame Kathoden verfügen.
Ich möchte insgesamt 3 dieser 2 stelligen LEDANZEIGEN hintereinander und als insgesamt 6 stellige LEDANZEIGE, betreiben,
um damit seriell übertragene Daten welche per Programm an den seriellen Monitor des Arduino Mega 2560 Rev.3 gelangen,
somit auf der insgesamt 6 stelligen LEDANZEIGEN, sichtbar machen.
Meine Vorstellungen dazu sind nachfolgende:
Der Betrieb sämtlicher Segmente inklusive der dp-LED werden in einer Multiplexumgebung betrieben, das spart somit etliche Leiterbahnen sodaß die komplette 6 stellige LEDANZEIGE doch mit nur einen dieser 74HC595, betrieben werden kann ?
Da die komplette LEDANZEIGE somit über insgesamt 6 Kathoden (eine pro darzustellter Ziffer/Zahl) verfügt,
bin ich derzeit etwas überfordert, weil ich mir unsicher bin,
ob sich mein Vorhaben allein mit den 74HC595 und den damit vorhandenen Doorclockpin (Anschluss d. 74HC595 und im Video als STCP, bezeichnet), realisieren lassen würde,
da dieses STCP-PIN erst einen HIGHPEGEL erhalten muss,
um die intern durch den Arduino und seriell empfangenen Daten aus den Zwischenspeicher (geLATCHt) des 74HC595 und dessen Ausgänge (Q0-Q7), weiterzugeben.
Wenn ich nun die insgesamt 8 Ausgänge des 74HC595 als Ausgangsleitung für die gemultiplexten Segmentanoden der unterschiedlichen Ziffern/Zahlen betreiben möchte wäre es interessant zu wissen,
ob sich der Betrieb dieser 6 stelligen Anzeige sowie aufgrund der seriellen Datenübermittkung,
realisieren lässt,
oder ob eine Parallele Datenübermittlung hier vorteilmässiger wäre.
Frage hierzu:
Benötige ich für dieses Vorhaben bipolare Kleinleistungstransistoren ?
Falls bipolare Kleinleistungstransistoren benötigt werden würden, welche Typen NPN oder PNP würden benötigt, ?
(Ich habe NPN BC547 und PNP BC559c, hier) !
Sind beim Einsatz von Bipolaren Kleinleistungstransistoren zusätzlich 5 Ausgangspins am Arduinoboard nötig, um somit die einzelne LEDs der betroffenen Ziffer/Zahl einzeln ansprechen und aktuallisieren (schalten) zu können,
oder könnte man die Schaltung eventuell durch Abgreifen von ca. 0,7 Volt für den Basisanschluss eines Bipolaren Kleinleistungstransistor bereitstellen,
welcher dann für die Basisspannung der jeweils betreffenden Ziffer/Zahl, zuständig wäre ?
Vielleicht durch eine Zählfunktion welche die LOW/HIGH Flankenwechsel in einem SKETCH,
und einen Zähler welcher von 0 bis 6 (eine für jede Kathode), hochzählt und dann wieder von der ersten Stelle anfängt zu zählen,,
oder eignet sich hier eher ein Interrupt damit zu beauftragen, was wovon ein Arduino Mega 2560 mehrere Pins bereitstellt als beispielsweise ein Arduino UNO ?
Ein Video hierüber wäre sicherlich sehr interessant, denn die Videos sind sehr lehrreich !
Wäre nett wenn Sie da ein Video erstellen würden !
Und *entschuldigung* wenn ich hier den offiziellen Ausdruck einer 7 Segmentanzeige nutzen muss, weil es handelt sich um 8 Segmente ! :D bzw. insgesamt 6 x 8 LEDs weshalb ich Multiplexen muss, da eine Kernkraftwerk in der näheren Umgebung, als Stromlieferant, nicht in Betracht kommt
!
Das ganze sollte nach Möglichkeit allein mit der 5 Volt Spannungsversorgung, durch den Arduino betrieben werden.
Auch ein Lehrvideo über bipolaren Kleinleistungstransistoren,
insbesondere eines PNP-Transistors wäre sicherlich interessant,
denn da findet man nahezu keine Erklärungsvideos worin auch Beispiele veranschaulicht werden.
Eventuell wäre der Einsatz eines PNP Transistors gut ersichtlich,
insofern zwei unterschiedliche Spannungen (einmal +5 Volt im Steuerstromkreislauf und ein weiteres mal +12 Volt im Laststromkreislauf), nutzen würde da hier Steuerspannung und Lastspannung unterschiedlich, sind ?
Ersichtlicher durch die unterschiedlichsten Spannungsabfälle an der CE-Strecke (Kollektor-Emitter) ?
Da die Videos hier mir einiges an Lehrreichtum vermittelten,
wäre es gut wenn auch hier ein Lehrvideo folgen, könnte.
tolles video und sehr gut erklärt danke :)
Top erklärt, sehr gut!
Bestens erklärt, vielen Dank!
super erklärt-besten Dank!
Super erklärt, danke!
sehr gut erklärt, vielen dank
sehr gut erklärt!
Sehr schönes Video!
Danke sehr, deine video hilft mehr sehr, auch der code
sehr gutes Video, weiter so
Super erklärt, einfacher geht es nicht. Mal sehen wie es bei Margot's letzter Rache unter RBASIC aussieht.
SUPER weiter so ;)
Schöner und leicht verständliches Tutorial. Eine Frage hätte ich noch: Muss ein PWM Pin verwendet werden oder reicht ein "normaler" digital pin? Oder etwas allgemeiner: Wann ist ein PWM notwendig und wann wird ein digital pin verwendet?
Tolle Erklärung, ich bin einfach begeistert. Frage: wie kann ich die LED´s gesondert mit Strom versorgen? für die Schaltvorgänge aber die vom Arduino nehmen.
Tolles Video, sehr informativ. Leider gibt es für diesen Schieberegister keine Library, wie z.B. beim TLC5940, was die Programmierung doch deutlich erleichtert.
Sehr gut gemacht. Habs auf Anhieb verstanden. Gibt es das auch in "umgekehrter" Bauform, also das man eine Reihe von 8 Schaltern an den IC anschließt und diese dann mit 3 Pins des Arduino ausliest?
Hallo, sehr schön erklärt.
können Sie auch ein Video machen, wie man das Schieberegister lesen kann? Also 8 digitale Eingänge.
Und wie man ein LCD über ein Schieberegister ansprechen kann?
Dankeschön
Hey, erstmal tolle Sache dein Kanal. Jedoch sagst du am Ende des Videos, es kommt noch ein weiteres 74HC595 Turorial in dem komplexere Sachen erklärt werden. Ich hab folgendes Problem. Wie Arbeiten die Register beispielsweise als Funkuhr. Sprich, Register eins zählt bis 10 übergibt den Wert an das nächste Register welches bis 60 zählt usw. Also für Sekunde Minute und Stunde. Ich brauch den Counter für ne Arbeit. Wäre cool wenn du das kannst.
Super video,
ich schau selten Videos auf Deutsch, aber hier schau ich gern zu.
Frage zum Schieberegister:
Ich hab bei meinem set so einen schiebe register und ein sehr ähnliches Bauteil (L293D) das zum steuern eines motors verwendet wird,
jetzt hab ich leider nicht gleich gemerkt, dass das 2 verschiedene bauteile sind, und versehentlich den 74HC595 statt dem L293D verwendet,
nach ein paar versuchen, bei denen erstmal nichts passiert ist, hab ich bemerkt, dass der Schieberegister extrem heiß geworden ist,
meine frage jetzt:
kann ich den schieberegister weiter verwenden oder ist er jetzt zu beschädigt?
wollte ihn noch nicht wieder verwenden,bin noch anfänger und weiß nicht ob der beschädigte schieber nicht schäden an anderen bauteilen verursachen kann.
kann man als schieberegister statt den 74HC595 einen cd4017 oder johnson zähler nehmen?
Und die 40 mA die aus dem Arduino kommen, können ohne Widerstand an die Eingänge des Schieberegisters? Und die Ausgänge des Schieberegisters haben genug Leistung um die LEDs zu betreiben?
Also ganz theoretisch wenn ich jetzt nicht multiplexen möchte könnte ich auch erstmal 8 bits ins register schieben und dann erst alle 8 bits auf einmal ausgeben? Bzw lassen sich daraus nicht effektivere multiplexing systeme entwickeln?
Wenn man am ersten Schieberegister einen weiteren anschließt, muss man dieses dann auch nochmal mit Store... und Shift... anschließen? Oder wie?
Sehr gut erklärt, geht nicht besser !
Prima!
Und noch eine weiter Frage.
Wird das dritte Argument in der shiftOut() - Funktion immer Binär interpretier?
Vielen Dank auch für diese Antwort.
Grüße
TOP!
very good
I really need English subtitles for this, please if anyone can do this would be absolutely amazing!!!
Alt, aber gut. Herzlichen Dank für das Video, hat mir sehr weitergeholfen.
Problem fast gelöst ...
Darf ich hier auch fragen stellen?
Es geht ums Dimmen der LED. Irgendwo habe ich gelesen dass man das erreicht wenn man OE statt auf Masse auf einen PWM-Pin schaltet und den auf 50% oder so setzt. Geht dsa??
Danke!!!
Das heißt das immer wenn eine 0 kommt, gibt es keinen Eintrag sondern das Register bewegt sich um eine Stelle weiter?
Eine Frage blieb für mich offen: wie muss man vorgehen, will man ein zweites Schieberegister betreiben? Klar ist ja, dass Q7S des ersen Moduls mit dem DS des zweiten Moduls verbunden wird. Aber braucht man für SHCP und STCP je Modul 2 eigene Pins am Arduino? Oder reicht es, wenn man einfach die SHCP und STCP Pins aller Schieberegister miteinander verbindet, sodass diese Aktionen synchron ablaufen? Wenn ersteres, wäre die Menge der Shift-Register ja auch wieder limitiert, weil schnell die Pins am Arduino belegt sind.
Mich würde mal ein Video über drahtlose Kommunikation zwischen 2 Arduinos interessieren.
Hey
ist es eigentlich zusätzlich möglich, an die anderen pinne dann auch noch einige LEDs zu schalten, oder macht der arduino vom Saft her irgendwann schlapp?
Ja, da kannst du schon noch was anschliessen, die genauen Daten weiss ich jetzt nicht, aber jedes der Digitalpins sollte geichzeitig 20mA liefern können. Einfach ausprobieren.
Wie schnell kann so ein schieberegister arbeiten? Also wie viele Bits schaft es in einer Sekunde?
sehr hilfreiches Video, wenn der Lehrer einem nicht helfen will.... könntest du den Programmcode irgendwie größer aufschreiben? Danke :)
Kann man diesen sieberegister auch als imput mehrere buttons nehmen
könnte ich anstelle ihres verwendeten 74HC595 Schieberegisters auch das MOS 4094 , 8-stufiges Schieberegister verwenden und es genauso nach ihrer anleitung (mit den richtigen eingängen,ausgängen) nachbauen und es würde trotzdem gehen? Können Sie mir dazu was sagen?
+666Diabolos666 Hi, ich kenn das Bauteil leider selbst nicht. Laut Datenblatt ist das CMOS 4094 sehr ähnlich zum 74HC595 (Pin1/Strobe = STCP, Pin2/D = DS, Pin3/Clock = SHCP), ja, das müsste also funktionieren.
Noch ne frage, wenn ich nun den mr pin an garnix anschliesse er also weder high noch low ist da er ja weder ground noch 5v hat, was macht der ic dann? Resettet er den chip trotzdem?
Er verhält sich wie Schrödingers Katze, d.h. du kennst den Zustand des Pins eigentlich nicht und ausgehend vom Umfeld (elektromagnetische Einflüsse etc.) kann er verschiedene Potentiale annehmen und entsprechend den IC vielleicht in unvorhergesehenes Verhalten schicken. Ohne Verbindung zu 5V wird er wahrscheinlich die meiste Zeit eher bei GND sein (glaube ich) und damit den IC in einen Dauerreboot schicken? Am besten ausprobieren :)
wie hast du diese animation mit den muttern nur hingekriegt? Sehr gutes video!
ZenZeify Laut verschiedenen Online-Quellen sind 10MHz für ein 74xxx595 Shift Register kein Problem. Mit einem 16MHz-Arduino erreicht man diese Geschwindigkeiten aber ohnehin nicht, die geschafften Bits pro Sekunde hängen also von der Geschwindigkeit deines Arduino-Codes ab, das Schieberegister ist da nicht der begrenzende Faktor.
Kann man die analogen pins nicht auch als digitale outputs verwenden?
+StarTrek123456 Ja, richtig. Die Analogpins lassen sich mit digitalRead/digitalWrite() wie Digitalpins verwenden - allerdings nicht mit PWM. Aber so viele Pins sind das z.B. bei einem Uno ja auch nicht und meistens braucht man bei einem Projekt ja auch noch Pins für was anderes.
kann man damit auch ground Signale verschicken? Also statt 5v GND?
Ja, natürlich, 0 heißt mit GND verbunden.
SirVY Z. Heißt das also, dass wenn ich 2 Schieberegister habe und ich damit eine Matrix anzeigen lassen möchte, kann ich eine für 5v und den anderen für GND benutzen?
SteffoSpieler ja, bei den einen Anschlüssen (gnd) ist es halt bei 0 aktiviert, bei den anderen bei 1. Du musst die noch nicht mal auftrennen, einfach ein anderes Bit an die Stelle shiften
SirVY Z. verstehe ich nicht!
SteffoSpieler Zum Beispiel hast du die erste Spalte (+) an den ersten Anschluss gelegt. Wenn du die jetzt anschalten willst,dann muss die Zeile,in der das Lämpchen angehen soll,auf 0 schalten und die Spalte auf 1,indem du das Bit, was den Pin steuert,auf zwei unterscheidliche Werte stellst,sodass der Strom durch den einen Pin (+) hinaus und auf dem anderen Pin (GND) wieder hineinkommt.
Was ist der Code für das erste Beispiel ?
Sehr anschaulich erklärt - allerdings muss es nach duden.de DER Pin und nicht DAS Pin lauten.
Ja wenn es bloss so einfach wäre, bei anderen meiner Videos ist es genau andersrum kommentiert :) "Der Pin" für die Pinnwand, das Headerpin (weil englisch?) am Breakout-Board. Ich kann es mir sowieso nicht merken und 's ist ähnlich wie bei der Aussprache con LED/L.E.D. - eigentlich spielt es keine große Rolle.
Mhh. ich hab den Gleichen Modellnamen, aber auf jeder Seite 9 pins. wo ist der Unterschied?
Gene Gräning Ich hab keine Infos zu 74HC595 mit 18 Pins googlen können. Kannst du mir ein Foto oder den genauen Aufdruck mailen (adi@makerblog.at)?
Sehr gutes Video, allerdings hallt es ein wenig :/
Moin,
kann mir vielleicht nochmal jemand den OE pin erklären, oder mir einen hilfreichen Web-Link nennen?
Viele Dank und Grüße
Sven
Oder ein arduino mega
Ja, das geht natürlich auch, Schieberegister sind aber der interessantere Lösungsweg :)
sexy
Sind nicht 9 pin´s output ?
Das 9. Ausgangspin ist der serielle Ausgang zum Anschluss eines weiteren Schieberegisters - wahrscheinlich lässt sich das auch irgendwie anderweitig nutzen...
Nothing but germany is so crazy
Warum funktioniert es nicht :(
Habs 1-1nachgabaut und programmiert laufen tuts leider nicht '-'
Hallo schön erklärt aber nur das was sie machen geht ohne Probleme aber ich habe mir 2 Videos rausgesucht habe es zu samen gebaut aber ohne Erfolg könnten sie ein Video machen in deutsch mfg
Video 1 ua-cam.com/video/16u4YmWD6aM/v-deo.html
Video 2 ua-cam.com/video/EsSvb1SdBPs/v-deo.html
Sehr gut erklärt, Danke