Hallo Ich suche ein Programm für Arduino, welches eine Monostufe mit Retrigger beinhaltet. Vorgesehen ist, dass die Monozeit mit dem ersten Tastendruck für z.B. 10 Min. startet. Durch einen weiteren Tastendruck soll sich die Monozeit um weitere 10 Min. verlängern. Genau genommen soll mit jeden Tastendruck die Zeit um 10 Min. verlängert werden. Allerdings beim 6. Tastendruck sollte die Zeitstufe den Vorgang sofort beenden, den Ausgang abschalten bzw. auch die vorherige Tasterwahl auf 0 zurücksetzen. Rücksetzen des Ausgangs auch wenn die eingestellte Monozeit abgelaufen ist. Einige Programme aus dem Internet sind als Monostufe teils auch mit Retrigger lauffähig, wie z.B: https://www.google.com/search?q=retriggerbare+monostufe+mit+arduino+programmieren& … oder: http://www.sachsendreier.com/asw/projekteundexperimente/taste_monoflop/index.php, usw. Nur fehlt bei allen die Stufenschaltung, um die Zeit schrittweise zu verlängern. Für einen Tipp oder Programmvorschlag wäre ich dankbar. Gruß Rolf
Rolf Z. schrieb: > Für einen Tipp oder Programmvorschlag wäre ich dankbar. Addiere bei jedem Tastendruck (außer beim sechsten) das Äquivalent von 10 Minuten zum Zähler. Beim Runterzählen landet er dann 10 Minuten später bei 0.
Schon mal eine KI befragt? Das ist doch heute fast so normal wie googeln.
Das sagt ChatGPT (nicht schlecht)
1 | const int buttonPin = 2; |
2 | const int outputPin = 8; |
3 | |
4 | const unsigned long stepTime = 600000UL; // 10 Minuten |
5 | const int maxPresses = 6; |
6 | |
7 | unsigned long offTime = 0; |
8 | int pressCount = 0; |
9 | |
10 | bool lastButtonState = HIGH; |
11 | |
12 | void setup() { |
13 | pinMode(buttonPin, INPUT_PULLUP); |
14 | pinMode(outputPin, OUTPUT); |
15 | digitalWrite(outputPin, LOW); |
16 | }
|
17 | |
18 | void loop() { |
19 | bool buttonState = digitalRead(buttonPin); |
20 | |
21 | // Flankenerkennung (Taste gedrückt)
|
22 | if (lastButtonState == HIGH && buttonState == LOW) { |
23 | pressCount++; |
24 | |
25 | // 6. Tastendruck → sofort AUS
|
26 | if (pressCount >= maxPresses) { |
27 | digitalWrite(outputPin, LOW); |
28 | pressCount = 0; |
29 | offTime = 0; |
30 | }
|
31 | else { |
32 | unsigned long now = millis(); |
33 | |
34 | // Monoflop starten oder verlängern
|
35 | digitalWrite(outputPin, HIGH); |
36 | offTime = (offTime < now) ? (now + stepTime) : (offTime + stepTime); |
37 | }
|
38 | |
39 | delay(50); // Entprellung |
40 | }
|
41 | |
42 | lastButtonState = buttonState; |
43 | |
44 | // Zeit abgelaufen?
|
45 | if (digitalRead(outputPin) == HIGH && millis() >= offTime) { |
46 | digitalWrite(outputPin, LOW); |
47 | pressCount = 0; |
48 | }
|
49 | }
|
Und ChatGPT kann auch Humor! "Wieviel Energie hat es gekostet, dieses Programm zu schreiben? Kurzfassung: praktisch nichts Relevantes 😄 Etwas ausführlicher – mit einem Augenzwinkern: Meine Seite: Ich selbst „verbrauche“ keine Energie im klassischen Sinn. Ich rechne nicht lokal, sondern laufe auf Servern. Für diese Antwort und den Code reden wir grob von ein paar Wattsekunden Rechenzeit auf Rechenzentrums-Hardware. Das liegt eher im Bereich Millisekunden · einige Watt → also < 1 Joule pro Anfrage. Rechenzentrum (grob geschätzt): Selbst großzügig gerechnet: z. B. 50 W für 0,1 s Energie = 50 W × 0,1 s = 5 Joule Das entspricht etwa: der Energie, um eine 1-W-LED 5 Sekunden leuchten zu lassen 💡 oder einen Tropfen Wasser minimal zu erwärmen Deine Seite: Wahrscheinlich hat dein Arduino beim Lesen mehr Energie verbraucht als das Schreiben des Codes 😉 Und dein Gehirn beim Verständnis nochmal deutlich mehr 🧠⚡" Wobei ich die Rechnung anzweifle, wie so oft ;-)
Falk B. schrieb: > Wobei ich die Rechnung anzweifle, wie so oft ;-) Welche Rechnung zweifelt wer an?
Wastl schrieb: >> Wobei ich die Rechnung anzweifle, wie so oft ;-) > > Welche Rechnung zweifelt wer an? Ich zweifle die Rechnung von ChatGPT zum Energieverbrauch an. Man beachte die Gänsefüsschen. Ich habe ChatGPT zitiert.
:
Bearbeitet durch User
Rolf Z. schrieb: > Ich suche ein Programm für Arduino, welches eine Monostufe mit Retrigger > beinhaltet. Falls es noch nicht zu Dir durchgedrungen ist: Arduino kann nicht nur mit fertigen Programmen betrieben werden, sondern erlaubt auch den Einsatz eigener. Nemopuk schrieb: > Willst du etwas kaufen, oder Programmieren lernen? Weder noch, er will etwas kopieren. Falk B. schrieb: > Ich zweifle die Rechnung von ChatGPT zum Energieverbrauch an Musst Du schon wieder mit diesem Scheißdreck herumspammen?
Danke ans Forum für die Infos ChatGBT zeigte ein Programm, es geht, aber die Funktion ist nicht die Gewünschte. Ich habe zum Test die Zeiten auf 10 sec. gekürzt. Die Tastungen stimmen nicht, die Zeiten sind ok. Werde mal mit dem Programm weitermachen. Die Klugen Sprüche, dass man den Arduino selbst programmieren kann kannste dier sparen! Wenn ich es könnte würde ich mich nicht an euch wenden, mit der Hoffnung keine Klugscheißereien zu erhalten.
Rolf Z. schrieb: > Die Klugen Sprüche, dass man den Arduino selbst programmieren kann > kannste dier sparen! Wenn ich es könnte würde ich mich nicht an euch > wenden, mit der Hoffnung keine Klugscheißereien zu erhalten. Keinem ist das in die Wiege gelegt worden, auch den größten Experten nicht. Das fällt nicht vom Himmel, sondern das muss jeder SELBST LERNEN. Gerade für Arduino gibt es als Einstieg viel Beispielcode, mit dem man anfangen und den man selbst ausbauen kann. Rolf Z. schrieb: > Die Tastungen stimmen nicht Was meinst du damit? Mit so einer unspezifischen Fehlerbeschreibung kann man wenig anfangen.
:
Bearbeitet durch User
Hallo, @ TO: schau dir das Bsp. der Arduino IDE > Digital > BlinkWithoutDelay an. Dabei denkst du an deine Armbanduhr oder ähnlichem Zeiteisen, wie man damit für sich Zeit-Differenzen herstellt. Dann verstehst du den Sketch.
:
Bearbeitet durch User
Rolf Z. schrieb: > Die Klugen Sprüche, dass man den Arduino selbst programmieren kann > kannste dier sparen! Wenn ich es könnte würde ich mich nicht an euch > wenden Dann ist doch jetzt der richtige Zeitpunkt es zu lernen. Dein Programm ist doch geradezu ideal und lädt dazu ein es selbst zu versuchen. Fang bei Null an.
Ich bin ein wenig irritiert, daß hier die Funktion eines nachtrigerbaren Monoflops nicht bekannt ist. Nachtriggern heißt nicht, Zeiten zu addieren, sondern jeweils erneut auf die max. Laufzeit zu setzen.
Mi N. schrieb: > Nachtriggern heißt nicht, Zeiten zu addieren, sondern jeweils erneut auf > die max. Laufzeit zu setzen. Vielleicht soll ja doch die nächste Zeitdauer hinten angehängt werden. Fünf mal drücken: 50 Minuten Laufzeit. Sechster Druck: Reset (weil man sich verdrückt hat).
Rahul D. schrieb: > Vielleicht soll ja doch die nächste Zeitdauer hinten angehängt werden. Das ist dann aber kein nachtriggerbares Monoflop. Und deren Funktion ist definiert worden, als es Arduino noch garnicht gab.
Mi N. schrieb: > Das ist dann aber kein nachtriggerbares Monoflop. Und deren Funktion ist > definiert worden, als es Arduino noch garnicht gab. Hier schwirren so oft falsche / falschverstandene Bezeichnungen rum, da muss man auch etwas Interpretationsspielraum zulassen.
Mi N. schrieb: > Das ist dann aber kein nachtriggerbares Monoflop. Und deren Funktion ist > definiert worden, als es Arduino noch garnicht gab. Da hast Du Recht. Aber Rolf beschreibt ja dann im Text, was er haben will. @Rolf: hmmm, du hast dir nen Arduino zugelegt. Ich gehe einfach mal davon aus, dass du den auch selbst programmieren willst. Da ist deine geplante Anwednung geradezu ideal. Nicht zu komplex, kein Netzwerkzeug etc. Nimm doch einfach den gpt-Code und passe ihn so an, dass er funktioniert wie gewünscht. AFAIK ist da auch kein Tasten-Entpreller drin... Und ja, den gpt-Beifang hättest Du nicht unbedingt zu posten brauchen. Aber ich verstehe dich schon ein wenig, denn manchmal ist man einfach überrascht über die Konversation mit gpt... ;-) ciao Marci
Mi N. schrieb: > Ich bin ein wenig irritiert, daß hier die Funktion eines nachtrigerbaren > Monoflops nicht bekannt ist. Es geht hier nicht um ein nachtriggerbares Monoflop, jedenfalls nicht, falls man die Anforderungen an die Funktion liest. Rolf Z. schrieb: > Vorgesehen ist, dass die Monozeit mit dem ersten Tastendruck > für z.B. 10 Min. startet. Durch einen weiteren Tastendruck soll sich die > Monozeit um weitere 10 Min. verlängern.
Der Dummschwatzfaktor in diesem Forum steigt auch täglich um Größenordnungen schneller als der CO2 Anteil der Atmosphäre. 8-(
Rolf Z. schrieb: > Die Klugen Sprüche, dass man den Arduino selbst programmieren kann > kannste dier sparen! > Wenn ich es könnte würde ich mich nicht an euch wenden Ersetze "könnte" durch "wollte". Rahul D. schrieb: > Vielleicht soll ja doch die nächste Zeitdauer hinten angehängt werden. > Fünf mal drücken: 50 Minuten Laufzeit. > Sechster Druck: Reset (weil man sich verdrückt hat). Das wäre die Bedienung des Ansmann Timers AES-1, die sehr praxisgerecht ist: Erster Tastendruck Ein für 15 min, jeder weitere 30 - 60 - 2h - 4h - 8h. Der nächste Tastendruck lässt die 15 min LED blinken und nach ein paar Sekunden schaltet das Gerät ab. Ich vermute, dass das ein ATTiny macht, 8-Pin-SMD. Marci W. schrieb: > @Rolf: hmmm, du hast dir nen Arduino zugelegt. Ich gehe einfach mal > davon aus, dass du den auch selbst programmieren willst. Das klingt anders. > Da ist deine geplante Anwednung geradezu ideal. > Nicht zu komplex, kein Netzwerkzeug Sehe ich ebenso, aber dafür muß man wollen. > Nimm doch einfach den gpt-Code und passe ihn so an, dass er funktioniert > wie gewünscht. Das halte ich für keine gute Idee, der Umbau fremden Codes ist meist schwieriger, als eigenen zu schreiben. > AFAIK ist da auch kein Tasten-Entpreller drin Wird man dann lernen. Das ist in dieser Anwendung ganz einfach zu machen, weil nichts zeitkritisch ist.
Das Programm für die Monostufe am Arduino geht jetzt. Grudlage hierfür ist der Vorschlag von Falk B. mit ChatGPT mit einigen Änderungen. Ihr habt schon recht, man lernt es durchs Selbermachen. Aber auf dumme Sprüche und Belehrungen sollte man verzichten, es kann nicht jeder so klug sein wie so mancher hier. Einige konnten wenigstens meine Anfrage lesen und verstehen. Das Forum ist doch sicherlich angelegt um Fragen oder Ideen auszutauschen, auch wenn diese von Anfängern gestellt werden. Danke nochmals Gruß Rolf
Hallo Veit D. Dein Programmvorchlag (MonoflopRetrigger.ino) habe ich heute auch noch getestet. Nach dem Ändern der Pin-Nr. und Zeiten läuft das Programm auch. Jetzt habe ich zwei zur Auswahl. Danke Gruß Rolf
Beitrag #8004456 wurde vom Autor gelöscht.
Hallo, freut mich. Der kleine Unterschied ist, Falk hat mit ChatGPT es genau auf deine Anforderung zugeschnitten. Bei mir sieht man eine Klasse die man wiederverwenden kann. Du kannst im Programm oder in einem anderen mehrere unabhängige Taster Instanzen anlegen. Es muss auch kein Klassen Template sein, normale Klasse reicht auch aus, lag gerade zur Hand. Welches Programm du verwendest kannst du ganz allein für dich entscheiden. Wichtig ist du musst verstehen was passiert. Da ist Falks zugegeben einfacher zu lesen. Alles andere kommt mit der Zeit wenn du dran bleibst.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.