beeblebrox:
Also ohne Schaltplan und kompletten Sketch kann da niemand was zu sagen.
Ulli
der komplette Sketch. Schaltplan habe ich noch nicht.
//define soil moisture in the next line
int Soil = 640; // Summer reading slightly too moist =590 (2019 May), 600 to 620 ok June 2019
int WaterLevel = 850; // Waterlevel water tank greater than 850 then empty
//int Sensor = A0; //Senor pin plant
const byte SensorPower = 7; //Power pin plant - use digital I/O pin
const byte SensorGnd = 8; //Gnd pin plant - use digital I/O pin
const byte Sensor = A0; //Sensor pin plant
//int Sensor2 = A1; //Senor pin water lever
const byte SensorPower2 = 12; //Power pin water level - use digital I/O pin
const byte SensorGnd2 = 13; //Gnd pin water level - use digital I/O pin
const byte Sensor2 = A1; //Sensor pin water level
//int Sensor3 = A2; //Senor pin plant - ground
const byte SensorPower3 = 9; //Power pin water level - use digital I/O pin
const byte SensorGnd3 = 10; //Gnd pin water level - use digital I/O pin
const byte Sensor3 = A2; //Sensor pin water level
int pumpPin = 4; //1. Pumpe pin, water pump
int pumpPin2 = 3; //2. Tomato - Magnetventil pin, solenoid valve
int pumpPin3 = 6; //1. Ground - Magnetventil pin, solenoid valve
int pumpPin4 = 5; //2. Ground2 - Magnetventil pin, solenoid valve
void setup() {
pinMode(pumpPin, OUTPUT);
pinMode(pumpPin2, OUTPUT);
pinMode(pumpPin3, OUTPUT);
pinMode(pumpPin4, OUTPUT);
digitalWrite(pumpPin, HIGH); // Relais wird nicht gestartet,Prevents relays from starting up engaged
digitalWrite(pumpPin2, HIGH); // Relais wird nicht gestartet,Prevents relays from starting up engaged
digitalWrite(pumpPin3, HIGH); // Relais wird nicht gestartet,Prevents relays from starting up engaged
digitalWrite(pumpPin4, HIGH); // Relais wird nicht gestartet,Prevents relays from starting up engaged
Serial.begin(9600);
}
void loop() {
//********* Round 1 ***************
//check
Serial.println(F("Start measuring plant in 60s! warmuup Sensor"));
pinMode(SensorPower, OUTPUT);
pinMode(SensorPower2, OUTPUT);
pinMode(SensorPower3, OUTPUT);
pinMode(SensorGnd, OUTPUT);
pinMode(SensorGnd2, OUTPUT);
pinMode(SensorGnd3, OUTPUT);
digitalWrite(SensorPower, HIGH);
digitalWrite(SensorPower2, HIGH);
digitalWrite(SensorPower3, HIGH);
digitalWrite(SensorGnd, LOW);
digitalWrite(SensorGnd2, LOW);
digitalWrite(SensorGnd3, LOW);
delay(60000); //warmup Time
Serial.print("plant-tomato:");
Serial.println(analogRead(A0));
delay(500);
Serial.print("plant-ground:");
Serial.println(analogRead(A2));
delay(500);
Serial.print("water level:");
Serial.println(analogRead(A1));
delay(500);
// 1. sensor and pump Tomato:
if((analogRead(A0) >Soil) && (analogRead(A1) <WaterLevel)) {
digitalWrite(pumpPin, LOW);
digitalWrite(pumpPin2, LOW);
delay(15000); //watering time
digitalWrite(pumpPin, HIGH);
digitalWrite(pumpPin2, HIGH);
Serial.println(F("watering Tomato successfully"));
}
if((analogRead(A0) <Soil) && (analogRead(A1) <WaterLevel)) {
Serial.println(F("Soil Tomato still moist."));
}
if((analogRead(A0) <Soil) && (analogRead(A1) >WaterLevel)) {
Serial.println(F("Soil Tomato still moist. empty water tank!!!"));
}
if((analogRead(A0) >Soil) && (analogRead(A1) >WaterLevel)) {
Serial.println(F("Soil Tomato dry. empty water tank!!!"));
}
// 1. sensor and pump Ground:
if((analogRead(A2) >Soil) && (analogRead(A1) <WaterLevel)) {
digitalWrite(pumpPin, LOW);
digitalWrite(pumpPin3, LOW);
delay(25000); //watering time
digitalWrite(pumpPin, HIGH);
digitalWrite(pumpPin3, HIGH);
delay(3000); //Break 3 Sek
digitalWrite(pumpPin, LOW);
digitalWrite(pumpPin4, LOW);
delay(25000); //watering time
digitalWrite(pumpPin, HIGH);
digitalWrite(pumpPin4, HIGH);
Serial.println(F("watering Ground successfully"));
}
if((analogRead(A2) <Soil) && (analogRead(A1) <WaterLevel)) {
Serial.println(F("Soil Ground still moist."));
}
if((analogRead(A2) <Soil) && (analogRead(A1) >WaterLevel)) {
Serial.println(F("Soil Ground still moist. empty water tank!!!"));
}
if((analogRead(A2) >Soil) && (analogRead(A1) >WaterLevel)) {
Serial.println(F("Soil Ground dry. empty water tank!!!"));
}
//poweroff
{ Serial.println(F("Measurement done. Disconnecting sensor."));
pinMode(SensorPower, INPUT);
pinMode(SensorGnd, INPUT);
pinMode(SensorPower2, INPUT);
pinMode(SensorGnd2, INPUT);
pinMode(SensorPower3, INPUT);
pinMode(SensorGnd3, INPUT);
}
delay(7200000); // 2hour
// delay(3000); //Test
//delay(2UL * 60UL * 60UL * 1000UL); //x hours each of 60 minutes each of 60 seconds each of 1000 milliseconds all unsigned longs
}
Der Fehler tritt auf wo ich die 3 Sekunden Pause eingebaut habe. Genau beim Schalten vom letzten Relais.