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
12.01.2016, 10:23
Beitrag #9
RE: Zeit - Verzögerung
(10.01.2016 20:14)MaHaI976 schrieb:  Passe es mal an deinen Sketch an und stell es mal hier ein....
So hier der geänderte Sketch - Bitte wo wird die Triggerzeit declariert?
Gruß Gerd
-------

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

void setup() {
pinMode (ledPin, OUTPUT);
}
void loop () {

ms = millis(); // Zähler Schleife warten

sensorValue = analogRead (sensorPin);
if (sensorValue > Schwellwert)
{
for (ms = 0, ms < Triggerzeit, ms++)
if (ms = Triggerzeit)

}
digitalWrite (ledPin, LOW); // war HIGH
delay(10000);
digitalWrite (ledPin, HIGH); // war LOW

}
else {
ms = 0; // Verzoegerung auf Null setzen
}
}

Smile Schön dabei zu sein Smile
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
12.01.2016, 10:49
Beitrag #10
RE: Zeit - Verzögerung
Hallo Gerd,

so wird das nicht funktionieren.
Am Anfang der Loop setzt du die Variable "ms" auf millis (ms=millis) und in der "for-Schleife" verwendest du die Variable "ms" als Zähler.

Das geht so nicht.
Hier war das Beispiel leider nur ein "schlechtes" Beispiel, welches aber nicht direkt verwendet werden darf.

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
12.01.2016, 19:05
Beitrag #11
RE: Zeit - Verzögerung
Gib mir mal nen Augenblick- schaue nachher mal drauf...
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
13.01.2016, 06:07
Beitrag #12
RE: Zeit - Verzögerung
Welche Fehlermeldung kommt denn?

Ich würde übrigens in dem Zuge das riesige Delay auch ersetzen... wenn du schon die ms zählst und davon abhängig Aktionen startest würde ich auch dabei bleiben...

wenn mir etwas zu kniffelig ist, mache ich einfach mal eine Tabelle wo ich mir aufliste was wann passieren soll und wovon es abhängt....
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
14.01.2016, 22:09
Beitrag #13
RE: Zeit - Verzögerung
Hallo zusammen,
will da doch auch mal meine Version dazu beitragen:
Code:
int sensorPin = A0;
int ledPin = 9;
int sensorValue = 0;
int Schwellwert = 600;
byte iflag = 0;  // Input Status
byte mflag = 0;  // ModusFlag
byte aflag = 0;  // Alarmflag
const unsigned int maxfehler = 50000;  // Anzahl der zugelassenen Erfassungsluecken
unsigned int erfassfehler = 0;   // Anzahl der Erfassungsluecken
unsigned long int startzeit;
unsigned long int minerfasszeit = 3000;  //minimale Erfasszeit
unsigned long int erfasszeit;    // Zeit seit erstem erfassen
unsigned long int alarmzeit = 10000;  // Dauer des Alarms
unsigned long int alarmpause = 5000;  // Zwangspause nach Alarm



void setup(){
pinMode (ledPin, OUTPUT); // Ausgangssignal
pinMode(2,INPUT_PULLUP); // Tastereingang als Testeingang
pinMode (6, OUTPUT);  // Fehlerzahl erreicht

}
void loop (){
  // also entweder DigitalRead
  if(digitalRead(2) == 0) sensorValue = 1000;   // Sensorvalue setzen by Taster
     else sensorValue = 100;

  // oder AnalogRead  
//  sensorValue = analogRead (sensorPin);

  if (sensorValue > Schwellwert)   // wenn Schwellwert ueberschritten iflag setzen
      iflag = 1;
      else iflag = 0;
  
   if(iflag == 1 && mflag == 0){    // Wenn Schwellwert ueberschritte und mflag = 0
    startzeit = millis(); // Startzeit sichern bei erstem erkennen
    mflag = 1; // Modusflag auf 1 da erste Erkkennung erfasst
    digitalWrite(6,LOW);
    erfassfehler = 0;
   }

   if(mflag == 1 && iflag == 1){     // Wenn Schwellwert ueberschritten pruefen ob minerfasszeit erreicht
   erfasszeit = millis() - startzeit;  // Erfassungszeit berechnen
       if(erfasszeit >= minerfasszeit){  // Erfasszeit pruefen
       aflag = 1;  // Alarm aktivieren
       }
   }
  
   if(mflag == 1 && iflag == 0){        // Wenn Erfasszeit laeuft erst Fehler pruefen
    erfassfehler++;
  
    if(erfassfehler >= maxfehler){
      digitalWrite(6,HIGH);
      mflag = 0;
      erfasszeit = 0;
    }
   }

//   if(mflag == 0)  digitalWrite(6,LOW);  // LED aus
      
  if(aflag == 1){
      
      digitalWrite (ledPin, HIGH);
    delay(3000);
    aflag = 0;
  }
  else {
    digitalWrite (ledPin, LOW);

  }
  
}
...der Ausgang wird aktiv wenn die Mindestzeit erreicht bzw. überschritten wird.
Zudem werden kurze Aussetzer überbrückt.
Nur die Ausgangsdauer müßte noch überarbeitet werden.
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
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.528 15.12.2014 17:26
Letzter Beitrag: scritch
  Interrupts für eine bestimmte Zeit unterbrechen?? kai.l 5 1.318 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.650 22.02.2014 12:34
Letzter Beitrag: TrashCo

Gehe zu:


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