Perancangan Sistem Informasi Debit Air berbasis Arduino UNO

46

LAMPIRAN A
//Kode Program Sistem
//inisialisasi variabel dan library
#include
#include
#include
#include
byte sensorInterrupt = 0; // 0 = pin 2; 1 = pin 3
byte sensorPin
= 2;
// konstanta untuk faktor kalibrasi flow sensor
float calibrationFactor = 8.5;
volatile byte pulseCount;
int volbulan[6] ;
int temp[6];
unsigned long volume;
unsigned long total;
unsigned long oldmin;
unsigned long oldmonth;

unsigned long oldTime;
float debitmenit;
unsigned int debitdetik;

const int chipSelect = 4;
File dataFile;

byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED
};
byte ip[] = { 10,4,11,177 };
const int MAX_PAGE_NAME_LEN = 8; // max characters
in a page name
char buffer[MAX_PAGE_NAME_LEN+1]; // page name +
terminating null
EthernetServer server(80);
EthernetClient client;
//inisialisasi server ,SD card, waktu dan interupsi
void setup()
{
Serial.begin(9600);

Ethernet.begin(mac, ip);
server.begin();
Serial.println("Ready");

Universitas Sumatera Utara

47

setTime(12,0,0,6,30,14);
attachInterrupt(sensorInterrupt,
RISING);

pulseCounter,

// make sure that the default chip select pin
is set to
// output, even if you don't use it:
pinMode(10, OUTPUT);
// see if the card is present and can be
initialized:

if (!SD.begin(chipSelect))
{
Serial.println("Card
failed,
or
not
present");
// don't do anything more:
return;
}
Serial.println("card initialized.");
}
//Fungsi Utama Sistem
void loop()
{
debit(); // Rutin pembacaan data debbit air
dari sensor
client = server.available();
if (client) {
while (client.connected()) {

if (client.available()) {
if( client.find("GET ") ) {
// look for the page name
memset(buffer,0,
sizeof(buffer)); // clear the buffer
if(client.find( "/"))
if(client.readBytesUntil('/',
buffer,
MAX_PAGE_NAME_LEN ))
{
if(strcmp(buffer,
"tampil") == 0)
showAnalog();
else
if(strcmp(buffer, "data") == 0)
showDigital();

Universitas Sumatera Utara

48


else
unknownPage(buffer);
}
}
Serial.println();
break;
}
}
client.stop();
}
}
// Rutin Halaman Data real-time sistem
void showAnalog()
{
sendHeader();
client.println(F("DATA PELANGGAN "));
client.println("");
client.println(F("NAMA PELANGGAN
: Arif

Azhari"));
client.println("");
client.println(F("NOMOR PELANGGAN : 11691"));
client.println("");
client.println(F("ALAMAT
PELANGGAN
:
Jl
Ayahanda Gg tabib NO : 6"));
client.println("");
client.print(" Jam : ");
client.print(hour());
client.print(F(" Menit : "));
client.print(minute());
client.print(F(" Detik : "));
client.print(second());
client.println("");
client.print(F(" Tanggal : "));
client.print(day());
client.print(F(" Bulan : "));

client.print(monthStr(month()));
client.print(F(" Tahun : "));
client.print(year());
client.println("");

Universitas Sumatera Utara

49

m3) :

client.print(F("Pemakaian air Bulan ini (dalam
"));

client.print(volume);
client.println("");

for (int bulan = 0; bulan < 5; bulan++)
{
client.print(F("Pemakaian air "));

client.print(bulan+1);
client.print(F(" Bulan Lalu : "));
client.print(volbulan[bulan]);
client.println("");
}
}
//Rutin Halaman Web Data pada kartu memori
void showDigital()
{
sendHeader();
File dataFile = SD.open("datalog.txt");
int i;
while(dataFile.available())
{
client.write(dataFile.read());
i++;
if(i > 40)
{
i=0;
client.println("");

}
}
dataFile.close();
}
//Halaman Web default
void unknownPage(char *page)
{
sendHeader();
client.println("Halaman

utama

Universitas Sumatera Utara

50

Sistem");
client.print(page);
client.println("");
client.println("Halaman

yang
tersedia
:");
client.println("/Hasil Pembacaan /");
client.println("/Data Pembacaan/");
client.println("");
}

void swap()
{
// Tukan data bulan ini ke bulan
berlalu
for(int bulan = 5;bulan >= 1;bulan--)
{

yang

sudah

temp[bulan]=volbulan[bulan-1];

volbulan[bulan]=temp[bulan];
}
volbulan[0]=volume;
volume=0;

}

void pulseCounter()
{
// naikan cacahan Pulsa
pulseCount++;
}
void debit()
{
if((millis() - oldTime) > 1000)
// rutin
memproses pulsa counter dalam rentang satu detik
{
// disable interupsi untuk memulai
perhitungan pulsa dan proses lainnya
detachInterrupt(sensorInterrupt);
//

Rumus

perhitungan

dari

sensor

Universitas Sumatera Utara

51

debit dalam liter per menit
debitmenit = ((1000.0 / (millis() oldTime)) * pulseCount) / calibrationFactor;
// waktu setelah interupsi berlalu.
oldTime = millis();
// konversikan kedalam mililiter
debitdetik = (debitmenit / 60)

*

1000;
// jumlahkan milliliter yang telah
lewat dengan yang sekarang untuk mendapatkan total
volume
volume += debitdetik;
total += debitdetik;
String dataString =" ";
// Reset ulang pulsa
pulseCount = 0;
if(month() != oldmonth)
{
swap();
oldmonth = month();
}
if(minute() != oldmin)
{
oldmin = minute();
dataString += day();
dataString += " : ";
dataString += month();
dataString += " : ";
dataString += year();
dataString += " ";
dataString +=
dataString +=
dataString +=
dataString +=
dataString +=
dataString +=
dataString
dataString +=
dataString +=

hour();
" : ";
minute();
" : ";
second();
"
";
+= " Volume";
String(volbulan[0]);
" M3 ";

Universitas Sumatera Utara

52

File
dataFile
SD.open("datalog.txt", FILE_WRITE);

=

dataFile.println(dataString);
dataFile.close();
}
// nyalakan kembali interpsi
attachInterrupt(sensorInterrupt,
pulseCounter, RISING);
}
}
void sendHeader()
{
// send a standard http response header
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println();
client.println("Web
multi-page ");
client.println("");
}

server

Universitas Sumatera Utara