Pin Ausgabezeit begrenzen

Moin alle zusammen,

ich bin noch absolut kein Experte aber hab schon ein wenig Erfahrung sammeln können.

Und zwar habe ich einen Gecko welcher lebende Grillen bekommt, diese leben in einer kleinen Box bei welche ich oft vergesse das Wasser aufzufüllen. Deshalb habe ich mir eine automatische Steuerung mit einem Arduino Uno und einer kleinen Pumpe gebaut.
Diese Pumpe wird über ein Relais angeschaltet und dieses Relais wird ganz einfach durch einen Wasserpegelsensor aktiviert.
Nun habe ich folgendes Problem, die Pumpe wird automatisch aktiviert wenn der Sensorwert unter 550 fällt. Ist nun aber auch der Behälter aus welchem das Wasser herausgepumpt wird leer, würde das bedeuten, das die Pumpe dauerhaft pumpt.

Gibt es einen Befehl, dass man die Zeit, welche ein Pin aktiviert ist dauerhaft begrenzen kann?
Bzw. hat jemand eine Idee wie man es lösen könnte?
Mir wäre jetzt nur eingefallen, ab einem sehr niedrigen Sensorwert das Relais nichtmehr aktivieren zu lassen.

Der Code:
const int relais = 6; //Relais für Pumpe
const int sensor = A0; //Füllstandsensor
int level; //Wasserstand

void setup() {
Serial.begin(9600); //Serial monitor
pinMode(sensor, INPUT); //Füllstandsensor deklariert
pinMode(relais, OUTPUT); //Relais deklariert
}

void loop() {

level = analogRead(A0); //Füllstand auslesen und auf level speichern

Serial.println(level); //Füllstand auf serial monitor ausgeben

if (level <= 550) //wenn Füllstand kleiner gleich 550
{
digitalWrite(relais, HIGH); //Relais schaltet an -> Pumpe pumpt
}
else
{
digitalWrite(relais, LOW); //wenn Füllstand über 550 -> Pumpe aus
}

Viele Grüße,
Jacke

Hallo
guck dir mal die Durchflussgeber an.

Hallo,

einen direkten "Befehl" (genauer gesagt Funktion) gibts nicht, aber man kann sich etwas bauen.
Dafür müßtest du dich mit millis() beschäftigen. Im Grunde Zeit merken, Vergleich abfragen, wenn Zeitdifferenz erreicht, Aktion auslösen.

Theseus erklärt millis()

GuntherB - BlinkwithoutDelay - Die Nachtwächtererklärung

Beruht alles auf dem IDE Bsp.: 02.Digital -> BlinkwithoutDelay

Mit der Zeit kannst du die Dauer der Wassernachbefüllung steuern. Gegen leer pumpen hilft das nicht wie du schon erkannt hast. Das heißt dein Vorratsbehälter benötigt dringend noch einen "Bin leer." Sensor. Wenn der aktiv wird, müssen alle Pumpen stoppen bzw. dürfen nicht erneut einschalten. Dann geht logischerweise die Alarmanlage im gesamten Haus los und du weißt -> Wasser nachfüllen.

1 Like

Du solltest Programme als Code-Section posten. Das geht ganz einfach.
Nur drei Schritte:
1.) wechsle zur Arduino-IDE drücke Strg-T für automtatisches formatieren

2.) mache mit der Maus einen Rechtsklick und wähle "für Forum kopieren

3.wechsle zur Forum-Texteingabe und drückte Strg-V um den Inhalt dr Zwischenablage einzufügen.
fertig

Wenn ein Programm als Code-Section eingefügt ist kann man es viel besser lesen
und eine Code-Section kann man mit einem einzigen Mausklick in die Zwischenablage kopieren.
vgs

1 Like

Danke, den millis Befehl werde ich mir dann mal zu Gemüte führen.

Auf die Idee mit einem zweiten Sensor bin ich garnicht gekommen. :sweat_smile:
Da ich eh noch einen hier habe, ist das erstmal die einfachste Alternative für mich.

Das ist kein Befehl. Und mit einer Funktion alleine ist es nicht getan. Das ist eher ein Programmier-Prinzip

Korrekt. :wink: Hab's in meinem Text korrigiert.

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.