• 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

Gambar Rangkaian Alat

Lampiran

Lampiran rangkaian lengkap. Universitas

Alat ini dapat dimanfaatkan sebagai pengontrol volume air.Mikrokontroler ATMega8 mengirim data ke Sensor Flow meter dan sensor Flow meter akan mengubah aliran fluida

LAMPIRAN RANGKAIAN LENGKAP

SISTEM PENGATUR PENGISIAN TANGKI AIR 2L MENGGUNAKAN SENSOR FLOW METER BERBASIS MIKROKONTROLER ATmega8..

LCD dihubungkan langsung ke Port B dari mikrokontroler yang berfungsi mengirimkan data hasil pengolahan untuk ditampilkan dalam bentuk alfabet dan numerik pada

As inputs, Port D pi ns that are externally pulled lo w will source current if the pull-up. resistors