• Tidak ada hasil yang ditemukan

Sistem Pengatur Pengisian Tangki Air 2 L Menggunakan Sensor Flow Meter Berbasis Android

N/A
N/A
Protected

Academic year: 2017

Membagikan "Sistem Pengatur Pengisian Tangki Air 2 L Menggunakan Sensor Flow Meter Berbasis Android"

Copied!
8
0
0

Teks penuh

(1)

LAMPIRAN PROGRAM

#include <LiquidCrystal.h>

LiquidCrystallcd(8, 6, 5, A4, A5, 4); #define pompa A0

#define up A1 #define down 11 #define righ 10 #define left 9 #define ok 12 int state=0; floatvolum=0; charrecev;

bytestatusLed = 13; bytesensorInterrupt = 0; bytesensorPin = 2; floatcalibrationFactor = 4.5; volatile byte pulseCount; floatflowRate;

unsignedintflowMilliLitres; floattotalMilliLitres;

unsigned long oldTime; void setup()

{

lcd.begin(16, 2);

pinMode(pompa,OUTPUT); Serial.begin(9600);

(2)

pinMode(up, INPUT); pinMode(down, INPUT); pinMode(left, INPUT); pinMode(righ, INPUT); pinMode(ok, INPUT); digitalWrite(up, HIGH); digitalWrite(down, HIGH); digitalWrite(left, HIGH); digitalWrite(righ, HIGH); digitalWrite(ok, HIGH); pulseCount = 0; flowRate = 0.0; flowMilliLitres = 0; totalMilliLitres = 0; oldTime = 0;

attachInterrupt(sensorInterrupt, pulseCounter, FALLING); }

void loop() {

while (state==0) {

digitalWrite(pompa,LOW); lcd.clear();

lcd.setCursor(0,0);

lcd.print("Android >>>"); lcd.setCursor(0,1);

lcd.print("Manual");

if (digitalRead(down)==0){state=1;}

if (digitalRead(ok)==0){state=2;delay(200);} delay(200);

}

(3)

{

digitalWrite(pompa,LOW); pulseCount = 0;

flowRate = 0.0; flowMilliLitres = 0; totalMilliLitres = 0; oldTime = 0; lcd.clear();

lcd.setCursor(0,0); lcd.print("Android"); lcd.setCursor(0,1);

lcd.print("Manual >>>");

if (digitalRead(up)==0){state=0;}

if (digitalRead(ok)==0){state=3;delay(200);} delay(300);

}

while (state==3) //set nilai volume {

digitalWrite(pompa,LOW);

if (digitalRead(righ)==0){volum+=0.1;} if (digitalRead(left)==0){volum-=0.1;} lcd.setCursor(0,0);

lcd.print("Set Volume"); lcd.setCursor(0,1); lcd.print(volum,1);

if (digitalRead(ok)==0){state=4;delay(200);} delay(100);

lcd.clear(); }

while (state==4) {

(4)

{

digitalWrite(pompa,LOW); lcd.setCursor(0,0);

lcd.print("Debit: ");

lcd.print(flowRate,3); // Print the integer part of the variable lcd.print(" L/S");

lcd.setCursor(0,1); lcd.print("Vol : "); lcd.print(totalMilliLitres); lcd.print(" L");

if (digitalRead(ok)==0){state=3;delay(300);} }

else{

digitalWrite(pompa,HIGH);

if (digitalRead(ok)==0){state=3;delay(300);} if((millis() - oldTime) > 200){

detachInterrupt(sensorInterrupt); oldTime = millis();

flowRate = pulseCount;

flowRate=flowRate*0.0263/480/2.5*100; totalMilliLitres+=flowRate;

unsignedintfrac; lcd.setCursor(0,0); lcd.print("Debit: ");

lcd.print(flowRate,3); // Print the integer part of the variable lcd.print(" L/S");

lcd.setCursor(0,1); lcd.print("Vol : "); lcd.print(totalMilliLitres); lcd.print(" L");

pulseCount = 0;

(5)

} } }

while (state==2){

digitalWrite(pompa,LOW); pulseCount = 0;

flowRate = 0.0; flowMilliLitres = 0; totalMilliLitres = 0; oldTime = 0; lcd.clear();

lcd.setCursor(0,0); lcd.print("Set Volume"); lcd.setCursor(0,1); lcd.print(volum,1);

if (Serial.available()){recev= Serial.read(); if (recev=='A'){volum+=0.1;}

else if (recev=='B'){volum-=0.1;} else if (recev=='Z'){state=5;} }

(6)

{

if (totalMilliLitres>=volum) {

digitalWrite(pompa,LOW); lcd.setCursor(0,0);

lcd.print("Debit: ");

lcd.print(flowRate,3); // Print the integer part of the variable lcd.print(" L/S");

lcd.setCursor(0,1); lcd.print("Vol : "); lcd.print(volum); lcd.print(" L");

if (Serial.available()){if (Serial.read()=='Z'){state=2;delay(200);}} }

else{

digitalWrite(pompa,HIGH);

if (Serial.available()){if (Serial.read()=='Z'){state=2;delay(200);}} if((millis() - oldTime) > 200){

detachInterrupt(sensorInterrupt);

flowRate = ((1000.0 / (millis() - oldTime)) * pulseCount) / calibrationFactor; oldTime = millis();

flowRate = pulseCount;

flowRate=flowRate*0.0263/480/2.5*100; totalMilliLitres+=flowRate;

/* flowMilliLitres = ((flowRate / 60) * 1000)/8256; totalMilliLitres += flowMilliLitres;*/

unsignedintfrac; lcd.setCursor(0,0); lcd.print("Debit: ");

lcd.print(flowRate,3); // Print the integer part of the variable lcd.print(" L/S");

(7)

lcd.print("Vol : "); lcd.print(totalMilliLitres); lcd.print(" L");

pulseCount = 0;

attachInterrupt(sensorInterrupt, pulseCounter, FALLING); }

}

Serial.print("*F"); Serial.print(volum); Serial.print("*"); Serial.print("*G");

Serial.print(totalMilliLitres); Serial.print("*");

Serial.print("*H"); Serial.print(flowRate,3); Serial.print("*");

} }

(8)

Referensi

Dokumen terkait

The writer said that the aims of this study are to categorize the types of slang words and phrases, interpreting and identifying the function of slang words and phrases, and to

Menurut Pasal 1 angka 6 Perpres 38/ 2015, Kerjasama Pemerintah dengan Badan Usaha (KPBU) adalah kerjasama antara peme- rintah dan Badan Usaha dalam Penyediaan

Pada variabel CTPS diperoleh bahwa seluruh responden memiliki fasilitas CTPS di rumahnya sejumlah 28 orang (100%), se- luruh responden mendapatkan pernah

Kategori alasan: Kepercayaan dan kecocokan antar rekan kerja.. Emily Ford, Betty Izumi, JostLottes and Dawn

Dengan membaca teks, siswa dapat menuliskan ungkapan atau kalimat saran, masukan, dan penyelesaian masalah (sederhana) sebagai warga negara dengan tepat. Dengan membaca teks,

Dari hasil ini menunjukan bahwa penggunaan filter berpori 0,5 mikron, 0,3 mikron dan karbon aktif sangat baik untuk aliran air PDAM yang kurang bersih.. Kata Kunci : Filter

• Siswa memerhatikan penjelasan guru tentang kegiatan yang akan dilakukan hari ini yaitu kegiatan melempar dan menangkap bola dengan menggunakan bola yang terbuat dari

[r]