Hallo,
ich komme gerade mit meinem Programm nicht weiter. Kurze Erklärung: DC Motor Pumpe verbunden mit 2 Relay Module LCD-Display, digitalen Lichtsensor und Arduino Uno.
Das Programm sollte die Pumpe einschalten, wenn der Wasserspiegel im Behälter erreicht wird.
Erstmal habe ich aber den Lichtwert kalibriert.
Alles funktioniert nur beim Einschalten macht sich die Pumpe aus und an. Der Wert ist sozusagen noch nicht kalibriert.
Ich will, dass die Pumpe sich erstmal automatisch einschalten lässt nach der Kalibrierung.
Ich hoffe, ich habe es verständlich erklärt.
Danke
Der Sketsch Siehe Unten
#include <SPI.h>
#include <Wire.h>
#include <Digital_Light_TSL2561.h>
#include "rgb_lcd.h"
rgb_lcd lcd;
const int colorR = 255;
const int colorG = 0;
const int colorB = 0;
const int relaisIN1 = 4;
int output_value;
int eingabe;
int upButton = 2;
int downButton = 3;
int selectButton = 5;
int Pumpeein = 7;
int Kalibrierung = 8;
int menu = 1;
int Timer = 0;
int Timer_1 = 0;
int Timer2 = 0;
int Timer3 = 0;
void setup() {
Serial.begin(9600);
pinMode(relaisIN1, OUTPUT);
Wire.begin();
TSL2561.init();
lcd.begin(16, 2);
pinMode(Pumpeein, INPUT_PULLUP);
pinMode(upButton, INPUT_PULLUP);
pinMode(downButton, INPUT_PULLUP);
pinMode(selectButton, INPUT_PULLUP);
pinMode(Kalibrierung, INPUT_PULLUP);
lcd.setRGB(colorR, colorG, colorB);
lcd.setCursor(0, 0);
lcd.clear();
lcd.print("Fur Kalibrierung");
lcd.setCursor(0, 1);
lcd.print("Up oder Down");
}
void loop() {
//Serial.print("The Light value is: ");
//Serial.println(TSL2561.readVisibleLux());
Serial.println(TSL2561.readVisibleLux());
if (!digitalRead(Kalibrierung)) {
output_value = TSL2561.readVisibleLux() + 20;
lcd.clear();
lcd.setCursor(6, 0);
lcd.print("Sensor ist");
lcd.setCursor(0, 0);
lcd.print(TSL2561.readVisibleLux());
lcd.setCursor(0, 1);
lcd.print(output_value);
lcd.setCursor(6, 1);
lcd.print("kalibriert");
delay(100);
while (!digitalRead(Kalibrierung))
;
}
if (!digitalRead(downButton)) {
menu++;
updateMenu();
delay(100);
while (!digitalRead(downButton))
;
}
if (!digitalRead(upButton)) {
menu--;
updateMenu();
delay(100);
while (!digitalRead(upButton))
;
}
if (!digitalRead(selectButton)) {
executeAction();
delay(100);
while (!digitalRead(selectButton))
;
}
if (!digitalRead(Pumpeein)) {
digitalWrite(relaisIN1, HIGH);
delay(100);
while (!digitalRead(Pumpeein))
;
} else {
digitalWrite(relaisIN1, LOW);
}
if (output_value < TSL2561.readVisibleLux()) {
digitalWrite(relaisIN1, HIGH);
delay(2000);
} else {
digitalWrite(relaisIN1, LOW); //Relais1 an Pumpe aus
}
}
void updateMenu() {
switch (menu) {
case 0:
menu = 1;
break;
case 1:
lcd.clear();
lcd.print(">Medium ist vorhanden");
lcd.setCursor(0, 1);
lcd.print(" Medium ist nicht vorhanden");
break;
case 2:
lcd.clear();
lcd.print(" Medium ist vorhanden");
lcd.setCursor(0, 1);
lcd.print(">Medium ist nicht vorhanden");
break;
case 5:
menu = 2;
break;
}
}
void executeAction() {
switch (menu) {
case 1:
action1();
break;
case 2:
action2();
break;
}
}
void action1() {
lcd.clear();
if (!digitalRead(selectButton)) {
lcd.clear();
lcd.print("Fuer Kalibrieren");
lcd.setCursor(0, 1);
lcd.print("Bestaetigen");
delay(100);
}
}
void action2() {
if (!digitalRead(selectButton)) {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Medium");
lcd.setCursor(0, 1);
lcd.print("nachfuellen");
delay(100);
}
}