2eme partie
void fillItUp() {
unsigned long fillTime = millis();
digitalWrite(waterInlet, LOW);
while ((millis() - fillTime) < 105000) {
delay(100);
updateRuntimeDisplay(1);
}
digitalWrite(waterInlet, HIGH);
delay(100);
//lcd.begin(20, 4);
lcd.clear();
}
void drainItOut() {
unsigned long drainTime = millis();
digitalWrite(drainPin, LOW);
delay(500);
lcd.begin(20, 4);
// lcd.clear();
while ((millis() - drainTime) < 105000) {
delay(100);
updateRuntimeDisplay(2);
}
digitalWrite(drainPin, HIGH);
delay(100);
//lcd.begin(20, 4);
lcd.clear();
}
void tiltRoutine() {
long doorOpened = millis();
while (digitalRead(tiltSensor)) {
if ((millis() - doorOpened) > 120000) {
lcd.setCursor(0, 3);
lcd.print(" Porte ouverte ");
}
}
}
void ventDry() {
digitalWrite(ventPin, LOW);
while (waterTemp() > 115) {
delay(1000);
updateRuntimeDisplay(6);
}
digitalWrite(ventPin, HIGH);
}
void preRinse() {
unsigned long rinseTime = millis();
digitalWrite(washMotor, LOW);
delay(500);
//lcd.begin(20, 4);
lcd.clear();
while ((millis() - rinseTime) < 600000) {
updateRuntimeDisplay(4);
delay(1000);
}
digitalWrite(washMotor, HIGH);
delay(100);
lcd.begin(20, 4);
lcd.clear();
}
void finalRinse() {
unsigned long rinseTime = millis();
digitalWrite(heaterPin, LOW);
digitalWrite(washMotor, LOW);
digitalWrite(soapDispensor, LOW);
delay(500);
//lcd.begin(20, 4);
lcd.clear();
while ((millis() - rinseTime) < 30000) {
updateRuntimeDisplay(5);
delay(500);
}
digitalWrite(soapDispensor, HIGH);
while (waterTemp() < 60) {
delay(1000);
updateRuntimeDisplay(5);
}
digitalWrite(heaterPin, HIGH);
delay(5000);
digitalWrite(washMotor, HIGH);
delay(100);
//lcd.begin(20, 4);
lcd.clear();
}
void washTheDishes() {
digitalWrite(heaterPin, LOW);
digitalWrite(washMotor, LOW);
delay(1500);
//lcd.begin(20, 4);
lcd.clear();
while (waterTemp() < 48) {
updateRuntimeDisplay(3);
delay(1000);
}
unsigned long soapTime = millis();
digitalWrite(soapDispensor, LOW);
while ((millis() - soapTime) < 30000) {
delay(500);
updateRuntimeDisplay(3);
}
digitalWrite(soapDispensor, HIGH);
while (waterTemp() < 68) {
delay(1000);
updateRuntimeDisplay(3);
}
if (prog_long==true){washTheDishesMaintien(360000,68);}
}
void washTheDishesMaintien(long temps,int temperatur) {
digitalWrite(heaterPin, LOW);
digitalWrite(washMotor, LOW);
delay(1500);
//lcd.begin(20, 4);
lcd.clear();
unsigned long maintien=millis();
while ((millis()-maintien)<=temps) {
updateRuntimeDisplay(3);
waterTempMaintien(temperatur);
}
digitalWrite(heaterPin, HIGH);
delay(5000);
digitalWrite(washMotor, HIGH);
delay(100);
//lcd.begin(20, 4);
lcd.clear();
}
void loop() {
// drainItOut();
lcd.setCursor(0, 0);
lcd.print(F("Date: "));
digitalWrite(0, LOW);
digitalWrite(1, LOW);
while ((digitalRead(goButton))) {
if (!digitalRead(stopButton)) drainItOut();
if (digitalRead(tiltSensor)) {
tiltRoutine();
}
DateTime now = RTC.now();
lcd.setCursor(10, 0);
//lcd.print(dayOfWeek[now.dayOfWeek()]);
lcd.setCursor(0, 1);
lcd.print(currentMonth[(now.month() - 1)]);
lcd.print(' ');
lcd.print(now.day(), DEC);
lcd.print(", ");
lcd.print(now.year(), DEC);
lcd.setCursor(0, 2);
if (now.hour() > 12) {
pm = true;
}
else {
pm = false;
}
if (pm) {
lcd.print((now.hour() - 12), DEC);
}
else {
lcd.print(now.hour(), DEC);
}
lcd.print(':');
if (now.minute() < 10) {
lcd.print('0');
}
lcd.print(now.minute(), DEC);
lcd.print(':');
if (now.second() < 10) {
lcd.print('0');
}
lcd.print(now.second(), DEC);
if (pm) {
lcd.print(F(" PM "));
}
else {
lcd.print(F(" AM "));
}
digitalWrite(goLight, HIGH);
digitalWrite(stopLight, LOW);
lcd.clear();
cycleStart = millis();
drainItOut(); //on vidange l'eau
delay(1000);
fillItUp(); //remplissage d'eau
delay(1000);
washTheDishes(); //on fait la vaisselle
delay(1000);
drainItOut(); //on vidange l'eau
delay(1000);
fillItUp(); //remplissage d'eau
delay(1000);
preRinse(); //on fait le pré rincage
delay(1000);
drainItOut(); //on vidange l'eau
delay(1000);
fillItUp(); //remplissage d'eau
delay(1000);
finalRinse(); //on fait le rincage final
delay(1000);
drainItOut(); //on vidange l'eau
delay(1000);
ventDry(); //on seche à l'air chaud
lcd.clear();
lcd.setCursor(0, 3);
lcd.print(F("Vaisselle propre!"));
digitalWrite(goLight, HIGH); //extinction de la led "lavage en cours"
digitalWrite(stopLight, LOW); //allumage de la led " vaisselle propre"
}
}