Zeitbegrenzung programmieren

Hi Leute,

ich versuche einen einfachen Stromkreis zu programmieren, bei dem ich über ein In- und Output versuche, den Stromkreis nur zeitlich begrenzt zu schließen. Ich habe jedoch keine Ahnung wie ich so eine zeitliche Begrenzung als Befehl schreibe. Über delay funktioniert es zur Zeit nicht. Momentan sieht mein Sketch so aus:
void setup() {
pinMode(7,OUTPUT);
pinMode(2,INPUT);
}

void loop() {

digitalWrite(7, HIGH);
// hier müsste ein Befehl rein, der bsw den Stromkreis für 5 sek offen lässt und dann permanent schließt.
digitalWrite(7, LOW);
}

Ich hoffe ihr könnt mir weiter helfen.
LG Tobi

Ablaufsteuerung
Meine Standardantwort zu Ablaufsteuerungen:

Eine Stichworte Sammlung für Google Suchen:
Endlicher Automat,
ProtoThreads,
State Machine,
Multitasking,
Coroutinen,
Ablaufsteuerung,
Schrittkette,
BlinkWithoutDelay,

Blink Without Delay
Die Nachtwächter Erklärung

MicroBahner/MobaTools
Intervall Macro
Multitasking Macros
INTERVAL Ersatzstoff
CooperativeTask

Deine Beschreibung ist sehr unverständlich.
Was genau meinst du mit einem Stromkreis ?
Was willst du genau erreichen ?

Und setze deinen Sketch in Code-Tags, dann ist dieser besser zu lesen.
Verwende dazu die Schaltfläche </> oben links im Editorfenster.

Hi, danke für die schnelle Anwtort.
Ich habe einen Stromkreis mit einer LED. Jetzt möchte ich über den Digital Eingang eine zeitliche Begrenzung programmieren, s.d. die LED nur 5 sek leuchtet. Ich bekomme die LED jedoch nur zum blinken bzw. zu einer zeitlichen Aus- und anschließender Anschaltung. Mein Ziel ist es jedoch, dass die LED einmalig für eine bestimmte Zeit angeht und anschließend ausbleibt.

Und wie soll das funktionieren ?
Wie sollen die 5 sek. gestartet werden ?

Wenn der Arduino eingeschaltet wird ?
An deinen Erklärungen solltest du auch arbeiten.

Hi

Glaube zwar nicht, daß Das Deine Lösung sein wird:
setup() wird nur 1x ausgeführt - den Kram darin versenken.

Dann ist natürlich für die zeit, die ‘der Stromkreis angeschaltet ist’ Nichts Anderes mit dem Arduino möglich.

Wenn Du MEHR machen willst, lese Dir die Links von Combie durch - Da werden Sie geholfen.

MfG

@tobi666

Bitte antworte im Tread und schicke keine repoort to moderator
Danke
Uwe

wenn ich die Befehle nur ins setup packe, dann sagt mit das Programm "Fehler beim Komplimieren für Arduino Uno".

Der Stromkreis bekommt die Spannung über den Arduino. Im Stromkreis ist eine LED, welche mit den digital Eingängen 2 und 7 geschaltet ist.
Mein Ziel ist es, nach dem Einschalten des Arduinos, die LED für eine bestimmte Zeit leuchten zu lassen. Dabei kann sie zu Beginn aus sein, für eine bestimmte Zeit leuchten und anschließend wieder ausgehen. Oder sie kann zu Beginn an sein, für eine bestimmte Zeit leuchten und anschließend ausgehen.
Meine Frage ist also, wie bekomme ich eine LED in einem Stromkreis über den digital Eingang so programmiert, dass sie nur zeitlich begrenzt leuchtet.

Möglicherweise soll es ja ein Monoflop werden:

void setup() {
  pinMode(7, OUTPUT);
  pinMode(2, INPUT_PULLUP);
}

void loop() {
  enum {WARTEN, EIN, AUS, NIMMERMEHR};
  static byte schritt = WARTEN;
  switch (schritt) {
    case WARTEN:
      if (!digitalRead(2)) {
        schritt = EIN;
      }
      break;
    case EIN:
      digitalWrite(7, HIGH);
      delay(5000);
      schritt = AUS;
      break;
    case AUS:
      digitalWrite(7, LOW);
      schritt = NIMMERMEHR;
      break;
  }
}

@agmue danke für die Hilfe, aber leider funktioniert es nicht. Die LED bleibt durchgängig aus.

Und ich dachte schon, in Combie's Post würde NICHTS fehlen - naja, Lesen muß man schon selber ... aber VORSICHT: ruck zuck lernt man sogar was dabei.

(deleted)

Hallo,

ich gehe jetzt davon aus das Du deinen Taster zwischen dem Pin2 und 5V+ angeschlossen hast. schau dir einfach mal das Beispiel in der IDE an Beispiel/digital/button

und den angegeben Link link

Wenn Du hast am laufen hast kannst Du doch erst mal ein delay einbauen. Wo ? na überleg mal.

Wenn du auf den zusätzlichen Widerstand verzichten willst , geht das ebenfalls. Dann schliesst Du den Taster zwischen pin2 und GND an. und benutzt im Setup eine andere Pin deffinition.

pinMode(2, INPUT_PULLUP);

alledings ist in diesm Fall die Logik umgekehrt. bei gedrücktem Taster ist der Eingang low.

das kannst du wieder umdehen (invertieren mit dem ! zeichen)

if (!digitalRead(2))

Wenn Du das alles verstanden hast, dann kannst Du mal überlegen wie du es hinbekommst das die LED nur einmal angeht, auch wenn der Taster gedrückt bleibt. Kleiner Tipp Flanke erkennen feststellen das sich der Zustand von nicht gedrückt auf gedrückt geändert hat.

Heinz

tobi666:
@agmue danke für die Hilfe, aber leider funktioniert es nicht. Die LED bleibt durchgängig aus.

Schalte mal den Eingang nach GND, dann funktioniert es, denn bei mir geht es ja auch :slight_smile:

Toby hör auf Deine Antworten auf diese Diskussion als “report to moderator” zu schicken.
Wenn Du antworten willst dann schreib einfach in das untenliegende Editorfenster oder clicke rechts unter dem Beitrag auf “Quote” wenn du den Beitrag ganz oder teilweise zitieren willst oder auf REPLY.

“report to moderator” ist dazu da den Moderatoren etwas mitzuteilen, wo sie eingreifen sollten also zB Beleidigungen, Spam, Probleme mit der Seite oder Zugang.

Grüße Uwe

... spätestens Jetzt sollte das 'moderator' in dem Link unter jedem Post auch irgendwie Sinn ergeben ... allerdings steht auch unter jedem Post Quote - bei den Eigenen sogar Modify ... Was uns Das nun wieder sagen soll ...

UNTER dem Thread das REPLY - öffnet den Editor zum Antwort schreiben, oder noch ein Stück drunter in die Box 'Quick Reply' eine 'schnelle Antwort' kritzeln - könnte als Antwort-Möglichkeit vom Erfinder gedacht gewesen sein.