{"id":1567,"date":"2024-08-06T08:00:00","date_gmt":"2024-08-06T06:00:00","guid":{"rendered":"https:\/\/www.fuhselab.de\/?p=1567"},"modified":"2025-05-27T14:08:25","modified_gmt":"2025-05-27T12:08:25","slug":"arduino-und-schieberegister","status":"publish","type":"post","link":"https:\/\/www.fuhselab.de\/index.php\/2024\/08\/06\/arduino-und-schieberegister\/","title":{"rendered":"Arduino und Schieberegister"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Wie w\u00e4re es mit einer Bin\u00e4rzahlenanzeige aus LEDs oder einem Bin\u00e4rzahlenquiz? Dieser Artikel stellt die zwei ersten Schieberegister Projekte vor&#8230;<\/p>\n\n\n\n<!--more-->\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Vorbereitungen:<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">F\u00fcr dieses Projekt brauchen wir folgende Bauteile f\u00fcr den Schaltungsaufbau:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/www.reichelt.de\/experimentier-slide-steckboard-640-200-kontakte-steckboard-s8-p177330.html?CCOUNTRY=445&amp;LANGUAGE=de&amp;trstct=pos_12&amp;nbc=1&amp;&amp;r=1\">Steckboard<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.reichelt.de\/entwicklerboards-kabel-set-verschiedene-laengen-65er-pack--debo-kabelset18-p282690.html?PROVID=2788&amp;gclid=EAIaIQobChMI5Mqvt8jp-wIVUASLCh1ozQTZEAQYAiABEgK1X_D_BwE\">Kabelset f\u00fcr Entwicklerboards<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.reichelt.de\/led-8-mm-bedrahtet-rot-400-mcd-60--kbt-l-793srd-d-p231029.html?&amp;trstct=pol_1&amp;nbc=1\">LED<\/a> (8x)<\/li>\n\n\n\n<li><a href=\"https:\/\/www.reichelt.de\/widerstand-metalloxidschicht-560-ohm-0414-2-w-5--2w-metall-560-p2360.html?CCOUNTRY=445&amp;LANGUAGE=de&amp;trstct=pos_4&amp;nbc=1&amp;&amp;r=1\">560 Ohm Widerst\u00e4nde<\/a> (8x)<\/li>\n\n\n\n<li><a href=\"https:\/\/www.reichelt.de\/shift-register-3-state-ausgang-2--6-v-dil-16-74hc-595-p3269.html?CCOUNTRY=445&amp;LANGUAGE=de&amp;trstct=pos_0&amp;nbc=1&amp;&amp;r=1\">Schieberegister 74 HC595<\/a><\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Schaltungsaufbau 1:<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Der Arduino Pin f\u00fcr 5 Volt geht an Schieberegister Pin 16 und 10. Arduino Pin D6 geht an den Schieberegister Pin 14. Arduino Pin D8 geht an Schieberegister Pin 12. Arduino Pin D10 geht an Schieberegister Pin 11. Schieberegister Pin 13 geht mit dem Arduino gemeinsam an Ground. Auch Schieberegister Pin 8 geht an Ground. Die Schieberegister Pins 1 bis 7 und 15 gehen \u00fcber die Widerst\u00e4nde zu den LEDs.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Programmierung 1:<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#define DATA 6\n#define LATCH 8\n#define CLOCK 10\n\nvoid setup()\n{\npinMode(LATCH, OUTPUT);\npinMode(CLOCK, OUTPUT);\npinMode(DATA, OUTPUT);\n}\n\nvoid loop()\n{\nint i;\n\nfor ( i = 0; i &lt; 256; i++)\n{\ndigitalWrite(LATCH, LOW);\nshiftOut(DATA, CLOCK, MSBFIRST, i);\ndigitalWrite(LATCH, HIGH);\ndelay(200);\n}\n}\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Programmierung 2:<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#define DATA 6\n#define LATCH 8\n#define CLOCK 10\n\nint number =0;\nint answer = 0;\n\nvoid setup()\n{\npinMode(LATCH, OUTPUT);\npinMode(CLOCK, OUTPUT);\npinMode(DATA, OUTPUT);\nSerial.begin(9600);\nrandomSeed(analogRead(0));\ndisplayNumber(0);\n}\n\nvoid displayNumber(byte a)\n{\ndigitalWrite(LATCH, LOW);\nshiftOut(DATA, CLOCK, MSBFIRST, a);\ndigitalWrite(LATCH, HIGH);\n}\n\nvoid getAnswer()\n{\nint z = 0;\nSerial.flush();\nwhile (Serial.available() == 0)\n{\n}\n\n\nwhile (Serial.available() &gt; 0)\n{\nanswer = answer * 10;\n\nz = Serial.read() -'0';\n\nanswer = answer + z;\n\ndelay(5);\n}\n\nSerial.print(\"Sie haben eingegeben: \");\nSerial.println(answer);\n}\n\n\nvoid checkAnswer()\n{\nif (answer ==number)\n{\nSerial.print(\"Richtig! \");\nSerial.print(answer, BIN);\nSerial.print(\" entspricht \");\nSerial.println(number);\nSerial.println();\n}\n\nelse\n{\nSerial.print(\"Falsch! \");\nSerial.print(number, BIN);\nSerial.print(\" entspricht \");\nSerial.println(number);\nSerial.println();\n}\nanswer = 0;\ndelay(10000);\n\n}\n\nvoid loop()\n{\nnumber = random(256);\ndisplayNumber(number);\nSerial.println(\"Was ist die dezimale Entsprechung der angezeigten Bin\u00e4rzahl? \");\ngetAnswer();\ncheckAnswer();\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Arduino und Schieberegister:<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Bei diesem Schaltpl\u00e4nen wieder die Ausrichtung der LEDs beachten.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>LED Kathode (=kurzes Bein) immer direkt an Ground<\/li>\n\n\n\n<li>LED Anode (=langes Bein) \u00fcber einen Widerstand (560 Ohm) an Arduino-Pin.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">In diesem Projekt werden acht LEDs verwendet, um die Bin\u00e4rzahlen von 0 bis 255 anzuzeigen.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Die Dezimalzahl 1 entspricht der Bin\u00e4rzahl 1<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Die Dezimalzahl 2 entspricht der Bin\u00e4rzahl 10<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Die Dezimalzahl 3 entspricht der Bin\u00e4rzahl 11<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Die Dezimalzahl 4 entspricht der Bin\u00e4rzahl 100<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Die Bin\u00e4rzahl 11111111 (8 Stellen f\u00fcr 8 Datenbytes) entspricht der Dezimalzahl 255.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Der Schieberegister hat also acht digitale Ausgangspins, die durch die \u00dcbertragung eines Datenbytes gesteuert werden. Pro Pin ein Bit. Ein Bit kann also immer einen Wertebereich bis 255 darstellen, also 256 Werte mit der Null.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Es werden also 8 Bits an den Schieberegister gesendet. Von links nach rechts gesehen, stehen die Bits f\u00fcr die Pins in der Reihenfolge von der h\u00f6chsten zur niedrigsten Nummer. Das Bit ganz links stellt also Ausgangspin 7 des Registers dar.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td>1<\/td><td>0<\/td><td>0<\/td><td>0<\/td><td>0<\/td><td>1<\/td><td>1<\/td><td>0<\/td><\/tr><tr><td>Pin 7<\/td><td>Pin 6<\/td><td>Pin 5<\/td><td>Pin 4<\/td><td>Pin 3<\/td><td>Pin 2<\/td><td>Pin 1<\/td><td>Pin 0<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">In diesem Beispiel w\u00fcrden die LEDs an Pin 1, Pin 2 und Pin 7 leuchten. Also immer dort, wo der Wert 1 \u00fcbertragen wird.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ein Byte Daten kann einen Wert zwischen 0 und 255 haben. Das Bit ganz links wird als &#8222;most significant Bit&#8220; = MSB bezeichnet. Das Bit ganz rechts wird als &#8222;least significant Bit&#8220; = LSB bezeichnet. Im Code bzw. Sketch wurde ja bei &#8222;shiftOut&#8220; MSBFIRST angegeben.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Erweitern wir nun f\u00fcrs bessere Verst\u00e4ndnis die Tabelle:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td>1<\/td><td>1<\/td><td>1<\/td><td>1<\/td><td>0<\/td><td>0<\/td><td>0<\/td><td>0<\/td><\/tr><tr><td>Pin 7<\/td><td>Pin 6<\/td><td>Pin 5<\/td><td>Pin 4<\/td><td>Pin 3<\/td><td>Pin 2<\/td><td>Pin 1<\/td><td>Pin 0<\/td><\/tr><tr><td>LED-8<\/td><td>LED-7<\/td><td>LED-6<\/td><td>LED-5<\/td><td>LED-4<\/td><td>LED-3<\/td><td>LED-2<\/td><td>LED-1<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\u00dcbertragen wir den Bin\u00e4rwert 11110000 an das Schieberegister in Verbindung mit LSBFIRST werden die LEDs 1 bis 4 eingeschaltet. In der Tabelle m\u00fcsste dann der Bin\u00e4rwert genau anders herum eingetragen werden.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u00dcbertragen wir den Bin\u00e4rwert 11110000 an das Schieberegister in Verbindung mit MSBFIRST werden die LEDs 5 bis 8 eingeschaltet.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Wie w\u00e4re es mit einer Bin\u00e4rzahlenanzeige aus LEDs oder einem Bin\u00e4rzahlenquiz? Dieser Artikel stellt die zwei ersten Schieberegister Projekte vor&#8230;<\/p>\n","protected":false},"author":1,"featured_media":48,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[22],"class_list":["post-1567","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-arduino","tag-arduino-gruppe-peine"],"_links":{"self":[{"href":"https:\/\/www.fuhselab.de\/index.php\/wp-json\/wp\/v2\/posts\/1567","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.fuhselab.de\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.fuhselab.de\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.fuhselab.de\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.fuhselab.de\/index.php\/wp-json\/wp\/v2\/comments?post=1567"}],"version-history":[{"count":2,"href":"https:\/\/www.fuhselab.de\/index.php\/wp-json\/wp\/v2\/posts\/1567\/revisions"}],"predecessor-version":[{"id":2820,"href":"https:\/\/www.fuhselab.de\/index.php\/wp-json\/wp\/v2\/posts\/1567\/revisions\/2820"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.fuhselab.de\/index.php\/wp-json\/wp\/v2\/media\/48"}],"wp:attachment":[{"href":"https:\/\/www.fuhselab.de\/index.php\/wp-json\/wp\/v2\/media?parent=1567"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.fuhselab.de\/index.php\/wp-json\/wp\/v2\/categories?post=1567"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.fuhselab.de\/index.php\/wp-json\/wp\/v2\/tags?post=1567"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}