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
showerloop mit Controllino
29.03.2020, 21:12 (Dieser Beitrag wurde zuletzt bearbeitet: 29.03.2020 21:40 von Franz54.)
Beitrag #73
RE: showerloop mit Controllino
Ich würde es so machen wie ich geschrieben habe. Bei jedem Tastendruck nicht nur das einschalten was ein gehört, sondern auch das ausschalten was da nicht eingeschalten sein soll.

Du mußt dir im klaren sein, dass dieses ein- und ausschalten ja nicht langsam nacheinander erfolgt, sondern extrem schnell, also eigentlich fast "gleichzeitig". Das sind ganz schön Induktionen. Ich würde vielleicht sogar zwischen den einzelnen Ein- und Ausschaltungen Pausen programmieren, dass nicht alles "gleichzeitig" ein- und ausschaltet.

Wenn man im Programm vorsieht, dass bei jedem Tastenbefehlt ALLES erst mal "gleichzeitig" ausgeschalten wird, und dann wieder fast alles "gleichzeitig" ein, das sind sehr massive induktive Lasten. Das ist nicht gut, das kann auch immer wieder mal das System völlig von der Rolle bringen. Dann steht das Ding im Wald und reagiert auf nichts mehr Confused

Franz

PS: Wegen dem Speicher müßte doch das hier passen. Im Maxi ist ja offenbar ein ATmega2560

https://www.youtube.com/watch?v=Fnzn85oWM_Q
Hier was zum Thema Deutsche Politik Angry
Und hier zum Thema richtige Politik Big Grin
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
30.03.2020, 19:02
Beitrag #74
RE: showerloop mit Controllino
(29.03.2020 19:32)Tommy56 schrieb:  So genau habe ich es nicht gelesesen. Prima Franz.

Eine andere Variante wäre: Wenn sich der Wert der Taste ändert --> alles auf aus und dann das einschalten, was man braucht.

Gruß Tommy

Hallo Tommy,
das von Franz ist richtig, hab nicht daran gedacht, dass man auch mal aus versehen eine falsche Taste drücken kann.
Ich bin vom Idealzustand ausgegangen, dass nach jedem Programm die Taste "9" gedrückt wird und somit alles ausgeschaltet wird. Meinst du damit, als allererste Aktion in der loop alles ausschalten, etwa so?

LG Breze

Code:
void loop() {
  // Gedrückte Taste abfragen
  char taste = tastenfeld.getKey();
  if (taste) { // da war was
          digitalWrite(ventil_1Pin, LOW);          //Ventil 1 schließen
          digitalWrite(ventil_2Pin, LOW);          //Ventil 2 schließen
          digitalWrite(ventil_3Pin, LOW);          //Ventil 3 schließen
          digitalWrite(ventil_4Pin, LOW);          //Ventil 4 schließen
          digitalWrite(ventil_5Pin, LOW);          //Ventil 5 schließen
          digitalWrite(lampePin, LOW);             //Betriebslampe aus
          digitalWrite(uvPin, LOW);                //UV-Entkeimung aus
          digitalWrite(pumpeA, LOW);                 //Pumpe aus
    if (taste >= '0' && taste <= '9') { // eine Ziffer
      switch (taste) { // Auswahl
        case '1':
          // 1 = Betriebslampe, duschen, Ventil 2, 4, 5, UV und Pumpe
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
30.03.2020, 19:08
Beitrag #75
RE: showerloop mit Controllino
(30.03.2020 19:02)Breze schrieb:  Ich bin vom Idealzustand ausgegangen, dass nach jedem Programm die Taste "9" gedrückt wird und somit alles ausgeschaltet wird. Meinst du damit, als allererste Aktion in der loop alles ausschalten, etwa so?
Nö. Da der Taster mit hoher Wahrscheinlichkeit länger gedrückt ist, als ein loop-Durchlauf braucht, würde laufend ausgeschaltet.

Du musst Dir den alten Schaltzustand merken (initial 9 = aus?).
Wenn der sich ändert: in alt merken, ausschalten und dann das einschalten was zu dieser Nummer gehört. Damit kann der 10 Minuten auf 1 drücken und es passiert nix.

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
30.03.2020, 19:23
Beitrag #76
RE: showerloop mit Controllino
Hallo Franz,
was denkst du, wieviel Pause ich zwischen den einzelnen Geräten nehmen soll, sind 500 Millisekunden genug?

LG Breze
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
30.03.2020, 19:32
Beitrag #77
RE: showerloop mit Controllino
(30.03.2020 19:08)Tommy56 schrieb:  Du musst Dir den alten Schaltzustand merken (initial 9 = aus?).
Wenn der sich ändert: in alt merken, ausschalten und dann das einschalten was zu dieser Nummer gehört. Damit kann der 10 Minuten auf 1 drücken und es passiert nix.

Das versteh ich jetzt nicht, kannst du mir das genauer beschreiben?

Gruß Breze
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
30.03.2020, 19:42
Beitrag #78
RE: showerloop mit Controllino
Code:
char alt = '9'; // Wenn 9 aus ist
....

void loop() {
  // Gedrückte Taste abfragen
  char taste = tastenfeld.getKey();
  if (taste) { // da war was
    if (taste != alt) {
      alt = taste;
      // alles aus
    }
     // Dann Dein bisheriger ablauf Bei Aus brauchst Du nichts zu tun
     if (taste >= '0' && taste <= '9') { // eine Ziffer wenn 9 = aus, dann <'9'
   ....
     }
  }
}

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
30.03.2020, 20:49 (Dieser Beitrag wurde zuletzt bearbeitet: 30.03.2020 20:56 von Franz54.)
Beitrag #79
RE: showerloop mit Controllino
(30.03.2020 19:23)Breze schrieb:  Hallo Franz,
was denkst du, wieviel Pause ich zwischen den einzelnen Geräten nehmen soll, sind 500 Millisekunden genug?

LG Breze

Ich würde so um die 100-200ms nehmen.

Franz

z.B. so:

Code:
case '2':
          // 2 = reinigen, Ventil 1, 3, 4, Betriebslampe und Pumpe
          Serial.print("Programm ");
          Serial.print(taste);
          Serial.println(" reinigen");
          digitalWrite(uvPin, LOW);                //UV-Entkeimung aus
          delay(100);
          digitalWrite(ventil_1Pin, HIGH);          //Ventil 1 öffnen
          delay(100);
          digitalWrite(ventil_3Pin, HIGH);          //Ventil 3 öffnen
          delay(100);
          digitalWrite(ventil_4Pin, HIGH);          //Ventil 4 öffnen
          digitalWrite(lampePin, HIGH);             //Betriebslampe an

          sensorValue = analogRead(potiStellung);   //Pumpendrehzahl
          digitalWrite(pinA, HIGH);
          digitalWrite(pinB, LOW);
          analogWrite(pumpePWM, sensorValue);
          break;

https://www.youtube.com/watch?v=Fnzn85oWM_Q
Hier was zum Thema Deutsche Politik Angry
Und hier zum Thema richtige Politik Big Grin
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Gehe zu:


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