You are on page 1of 4

/* This program developed by Jufry, and this used for calculating rain fall inte

nsity
Using Panjerino Duemilanove
10th August 2014
*/
#include <LiquidCrystal.h>
#include <DS1307.h>
#include <Wire.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
#define ledPin 13
// LED connected to digital pin 13
// button on pin 4
int val;
int value = LOW;
int buttonState;
int lastButtonState;
int buttonState2;
int lastButtonState2;
int blinking;
long interval = 100;
long previousMillis = 0;
long startTime ;
long elapsedTime ;
int fractional;
void setup() {
pinMode(ledPin, OUTPUT);
pinMode(4, OUTPUT);
pinMode(6, INPUT);
lcd.begin(16,2);
lcd.clear();
Serial.begin(9600);
//Atur waktu dan tanggal di sini
/*RTC.stop();
RTC.set(DS1307_SEC,1);
//atur detik
RTC.set(DS1307_MIN,26);
//atur menit
RTC.set(DS1307_HR,11);
//atur jam
RTC.set(DS1307_DOW,7);
//atur urutan hari
RTC.set(DS1307_DATE,10);
//atur tanggal
RTC.set(DS1307_MTH,8);
//atur bulan
RTC.set(DS1307_YR,14);
//atur tahun
RTC.start();*/
lcd.clear();
lcd.setCursor(1,0);
lcd.print("Rain Fall Sense");
lcd.setCursor(0,1);
lcd.print("with Tipp Bucket");
delay(2500);
lcd.clear();
}
void utama(){
buttonState = analogRead(1);
buttonState2 = analogRead(2);

if (buttonState > 1000 && lastButtonState < 1001 && blinking == false){
startTime = millis();
blinking = true;
delay(5);
lastButtonState = buttonState;
}
else if (buttonState2 > 1000 && lastButtonState < 1001 && blinking == true){
elapsedTime = millis() - startTime;
blinking = false;
lastButtonState = buttonState;
}
else{
lastButtonState = buttonState;
lastButtonState2 = buttonState2;
}
if ((millis() - previousMillis > interval)){
if (blinking == true){
previousMillis = millis();
if (value == LOW)value = HIGH;
else value = LOW;
digitalWrite(ledPin, value);
}
else{digitalWrite(ledPin, LOW);}
}
}
void waktuTerhitungLCD(){
lcd.setCursor(0,1);
lcd.print( (int)(elapsedTime / 1000L));
lcd.print(".");
fractional = (int)(elapsedTime % 1000L);
if (fractional == 0){
lcd.print("000");
}
else if (fractional < 10)lcd.print("00");
else if (fractional < 100)lcd.print("0");
lcd.print(fractional);
lcd.setCursor(5,1);
lcd.print("s");
}
void curahHujanLCD(){
lcd.setCursor(8,1);
int curah1 = 21718000 / elapsedTime;
lcd.print((int)(curah1 / 100L));
lcd.print(".");
fractional = (int)(curah1 % 100L);
if (fractional == 0){
lcd.print("000");
}
else if (fractional < 10)Serial.print("00");
else if (fractional < 100)Serial.print("0");
lcd.print(fractional);
lcd.print("mm");
}

void getClockLCD(){
lcd.setCursor(0,0);
lcd.print(RTC.get(DS1307_HR,true));
lcd.print(":");
lcd.print(RTC.get(DS1307_MIN,false));
lcd.print(":");
lcd.print(RTC.get(DS1307_SEC,false));
lcd.setCursor(13,0);
lcd.print(analogRead(1));
}
void getClockMonitoring(){
Serial.print("Date: ");
Serial.print(RTC.get(DS1307_DATE,false));
Serial.print("/");
Serial.print(RTC.get(DS1307_MTH,false));
Serial.print("/");
Serial.print(RTC.get(DS1307_YR,false));
Serial.print(" ");
Serial.print("Time: ");
Serial.print(RTC.get(DS1307_HR,true));
Serial.print(":");
Serial.print(RTC.get(DS1307_MIN,false));
Serial.print(":");
Serial.print(RTC.get(DS1307_SEC,false));
Serial.println();
}
void curahHujanMonitoring(){
Serial.print("Curah Hujan:");
int curah1 = 21718000 / elapsedTime;
Serial.print((int)(curah1 / 100L));
Serial.print(".");
fractional = (int)(curah1 % 100L);
if (fractional == 0){
Serial.print("000");
} else if (fractional < 10)Serial.print("00");
else if (fractional < 100)Serial.print("0");
Serial.print(fractional);
Serial.print("; ");
}
void waktuTerhitungMonitoring(){
Serial.print("Time:");
Serial.print((int)(elapsedTime / 1000L));
Serial.print(".");
fractional = (int)(elapsedTime % 1000L);
if (fractional == 0){
lcd.print("000");
} else if (fractional < 10)Serial.print("00");
else if (fractional < 100)Serial.print("0");
Serial.print(fractional);
Serial.print("; ");
Serial.println();
}

void intensitasMonitoring(){
int curah = 21718000 / elapsedTime;
if(curah >= 0 && curah < 500)Serial.print("Intensitas Hujan: Sangat Ringan");
else if(curah >= 500 && curah < 2000)Serial.print("Intensitas Hujan: Ringan");
else if(curah >= 2000 && curah < 5000)Serial.print("Intensitas Hujan: Sedang")
;
else if(curah >= 5000 && curah < 9000)Serial.print("Intensitas Hujan: Lebat");
else if(curah >= 9000)Serial.print("Intensitas Hujan: Sangat Lebat");
Serial.println();
Serial.print("S1:");
Serial.print(analogRead(1));
Serial.print("; ");
Serial.print("S2:");
Serial.print(analogRead(2));
Serial.print("; ");
Serial.println();
Serial.println();
}
void loop(){
lcd.clear();
utama();
waktuTerhitungLCD();
curahHujanLCD();
getClockLCD();
getClockMonitoring();
curahHujanMonitoring();
waktuTerhitungMonitoring();
intensitasMonitoring();
delay(1000);
}

You might also like