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
http://capsicum-felicitas.de.tl
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
http://capsicum-felicitas.de.tl
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
http://capsicum-felicitas.de.tl
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
http://capsicum-felicitas.de.tl
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
Question Webserver, Client, Loop Marc2014 6 364 29.07.2016 21:04
Letzter Beitrag: Marc2014
  Funktion in Loop einmalig ausführen Haustechno 4 644 09.03.2016 22:43
Letzter Beitrag: Haustechno
  Gleichzeitig ein Reset ? arduinofan 3 336 02.01.2016 20:21
Letzter Beitrag: Bitklopfer
  Serielle Ausgabe, Reset ? Mathias 1 596 12.11.2015 18:12
Letzter Beitrag: hotsystems
  Unterprogram, loop, while Marc2014 1 804 27.08.2015 19:11
Letzter Beitrag: hotsystems
  AnalogRead aus Loop-Schleife auskoppeln dna5544 7 1.473 16.07.2015 12:31
Letzter Beitrag: dna5544
  Arduino Leonardo Reset für UART Norbie 4 830 04.07.2015 09:10
Letzter Beitrag: Norbie
  auslagern von Funktion aus der void loop? MaHaI976 19 2.868 22.06.2015 20:38
Letzter Beitrag: MaHaI976
  Loop nur einmal durchlaufen wowa 7 1.840 02.06.2015 20:05
Letzter Beitrag: wowa
  adruino mega 2560 reset manne 20 2.323 06.04.2015 14:31
Letzter Beitrag: Thorsten Pferdekämper

Gehe zu:


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