If while code compilation problems

> #include <GravityTDS.h>
> #include <LCD_I2C.h>
> #include <OneWire.h>
> #include <DallasTemperature.h>
> #include <Wire.h>
> LCD_I2C lcd(0x27, 20, 4);
> 
> #define ONE_WIRE_BUS 9
> #define TdsSensorPin0 A1
> #define TdsSensorPin1 A2
> const float  OffSet = 0.473 ;
> const float  OffSet1 = 0.479 ;
> float V;
> float V1;
> int P;
> int P1;
> int sensorup = 2;
> int senstordw = 3;
> const int pumppres = 4;
> const int evwaterin = 5;
> const int evflush = 6;
> const int evroout = 7;
> const int logdisp = 8;
> int btup = 0;
> int btdw = 0;
> 
> OneWire oneWire(ONE_WIRE_BUS);
> GravityTDS gravityTds0;
> GravityTDS gravityTds1;
> 
> DallasTemperature sensors(&oneWire);
> 
> 
> float tdsValue0 = 0;
> float tdsValue1 = 0;
> 
> void setup()
> {
>   Serial.begin(115200);
>   lcd.begin();
>   lcd.backlight();
>   sensors.begin();
>   gravityTds0.setPin(TdsSensorPin0);
>   gravityTds1.setPin(TdsSensorPin1);
>   gravityTds0.setAref(5.0);  //reference voltage on ADC, default 5.0V on Arduino UNO
>   gravityTds0.setAdcRange(1024);  //1024 for 10bit ADC;4096 for 12bit ADC
>   gravityTds0.begin();  //initialization
>   gravityTds1.setAref(5.0);  //reference voltage on ADC, default 5.0V on Arduino UNO
>   gravityTds1.setAdcRange(1024);  //1024 for 10bit ADC;4096 for 12bit ADC
>   gravityTds1.begin();  //initialization
> 
>   pinMode(sensorup, INPUT_PULLUP);
>   pinMode(sensordw, INPUT_PULLUP);
>   pinMode(pumppres, OUTPUT);
>   pinMode(evwaterin, OUTPUT);
>   pinMode(evflush, OUTPUT);
>   pinMode(evroout, OUTPUT);
> 
>   digitalWrite(pumppres, LOW);
>   digitalWrite(evwaterin, LOW);
>   digitalWrite(evflush, LOW);
>   digitalWrite(evroout, LOW);
> }
> void flush1()
> {
>   digitalWrite(evflush, HIGH);
>   digitalWrite(evroout, HIGH);
>   delay(3000);
>   digitalWrite(pumppres, HIGH);
>   delay(5500);
>   digitalWrite(evwaterin, HIGH);
>   delay(2000);
>   digitalWrite(evflush, LOW);
>   digitalWrite(evroout, LOW);
> }
> void cycle1()
> {
>   digitalWrite(pumppres, HIGH);
>   digitalWrite(evwaterin, HIGH);
> }
> void tankfull()
> {
>   digitalWrite(pumppres, LOW);
>   digitalWrite(evwaterin, LOW);
>   digitalWrite(evflush, LOW);
>   digitalWrite(evroout, LOW);
>   lcd.clear();
>   lcd.setCursor(0, 3);
>   lcd.print("TANK FULL");
> }
> void nopreshure()
> {
>   digitalWrite(pumppres, LOW);
>   digitalWrite(evwaterin, LOW);
>   digitalWrite(evflush, LOW);
>   digitalWrite(evroout, LOW);
>   lcd.clear();
>   lcd.setCursor(0, 0);
>   lcd.print("NO WATER PRESHURE");
> }
> void hpnopreshure()
> {
>   digitalWrite(pumppres, LOW);
>   digitalWrite(evflush, LOW);
>   digitalWrite(evroout, LOW);
>   lcd.clear();
>   lcd.setCursor(0, 1);
>   lcd.print("HP PUMP NO PRESHURE");
> }
> 
> void loop()
> {
> 
>   sensors.requestTemperatures();
> 
>   gravityTds0.setTemperature(sensors.getTempCByIndex(0));  // set the temperature and execute temperature compensation
>   gravityTds0.update();  //sample and calculate
>   gravityTds1.setTemperature(sensors.getTempCByIndex(0));  // set the temperature and execute temperature compensation
>   gravityTds1.update();  //sample and calculate
> 
>   tdsValue0 = gravityTds0.getTdsValue();  // then get the value
>   tdsValue1 = gravityTds1.getTdsValue();  // then get the value
> 
>   //Connect sensor to Analog A0 A3
>   V = analogRead(0) * 5.00 / 1024;     //Sensor output voltage
>   P = (V - OffSet) * 250 * 0.1;           //Calculate water pressure
>   V1 = analogRead(3) * 5.00 / 1024;     //Sensor output voltage
>   P1 = (V1 - OffSet1) * 250 * 0.1;           //Calculate water pressure
> 
>   Serial.print(tdsValue0, 0);
>   Serial.print(tdsValue1, 0);
>   Serial.println("ppm");
> 
>   lcd.clear();
>   lcd.setCursor(0, 0);
>   lcd.print("TDS0 IN: ");
>   lcd.print(tdsValue0, 0);
>   lcd.print(" PPM");
> 
>   lcd.setCursor(0, 1);
>   lcd.print("TDS1 OUT: ");
>   lcd.print(tdsValue1, 0);
>   lcd.print(" PPM");
> 
>   lcd.setCursor(0, 2);
>   lcd.print("Temp: ");
>   lcd.print(sensors.getTempCByIndex(0));
>   lcd.print(" C");
> 
>   lcd.setCursor(0, 3);
>   lcd.print("IN:");
>   lcd.setCursor(3, 3);
>   lcd.print(   P / 100 % 10);
>   lcd.print(   P / 10 % 10);
>   lcd.print('.');
>   lcd.print(   P / 1 % 10);
>   lcd.setCursor(10, 3);
>   lcd.print("PO:");
>   lcd.setCursor(13, 3);
>   lcd.print(   P1 / 100 % 10);
>   lcd.print(   P1 / 10 % 10);
>   lcd.print('.');
>   lcd.print(   P1 / 1 % 10);
> 
>   delay(50);
> 
>   btup = digitalRead(sensorup);
>   btdw = digitalRead(sensordw);
> 
>   if (V <= 1.0)
>   {
>     nopreshure();
>     {
>       if (V1 <= 2.5);
>       {
>         hpnopreshure();
>         while ((digitalRead(btup == LOW)) && (digitalRead(btdw == LOW)))
>         {
>           flush1();
>           delay(10500);
>           cycle1();
>           {
>             while ((digitalRead(btdw == HIGH)) && (digitalRead(btup == HIGH)))
>             {
>               tankfull();
>             }
>           }
>         }
>       }
>     }
>   }
> }

OK so i made this code for a smart reverse osmosis system witch take in consideration the pressures for input water and pressure pump and i have a little trouble with the compilation gives me some errors
exit status 1
'sensordw' was not declared in this scope
any one can give a hand pls?

Welcome to the forum

Please follow the advice given in the link below when posting code, in particular the section entitled 'Posting code and common code problems'

Use code tags (the </> icon above the compose window) to make it easier to read and copy for examination

So where is sensordw declared ?
What I do see is

int senstordw = 3;

Oops (multiple times)

And a different oops

OK thanks UKHeliBob saw my mistake fixed it code is good now but wen i connect pin 2 and 3 to ground program doesn't starts i am looking in to the Oops sections.

Ok solved the Oops's and moved the void definitions under the void loop and i get this error:
a function-definition is not allowed here before '{' token

`#include <GravityTDS.h>
#include <LCD_I2C.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#include <Wire.h>
LCD_I2C lcd(0x27, 20, 4);

#define ONE_WIRE_BUS 9
#define TdsSensorPin0 A1
#define TdsSensorPin1 A2
const float  OffSet = 0.473 ;
const float  OffSet1 = 0.479 ;
float V;
float V1;
int P;
int P1;
int sensorup = 2;
int sensordw = 3;
const int pumppres = 4;
const int evwaterin = 5;
const int evflush = 6;
const int evroout = 7;
const int logdisp = 8;
int btup = 0;
int btdw = 0;

OneWire oneWire(ONE_WIRE_BUS);
GravityTDS gravityTds0;
GravityTDS gravityTds1;

DallasTemperature sensors(&oneWire);


float tdsValue0 = 0;
float tdsValue1 = 0;


void setup()
{
  Serial.begin(115200);
  lcd.begin();
  lcd.backlight();
  sensors.begin();
  gravityTds0.setPin(TdsSensorPin0);
  gravityTds1.setPin(TdsSensorPin1);
  gravityTds0.setAref(5.0);  //reference voltage on ADC, default 5.0V on Arduino UNO
  gravityTds0.setAdcRange(1024);  //1024 for 10bit ADC;4096 for 12bit ADC
  gravityTds0.begin();  //initialization
  gravityTds1.setAref(5.0);  //reference voltage on ADC, default 5.0V on Arduino UNO
  gravityTds1.setAdcRange(1024);  //1024 for 10bit ADC;4096 for 12bit ADC
  gravityTds1.begin();  //initialization

  pinMode(sensorup, INPUT_PULLUP);
  pinMode(sensordw, INPUT_PULLUP);
  pinMode(pumppres, OUTPUT);
  pinMode(evwaterin, OUTPUT);
  pinMode(evflush, OUTPUT);
  pinMode(evroout, OUTPUT);

  digitalWrite(pumppres, LOW);
  digitalWrite(evwaterin, LOW);
  digitalWrite(evflush, LOW);
  digitalWrite(evroout, LOW);

  void loop()
  {

    sensors.requestTemperatures();

    gravityTds0.setTemperature(sensors.getTempCByIndex(0));  // set the temperature and execute temperature compensation
    gravityTds0.update();  //sample and calculate
    gravityTds1.setTemperature(sensors.getTempCByIndex(0));  // set the temperature and execute temperature compensation
    gravityTds1.update();  //sample and calculate

    tdsValue0 = gravityTds0.getTdsValue();  // then get the value
    tdsValue1 = gravityTds1.getTdsValue();  // then get the value

    //Connect sensor to Analog A0 A3
    V = analogRead(0) * 5.00 / 1024;     //Sensor output voltage
    P = (V - OffSet) * 250 * 0.1;           //Calculate water pressure
    V1 = analogRead(3) * 5.00 / 1024;     //Sensor output voltage
    P1 = (V1 - OffSet1) * 250 * 0.1;           //Calculate water pressure

    Serial.print(tdsValue0, 0);
    Serial.print(tdsValue1, 0);
    Serial.println("ppm");

    lcd.clear();
    lcd.setCursor(0, 0);
    lcd.print("TDS0 IN: ");
    lcd.print(tdsValue0, 0);
    lcd.print(" PPM");

    lcd.setCursor(0, 1);
    lcd.print("TDS1 OUT: ");
    lcd.print(tdsValue1, 0);
    lcd.print(" PPM");

    lcd.setCursor(0, 2);
    lcd.print("Temp: ");
    lcd.print(sensors.getTempCByIndex(0));
    lcd.print(" C");

    lcd.setCursor(0, 3);
    lcd.print("IN:");
    lcd.setCursor(3, 3);
    lcd.print(   P / 100 % 10);
    lcd.print(   P / 10 % 10);
    lcd.print('.');
    lcd.print(   P / 1 % 10);
    lcd.setCursor(10, 3);
    lcd.print("PO:");
    lcd.setCursor(13, 3);
    lcd.print(   P1 / 100 % 10);
    lcd.print(   P1 / 10 % 10);
    lcd.print('.');
    lcd.print(   P1 / 1 % 10);

    delay(50);

    btup = digitalRead(sensorup);
    btdw = digitalRead(sensordw);

    if (V < 1.0)
    {
      nopreshure();
      {
        if (V1 < 2.5)
        {
          hpnopreshure();
          while ((digitalRead(btup = LOW)) && (digitalRead(btdw = LOW)))
          {
            flush1();
            delay(10500);
            cycle1();
            {
              while ((digitalRead(btdw = HIGH)) && (digitalRead(btup = HIGH)))
              {
                tankfull();
              }
            }
          }
        }
      }
    }
  }

void flush1()
{
  digitalWrite(evflush, HIGH);
  digitalWrite(evroout, HIGH);
  delay(3000);
  digitalWrite(pumppres, HIGH);
  delay(5500);
  digitalWrite(evwaterin, HIGH);
  delay(2000);
  digitalWrite(evflush, LOW);
  digitalWrite(evroout, LOW);
}
void cycle1()
{
  digitalWrite(pumppres, HIGH);
  digitalWrite(evwaterin, HIGH);
}
void tankfull()
{
  digitalWrite(pumppres, LOW);
  digitalWrite(evwaterin, LOW);
  digitalWrite(evflush, LOW);
  digitalWrite(evroout, LOW);
  lcd.clear();
  lcd.setCursor(0, 3);
  lcd.print("TANK FULL");
}
void nopreshure()
{
  digitalWrite(pumppres, LOW);
  digitalWrite(evwaterin, LOW);
  digitalWrite(evflush, LOW);
  digitalWrite(evroout, LOW);
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("NO WATER PRESHURE");
}
void hpnopreshure()
{
  digitalWrite(pumppres, LOW);
  digitalWrite(evflush, LOW);
  digitalWrite(evroout, LOW);
  lcd.clear();
  lcd.setCursor(0, 1);
  lcd.print("HP PUMP NO PRESHURE");
}
`

No.
If anything, worse.
You need to pay more attention to where you place your ) and your (, and know the difference between = and ==

When posting error messages please copy the full message from the IDE using the "Copy error message" button and post it here in code tags

Where is the closing bracket of the setup() function ?

If you use Auto Format in the IDE you will see this

  digitalWrite(evflush, LOW);
  digitalWrite(evroout, LOW);
  void loop()
  {
    sensors.requestTemperatures();

So where does the setup() function end ?

In the IDE, if you hover over a closing brace(}), it will hilite the matching open brace{. The other hint is, after using AutoFormat, if your indentation doesn't return the setup() content all the way to the left margin (i.e. code you think shouldn't be part of setup(), for example, loop()), then you're still within setup(), you haven't finished it with } yet.
Very common error, but much easier to spot if you consistently apply AutoFormat when you're having compile problems. Many like to add a marker like
//All done setup ===============
at the point where loop should begin; a good reminder of the context.
C

please check in the code reference the syntax of the digitalRead() method and especially about the meaning it parameter

#include <GravityTDS.h>
#include <LCD_I2C.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#include <Wire.h>
LCD_I2C lcd(0x27, 20, 4);

#define ONE_WIRE_BUS 9
#define TdsSensorPin0 A1
#define TdsSensorPin1 A2
const float  OffSet = 0.473 ;
const float  OffSet1 = 0.479 ;
float V;
float V1;
int P;
int P1;
int sensorup = 2;
int sensordw = 3;
const int pumppres = 4;
const int evwaterin = 5;
const int evflush = 6;
const int evroout = 7;
const int logdisp = 8;

OneWire oneWire(ONE_WIRE_BUS);
GravityTDS gravityTds0;
GravityTDS gravityTds1;

DallasTemperature sensors(&oneWire);


float tdsValue0 = 0;
float tdsValue1 = 0;


void setup()
{
  Serial.begin(115200);
  lcd.begin();
  lcd.backlight();
  sensors.begin();
  gravityTds0.setPin(TdsSensorPin0);
  gravityTds1.setPin(TdsSensorPin1);
  gravityTds0.setAref(5.0);  //reference voltage on ADC, default 5.0V on Arduino UNO
  gravityTds0.setAdcRange(1024);  //1024 for 10bit ADC;4096 for 12bit ADC
  gravityTds0.begin();  //initialization
  gravityTds1.setAref(5.0);  //reference voltage on ADC, default 5.0V on Arduino UNO
  gravityTds1.setAdcRange(1024);  //1024 for 10bit ADC;4096 for 12bit ADC
  gravityTds1.begin();  //initialization

  pinMode(sensorup, INPUT_PULLUP);
  pinMode(sensordw, INPUT_PULLUP);
  pinMode(pumppres, OUTPUT);
  pinMode(evwaterin, OUTPUT);
  pinMode(evflush, OUTPUT);
  pinMode(evroout, OUTPUT);

  digitalWrite(pumppres, LOW);
  digitalWrite(evwaterin, LOW);
  digitalWrite(evflush, LOW);
  digitalWrite(evroout, LOW);
}

void loop()
{

  sensors.requestTemperatures();

  gravityTds0.setTemperature(sensors.getTempCByIndex(0));  // set the temperature and execute temperature compensation
  gravityTds0.update();  //sample and calculate
  gravityTds1.setTemperature(sensors.getTempCByIndex(0));  // set the temperature and execute temperature compensation
  gravityTds1.update();  //sample and calculate

  tdsValue0 = gravityTds0.getTdsValue();  // then get the value
  tdsValue1 = gravityTds1.getTdsValue();  // then get the value

  //Connect sensor to Analog A0 A3
  V = analogRead(0) * 5.00 / 1024;     //Sensor output voltage
  P = (V - OffSet) * 250 * 0.1;           //Calculate water pressure
  V1 = analogRead(3) * 5.00 / 1024;     //Sensor output voltage
  P1 = (V1 - OffSet1) * 250 * 0.1;           //Calculate water pressure

  Serial.print(tdsValue0, 0);
  Serial.print(tdsValue1, 0);
  Serial.println("ppm");

  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("TDS0 IN: ");
  lcd.print(tdsValue0, 0);
  lcd.print(" PPM");

  lcd.setCursor(0, 1);
  lcd.print("TDS1 OUT: ");
  lcd.print(tdsValue1, 0);
  lcd.print(" PPM");

  lcd.setCursor(0, 2);
  lcd.print("Temp: ");
  lcd.print(sensors.getTempCByIndex(0));
  lcd.print(" C");

  lcd.setCursor(0, 3);
  lcd.print("IN:");
  lcd.setCursor(3, 3);
  lcd.print(   P / 100 % 10);
  lcd.print(   P / 10 % 10);
  lcd.print('.');
  lcd.print(   P / 1 % 10);
  lcd.setCursor(10, 3);
  lcd.print("PO:");
  lcd.setCursor(13, 3);
  lcd.print(   P1 / 100 % 10);
  lcd.print(   P1 / 10 % 10);
  lcd.print('.');
  lcd.print(   P1 / 1 % 10);

  delay(50);

  if (P <= 2.0)
  {
    digitalWrite(pumppres, LOW);
    digitalWrite(evwaterin, LOW);
    digitalWrite(evflush, LOW);
    digitalWrite(evroout, LOW);
    lcd.clear();
    lcd.setCursor(0, 0);
    lcd.print("NO WATER PRESHURE");
    {
      if (P1 <= 5.5)
      {
        digitalWrite(pumppres, LOW);
        digitalWrite(evflush, LOW);
        digitalWrite(evroout, LOW);
        lcd.clear();
        lcd.setCursor(0, 1);
        lcd.print("HP PUMP NO PRESHURE");
        while ((digitalRead(sensorup) == LOW) && (digitalRead(sensordw) == LOW))
        {
          digitalWrite(evflush, HIGH);
          digitalWrite(evroout, HIGH);
          delay(3000);
          digitalWrite(pumppres, HIGH);
          delay(5500);
          digitalWrite(evwaterin, HIGH);
          delay(2000);
          digitalWrite(evflush, LOW);
          digitalWrite(evroout, LOW);
          {
            while ((digitalRead(sensordw) == HIGH) && (digitalRead(sensorup) == HIGH))
            {
              digitalWrite(pumppres, LOW);
              delay(2000);
              digitalWrite(evwaterin, LOW);
              lcd.clear();
              lcd.setCursor(0, 3);
              lcd.print("TANK FULL");
            }
          }
        }
      }
    }
  }
}

OK compile is good i did put 2 10k resistors to d2 d3 to 5v _PULLUP function but i still get nothing wen i meet the pressure conditions hmmm...

What range of pressure values is expected? your P & P1 defined as int - is it correct? Any pressure value smaller then one became zero

I switched the pressure with voltage reading because as i look on the serial monitor it displayed the calculation and was not looking like i set it it rather looked like p=5500 for 5 bar's so i switched to voltages.

if ((V >= 1.30) && (V1 >= 2.0))
  {
    while ((digitalRead(sensorup) == LOW) && (digitalRead(sensordw) == LOW))
    {
      digitalWrite(evflush, HIGH);
      digitalWrite(evroout, HIGH);
      delay(3000);
      digitalWrite(pumppres, HIGH);
      delay(5500);
      digitalWrite(evwaterin, HIGH);
      delay(2000);
      digitalWrite(evflush, LOW);
      digitalWrite(evroout, LOW);
      {
        while ((digitalRead(sensordw) == HIGH) && (digitalRead(sensorup) == HIGH))
        {
          digitalWrite(pumppres, LOW);
          delay(2000);
          digitalWrite(evwaterin, LOW);
          lcd.clear();
          lcd.setCursor(0, 3);
          lcd.print("TANK FULL");
          delay(1000);
        }
      }
    }
  }



  if (V <= 1.20)
  {
    digitalWrite(pumppres, LOW);
    digitalWrite(evwaterin, LOW);
    digitalWrite(evflush, LOW);
    digitalWrite(evroout, LOW);
    lcd.clear();
    lcd.setCursor(0, 0);
    lcd.print("NO WATER PRESURE");
    {
      if (V1 <= 2.0)
      {
        digitalWrite(pumppres, LOW);
        digitalWrite(evflush, LOW);
        digitalWrite(evroout, LOW);
        lcd.clear();
        lcd.setCursor(0, 1);
        lcd.print("HP PUMP NO PRESURE");
      }
    }
  }
}

now it starts.

The problem is solved?

not quite it ignores the

        while ((digitalRead(sensordw) == HIGH) && (digitalRead(sensorup) == HIGH))
        {
          digitalWrite(pumppres, LOW);
          delay(2000);
          digitalWrite(evwaterin, LOW);
          lcd.clear();
          lcd.setCursor(0, 3);
          lcd.print("TANK FULL");
          delay(1000);

and wont stops wen contacts are oped and also keeps flushing wen contacts are still on.

` if (V <= 1.20)
  {
    nopressure();
    {
      if (V1 <= 2.0)
      {
        hpnopressure();
      }
    }
  }

  // if ((V >= 1.30) && (V1 >= 2.0))
  //  {
  //    pressureok();
  //  }
  else if (digitalRead(sensorup) == LOW)
  {
    while (digitalRead(sensordw) == LOW)
    {
      flush1();
      {
        while (flush1 == 1)
        {
          cycle1();
        }
      }
    }
  }
  else (digitalRead(sensordw) == HIGH);
  {
    while (digitalRead(sensorup) == HIGH)
    {
      tankfull();
    }
  }
}
void flush1()
{
  digitalWrite(evflush, HIGH);
  digitalWrite(evroout, HIGH);
  delay(3000);
  digitalWrite(pumppres, HIGH);
  delay(5500);
  digitalWrite(evwaterin, HIGH);
  delay(2000);
  digitalWrite(evflush, LOW);
  digitalWrite(evroout, LOW);
}
void cycle1()
{
  digitalWrite(pumppres, HIGH);
  digitalWrite(evwaterin, HIGH);
}
void tankfull()
{
  digitalWrite(pumppres, LOW);
  digitalWrite(evwaterin, LOW);
  digitalWrite(evflush, LOW);
  digitalWrite(evroout, LOW);
  lcd.clear();
  lcd.setCursor(0, 3);
  lcd.print("TANK FULL");
}
void nopressure()
{
  digitalWrite(pumppres, LOW);
  digitalWrite(evwaterin, LOW);
  digitalWrite(evflush, LOW);
  digitalWrite(evroout, LOW);
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("NO WATER PRESSURE");
}
void hpnopressure()
{
  digitalWrite(pumppres, LOW);
  digitalWrite(evflush, LOW);
  digitalWrite(evroout, LOW);
  lcd.clear();
  lcd.setCursor(0, 1);
  lcd.print("HP PUMP NO PRESSURE");
}
void pressureok()
{
  lcd.clear();
  lcd.setCursor(0, 2);
  lcd.print("PRESSURE OK HP OK");
  delay(1000);
  lcd.clear();
}
`

OK managed to make it work this way so how i can make it void flush1 to run just once even if sensordw and sensorup is still low and after continue with void cycle1 until next time sensorup and sensordw are low again?
Now if sensorup is low and just of a second sensordw is low program works fine but in a real situation osmosis tank takes some time until gets filled by the level sensor down goes up again so until that time keeps flushing. Any ideas?

topic closed.

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