You are on page 1of 6

#define RELAY1 5

int flow_frequency;
unsigned int l_hour;
unsigned char flowmeter = 3;
unsigned long currentTime;
unsigned long cloopTime;
int indicator = 13;
const int sensor_ir= 2;
const int RELAY2 =6;
int buttonState = 0;
const int pingPin = 8;
void setup() {
pinMode(flowmeter, INPUT);
Serial.begin(9600);
attachInterrupt(1,flow, RISING);
sei();
currentTime =millis();
cloopTime = currentTime;
pinMode(indicator, OUTPUT);
pinMode(RELAY1, OUTPUT);
pinMode(RELAY2, OUTPUT);
pinMode(sensor_ir, INPUT);
}
void loop() {
ketinggian();
sensor_flow();
ifrared();
}
void flow ()
{
flow_frequency++;
}
void sensor_flow ()
{
currentTime =millis();
if (currentTime >= (cloopTime + 1000))
{
cloopTime = currentTime;
l_hour = (flow_frequency * 60 / 7.5);
flow_frequency = 0;
if (l_hour <= 10)
{
digitalWrite(indicator, HIGH);
}
else
{
digitalWrite(indicator, LOW);
}
}
Serial.print(l_hour, DEC);
Serial.println(" L/hour");
}
void ketinggian()
{
long duration, inches, cm;
pinMode(pingPin, OUTPUT);
digitalWrite(pingPin, LOW);
delayMicroseconds(2);
digitalWrite(pingPin, HIGH);
delayMicroseconds(5);
digitalWrite(pingPin, LOW);
pinMode(pingPin, INPUT);
duration =pulseIn(pingPin, HIGH);
inches = microsecondsToInches(duration);
cm = microsecondsToCentimeters(duration);
Serial.print(inches);
Serial.print("in, ");
Serial.print(cm);
Serial.print("cm");
Serial.println();
if (cm <=40)
{
digitalWrite(RELAY1,1);
Serial.println("Light ON");
delay(500);
}
else
{
digitalWrite(RELAY1,0);
Serial.println("Light OFF");
delay(500);
}
delay(100);
}
longmicrosecondsToInches(long microseconds)
{
return microseconds / 74 / 2;
}
longmicrosecondsToCentimeters(long microseconds)
{
return microseconds / 29 / 2;
}
void ifrared() {
buttonState =digitalRead(sensor_ir);
if (buttonState ==HIGH) {
digitalWrite(RELAY2,HIGH );
}
else {
digitalWrite(RELAY2, LOW);
}
}

You might also like