Projekt der Steuerung von Ventilen durch Bluetooth

joca133kp:
Ich möchte das Öffnen und Schließen von Relais steuern, um die Ventile zu steuern. Ich werde Pelletzellen verwenden, um ein Wasserreservoir zu kühlen.

Hi ,

ich weiss nicht genau was Du benötigst, aber ich denke Du willst die Ventile eine bestimmte Zeit einschalten damit eine bestimmte menge Wasser einlassen und dann wieder ausschalten. Dazu benötigst Du eine delayof function. und / oder eine Impuls-Verlängerung.

Ebeso hast Du ja hier bereits erfahren das man das mit millis() gut machen kann, delay solltest Du nicht verwenden, daa dann dein Arduino pause macht und für die angegeben Zeit nichts mehr macht.

ich hab mal eine function delayof geschrieben die ein bool zurück liefert. Zur Ansteuerung hab ich mal einen Taster verwendet, das sieht bei Dir letztlich sicher anders aus. Aber zum verstehen ist der Taster gut.

lad Dir das Beispiel mal auf Dein System und spiel was damit rum. Man kann das sicher auch elganter machen, aber es soll ja leicht verständlich sein. Wenn Du das delayof mehrfach benötigst must du es kopiere, oder erweitern.

int taster = 2;
int Ventil = 3;


void setup() {
  Serial.begin(9600);
  pinMode(taster, INPUT);
  pinMode (Ventil, OUTPUT);

}

void loop() {
  boolean instat = digitalRead(taster); // Taster lesen 

  digitalWrite(Ventil, delayof1(instat, 3000));
}

// function delayof ---------------------

boolean delayof1(bool in, int dtime) {
  unsigned long  static alt_t; 
  boolean static flag;
  
  if (in ) {
    alt_t = millis(); 
    
  }
 
    if (millis() - alt_t > dtime) {  // wenn abgelaufen ausschalten
      flag=false;
    }

    else{
      flag=true;
    }
  
  Serial.print(in);Serial.println(flag);
  return flag ;
}