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
Bitte um Hilfe bei 2 Timern
03.12.2013, 18:40
Beitrag #1
Bitte um Hilfe bei 2 Timern
Hallo,
ich habe ein problem mit 2 Timern die ich gerne einen
auf 30 min. und den zweiten auf 60 min. starten lassen
möchte. Leider wenn ich beiden andere Werte gebe,

(if(ctr_timer(timer_2, 1800000)) {

klappt es leider nicht mehr. Wenn ich beide gleich setze funktioniert es.
timer = millis() + 1800000;
//gebe ich bei waitTime einen Wert in ms ein funktioniert das für beide gleich.

Code:
#define Taster_1   2  //Taster 1 Lüftung 1
#define Taster_2   4  //Taster 2 Lüftung 2
#define Taster_3   5  //Taster 3 Lüftungenen AUS

#define Relay_1   7   // Relais 1 Lüftung 1
#define Relay_2   8   // Relais 2 Lüftung 2



long timer_1 = 0;  // Timer für die Relais Lüftungslaufzeit
long timer_2 = 0;
long timer_3 = 0;


boolean z1 = 0;
boolean z2 = 0;
boolean z3 = 0;


// Timer Steuerung Lüfter

boolean ctr_timer(long &timer, unsigned int waitTime)
{
  if(timer < millis()) {
    timer = millis() + waitTime; //gebe ich bei waitTime einen Wert in ms ein funktioniert das für beide gleich
    return true;
  }
  else {
    return false;
  }
  
  
}
void setup()
{
  for(int i=7;i<=8;i++)      // PortAusgang 7 bis 8 als Ausgang
  {
    pinMode (i, OUTPUT);    // Ausgang
    digitalWrite(i, LOW);   // setze auf low
  }
  for(int i=2;i<=5;i++)     // Port Eingang 2 bis 5 als Eingang
  {
    pinMode (i, INPUT);    // Eingang
    digitalWrite(i, LOW);  // setze auf low
  }

}
void loop()
{
  // Taster 1 ***********************************************
  if(digitalRead(Taster_1)) {
    z1      = true;
    timer_1 = 0;
  }  
  if(ctr_timer(timer_1, 10000)) {   //gebe ich hier einen zu hohen Wert ein (z.b.für 30min.= 1800000 ms kappt das nicht
    if(z1 == true) {
      z1 = false;
      digitalWrite(Relay_1, HIGH);  // Relay 1 schaltet ein für * Zeit
    }
    else {
      digitalWrite(Relay_1, LOW);  // Relay 1 schaltet aus
    }
  }

  // Taster 2 ************************************************  
  if(digitalRead(Taster_2)) {
    z2      = true;
    timer_2 = 0;
  }  
  if(ctr_timer(timer_2, 10000)) {   //gebe ich hier einen zu hohen Wert ein (z.b.für 30min.= 1800000 ms kappt das nicht
    if(z2 == true) {
      z2 = false;
      digitalWrite(Relay_2, HIGH);  // Relay 2 schaltet ein für * Zeit
    }
    else {
      digitalWrite(Relay_2, LOW);   // Relay 2 schaltet aus
    }
  }
// Taster 3 ***********************************************
if(digitalRead(Taster_3)) {
    z2      = true;
    timer_3 = 0;
  }  
  if(ctr_timer(timer_3, 10)) {
    if(z2 == true) {
      z2 = false;
      digitalWrite(Relay_2, LOW);  // Relay's aus  beide Lüftungen Aus
      digitalWrite(Relay_1, LOW);
  
    }
    }
  }

Ist das der richtige Weg um mehrere Timer zu setzen ohne delay ??


Bitte um Hilfe
Danke
Gruß Chris
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
03.12.2013, 20:17 (Dieser Beitrag wurde zuletzt bearbeitet: 03.12.2013 20:24 von chris222.)
Beitrag #2
RE: Bitte um Hilfe bei 2 Timern
Hab's grade gefunden
int waitTime geht nur bis 32k

Hier nochmal der richtige Code falls Ihn jemand brauchen kann.

Code:
#define Taster_1   2  //Taster 1 Lüftung 1
#define Taster_2   4  //Taster 2 Lüftung 2
#define Taster_3   5  //Taster 3 Lüftungenen AUS

#define Relay_1   7   // Relais 1 Lüftung 1
#define Relay_2   8   // Relais 2 Lüftung 2



long timer_1 = 0;  // Timer für die Relais Lüftungslaufzeit
long timer_2 = 0;
long timer_3 = 0;


boolean z1 = 0;
boolean z2 = 0;
boolean z3 = 0;


// Timer Steuerung Lüfter

boolean ctr_timer(long &timer, unsigned long int waitTime)
{
  if(timer < millis()) {
    timer = millis() + waitTime;
    return true;
  }
  else {
    return false;
  }
  
  
}
void setup()
{
  for(int i=7;i<=8;i++)      // PortAusgang 7 bis 8 als Ausgang
  {
    pinMode (i, OUTPUT);    // Ausgang
    digitalWrite(i, LOW);   // setze auf low
  }
  for(int i=2;i<=5;i++)     // Port Eingang 2 bis 5 als Eingang
  {
    pinMode (i, INPUT);    // Eingang
    digitalWrite(i, LOW);  // setze auf low
  }

}
void loop()
{
  // Taster 1 ***********************************************
  if(digitalRead(Taster_1)) {
    z1      = true;
    timer_1 = 0;
  }  
  if(ctr_timer(timer_1, 3600000)) {  
    if(z1 == true) {
      z1 = false;
      digitalWrite(Relay_1, HIGH);  // Relay 1 schaltet ein für 3600000 ms
    }
    else {
      digitalWrite(Relay_1, LOW);  // Relay 1 schaltet aus
    }
  }

  // Taster 2 ************************************************  
  if(digitalRead(Taster_2)) {
    z2      = true;
    timer_2 = 0;
  }  
  if(ctr_timer(timer_2, 1800000)) {  
    if(z2 == true) {
      z2 = false;
      digitalWrite(Relay_2, HIGH);  // Relay 2 schaltet ein für 1800000 ms
    }
    else {
      digitalWrite(Relay_2, LOW);   // Relay 2 schaltet aus
    }
  }
// Taster 3 ***********************************************
if(digitalRead(Taster_3)) {
    z2      = true;
    timer_3 = 0;
  }  
  if(ctr_timer(timer_3, 10)) {
    if(z2 == true) {
      z2 = false;
      digitalWrite(Relay_2, LOW);  // Relay's aus  beide Lüftungen Aus
      digitalWrite(Relay_1, LOW);
  
    }
    }
  }
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Prüfung eines Drucksensors mit Hilfe des Arduino r4c3 1 51 19.10.2017 20:21
Letzter Beitrag: Tommy56
  Wie wird bitte der Pin EN am HC05 gesetzt ? comfan 3 225 26.09.2017 16:34
Letzter Beitrag: Alfrede
Photo Hilfe bei meinem Arduino Projekt Niklas 10 358 23.09.2017 21:05
Letzter Beitrag: Niklas
  Ublox Neo 6M und Nextion ! Bitte um Hilfe. b3ta 19 1.086 13.07.2017 14:52
Letzter Beitrag: Tommy56
  Anfänger sucht erfahrene Hilfe Customizer 21 1.404 11.07.2017 21:37
Letzter Beitrag: Customizer
  eine einfache Xor Bitte ? himbeersirup 1 305 08.06.2017 09:15
Letzter Beitrag: MicroBahner
  bitte, was ist "link GND" bergfrei 2 351 21.05.2017 15:14
Letzter Beitrag: bergfrei
  Bitte um Hilfe Arduino Nano-MAX7219-PIR_Sensor Opa_Klaus 35 2.013 20.05.2017 21:11
Letzter Beitrag: Opa_Klaus
  Brauche Hilfe für meine Abfüllanlage/ millis() Slash96 8 775 10.05.2017 21:04
Letzter Beitrag: MicroBahner
Question Problem beim Hochladen auf AtTiny45. Hilfe -.- Jonas Lindenblatt 17 1.325 16.04.2017 12:58
Letzter Beitrag: Jonas Lindenblatt

Gehe zu:


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