Projekt der Steuerung von Ventilen durch Bluetooth

Guten Morgen,

Ich habe Zweifel über Timer, ich muss während einer bestimmten Zeit zwei Ventile öffnen, um Wasser abzulassen (Beispiel: 2 Sekunden) und nach dieser Zeit schließen.

Aber ich verstehe nichts über Timer und meine Programmierebene ist sehr einfach, ich kenne die Existenz der Milis, aber wenn ich diese Methode benutze, werde ich später nicht in der Lage sein, andere Peripheriegeräte zu benutzen, um immer die Temperatur von das Wasser.

Die Bluetooth-Steuerung ist etwas, das mich beunruhigt, aber ich muss zuerst die APP bauen, bevor ich überhaupt über diesen Teil nachdenken kann

Wenn mir jemand ein paar Lichter, Referenzen oder Beispiele geben kann?

Vielen Dank

João Almeida

Bei so langen Zeiten, wie 2 Sekunden, brauchst Du keinen Timer, das kannst Du mit millis machen.
Verstehe die Anwendung von millis, dann kommst Du auch nicht mehr auf solche falschen Aussagen, Du könntest dann nichts anderes mehr machen.

Gruß Tommy

joca133kp:
Können Sie andere Funktionen gleichzeitig mit dem Millis verwenden?

Ja, natürlich.

In welchem Bereich liegen denn die Zeiten?

Gruß Tommy

Also alle Zeiten liegen deutlich über dem Sekundenbereich. Damit brauchst Du keine Timer.
Wenn Du millis() verstanden hast (das kann Dir keiner abnehmen), dann kannst Du die Zeitsteuerungen und die analoge Temperaturmessung problemlos im Loop abarbeiten.

Von welchem Medium (Wasser, Stahl,...) und welcher Menge sprechen wir bei der Temperaturmessung?
Was willst Du mit Bluetooth steuern? Sollwerte einstellen?

Gruß Tommy

Was sind Pelletzellen? Meinst Du evtl. Peltierelemente?

Je genauer die Informationen über ein Projekt sind, um so zielgerichteter kann eine Hilfestellung zu Deinem Sketch sein.

Evtl. hilft Dir bei millis() eine andere Betrachtung. Studiere mal dieses Beispiel.

Gruß Tommy

Hallo,

Es gibt bereits Apps (zumindest für Anroid) die eine Terminal Verbindung zu einem Bluetooth Modul (zb: Bluetooth Terminal, da gibt es gleich mehrere). Es gibt auch ein App welches Sensor Daten so einigermaßen (ich will nicht sagen super schön, aber auch nicht grauenvoll) anzeigen lassen.

Also das ist nur ein Tipp: Vorerst ein BT Terminal App verwenden, wenn alles funktioniert, die App selber programmieren.

Grüße,
Donny

Hi

Ich durfte hier eine nette Methode kennen lernen, wie man sich selber bei Problemen hilft: Rubberduck-Debuging
Beschreibe Dein Problem so, als ob Du Deiner Frau den ganzen Kram erklären wolltest.
(in der Annahme, daß Deine Frau eher geringeres Interesse an diesem Problem und Dessen Behebung hegt - ggf. ersetzen durch Oma, Postbote, Quietsche-Entchen)
Wenn Du uns Dein Vorhaben so vortragen kannst, verstehen wir, was Du willst und können Dir gezielter helfen.
Da Du hierbei selber sehr genau überlegen musst, was Du 'den Unwissenden' erzählen musst, damit 'Die auch mitkommen' zerlegst Du Dein Problem für Dich selber ebenfalls und kannst so ebenfalls auf Lösungen kommen, Die Dir zuvor gar nicht in den Sinn kamen.

MfG

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 ;
}

Wenn man bei Microcontrollern über "Timer" redet sind damit i.d.R. Hardware Timer gemeint. Damit kann man bestimmte Dinge sehr, sehr schnell und oft ohne Software erledigen. Aber bei langen Zeiten ist das unnötig. Wenn du dir eine Zeitsteuerung in programmierst ist das in dem Sinne kein Timer

joca133kp:
Vielen Dank, es war eine wertvolle Hilfe, ich wusste nicht, wo ich anfangen sollte, ich würde IMTInventor verwenden

Gerne, aber eine Android (!!) App mit diesen Namen hab ich nicht gefunden, nur CAD und 3D 'Zeugs'. :confused: :confused:

Es gibt natürlich mehrere Möglichkeiten eine Bluetooth Verbindung über ein Arduino zu verwirklichen. Es gibt zB.: die billigen HC-05 und HC-06 Module, mit denen ist es kein größeres Problem eine BT Verbindung zwischen Android und Arduino herzustellen.
Die App die ich meine ist im Prinzip ein Serieller Monitor, nur anstelle des USB Kabel verwendet die App die Bluetooth Verbindung.

Es gibt natürlich noch andere Bluetooth "Module" zB: die "Stromsparrenden". Damit habe ich aber noch keine Erfahrungen gemacht. Da Du IMHO keinen Akku oder Batterien verwendest (??), sollte dies allerdings kein großes Problem sein.

Grüße,
Donny