INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Zeit - Verzögerung
09.01.2016, 09:29 (Dieser Beitrag wurde zuletzt bearbeitet: 09.01.2016 23:37 von Bitklopfer.)
Beitrag #1
Zeit - Verzögerung
Guten Morgen,
habe ein kleines Progr.
Ich möchte, dass der Sensor erst auslöst, wenn die Bewegung (X) Sek. anhält.
Ein delay(3000); in Zeile 11 verzögert die Auslösung 3 Sek.
Ich möchte aber, ledPin HIGH, wenn X > 3 Sek. else = LOW.
Wo muss ich da delay einsetzen ?
Danke euch.
LGB

Code:
int sensorPin = A0;
int ledPin = 9;
int sensorValue = 0;
int Schwellwert = 600;

void setup(){
pinMode (ledPin, OUTPUT);
}
void loop (){
  sensorValue = analogRead (sensorPin);
delay(3000);
  if (sensorValue > Schwellwert){
      digitalWrite (ledPin, HIGH);
    delay(10000);
    digitalWrite (ledPin, LOW);
    delay(1000);
  }else{
  }
}

Smile Schön dabei zu sein Smile
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
09.01.2016, 09:38 (Dieser Beitrag wurde zuletzt bearbeitet: 09.01.2016 09:47 von Claus_M.)
Beitrag #2
RE: Zeit - Verzögerung
(09.01.2016 09:29)bergfrei schrieb:  Guten Morgen,
habe ein kleines Progr.
Ich möchte, dass der Sensor erst auslöst, wenn die Bewegung (X) Sek. anhält.
Ein delay(3000); in Zeile 11 verzögert die Auslösung 3 Sek.
Ich möchte aber, ledPin HIGH, wenn X > 3 Sek. else = LOW.
Wo muss ich da delay einsetzen ?
Danke euch.
LGB


int sensorPin = A0;
int ledPin = 9;
int sensorValue = 0;
int Schwellwert = 600;

void setup(){
pinMode (ledPin, OUTPUT);
}
void loop (){
sensorValue = analogRead (sensorPin);
delay(3000);
if (sensorValue > Schwellwert){
digitalWrite (ledPin, HIGH);
delay(10000);
digitalWrite (ledPin, LOW);
delay(1000);
}else{
}
}
Guten Morgen,
ich glaube ein ein Delay ist in dem Fall nicht das richtige. Weil der ja immer 3 Sekunden verzögert, Du möchtest - wenn ich das richtig verstanden habe - auslösen, wenn die Bewegung länger als 3 Sekunden anhält. Du müsstest dir also über milis merken, wann die Bewegung angefangen hat und in der Schleife immer die verstrichene Zeit vergleichen, ist die Differenz >= 3 Sek, dann den Pegel auf HIGH.

Noch ein Beispiel dafür findest Du hier:
Beispiel Milis
lg, Claus
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
09.01.2016, 09:48
Beitrag #3
RE: Zeit - Verzögerung
(09.01.2016 09:38)Claus_M schrieb:  
(09.01.2016 09:29)bergfrei schrieb:  Guten Morgen,
habe ein kleines Progr.
Ich möchte, dass der Sensor erst auslöst, wenn die Bewegung (X) Sek. anhält.
Ein delay(3000); in Zeile 11 verzögert die Auslösung 3 Sek.
Ich möchte aber, ledPin HIGH, wenn X > 3 Sek. else = LOW.
Wo muss ich da delay einsetzen ?
Danke euch.
LGB


int sensorPin = A0;
int ledPin = 9;
int sensorValue = 0;
int Schwellwert = 600;

void setup(){
pinMode (ledPin, OUTPUT);
}
void loop (){
sensorValue = analogRead (sensorPin);
delay(3000);
if (sensorValue > Schwellwert){
digitalWrite (ledPin, HIGH);
delay(10000);
digitalWrite (ledPin, LOW);
delay(1000);
}else{
}
}
Guten Morgen,
ich glaube ein ein Delay ist in dem Fall nicht das richtige. Weil der ja immer 3 Sekunden verzögert, Du möchtest - wenn ich das richtig verstanden habe - auslösen, wenn die Bewegung länger als 3 Sekunden anhält. Du müsstest dir also über milis merken, wann die Bewegung angefangen hat und in der Schleife immer die verstrichene Zeit vergleichen, ist die Differenz >= 3 Sek, dann den Pegel auf HIGH.
lg, Claus
....... Ich habs befürchtet - meine Lieblingsschleife Big Grin
Danke dir
LG
Gerd

Smile Schön dabei zu sein Smile
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
09.01.2016, 10:13
Beitrag #4
RE: Zeit - Verzögerung
(09.01.2016 09:48)bergfrei schrieb:  ...
....... Ich habs befürchtet - meine Lieblingsschleife Big Grin
Danke dir
LG
Gerd

Moin,
genau, das ist ein typischer Anwendungsfall für "Blinken ohne delay"
Wenn dein Ereignis weg ist dann wird die Anfangszeit wieder gelöscht sofern die 3 Sekunden nicht schon verstrichen sind.
lgbk

1+1 = 10 Angel ...und ich bin hier nicht der Suchmaschinen-Ersatz Dodgy...nur mal so als genereller Tipp..
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
09.01.2016, 10:23 (Dieser Beitrag wurde zuletzt bearbeitet: 09.01.2016 10:28 von MaHaI976.)
Beitrag #5
RE: Zeit - Verzögerung
Es ist aber nicht so schwer...

du legst ja erstmal ms fest, damit der Arduino weiß dass du damit arbeiten willst...
Code:
long ms = 0;
dann läßt du die einfach hochzählen, sobald dein Ereigniss eintritt. (in der loop)
Code:
ms = millis();
if (Sensorwert > Schwellwert)
{
for (ms = 0, ms < Triggerzeit, ms++)
if (ms = Triggerzeit)
{starte Aktion;}
tritt das Abbruchereignis ein läßt du die ms auf 0 setzen
Code:
else ms = 0;
wenn der Zielwert erreicht wird löst du deine Aktion aus und setzt ms auf 0


die Code- Schnipsel sind natürlich nicht so einsetzbar, sonder nur mal grob umrissen, wie der Ablauf sein sollte....
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
09.01.2016, 12:38
Beitrag #6
RE: Zeit - Verzögerung
(09.01.2016 10:23)MaHaI976 schrieb:  Es ist aber nicht so schwer...

du legst ja erstmal ms fest, damit der Arduino weiß dass du damit arbeiten willst...
Code:
long ms = 0;
dann läßt du die einfach hochzählen, sobald dein Ereigniss eintritt. (in der loop)
Code:
ms = millis();
if (Sensorwert > Schwellwert)
{
for (ms = 0, ms < Triggerzeit, ms++)
if (ms = Triggerzeit)
{starte Aktion;}
tritt das Abbruchereignis ein läßt du die ms auf 0 setzen
Code:
else ms = 0;
wenn der Zielwert erreicht wird löst du deine Aktion aus und setzt ms auf 0


die Code- Schnipsel sind natürlich nicht so einsetzbar, sonder nur mal grob umrissen, wie der Ablauf sein sollte....
Danke liebe Leute - Danke
LGB

Smile Schön dabei zu sein Smile
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
09.01.2016, 12:50
Beitrag #7
RE: Zeit - Verzögerung
(09.01.2016 10:23)MaHaI976 schrieb:  Es ist aber nicht so schwer...

du legst ja erstmal ms fest, damit der Arduino weiß dass du damit arbeiten willst...
Code:
long ms = 0;
dann läßt du die einfach hochzählen, sobald dein Ereigniss eintritt. (in der loop)
Code:
ms = millis();
if (Sensorwert > Schwellwert)
{
for (ms = 0, ms < Triggerzeit, ms++)
if (ms = Triggerzeit)
{starte Aktion;}
tritt das Abbruchereignis ein läßt du die ms auf 0 setzen
Code:
else ms = 0;
wenn der Zielwert erreicht wird löst du deine Aktion aus und setzt ms auf 0


die Code- Schnipsel sind natürlich nicht so einsetzbar, sonder nur mal grob umrissen, wie der Ablauf sein sollte....

Sorry, aber ich bin mir nicht sicher, weil er am Anfang immer in den else-Zweig rutscht kommt er nie in die Bedingung, ms bleibt so immer 0, oder??

lg,
Claus
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
10.01.2016, 20:14
Beitrag #8
RE: Zeit - Verzögerung
Passe es mal an deinen Sketch an und stell es mal hier ein....
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  TinyGPSplus: Zeit (1/100 sec) auslesen von GPS Modul GY-NEO-6M V2 HaWe 0 802 23.07.2015 21:20
Letzter Beitrag: HaWe
  DS18B20 - Zeit beim Auslesen verkürzen? ArduPI 3 1.345 09.01.2015 19:00
Letzter Beitrag: ArduPI
  Bewegungsmelder die ganze Zeit aktiv C++Developer2000 5 1.144 04.01.2015 15:27
Letzter Beitrag: Thorsten Pferdekämper
  Zeit eines anliegenden analogen Signals messen scritch 11 2.527 15.12.2014 17:26
Letzter Beitrag: scritch
  Interrupts für eine bestimmte Zeit unterbrechen?? kai.l 5 1.317 13.10.2014 14:34
Letzter Beitrag: kai.l
  Temperaturabfrage ohne Verzögerung futti0 11 2.149 17.09.2014 14:20
Letzter Beitrag: futti0
  Dimmen nach Zeit TrashCo 16 3.649 22.02.2014 12:34
Letzter Beitrag: TrashCo

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste