int i = 0;
const int trigPin = 9;// defines pins numbers
const int echoPin = 10;
const int relay1_Beater = 7;
const int relay2_Compressor = 6;
const int relay3_Ice_cream_Machine = 5;
const int relay4_Heater = 4;
const int relay5_Pump_Motor = 3;
const int relay6 = 2;
long duration;// defines variables
int distance;// defines variables
float celsius;
const int switchPin = 13; // switch connected to pin 3
//const int relayPin = 6; // relay connected to pin 2
unsigned long previousMillis = 0; // will store last time relay was activated
const long interval = 6000000; // interval (in milliseconds) for 10 minutes
bool switchState = false; // current state of the switch
bool switchChanged = false; // whether the switch state has changed
//for interfacing a lcd display
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 20, 4);
void setup() {
// put your setup code here, to run once:
pinMode(trigPin, OUTPUT); // Sets the trigPin as an Output
pinMode(echoPin, INPUT); // Sets the echoPin as an Input
pinMode(relay1_Beater, OUTPUT);
pinMode(relay2_Compressor, OUTPUT);
pinMode(relay3_Ice_cream_Machine, OUTPUT);
pinMode(relay4_Heater, OUTPUT);
pinMode(relay5_Pump_Motor, OUTPUT);
pinMode(relay6, OUTPUT);
pinMode(switchPin, INPUT_PULLUP); // enable internal pull-up resistor
//pinMode(relayPin, OUTPUT);
//digitalWrite(relay2_Compressor, LOW); // set relay off initially
Serial.begin(9600);
lcd.init();
lcd.backlight();
lcd.setCursor(1, 0);
lcd.print(" B&C_AEROWHIP");
}
void loop() {
// put your main code here, to run repeatedly:
int Sensor1 = analogRead(A1);
int Sensor2 = analogRead(A2);
int Sensor3 = analogRead(A3);
int Sensor4 = analogRead(A4);
int Func_Auto = analogRead(A5);
int Func_Wash = analogRead(A6);
int Func_Night = analogRead(A7);
int Func_Pump = analogRead(A8);
int Dispensor_Micro_Switch = analogRead(A9);
int Pully_Reed_Switch = analogRead(A10);
Serial.println(Func_Auto);
digitalWrite(trigPin, LOW); // Clears the trigPin
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);// Sets the trigPin on HIGH state for 10 micro seconds
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);// Reads the echoPin, returns the sound wave travel time in microseconds
distance = duration * 0.034 / 2;// Calculating the distance
//Serial.print("Distance: "); // Prints the distance on the Serial Monitor
//Serial.println(distance);
//Serial.println(Sensor4);
lcd.setCursor(0, 3);
lcd.print("LEVEL");
lcd.setCursor(6, 3);
lcd.print (distance);
float celsius = 1 / (log(1 / (1023. / Sensor1 - 1)) / 3950 + 1.0 / 298.15) - 273.15;
lcd.setCursor(10, 3);
lcd.print ("TEMP");
lcd.setCursor(15, 3);
lcd.print (celsius);
if (Func_Auto>1000)
{
lcd.setCursor(0, 1);
lcd.print(" MODE__AUTO");
digitalWrite(relay1_Beater, HIGH);
delay(1000);
digitalWrite(relay2_Compressor, HIGH);
if ((Sensor1>684)&&(Sensor1<728))
{digitalWrite(relay3_Ice_cream_Machine, LOW);
digitalWrite(relay2_Compressor, LOW);
}
else
{digitalWrite(relay3_Ice_cream_Machine, HIGH);
digitalWrite(relay2_Compressor, HIGH);
}
if (switchState==HIGH)
{digitalWrite(relay4_Heater, HIGH);
//digitalWrite(relay6, HIGH);
}
else if (switchState==LOW)
{digitalWrite(relay4_Heater, LOW);
}
}
else
{
lcd.setCursor(0, 1);
lcd.print(" ");
digitalWrite(relay1_Beater, LOW);
digitalWrite(relay2_Compressor, LOW);
if (Func_Night>1000)
{
lcd.setCursor(0, 1);
lcd.print(" MODE_NIGHT");
digitalWrite(relay1_Beater, HIGH);
delay(3000);
digitalWrite(relay2_Compressor, HIGH);
}
else
{
lcd.setCursor(0, 1);
lcd.print(" ");
digitalWrite(relay1_Beater, LOW);
digitalWrite(relay2_Compressor, LOW);
}
if (Pully_Reed_Switch>1000)
{
digitalWrite(relay2_Compressor, LOW);
}
if (Func_Wash>1000)
{
lcd.setCursor(0, 1);
lcd.print(" MODE__WASH");
digitalWrite(relay1_Beater, HIGH);}
else
{
//lcd.setCursor(0, 1);
//lcd.print(" ");
digitalWrite(relay1_Beater, LOW);}
if (Func_Pump>1000)
{
lcd.setCursor(0, 1);
lcd.print(" MODE__PUMP");
digitalWrite(relay5_Pump_Motor, HIGH);}
else
{
lcd.setCursor(0, 1);
lcd.print(" ");
digitalWrite(relay5_Pump_Motor, LOW);}
bool previousSwitchState = switchState;
switchState = digitalRead(switchPin) == LOW;
//Serial.println(switchState);
switchChanged = (switchState != previousSwitchState);
// check if switch is open and timer has elapsed
unsigned long currentMillis = millis();
if (switchState == false && currentMillis - previousMillis >= interval) {
digitalWrite(relay2_Compressor, HIGH); // activate relay
}
// reset timer and deactivate relay if switch is closed
if (switchChanged && switchState == true) {
previousMillis = currentMillis;
digitalWrite(relay2_Compressor, LOW); // deactivate relay
}
//digitalWrite(relay1_Beater, HIGH
//digitalWrite(relay2_Compressor, HIGH);
//digitalWrite(relay3_Ice_cream_Machine, HIGH);
//digitalWrite(relay4_Heater, HIGH);
//digitalWrite(relay5_Pump_Motor, HIGH);
//digitalWrite(relay6, HIGH);
}}
COMPRESSOR
BEATER
ICE CREAM MACHINE
HEATER
PUMP MOTOR
DISPENSOR SWITCH
REED SWITCH
AUTO
NIGHT
WASH
PUMP