{"id":10151,"date":"2024-03-25T23:12:40","date_gmt":"2024-03-25T22:12:40","guid":{"rendered":"https:\/\/altglasfieber.de\/altglas\/?p=10151"},"modified":"2024-03-25T23:18:18","modified_gmt":"2024-03-25T22:18:18","slug":"arduino-drahtausloeser-langzeiten","status":"publish","type":"post","link":"https:\/\/altglasfieber.de\/altglas\/2024\/03\/25\/arduino-drahtausloeser-langzeiten\/","title":{"rendered":"DIY Arduino Drahtausl\u00f6ser"},"content":{"rendered":"\n<p>Kleines \u201eQuick and Dirty\u201c DIY-Arduino-Projekt f\u00fcr einen Drahtausl\u00f6ser, der mithilfe eines Servomotors eine mechanische Ausl\u00f6sebewegung erzeugt. Das System verf\u00fcgt \u00fcber Tasten zur Einstellung der Ausl\u00f6sedauer in Sekunden sowie eine Start- und Reset-Taste. Eine 7-Segment-Display zeigt die eingestellte Zeit an. W\u00e4hrend des Betriebs signalisieren zwei LEDs den Status des Systems. Der Servomotor bewegt sich entsprechend der eingestellten Zeit und kehrt dann in die Ausgangsposition zur\u00fcck. Das Projekt bietet eine M\u00f6glichkeit, analoge Kameras und Verschl\u00fcsse f\u00fcr eine bestimmte Zeit im Bulbmodus auszul\u00f6sen. Je nach den eigenen Bed\u00fcrfnissen kann das Projekt angepasst werden. <strong>Der n\u00e4chste Schritt liegt im \u00e4tzen einer Platine und der Verwendung von eines kleineren Microcontroller, dieser Blogartikel wird daher Schritt f\u00fcr Schritt erweitert. <\/strong><\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"683\" src=\"https:\/\/altglasfieber.de\/altglas\/wp-content\/uploads\/2024\/03\/1E331349-73E7-4E51-BB59-79D0CBC06AE1-1024x683.jpeg\" alt=\"\" class=\"wp-image-10182\" srcset=\"https:\/\/altglasfieber.de\/altglas\/wp-content\/uploads\/2024\/03\/1E331349-73E7-4E51-BB59-79D0CBC06AE1-1024x683.jpeg 1024w, https:\/\/altglasfieber.de\/altglas\/wp-content\/uploads\/2024\/03\/1E331349-73E7-4E51-BB59-79D0CBC06AE1-300x200.jpeg 300w, https:\/\/altglasfieber.de\/altglas\/wp-content\/uploads\/2024\/03\/1E331349-73E7-4E51-BB59-79D0CBC06AE1-768x513.jpeg 768w, https:\/\/altglasfieber.de\/altglas\/wp-content\/uploads\/2024\/03\/1E331349-73E7-4E51-BB59-79D0CBC06AE1.jpeg 1500w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure><\/div>\n\n\n<p>Teileliste: <\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>1x Mikrocontroller wie beispielsweise einen Arduino UNO oder einen Clone<\/li>\n\n\n\n<li>4x Taster<\/li>\n\n\n\n<li>2x LEDs mit entsprechenden Vorwiderst\u00e4nden<\/li>\n\n\n\n<li>1x Servermotor<\/li>\n\n\n\n<li>1x TM1637 Display<\/li>\n\n\n\n<li>1x Batterieanschluss 9V Blockbatterie<\/li>\n\n\n\n<li>4x Entprellwiderst\u00e4nde<\/li>\n\n\n\n<li>Verbrauchsmaterial wie Kabel, Platinenmaterial, usw.<\/li>\n<\/ul>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"683\" src=\"https:\/\/altglasfieber.de\/altglas\/wp-content\/uploads\/2024\/03\/CD0DED9F-796D-42BB-B730-F11C74FF0F64-1024x683.jpeg\" alt=\"\" class=\"wp-image-10183\" srcset=\"https:\/\/altglasfieber.de\/altglas\/wp-content\/uploads\/2024\/03\/CD0DED9F-796D-42BB-B730-F11C74FF0F64-1024x683.jpeg 1024w, https:\/\/altglasfieber.de\/altglas\/wp-content\/uploads\/2024\/03\/CD0DED9F-796D-42BB-B730-F11C74FF0F64-300x200.jpeg 300w, https:\/\/altglasfieber.de\/altglas\/wp-content\/uploads\/2024\/03\/CD0DED9F-796D-42BB-B730-F11C74FF0F64-768x513.jpeg 768w, https:\/\/altglasfieber.de\/altglas\/wp-content\/uploads\/2024\/03\/CD0DED9F-796D-42BB-B730-F11C74FF0F64.jpeg 1500w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure><\/div>\n\n\n<p><strong>Anbei der Code: <\/strong><\/p>\n\n\n\n<p>#include &lt;Servo.h><\/p>\n\n\n\n<p>#include &lt;TM1637Display.h><\/p>\n\n\n\n<p>\/\/ Programmcode Rainer Leyk <\/p>\n\n\n\n<p>\/\/ Pin f\u00fcr die Taster<\/p>\n\n\n\n<p>const int plusTastePin = 2;<\/p>\n\n\n\n<p>const int minusTastePin = 3;<\/p>\n\n\n\n<p>const int startTastePin = 4;<\/p>\n\n\n\n<p>const int resetTastePin = 5;<\/p>\n\n\n\n<p>\/\/ Pin f\u00fcr den Servomotor<\/p>\n\n\n\n<p>const int servoPin = 9;<\/p>\n\n\n\n<p>\/\/ Pin f\u00fcr die rote LED<\/p>\n\n\n\n<p>const int redLedPin = 13;<\/p>\n\n\n\n<p>\/\/ Pin f\u00fcr die gr\u00fcne LED<\/p>\n\n\n\n<p>const int greenLedPin = 10;<\/p>\n\n\n\n<p>\/\/ 7-Segment-Display<\/p>\n\n\n\n<p>#define CLK 6 \/\/ Clock Pin<\/p>\n\n\n\n<p>#define DIO 7 \/\/ Data Pin<\/p>\n\n\n\n<p>TM1637Display display(CLK, DIO);<\/p>\n\n\n\n<p>Servo servoMotor;<\/p>\n\n\n\n<p>int dauer = 0; \/\/ Startdauer des Motorlaufs<\/p>\n\n\n\n<p>bool motorAktiv = false; \/\/ Variable zur Verfolgung, ob der Motor aktiv ist<\/p>\n\n\n\n<p>unsigned long motorStartzeit = 0; \/\/ Zeitpunkt, zu dem der Motor gestartet wurde<\/p>\n\n\n\n<p>unsigned long previousMillis = 0; \/\/ Variable zur Speicherung der letzten Millisekunden f\u00fcr das Blinken<\/p>\n\n\n\n<p>void setup() {<\/p>\n\n\n\n<p>&nbsp;&nbsp;\/\/ Initialisierung der Taster-Pins<\/p>\n\n\n\n<p>&nbsp;&nbsp;pinMode(plusTastePin, INPUT);<\/p>\n\n\n\n<p>&nbsp;&nbsp;pinMode(minusTastePin, INPUT);<\/p>\n\n\n\n<p>&nbsp;&nbsp;pinMode(startTastePin, INPUT);<\/p>\n\n\n\n<p>&nbsp;&nbsp;pinMode(resetTastePin, INPUT);<\/p>\n\n\n\n<p>&nbsp;&nbsp;\/\/ Initialisierung des Servomotors<\/p>\n\n\n\n<p>&nbsp;&nbsp;servoMotor.attach(servoPin);<\/p>\n\n\n\n<p>&nbsp;&nbsp;servoMotor.write(0); \/\/ Setze den Motor in die Ausgangsposition<\/p>\n\n\n\n<p>&nbsp;&nbsp;\/\/ Initialisierung der LED-Pins<\/p>\n\n\n\n<p>&nbsp;&nbsp;pinMode(redLedPin, OUTPUT);<\/p>\n\n\n\n<p>&nbsp;&nbsp;pinMode(greenLedPin, OUTPUT);<\/p>\n\n\n\n<p>&nbsp;&nbsp;\/\/ Initialisierung des 7-Segment-Displays<\/p>\n\n\n\n<p>&nbsp;&nbsp;display.setBrightness(0x0f); \/\/ Helligkeit einstellen (0x0f ist die maximale Helligkeit)<\/p>\n\n\n\n<p>}<\/p>\n\n\n\n<p>void loop() {<\/p>\n\n\n\n<p>&nbsp;&nbsp;\/\/ \u00dcberpr\u00fcfung, ob die Plus-Taste gedr\u00fcckt wurde<\/p>\n\n\n\n<p>&nbsp;&nbsp;if (digitalRead(plusTastePin) == HIGH) {<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;dauer++; \/\/ Erh\u00f6he die Laufzeit um 1 Sekunde<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;delay(200); \/\/ Entprellzeit<\/p>\n\n\n\n<p>&nbsp;&nbsp;}<\/p>\n\n\n\n<p>&nbsp;&nbsp;\/\/ \u00dcberpr\u00fcfung, ob die Minus-Taste gedr\u00fcckt wurde<\/p>\n\n\n\n<p>&nbsp;&nbsp;if (digitalRead(minusTastePin) == HIGH) {<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;dauer = max(0, dauer &#8211; 1); \/\/ Verringere die Laufzeit um 1 Sekunde, aber mindestens 0 Sekunden<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;delay(200); \/\/ Entprellzeit<\/p>\n\n\n\n<p>&nbsp;&nbsp;}<\/p>\n\n\n\n<p>&nbsp;&nbsp;\/\/ \u00dcberpr\u00fcfung, ob die Start-Taste gedr\u00fcckt wurde<\/p>\n\n\n\n<p>&nbsp;&nbsp;if (digitalRead(startTastePin) == HIGH &amp;&amp; !motorAktiv) {<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;\/\/ Wenn die Start-Taste gedr\u00fcckt wurde und der Motor nicht bereits aktiv ist<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;digitalWrite(redLedPin, HIGH); \/\/ Aktiviere die rote LED<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;digitalWrite(greenLedPin, LOW); \/\/ Deaktiviere die gr\u00fcne LED<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;servoMotor.write(90); \/\/ Bewege den Motor auf 90 Grad<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;motorAktiv = true; \/\/ Setze den Motorstatus auf aktiv<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;motorStartzeit = millis(); \/\/ Speichere den Zeitpunkt, zu dem der Motor gestartet wurde<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;previousMillis = millis(); \/\/ Setze die Variable f\u00fcr das Blinken<\/p>\n\n\n\n<p>&nbsp;&nbsp;}<\/p>\n\n\n\n<p>&nbsp;&nbsp;\/\/ \u00dcberpr\u00fcfung, ob der Motor aktiv ist und die Zeit abgelaufen ist<\/p>\n\n\n\n<p>&nbsp;&nbsp;if (motorAktiv &amp;&amp; (millis() &#8211; motorStartzeit &gt;= dauer * 1000)) {<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;\/\/ Wenn der Motor aktiv ist und die Zeit abgelaufen ist<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;servoMotor.write(0); \/\/ Setze den Motor in die Ausgangsposition zur\u00fcck<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;digitalWrite(redLedPin, LOW); \/\/ Deaktiviere die rote LED<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;digitalWrite(greenLedPin, HIGH); \/\/ Aktiviere die gr\u00fcne LED<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;motorAktiv = false; \/\/ Setze den Motorstatus auf inaktiv<\/p>\n\n\n\n<p>&nbsp;&nbsp;}<\/p>\n\n\n\n<p>&nbsp;&nbsp;\/\/ \u00dcberpr\u00fcfung, ob die Reset-Taste gedr\u00fcckt wurde<\/p>\n\n\n\n<p>&nbsp;&nbsp;if (digitalRead(resetTastePin) == HIGH) {<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;\/\/ Wenn die Reset-Taste gedr\u00fcckt wurde, setze die ausgew\u00e4hlte Zeit zur\u00fcck<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;dauer = 0;<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;delay(200); \/\/ Entprellzeit<\/p>\n\n\n\n<p>&nbsp;&nbsp;}<\/p>\n\n\n\n<p>&nbsp;&nbsp;\/\/ \u00dcberpr\u00fcfung, ob die LED blinken soll<\/p>\n\n\n\n<p>&nbsp;&nbsp;unsigned long currentMillis = millis();<\/p>\n\n\n\n<p>&nbsp;&nbsp;if (motorAktiv &amp;&amp; currentMillis &#8211; previousMillis &gt;= 500) {<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;\/\/ Wenn der Motor aktiv ist und genug Zeit vergangen ist<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;previousMillis = currentMillis; \/\/ Aktualisiere die Zeit f\u00fcr das n\u00e4chste Blinken<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;digitalWrite(redLedPin, !digitalRead(redLedPin)); \/\/ \u00c4ndere den Zustand der roten LED (blinken)<\/p>\n\n\n\n<p>&nbsp;&nbsp;}<\/p>\n\n\n\n<p>&nbsp;&nbsp;\/\/ Anzeigen der gew\u00e4hlten Zeit auf dem 7-Segment-Display<\/p>\n\n\n\n<p>&nbsp;&nbsp;int minutes = dauer \/ 60; \/\/ Berechnung der Minuten<\/p>\n\n\n\n<p>&nbsp;&nbsp;int seconds = dauer % 60; \/\/ Berechnung der Sekunden<\/p>\n\n\n\n<p>&nbsp;&nbsp;int time = minutes * 100 + seconds; \/\/ Kombinieren von Minuten und Sekunden f\u00fcr die Anzeige<\/p>\n\n\n\n<p>&nbsp;&nbsp;display.showNumberDecEx(time, 0b01000000, true); \/\/ Anzeigen der Zeit im Minuten-Sekunden-Format<\/p>\n\n\n\n<p>}<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Kleines \u201eQuick and Dirty\u201c DIY-Arduino-Projekt f\u00fcr einen Drahtausl\u00f6ser, der mithilfe eines Servomotors eine mechanische Ausl\u00f6sebewegung &hellip; <a href=\"https:\/\/altglasfieber.de\/altglas\/2024\/03\/25\/arduino-drahtausloeser-langzeiten\/\" class=\"more-link\"><span>Continue reading<span class=\"screen-reader-text\">DIY Arduino Drahtausl\u00f6ser<\/span><\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":10182,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[142],"tags":[480,945,113,946,944],"class_list":["post-10151","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-fab","tag-arduino","tag-code","tag-diy","tag-drahtaussloeser","tag-mikrocontroller"],"_links":{"self":[{"href":"https:\/\/altglasfieber.de\/altglas\/wp-json\/wp\/v2\/posts\/10151","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/altglasfieber.de\/altglas\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/altglasfieber.de\/altglas\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/altglasfieber.de\/altglas\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/altglasfieber.de\/altglas\/wp-json\/wp\/v2\/comments?post=10151"}],"version-history":[{"count":7,"href":"https:\/\/altglasfieber.de\/altglas\/wp-json\/wp\/v2\/posts\/10151\/revisions"}],"predecessor-version":[{"id":10189,"href":"https:\/\/altglasfieber.de\/altglas\/wp-json\/wp\/v2\/posts\/10151\/revisions\/10189"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/altglasfieber.de\/altglas\/wp-json\/wp\/v2\/media\/10182"}],"wp:attachment":[{"href":"https:\/\/altglasfieber.de\/altglas\/wp-json\/wp\/v2\/media?parent=10151"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/altglasfieber.de\/altglas\/wp-json\/wp\/v2\/categories?post=10151"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/altglasfieber.de\/altglas\/wp-json\/wp\/v2\/tags?post=10151"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}