INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
EZO- HUM- Sensor
12.01.2021, 17:06
Beitrag #25
RE: EZO- HUM- Sensor
Seit Du alles was nicht "Hurra, alles mit String" schreit, in Deiner Ausdrucksweise ("von deiner Mission abhalten") abqualifizierst, muss man sich halt korrigieren.

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
13.01.2021, 15:50
Beitrag #26
RE: EZO- HUM- Sensor
(12.01.2021 17:06)Tommy56 schrieb:  Seit Du alles was nicht "Hurra, alles mit String" schreit, in Deiner Ausdrucksweise ("von deiner Mission abhalten") abqualifizierst, muss man sich halt korrigieren.

Gruß Tommy

Wo bitte, habe ich was von String geschrieben?

Ich wollte lediglich drauf aufmerksam machen das der TO mit seinem Problem das Forum, ohne Nebenan auf deinen letzten Beitrag zu reagieren, von Heute auf Morgen gewechselt hat.

Und du in deiner "Mission zu helfen" klaglos mit wechselst.

Mit diesem Post ist das Thema für mich beendet!

Gruß Fips

Meine Esp8266 & ESP32 Projekte
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
13.01.2021, 15:54 (Dieser Beitrag wurde zuletzt bearbeitet: 13.01.2021 16:04 von Tommy56.)
Beitrag #27
RE: EZO- HUM- Sensor
(13.01.2021 15:50)Fips schrieb:  Und du in deiner "Mission zu helfen" klaglos mit wechselst.
Nicht jeder geht erst mal auf Konfrontation, wenn sich etwas ändert.
Außerdem überlege mal, wo Du heute ohne meine "Mission zu helfen" wärst.

Gruß Tommy

Edit: Dann schau Dir mal die Beiträge ab #9 an. Da ging es genau um die String-Problematik, der Du widersprochen hast.
Darauf bezog sich auch meine Kritik an Dir.

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
18.01.2021, 19:38 (Dieser Beitrag wurde zuletzt bearbeitet: 18.01.2021 19:40 von Leonardo.)
Beitrag #28
RE: EZO- HUM- Sensor
Hallo liebe community,

Ich habe zwei Probleme mit meinem Sketch und würde mich freuen wenn mir jmd. helfen könnteSmile

Erstes Problem: Nach Zustand 3 ( siehe Skizze) geht die Förderpumpe an und pumpt Wasser in den Tank aber wenn dann Zustand 2 erreicht wird geht sie wieder aus. Ich will aber, dass die Förderpumpe erst in Zustand 1 wieder ausgeht. Kann mir bitte jmd. helfen das Problem zu lösen? Ich habe es versucht mit dem Niveauschalterminimumstatus zu lösen, klappt so aber nicht.


Zweites Problem: Die Pumpensteuerung für die Hochdruckpumpe soll in Zustand 2 und 3 aktiviert sein, also immer dann wenn das RelaisHochdruckpumpe LOW ist.


Herzliche Grüße Leonardo

Code:
// Ezo-Hum-Sensor

//This code was written to be easy to understand.
//Modify this code as you see fit.
//This code will output data to the Arduino serial monitor.
//Type commands into the Arduino serial monitor to control the humidity sensor.
//This code was written in the Arduino 1.8.13 IDE
//An Arduino UNO was used to test this code.
//This code was last tested 8/2020


#include <SoftwareSerial.h>                           //we have to include the SoftwareSerial library, or else we can't use it
#define rx 4                                         //define what pin rx is going to be
#define tx 5                                         //define what pin tx is going to be

SoftwareSerial myserial(rx, tx);                      //define how the soft serial port is going to work


String inputstring = "";                              //a string to hold incoming data from the PC
String sensorstring = "";                             //a string to hold the data from the Atlas Scientific product
boolean input_string_complete = false;                //have we recived all the data from the PC
boolean sensor_string_complete = false;               //have we recived all the data from the Atlas Scientific product

// Pumpensteuerung
unsigned long timestore;               // Zeitmerker für Pumpensteuerung
unsigned long timestore_LCD;               // Zeitmerker für LCD Display

// Temperatur Nährlösung
#include <DallasTemperature.h>
#include <LiquidCrystal_I2C.h>
#include <OneWire.h>

LiquidCrystal_I2C lcd(0x27,20,4);

#define ONE_WIRE_BUS 3 //Data von Temp.Sensor
OneWire oneWire(ONE_WIRE_BUS );
DallasTemperature sensors(&oneWire);

// Notabschaltung Heizstab, Hochdruckpumpe, Umwaelzpumpe und Foerderpumpe

int RelaisHeizstab = 8;
int RelaisHochdruckpumpe = 9;
int RelaisUmwaelzpumpe = 10;
int RelaisFoerderpumpe= 11;
enum {an, aus};

int Niveauschalterminimum = 2;
int Niveauschaltermaximum = 6;
boolean Niveauschalterminimumstatus = HIGH; // Der Niveauschalterminimumstatus ist normally off




void setup() {

// Ezo-Hum-Sensor
  Serial.begin(9600);                                 //set baud rate for the hardware serial port_0 to 9600
  myserial.begin(9600);                               //set baud rate for the software serial port to 9600
  inputstring.reserve(10);                            //set aside some bytes for reciving data from the PC
  sensorstring.reserve(30);                           //set aside some bytes for reciving data from Atlas Scientific product
  
lcd.init();
lcd.backlight();
sensors.begin();

// Notabschaltung Heizstab und Hochdruckpumpe, Umwaelzpumpe und Foerderpumpe
  pinMode(RelaisHeizstab, OUTPUT);          
  pinMode(RelaisHochdruckpumpe, OUTPUT);            
  pinMode(RelaisUmwaelzpumpe, OUTPUT);
  digitalWrite(RelaisHeizstab, LOW);                  
  digitalWrite(RelaisHochdruckpumpe, LOW);
  digitalWrite(RelaisUmwaelzpumpe, LOW);
  digitalWrite(RelaisHeizstab, LOW);
  

// Foerderpumpe
pinMode(RelaisFoerderpumpe, OUTPUT);              
digitalWrite(RelaisFoerderpumpe, HIGH);             // Die Förderpumpe ist normalerweise aus
  pinMode(Niveauschalterminimum, INPUT_PULLUP);
  pinMode(Niveauschaltermaximum, INPUT_PULLUP);        
  
}

//Ezo-Hum-Sensor
void serialEvent() {                                  //if the hardware serial port_0 recives a char
  inputstring = Serial.readStringUntil(13);           //read the string until we see a <CR>
  input_string_complete = true;                       //set the flag used to tell if we have recived a completed string from the PC
}

void loop() {

//Ezo-Hum-Sensor
if (input_string_complete == true) {                //if a string from the PC has been recived in its entirety
    myserial.print(inputstring);                      //send that string to the Atlas Scientific product
    myserial.print('\r');                             //add a <CR> to the end of the string
    inputstring = "";                                 //clear the string
    input_string_complete = false;                    //reset the flag used to tell if we have recived a completed string from the PC
  }

  if (myserial.available() > 0) {                     //if we see that the Atlas Scientific product has sent a character
    char inchar = (char)myserial.read();              //get the char we just recived
    sensorstring += inchar;                           //add the char to the var called sensorstring
    if (inchar == '\r') {                             //if the incoming character is a <CR>
      sensor_string_complete = true;                  //set the flag
    }
  }


  if (sensor_string_complete == true) {               //if a string from the Atlas Scientific product has been recived in its entirety
    if (isdigit(sensorstring[0]) == false) {          //if the first character in the string is a digit
      Serial.println(sensorstring);                   //send that string to the PC's serial monitor
    }
    else                                              //if the first character in the string is NOT a digit
    {
      print_Humidity_data();                          //then call this function
    }
    sensorstring = "";                                //clear the string
    sensor_string_complete = false;                   //reset the flag used to tell if we have recived a completed string from the Atlas Scientific product
  }
}



void print_Humidity_data(void) {                      //this function will pars the string  

  char sensorstring_array[30];                        //we make a char array
  char *HUM;                                          //char pointer used in string parsing.
  char *TMP;                                          //char pointer used in string parsing.
  char *NUL;                                          //char pointer used in string parsing (the sensor outputs some text that we don't need).
  char *DEW;                                          //char pointer used in string parsing.

float HUM_float;                                      //float var used to hold the float value of the humidity.
float TMP_float;                                      //float var used to hold the float value of the temperatur.
float DEW_float;                                      //float var used to hold the float value of the dew point.
  
  sensorstring.toCharArray(sensorstring_array, 30);   //convert the string to a char array
  HUM = strtok(sensorstring_array, ",");              //let's pars the array at each comma
  TMP = strtok(NULL, ",");                            //let's pars the array at each comma
  NUL = strtok(NULL, ",");                            //let's pars the array at each comma (the sensor outputs the word "DEW" in the string, we dont need it)
  DEW = strtok(NULL, ",");                            //let's pars the array at each comma

  Serial.println();                                   //this just makes the output easier to read by adding an extra blank line.

  Serial.print("HUM:");                               //we now print each value we parsed separately.
  Serial.print(HUM);                                //this is the humidity value.

  Serial.print("Air TMP:");                           //we now print each value we parsed separately.
  Serial.print(TMP);                                //this is the air temperatur value.

  Serial.print("DEW:");                               //we now print each value we parsed separately.
  Serial.print(DEW);                                //this is the dew point.
  Serial.println();                                   //this just makes the output easier to read by adding an extra blank line.
    
  //uncomment this section if you want to take the values and convert them into floating point number.
  /*
    HUM_float=atof(HUM);
    TMP_float=atof(TMP);
    DEW_float=atof(DEW);
  */
  
// Temperatur Nährlösung LCD
   if (millis() - timestore_LCD> 10000 ) // wenn Pausenzeit um
    {
      lcd.setCursor(0,0);               // Werte auf LCD anzeigen
lcd.print("Wurzelzone:");
lcd.setCursor(0,1);
lcd. print ("T:");
lcd.print(TMP);
lcd.print("\337C");
lcd. print (" Hum:");
lcd.print(HUM);
lcd.print("%");
lcd.setCursor(0,2);
lcd.print("NL:");
lcd.print(sensors.getTempCByIndex(0));
lcd.print("\337C");
lcd.print(" Dew:");
lcd.print(DEW);

sensors.requestTemperatures();

lcd.setCursor(0,3);
lcd.print("Rasen:     ");
lcd.print("T:");
lcd.print(sensors.getTempCByIndex(1));
lcd.print("\337C");



      timestore = millis();            // Ausschaltzeit merken
    }


// Pumpensteuerung

if (digitalRead(RelaisHochdruckpumpe == aus))
  {
    if (millis() - timestore > 900000) // wenn Pausenzeit um
    {
      digitalWrite(RelaisHochdruckpumpe, an);     // einschalten
      timestore = millis();            // Einschaltzeit merken
    }
  }
  else
  {
    if (millis() - timestore > 15000)  // wenn Einschaltzeit um
    {                                          
      digitalWrite (RelaisHochdruckpumpe, aus);   // ausschalten
      timestore = millis();            // Ausschaltzeit merken
    }
  }

  
// Notabschaltung Heizstab, Hochdruckpumpe, Umwälzpumpe und Förderpumpe
  if (digitalRead(Niveauschalterminimum) == HIGH && digitalRead(Niveauschaltermaximum)== HIGH)// wenn der Niveauschalterminimum offen ist und der Niveauschaltermaximum offen ist
  {
    digitalWrite(RelaisHeizstab, HIGH);       // Heizstab ausmachen
    digitalWrite(RelaisHochdruckpumpe, HIGH); // Hochdruckpumpe ausmachen
    digitalWrite(RelaisUmwaelzpumpe, HIGH);   // Umwälzpumpe ausmachen
    digitalWrite(RelaisFoerderpumpe, LOW);
Niveauschalterminimumstatus = LOW;           // notieren, dass die Foerderpumpe an ist
  
  }
  if (digitalRead(Niveauschalterminimum) == LOW && digitalRead(Niveauschaltermaximum)== HIGH) // wenn der Niveauschalterminimum geschlossen ist und der Niveauschaltermaximum offen ist
  {                                    
                                             // muss sein, sonst werden die Relais nicht wieder LOW!
digitalWrite(RelaisHeizstab, LOW);          // Heizstab anschalten
digitalWrite(RelaisHochdruckpumpe, LOW);    // Hochdruckpumpe anschalten
digitalWrite(RelaisUmwaelzpumpe, LOW);       // Umwälzpumpe anschalten
  }

  if (digitalRead(Niveauschalterminimum) == LOW && digitalRead(Niveauschaltermaximum)== HIGH) // wenn der Niveauschalterminimum geschlossen ist und der Niveauschaltermaximum geschlossen ist
  {
   digitalWrite(RelaisHeizstab, LOW);          // Heizstab bleibt angeschaltet
digitalWrite(RelaisHochdruckpumpe, LOW);    // Hochdruckpumpe bleibt angeschaltet
digitalWrite(RelaisUmwaelzpumpe, LOW);       // Umwälzpumpe bleibt angeschaltet
Niveauschalterminimumstatus = HIGH;


  }
  if (Niveauschalterminimumstatus == HIGH)     // wenn der Niveauschalterminimumstatus HIGH ist,
  {
    digitalWrite(RelaisFoerderpumpe, HIGH);    // Foerderpumpe aussschalten
  }

}


Angehängte Datei(en) Thumbnail(s)
   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
18.01.2021, 19:39 (Dieser Beitrag wurde zuletzt bearbeitet: 18.01.2021 19:44 von Leonardo.)
Beitrag #29
RE: EZO- HUM- Sensor
Hier war die Skizze, habe sie dann aber doch noch als Anhang in meinen vorigen Beitrag getan. Ich kann den Beitrag nicht löschen, bitte einfach ignorierenWink.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Sensor-Adressdaten mittels json von Webserver einlesen und hinterlegen MLuhmann 7 1.139 22.02.2021 18:56
Letzter Beitrag: Tommy56
  LED als lichtempfindlicher Sensor daja64 7 1.029 23.12.2020 01:18
Letzter Beitrag: daja64
  Arduino als Enocean Aktor/Sensor hr3 2 1.377 08.02.2020 20:53
Letzter Beitrag: Bitklopfer
  Fehlermeldung (wegen BME 280 Sensor?) Schneggl 3 1.367 26.10.2019 09:28
Letzter Beitrag: Tommy56
  Grove-GSR Sensor frala 22 5.574 09.10.2018 22:11
Letzter Beitrag: Bitklopfer
  Sensor mit 10 Hz auslesen Olafson Larson 7 3.345 05.07.2018 15:59
Letzter Beitrag: Tommy56
Exclamation Sound Sensor KY-038 Jack 6 3.984 16.05.2018 23:46
Letzter Beitrag: georg01
Question IR Sensor - Tastendruck oneill86 2 2.219 21.03.2018 18:22
Letzter Beitrag: oneill86
  DS18s20 Temperatur Sensor georg01 9 5.304 25.02.2018 16:03
Letzter Beitrag: georg01
  Lichtschrankensensor / Line Tracker Sensor Hitikatus 5 3.804 13.07.2017 15:21
Letzter Beitrag: RCudino

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste