Moin Moin
Ich möchte eine Einweichanlage für Schweineställe bauen, mit der ich nach dem Waschen auch desinfizieren kann. Dazu muss ich zwei Magnetventile bzw. zwei Relais schalten. Das eine soll ca. alle dreißig Minuten drei Minuten lang Wasser durchlassen, und dass immer wiederholen. Dann will ich die Einweichanlage erstmal wegstellen, mit dem Hochdruckreiniger waschen und danach soll für drei Minuten Wasser über einen Bypass mit einem Dosiersystem geführt werden, und das ganze soll nach einer Viertelstunde einmalig wiederholt werden. Danach soll sich das System am besten Ausschalten oder einfach garnichts machen. Für das Umstellen auf desinfizieren habe ich einen Schalter eingebaut. Dieser muss also quasi jederzeit auszulesen sein.
Das ganze ist mein erstes Projekt, und ich hab mir folgenden Code schon mal versucht aus verschiedenen Foren zusammenzukopieren.
int redPin = 9;
int schalterPin = 2;
int tasterstatus = 0;
byte wasser = 12;
int mittel = 10;
byte greenPin = 13; // LED liegt am (digitalen) Pin 13
boolean valuelampe = LOW; // Startwert der LED
boolean valuerelais = LOW;
;
unsigned long previousMillis = 0; // speichert wie viele Sekunden seit derletzten Änderung vergangen sind
unsigned long interval = 1000; // Interval zwischen zwei Änderungen
void setup()
{
pinMode(greenPin, OUTPUT); // Setzt den ledPin (Pin 13) als Ausgang
pinMode (schalterPin, INPUT);
pinMode(redPin,OUTPUT);
pinMode (wasser,OUTPUT);
pinMode (mittel, OUTPUT);
}
void loop()
{
tasterstatus=digitalRead(schalterPin);
if (tasterstatus == HIGH) {
digitalWrite (greenPin, LOW);
digitalWrite (redPin, HIGH);
digitalWrite (wasser, LOW);
digitalWrite (mittel, HIGH);
delay (3000);
digitalWrite (redPin, LOW);
digitalWrite (mittel, LOW);
delay (3000);
digitalWrite (redPin, HIGH);
digitalWrite (mittel, HIGH);
delay (3000);
digitalWrite (redPin, LOW);
digitalWrite (mittel, LOW);
delay (3000);
}
else
{
digitalWrite(redPin, LOW);
}
/* es wird kontrolliert, ob die Zeit für das Blink-Intervall schon abgelaufen ist
* Wenn die Zeitdifferenz zwischen dem Letzten Abspeichern und der aktuellen Zeit größer
* als das Intervall ist, so wird die nachfolgende Funktion ausgeführt.
*/
if (millis() - previousMillis > interval) {
previousMillis = millis(); // aktuelle Zeit abspeichern
// LED Zustand wecheln.
valuelampe = !valuelampe;
valuerelais= !valuerelais;
// Wert auf den Ausgang schreiben
digitalWrite(greenPin, valuelampe);
digitalWrite(wasser, valuerelais);
}
}
Jetzt habe ich die Hardware und alles Problemlos mit dem Code prüfen können, hatte extra dafür kurze Intervalle eingestellt. Allerdings habe ich jetzt gemerkt, dass ich die Wasserprogrammierung ja nicht auf 3/30 einstellen kann. Kann mir jemand weiter helfen? Vielleicht ja auch nur mit einem Link zu einer ähnlichen Programmierung.
PS: Zur Anzeige und Fehlervermeidung habe ich zwei LED´s, eine grüne für Wasser und eine rote für Desinfektionsmittel eingebaut.