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:
  • 1 Bewertungen - 2 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Loop reset
08.12.2015, 14:25
Beitrag #9
RE: Loop reset
aahh, ok

danke für die erläuterung Smile

Nicht denken,...
...nachdenken... Rolleyes
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
08.12.2015, 14:32
Beitrag #10
RE: Loop reset
So habe etwas geändert und alles übersichtlicher gemacht (nach meine Mengung)
Wann sollte de timer stoppen:

Bei Schwimmer hoch muss die pumpe An und timer muss starten (dass klappt schon).
Bei Schwimmer unter muss die pumpe Aus (dass klappt schon) aber die timer stoppt nicht und bekomme dann jedes mal "Hochwasser Alarm"

Wenn ich auf abschalten druck muss dass "Hochwasser Alarm" stoppen.

Code:
const int pumpe = 2;   // pumpe ausgang
const int alarm = 6;             //buzzer
const int schwimmer = 7;     //Schwimmerschalter
const int abschalt = 8;         //abschalt button
const int ledPin = 13;          // für flashlight


int pumpeState   = LOW;
int alarmState  = LOW;
int schwimmerState = LOW;
int abschaltState = LOW;

int runTimer = 1;
int runFor = 60; // Zeit in seconden



void setup() {
  pinMode (pumpe, OUTPUT);
  pinMode (alarm, OUTPUT);
  pinMode (schwimmer, INPUT);
  pinMode (abschalt, INPUT);


  Serial.begin(9600);           //Monitor function an
  Serial.println ("Programm lauft");
}

void loop()
  {
    schwimmerState = digitalRead(schwimmer);
  if (schwimmerState == HIGH)
  { digitalWrite(pumpe, HIGH);
  hochwasser();
   }
  else
  {
    digitalWrite(pumpe, LOW);              //hier muss auch die timer stoppen
  
  }
}
void hochwasser() {
  
   if(runTimer == 1){
          digitalWrite(alarm,LOW); // Relais Aus bei Countdown
          
          Serial.println("TIMER=");
          //Start timer
          timer();
       } else {
          digitalWrite(alarm,HIGH); // Relais An wen Countdown = 0
    
       }
       runTimer = 0;
       delay(250);
       for(int duration = 0; duration < 100; duration ++){
          digitalWrite(ledPin, HIGH);
          delayMicroseconds(500);
          digitalWrite(ledPin, LOW);
          delayMicroseconds(500);
       }

       delay(250);
    }
    
    void timer() {
       for(int timer = runFor;timer > 0; --timer){
       if(timer >= 10)
       Serial.println(timer);
       delay(1000);
       }
       //Serial.println(" Hochwasser Alarm!");
  }

Mit freundliche grüßen
Andreas
--
Es tut mir Leid dass ich nicht immer oder direkt ihre Antwort verstehe, durch Konzentration Probleme ist es für mich leichter zu lehren durch "Learning by seeing" bitte um Verständnis.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
08.12.2015, 14:53
Beitrag #11
RE: Loop reset
moin,

also das du den Alarmauswurf immer bekommst, liegt daran, das er an der falschen stelle steht, behaupte ich jetzt jedenfall mal Smile


was soll denn void timer bringen?

ich sehe das so das er runter zählt und immer wenn er noch größer als 10 ist deine ausgabe wirft, aber unter 10 zählt er einfach nur gegen null...

was soll der denn eigentlich bewirken, zumindestens unter 10?


gruss

Nicht denken,...
...nachdenken... Rolleyes
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
08.12.2015, 15:08 (Dieser Beitrag wurde zuletzt bearbeitet: 08.12.2015 15:30 von hotsystems.)
Beitrag #12
RE: Loop reset
Schreib doch bitte mal, was genau bei "void Hochwasser()" passieren soll.

Ich sehe aktuell, wenn Schwimmer = HIGH dann startet die Pumpe und gleichzeitig der "Alarm-Timer".
Was soll dieser machen?

Ich denke, man kann das einfach lösen, wenn man genau weiß, was er machen soll.

Und ich möchte keinen Fehler einbauen.

Wenn du z.B. die Library "SimpleTimer" eisetzt, kannst du eine Zeitspanne eintragen, ab wann der Timer aktiv werden soll.

Den kannst du dann mit einem entsprechenden Befehl (abschalt Button) wieder ausschalten.

Sieh dir die Lib mal an.
http://playground.arduino.cc/Code/SimpleTimer

Dieser Timer benutzt auch keine delays, somit blockierst du nie deinen Atmega.

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
08.12.2015, 15:32
Beitrag #13
RE: Loop reset
Habe Heute soviel herum gebastelt dass ich der überblicke nicht mehr habe.
Mache für Heute Schluss sonst wird ich noch verrückt Tongue Huh Angel Dodgy

Noch eben meine letzte Version.

Code:
const int pumpe = 2;   // pumpe ausgang
const int alarm = 6;             //buzzer
const int schwimmer = 7;     //Schwimmerschalter
const int abschalt = 8;         //abschalt button
const int ledPin = 13;          // für flashlight


int pumpeState   = LOW;
int alarmState  = LOW;
int schwimmerState = LOW;
int abschaltState = LOW;

int runTimer = 1;
int runFor = 12; // Zeit in seconden



void setup() {
  pinMode (pumpe, OUTPUT);
  pinMode (alarm, OUTPUT);
  pinMode (schwimmer, INPUT);
  pinMode (abschalt, INPUT);


  Serial.begin(9600);           //Monitor function an
  Serial.println ("Programm lauft");
}

void loop()
  {
    schwimmerState = digitalRead(schwimmer);
  if (schwimmerState == HIGH)
  { digitalWrite(pumpe, HIGH);              //hier muss die pumpe und timer starten
   timer();
   }
  else
  {
    digitalWrite(pumpe, LOW);              //hier muss auch die timer (void timer)stoppen
  
  }
}
    void timer() {
       for(int timer = runFor;timer > 0; --timer){
       if(timer >= 0)
       Serial.println(timer);
       delay(1000);
       }
      Serial.println(" Hochwasser Alarm!");
  }
  void hochwasser() {
  
   if(runTimer == 1){
          digitalWrite(alarm,LOW); // Relais Aus bei Countdown
          
          Serial.println("TIMER=");
          //Start timer
        
       } else {
          digitalWrite(alarm,HIGH); // Relais An wen Countdown = 0
    
       }
       runTimer = 0;
       delay(250);
       for(int duration = 0; duration < 100; duration ++){
          digitalWrite(ledPin, HIGH);
          delayMicroseconds(500);
          digitalWrite(ledPin, LOW);
          delayMicroseconds(500);
       }

       delay(250);
    }

Mit freundliche grüßen
Andreas
--
Es tut mir Leid dass ich nicht immer oder direkt ihre Antwort verstehe, durch Konzentration Probleme ist es für mich leichter zu lehren durch "Learning by seeing" bitte um Verständnis.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
08.12.2015, 15:35
Beitrag #14
RE: Loop reset
ok,

wie ich das verstehe willst du per interrupt unterbrechen, dazu dann bitte tutorial über interrupt lesen.
ansonsten verstehe ich nicht was du meinst, falls es das nich ist,... bitte erklären


Interrupts - arduino.cc


gruss

Nicht denken,...
...nachdenken... Rolleyes
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
08.12.2015, 15:42
Beitrag #15
RE: Loop reset
Interrupt wäre ganz schlecht, kann ich aber nicht sehen.

Bitte beantworte doch noch kurz meine letzte Frage von oben.

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
08.12.2015, 15:47 (Dieser Beitrag wurde zuletzt bearbeitet: 08.12.2015 15:48 von Hilgi.)
Beitrag #16
RE: Loop reset
moin,

na ich meine das hier:

Code:
if (schwimmerState == HIGH)
  { digitalWrite(pumpe, HIGH);              //hier muss die pumpe und timer starten
   timer();
   }
  else
  {
    digitalWrite(pumpe, LOW);              //hier muss auch die timer (void timer)stoppen
  
  }


und er sagte er will falls schwimmerState = LOW, das timer() stoppt.

wie sonst will er timer() unterbrechen?, bzw die abfrage läuft ja eigentlich erst ab, sobald timer() beendet ist...

ok jetzt bin ich mehr verwirrt als eben Big Grin

gruss

*denk*
vlt weiss er garnicht, das solange timer() läuft, keine abfrage statt findet, und das eigentliche probleme im timer() an sich liegt....
*/denk*

Nicht denken,...
...nachdenken... Rolleyes
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Arduino funktioniert immer erst nach reset Maxi290997 11 328 25.07.2017 09:38
Letzter Beitrag: Maxi290997
  switch case funktion ausser halb loop ??? huber5093 13 1.328 12.04.2017 15:26
Letzter Beitrag: Tommy56
  Loop Schleife abbrechen mittlig1977 1 556 06.01.2017 22:18
Letzter Beitrag: Tommy56
Question Webserver, Client, Loop Marc2014 6 724 29.07.2016 21:04
Letzter Beitrag: Marc2014
  Funktion in Loop einmalig ausführen Haustechno 4 1.021 09.03.2016 22:43
Letzter Beitrag: Haustechno
  Gleichzeitig ein Reset ? arduinofan 3 481 02.01.2016 20:21
Letzter Beitrag: Bitklopfer
  Serielle Ausgabe, Reset ? Mathias 1 875 12.11.2015 18:12
Letzter Beitrag: hotsystems
  Unterprogram, loop, while Marc2014 1 1.049 27.08.2015 19:11
Letzter Beitrag: hotsystems
  AnalogRead aus Loop-Schleife auskoppeln dna5544 7 1.774 16.07.2015 12:31
Letzter Beitrag: dna5544
  Arduino Leonardo Reset für UART Norbie 4 1.130 04.07.2015 09:10
Letzter Beitrag: Norbie

Gehe zu:


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