Forum: Mikrocontroller und Digitale Elektronik Monostufe mit Retrigger für Arduino


von Rolf Z. (rolf-z)


Lesenswert?

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

von Rainer W. (rawi)


Lesenswert?

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.

von Falk B. (falk)


Lesenswert?

Schon mal eine KI befragt? Das ist doch heute fast so normal wie 
googeln.

von Falk B. (falk)


Lesenswert?

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 ;-)

von Nemopuk (nemopuk)


Lesenswert?

Willst du etwas kaufen, oder Programmieren lernen?

von Wastl (hartundweichware)


Lesenswert?

Falk B. schrieb:
> Wobei ich die Rechnung anzweifle, wie so oft ;-)

Welche Rechnung zweifelt wer an?

von Falk B. (falk)


Lesenswert?

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
von Manfred P. (pruckelfred)


Lesenswert?

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?

von Rolf Z. (rolf-z)


Lesenswert?

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.

von Rainer W. (rawi)


Lesenswert?

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
von Veit D. (devil-elec)


Angehängte Dateien:

Lesenswert?

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
von Alexander (alecxs)


Lesenswert?

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.

von Mi N. (msx)


Lesenswert?

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.

von Rahul D. (rahul)


Lesenswert?

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).

von Mi N. (msx)


Lesenswert?

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.

von Rahul D. (rahul)


Lesenswert?

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.

von Marci W. (marci_w)


Lesenswert?

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

von Rainer W. (rawi)


Lesenswert?

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.

von Falk B. (falk)


Lesenswert?

Der Dummschwatzfaktor in diesem Forum steigt auch täglich um 
Größenordnungen schneller als der CO2 Anteil der Atmosphäre. 8-(

von Alexander (alecxs)


Lesenswert?

Du nachtriggerbares Monoflop Du!

von Georg M. (g_m)


Lesenswert?

> CO2

CO₂

von Manfred P. (pruckelfred)


Lesenswert?

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.

von Rolf Z. (rolf-z)


Lesenswert?

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

von Rolf Z. (rolf-z)


Lesenswert?

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.
von Veit D. (devil-elec)


Lesenswert?

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
Noch kein Account? Hier anmelden.