BAB V KESIMPULAN DAN SARAN
5.2. Saran
Setelah melakukan pengujian maka diperoleh beberapa hal yang bisa menjadi saran untuk perkembangan penelitian lebih lanjut :
1. Penakaran volume air dengan kelipatan kurang dari 100 ml tiap mode pilihan volume. Misal dengan kelipatan 10 ml, 20 ml atau lebih kecil lagi.
2. Rentang volume dapat dikembangkan untuk menakar volume kurang dari 100 ml atau penakaran lebih dari 2000 ml.
3. Solenoid valve yang dapat bekerja dengan tekanan rendah, sehingga tidak perlu
penambahan pompa.
DAFTAR PUSTAKA
[1] Rhamdhani, D., 2010, Measuring Microcontroller Based Automatic Water AT89S51, Faculty of Computer Science and Information Technology, Gunadarma University. [2] Sulistiadji, K., dan Pitoyo, J., 2009, Alat Ukur dan Instrumen Ukur, BBP Mektan,
Serpong.
[3] Try, W., 2011, Spesifikasi Alat-alat Lab, http://belajarbersamabioc2011-12.blogspot.com/2011/10/spesifikasi-alat-alat-lab.html, diakses 6 Februari 2014. [4] Asyiddin, N., 2007, Fluid Flow Measurement,
http://piyushpanchal2007.mynetworksolutions.com/images/3._FLOW.pdf, diakses 4 Februari 2014.
[5] Bar-Meir, G., 2013, Basics of Fluid Mechanics, Version 0.3.4.0, Chicago, Hal. 69-92.
[6] ----, 2010, Data Sheet Water Flow Sensor, Seeed Studio.
[7] Sood, R., Kaur, M., and Lenka, H., 2013, Design and Development of Automatic
Water Flow Meter, IJCSEA, Vol. 3, No. 3.
[8] Heryanto, M., A., dan Adi, W., 2008, Pemrograman Bahasa C untuk Mikrokontroler
ATmega8535, ANDI Yogyakarta, Yogyakarta.
[9] Soebhakti, H., 2007, Basic AVR Microcontroller Tutorial, Politeknik Batam, Batam. [10] Dunia Elektronika, 2013, Minimum Sistem Mikrokontroler TAmega8535,
http://www.duniaelektronika.net/mikrokontroler-atmega8535-sistem-minimum/, diakses 9 Februari 2014.
[11] ----, 2006, Data Sheet Microcontroller ATmega8535(L), Atmel.
[12] Floyd, T., 2007, Principles of Electric Circuits Conventional Current Version 8th
Edition, New Jersey, Hal. 486-496.
[13] Solenoid-Valve-Info.com, 2013, Solenoid Valve Basics, http://www.solenoid-valve-info.com/, diakses pada 8 Februari 2014.
[14] Seeed, 2014, G1/2 Electric Solenoid Valve Normally Closed,
http://www.seeedstudio.com/, diakses 8 Februari 2014.
[15] Purnama, A., 2012, Elektronika Dasar, http://elektronika-dasar.web.id/, diakses 9 Februari 2014.
[16] Cathey, J.J., 2002, Schaum’s outlines Electronic devices and Circuits 2nd edition,
USA, Hal. 70-71.
[17] Boylestad, R., and Nashelsky, L., Electronic Devices and Circuit Theory 7th Edition,
Ohio, Hal. 180-185
LAMPIRAN 1
LAMPIRAN 2
LAMPIRAN 3
TABEL PENGARUH DEBIT DAN FREKUENSI
TERHADAP WAKTU DAN SET POINT
( )= 7 ,5 Tabel P enga ruh Debit dan F rek uen si Te rhadap Wak tu d an Set Poin t ( )= 10 00 60 =
LAMPIRAN 4
HASIL PERCOBAAN SET POINT PROGRAM
DIPENGARUHI DESAIN ALAT
Tabel Hasil Percobaan Set Point Program Dipengaruhi Desain Alat Input Vol. (ml) Set Point Perhitungan
Set Point Desain
SP=(0,45*vol)-3 Output Timbangan (gr) Berat Gelas Ukur (gr) Output Vol. (ml) Selisih Vol. (ml) Error (%) 100 45 42 321 212 109 9 9,00 200 90 87 430 212 218 18 9,00 300 135 132 540 212 328 28 9,33 400 180 177 646 212 434 34 8,50 500 225 222 753 212 541 41 8,20 600 270 267 860 212 648 48 8,00 700 315 312 969 212 757 57 8,14 800 360 357 1076 212 864 64 8,00 900 405 402 1186 212 974 74 8,22 1000 450 447 1294 212 1082 82 8,20 1100 495 492 1400 212 1188 88 8,00 1200 540 537 1501 212 1289 89 7,42 1300 585 582 1613 212 1401 101 7,77 1400 630 627 1721 212 1509 109 7,79 1500 675 672 1831 212 1619 119 7,93 1600 720 717 1934 212 1722 122 7,63 1700 765 762 2040 212 1828 128 7,53 1800 810 807 2146 212 1934 134 7,44 1900 855 852 2255 212 2043 143 7,53 2000 900 897 2367 212 2155 155 7,75 ( )= −
LAMPIRAN 5
HASIL PERCOBAAN SET POINT PROGRAM
BERDASARKAN PERCOBAAN
Tabel Hasil Percobaan Set Point Program Berdasarkan Percobaan
Persamaan Set Point ke-1 : SP=(0,4 x Vol) - 3
Input Vol. (ml) Set Point Perhitungan Set Point Percobaan SP=(0,4*vol)-3 Output Timbangan (gr) Berat Gelas Ukur (gr) Output Vol. (ml) Selisih Vol. (ml) Error (%) 100 45 37 310 212 98 -2 -2,00 500 225 197 702 212 490 -10 -2,00 1000 450 397 1187 212 975 -25 -2,50 1500 675 597 1674 212 1462 -38 -2,53 2000 900 797 2150 212 1938 -62 -3,10
Persamaan Set Point ke-2 : SP=(0,43 x Vol) - 3
Input Vol. (ml) Set Point Perhitungan Set Point Percobaan SP=(0,43*vol)-3 Output Timbangan (gr) Berat Gelas Ukur (gr) Output Vol. (ml) Selisih Vol. (ml) Error (%) 100 45 40 316 212 104 4 4,00 500 225 212 726 212 514 14 2,80 1000 450 427 1228 212 1016 16 1,60 1500 675 642 1739 212 1527 27 1,80 2000 900 857 2245 212 2033 33 1,65
Persamaan Set Point ke-3 : SP=(0,42 x Vol) - 3
Input Vol. (ml) Set Point Perhitungan Set Point Percobaan SP=(0,42*vol)-3 Output Timbangan (gr) Berat Gelas Ukur (gr) Output Vol. (ml) Selisih Vol. (ml) Error (%) 100 45 39 311 212 99 -1 -1,00 500 225 207 712 212 500 0 0,00 1000 450 417 1211 212 999 -1 -0,10 1500 675 627 1708 212 1496 -4 -0,27 2000 900 837 2200 212 1988 -12 -0,60
Persamaan Set Point ke-4 : SP=(0,425 x Vol) - 3
Input Vol. (ml) Set Point Perhitungan Set Point Percobaan SP=(0,425*vol)-3 Output Timbangan (gr) Berat Gelas Ukur (gr) Output Vol. (ml) Selisih Vol. (ml) Error (%) 100 45 39,5 311 212 99 -1 -1,00 500 225 209,5 715 212 503 3 0,60 1000 450 422 1209 212 997 -3 -0,30 1500 675 634,5 1708 212 1496 -4 -0,27 2000 900 847 2210 212 1998 -2 -0,10 ( ) = −
LAMPIRAN 6
Listing Program Keseluruhan /***************************************************** This program was produced by the
CodeWizardAVR V2.05.3 Standard Automatic Program Generator
© Copyright 1998-2011 Pavel Haiduc, HP InfoTech s.r.l. http://www.hpinfotech.com
Project : Alat Penakar Volume //Nama Program Version : -
Date : 22/06/2015 Author : se7en Company : USD Comments: -
Chip type : ATmega8535 //Jenis chip Program type : Application
AVR Core Clock frequency: 10,000000 MHz Memory model : Small
External RAM size : 0 Data Stack size : 128
*****************************************************/
#include <mega8535.h> //Inisialisasi mikrokontroler yang dipakai, ATmega8535 #include <delay.h> //Fungsi tunda (delay) eksekusi program
#include <stdio.h> //Fungsi input & output standar
#include <stdlib.h> //Fungsi library standar, operasi pembanding atau konversi #include <alcd.h> //memakai library alphanumerik lcd
int x=0; //tipe data integer (bilangan bulat) dengan nama variabel x
int setpoint=0; //tipe data integer (bilangan bulat) dengan nama variabel setpoint int klipatan100; //tipe data integer (bilangan bulat) dengan nama variable
klipatan100
unsigned int nilai; //tipe data unsigned integer (bil. bulat positif), nama var. nilai char temp[4],array[4],i=0; //tipe data karakter
char buf[30]; //deklarasi variabel buf untuk menyimpan/ditampilkan ke lcd void simpan_nilai() //program simpan data "nilai" menu lain
{
if(i==1){nilai=array[i];} //logika if-else untuk tekan tombol keypad maksimal 4 digit else if(i>=2&&i<=4) { nilai=(nilai*10)+array[i]; } else { i=0; nilai=0; array[0]=0; array[1]=0; array[2]=0; array[3]=0; temp[0]=0;
temp[1]=0; temp[2]=0; temp[3]=0; }
}
void tampil2() //program tampil2, tampilkan data "nilai" menu Lain pada LCD {
if(nilai>0) {
ftoa(nilai,0,temp); //mengubah tipe data float ke array,tampilkan ke lcd lcd_gotoxy(0,1); //menempatkan kursor di kolom 0 baris 1 pada lcd lcd_puts(temp); //Menampilkan data nilai pada LCD
} }
void main(void) {
// Input/Output Ports initialization // Port A initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTA=0x00;
DDRA=0x02; // Port B initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTB=0x00;
DDRB=0x00; // Port C initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTC=0x00;
DDRC=0x00; // Port D initialization
// Func7=In Func6=In Func5=In Func4=In Func3=Out Func2=Out Func1=Out Func0=Out // State7=T State6=T State5=T State4=T State3=0 State2=0 State1=0 State0=0
PORTD=0x00; DDRD=0x0F;
// Timer/Counter 0 initialization // Clock source: System Clock // Clock value: Timer 0 Stopped // Mode: Normal top=0xFF // OC0 output: Disconnected TCCR0=0x00;
TCNT0=0x00; OCR0=0x00;
// Timer/Counter 1 initialization // Clock source: T1 pin Rising Edge // Mode: Normal top=0xFFFF // OC1A output: Discon. // OC1B output: Discon. // Noise Canceler: Off
// Input Capture on Falling Edge // Timer1 Overflow Interrupt: Off // Input Capture Interrupt: Off // Compare A Match Interrupt: Off // Compare B Match Interrupt: Off TCCR1A=0x00; TCCR1B=0x00; TCNT1H=0x00; TCNT1L=0x00; ICR1H=0x00; ICR1L=0x00; OCR1AH=0x00; OCR1AL=0x00; OCR1BH=0x00; OCR1BL=0x00; // Timer/Counter 2 initialization // Clock source: System Clock // Clock value: Timer2 Stopped // Mode: Normal top=0xFF // OC2 output: Disconnected ASSR=0x00;
TCCR2=0x00; TCNT2=0x00; OCR2=0x00;
// External Interrupt(s) initialization // INT0: Off
// INT1: Off // INT2: Off MCUCR=0x00; MCUCSR=0x00;
// Timer(s)/Counter(s) Interrupt(s) initialization TIMSK=0x00;
// USART initialization // USART disabled UCSRB=0x00;
// Analog Comparator initialization // Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off ACSR=0x80;
// ADC initialization // ADC disabled ADCSRA=0x00; // SPI initialization // SPI disabled SPCR=0x00; // TWI initialization // TWI disabled TWCR=0x00; // Alphanumeric LCD initialization // Connections are specified in the
// Project|Configure|C Compiler|Libraries|Alphanumeric LCD menu: // RS - PORTC Bit 0 // RD - PORTC Bit 1 // EN - PORTC Bit 2 // D4 - PORTC Bit 4 // D5 - PORTC Bit 5 // D6 - PORTC Bit 6 // D7 - PORTC Bit 7 // Characters/line: 16 lcd_init(16);
up: //kembali mode awal
lcd_clear(); //hapus tampilan pada lcd
lcd_gotoxy(0,0); //menempatkan kursor di kolom 0 baris 0 pada lcd
lcd_putsf("Pilih MODE"); //menampilkan string "Pilih MODE" pada lcd
x=0; i=0; nilai=0; temp[0]=0; temp[1]=0; temp[2]=0; temp[3]=0;
while(x==0) //program pilih mode Khusus atau mode Lain {
PORTD=8; //dec.8 maka Port D Pin 3 aktif, keypad kolom 1 aktif delay_ms(1); //waktu tunda selama 1 millisecond
if(PIND==72) //dec.72 keypad tombol "Khusus" aktif, pilih mode Khusus {
lcd_clear(); //hapus tampilan pada lcd
lcd_gotoxy(0,0); //menempatkan kursor di kolom 0 baris 0 pada lcd lcd_putsf("Mode Khusus"); //menampilkan string "Mode Khusus" pada lcd lcd_gotoxy(0,1); //menempatkan kursor di kolom 0 baris 1 pada lcd lcd_putsf("1-4"); //menampilkan string "1-4" pada lcd
x=1; //menuju ke mode Khusus }
if(PIND==40) //dec.40 maka keypad tombol "Lain" aktif, pilih mode Lain {
lcd_gotoxy(0,0); //menempatkan kursor di kolom 0 baris 0 pada lcd lcd_putsf("Mode Lain"); //menampilkan string "Mode Lain" pada lcd lcd_gotoxy(0,1); //menempatkan kursor di kolom 0 baris 1 pada lcd lcd_putsf("100ml - 2000ml"); //menampilkan string "100ml-2000ml" pada lcd delay_ms(1000); //waktu tunda selama 1000 millisecond = 1 detik lcd_clear(); //hapus tampilan pada lcd
x=2; //menuju ke mode Lain }
}
while (x==1) //program mode Khusus {
PORTD=1; //dec.1 maka Port D Pin 0 aktif, keypad kolom 4 aktif delay_ms(10); //waktu tunda selama 10 millisecond
if(PIND==33) //dec.33 : keypad tombol "4" aktif, pilihan 4 volume 2000ml {
lcd_clear(); //hapus tampilan pada lcd
lcd_gotoxy(0,0); //menempatkan kursor di kolom 0 baris 0 pada lcd lcd_putsf("Anda Pilih :"); //menampilkan string "Anda Pilih :" pada lcd lcd_gotoxy(0,1); //menempatkan kursor di kolom 0 baris 1 pada lcd lcd_putsf("2000ml"); //menampilkan string "2000ml" pada lcd
setpoint=847; //set point 2000ml mode khusus, counter sampai 847 }
if(PIND==65) //dec.65 : keypad tombol "1" aktif, pilihan 1 volume 200ml {
lcd_clear(); //hapus tampilan pada lcd
lcd_gotoxy(0,0); //menempatkan kursor di kolom 0 baris 0 pada lcd lcd_putsf("Anda Pilih :"); //menampilkan string "Anda Pilih :" pada lcd lcd_gotoxy(0,1); //menempatkan kursor di kolom 0 baris 1 pada lcd lcd_putsf("200ml"); //menampilkan string "200ml" pada lcd
setpoint=82; //set point 200ml mode khusus, counter sampai 82 }
if(PIND==17) /dec.17 maka keypad tombol "7" aktif, jika tekan 7 {
lcd_clear(); //hapus tampilan pada lcd
lcd_gotoxy(0,1); //menempatkan kursor di kolom 0 baris 1 pada lcd lcd_putsf("Pilihan Salah"); //menampilkan string "Pilihan Salah" pada lcd delay_ms(1000); //waktu tunda selama 1000 millisecond = 1 detik lcd_clear(); //hapus tampilan pada lcd
lcd_gotoxy(0,0); //menempatkan kursor di kolom 0 baris 0 pada lcd lcd_putsf("Mode Khusus"); //menampilkan string "Mode Khusus" pada lcd lcd_gotoxy(0,1); //menempatkan kursor di kolom 0 baris 1 pada lcd lcd_putsf("1-4"); //menampilkan string "1-4" pada lcd
x=1; //kembali ke tampilan mode Khusus }
PORTD=2; //dec.2 maka Port D Pin 1 aktif, keypad kolom 3 aktif delay_ms(10); //waktu tunda selama 10 millisecond
if(PIND==66) //dec.66 : keypad tombol "2" aktif, pilihan 2 volume 500ml {
lcd_clear(); //hapus tampilan pada lcd
lcd_putsf("Anda Pilih :"); //menampilkan string "Anda Pilih :" pada lcd lcd_gotoxy(0,1); //menempatkan kursor di kolom 0 baris 1 pada lcd lcd_putsf("500ml"); //menampilkan string "500ml" pada lcd
setpoint=209; //set point 500ml mode khusus, counter sampai 209 }
if(PIND==130) //dec.130 maka keypad tombol "0" aktif, jika tekan 0 {
lcd_clear(); //hapus tampilan pada lcd
lcd_gotoxy(0,1); //menempatkan kursor di kolom 0 baris 1 pada lcd lcd_putsf("Pilihan Salah"); //menampilkan string "Pilihan Salah" pada lcd delay_ms(1000); //waktu tunda selama 1000 millisecond = 1 detik lcd_clear(); //hapus tampilan pada lcd
lcd_gotoxy(0,0); //menempatkan kursor di kolom 0 baris 0 pada lcd lcd_putsf("Mode Khusus"); //menampilkan string "Mode Khusus" pada lcd lcd_gotoxy(0,1); //menempatkan kursor di kolom 0 baris 1 pada lcd lcd_putsf("1-4"); //menampilkan string "1-4" pada lcd
x=1; //kembali ke tampilan mode Khusus }
if(PIND==34) //dec.34 maka keypad tombol "5" aktif, jika tekan 5 {
lcd_clear(); //hapus tampilan pada lcd
lcd_gotoxy(0,1); //menempatkan kursor di kolom 0 baris 1 pada lcd lcd_putsf("Pilihan Salah"); //menampilkan string "Pilihan Salah" pada lcd delay_ms(1000); //waktu tunda selama 1000 millisecond = 1 detik lcd_clear(); //hapus tampilan pada lcd
lcd_gotoxy(0,0); //menempatkan kursor di kolom 0 baris 0 pada lcd lcd_putsf("Mode Khusus"); //menampilkan string "Mode Khusus" pada lcd lcd_gotoxy(0,1); //menempatkan kursor di kolom 0 baris 1 pada lcd lcd_putsf("1-4"); //menampilkan string "1-4" pada lcd
x=1; //kembali ke tampilan mode Khusus }
if(PIND==18) //dec.18 maka keypad tombol "8" aktif, jika tekan 8 {
lcd_clear(); //hapus tampilan pada lcd
lcd_gotoxy(0,1); //menempatkan kursor di kolom 0 baris 1 pada lcd lcd_putsf("Pilihan Salah"); //menampilkan string "Pilihan Salah" pada lcd delay_ms(1000); //waktu tunda selama 1000 millisecond = 1 detik lcd_clear(); //hapus tampilan pada lcd
lcd_gotoxy(0,0); //menempatkan kursor di kolom 0 baris 0 pada lcd lcd_putsf("Mode Khusus"); //menampilkan string "Mode Khusus" pada lcd lcd_gotoxy(0,1); //menempatkan kursor di kolom 0 baris 1 pada lcd lcd_putsf("1-4"); //menampilkan string "1-4" pada lcd
x=1; //kembali ke tampilan mode Khusus }
PORTD=4; //dec.4 maka Port D Pin 3 aktif, keypad kolom 2 aktif delay_ms(10); //waktu tunda selama 10 millisecond
if(PIND==68) //dec.68 : keypad tombol "3" aktif, pilihan 3 volume 1000ml {
lcd_clear(); //hapus tampilan pada lcd
lcd_gotoxy(0,0); //menempatkan kursor di kolom 0 baris 0 pada lcd lcd_putsf("Anda Pilih :"); //menampilkan string "Anda Pilih :" pada lcd
lcd_gotoxy(0,1); //menempatkan kursor di kolom 0 baris 1 pada lcd lcd_putsf("1000ml"); //menampilkan string "1000ml" pada lcd
setpoint=422; //set point 1000ml mode khusus, counter sampai 422 }
if(PIND==36) //dec.36 maka keypad tombol "6" aktif, jika tekan 6 {
lcd_clear(); //hapus tampilan pada lcd
lcd_gotoxy(0,1); //menempatkan kursor di kolom 0 baris 1 pada lcd lcd_putsf("Pilihan Salah"); //menampilkan string "Pilihan Salah" pada lcd delay_ms(1000); //waktu tunda selama 1000 millisecond = 1 detik lcd_clear(); //hapus tampilan pada lcd
lcd_gotoxy(0,0); //menempatkan kursor di kolom 0 baris 0 pada lcd lcd_putsf("Mode Khusus"); //menampilkan string "Mode Khusus" pada lcd lcd_gotoxy(0,1); //menempatkan kursor di kolom 0 baris 1 pada lcd lcd_putsf("1-4"); //menampilkan string "1-4" pada lcd
x=1; //kembali ke tampilan mode Khusus }
if(PIND==20) //dec.20 maka keypad tombol "9" aktif, jika tekan 9 {
lcd_clear(); //hapus tampilan pada lcd
lcd_gotoxy(0,1); //menempatkan kursor di kolom 0 baris 1 pada lcd lcd_putsf("Pilihan Salah"); //menampilkan string "Pilihan Salah" pada lcd delay_ms(1000); //waktu tunda selama 1000 millisecond = 1 detik lcd_clear(); //hapus tampilan pada lcd
lcd_gotoxy(0,0); //menempatkan kursor di kolom 0 baris 0 pada lcd lcd_putsf("Mode Khusus"); //menampilkan string "Mode Khusus" pada lcd lcd_gotoxy(0,1); //menempatkan kursor di kolom 0 baris 1 pada lcd lcd_putsf("1-4"); //menampilkan string "1-4" pada lcd
x=1; //kembali ke tampilan mode Khusus }
PORTD=8; //dec.8 maka Port D Pin 3 aktif, keypad kolom 1 aktif delay_ms(10); //waktu tunda selama 10 millisecond
if(PIND==24){goto up;} //dec.24 : tombol "Cancel" aktif, kembali ke mode awal
if(PIND==136){PORTA=2;x=3;} //dec.136 maka keypad tombol "RUN" aktif, Port A Pin 1 aktif, eksekusi Run
}
while(x==2) //program mode LAIN {
klipatan100=nilai%100;
lcd_gotoxy(0,0); //menempatkan kursor di kolom 0 baris 0 pada lcd lcd_putsf("Input Vol.:"); //menampilkan string "Input Vol.:" pada lcd
PORTD=1; //dec.1 maka Port D Pin 0 aktif, keypad kolom 4 aktif delay_ms(10); //waktu tunda selama 10 millisecond
//keypad tombol "7" if(PIND==17&&nilai<=2000){while(PIND==17){}i++;array[i]=7;simpan_nilai();delay_ms(50);} //keypad tombol "4" if(PIND==33&&nilai<=2000){while(PIND==33){}i++;array[i]=4;simpan_nilai();delay_ms(50);}
//keypad tombol "1"
if(PIND==65&&nilai<=2000){while(PIND==65){}i++;array[i]=1;simpan_nilai();delay_ms(50);}
//keypad tombol "Clear"
if(PIND==129){while(PIND==129){}lcd_clear();i=0;nilai=0;delay_ms(50);}
PORTD=2; //dec.2 maka Port D Pin 1 aktif, keypad kolom 3 aktif delay_ms(10); //waktu tunda selama 10 millisecond
//keypad tombol "8" if(PIND==18&&nilai<=2000){while(PIND==18){}i++;array[i]=8;simpan_nilai();delay_ms(50);} //keypad tombol "5" if(PIND==34&&nilai<=2000){while(PIND==34){}i++;array[i]=5;simpan_nilai();delay_ms(50);} //keypad tombol "2" if(PIND==66&&nilai<=2000){while(PIND==66){}i++;array[i]=2;simpan_nilai();delay_ms(50);} //keypad tombol "0" if(PIND==130&&nilai<=2000){while(PIND==130){}i++;array[i]=0;simpan_nilai();delay_ms(50);}
PORTD=4; //dec.1 maka Port D Pin 2 aktif, keypad kolom 2 aktif delay_ms(10); //waktu tunda selama 10 millisecond
//keypad tombol "9" if(PIND==20&&nilai<=2000){while(PIND==20){}i++;array[i]=9;simpan_nilai();delay_ms(50);} //keypad tombol "6" if(PIND==36&&nilai<=2000){while(PIND==36){}i++;array[i]=6;simpan_nilai();delay_ms(50);} //keypad tombol "3" if(PIND==68&&nilai<=2000){while(PIND==68){}i++;array[i]=3;simpan_nilai();delay_ms(50);}
PORTD=8; //dec.8 maka Port D Pin 3 aktif, keypad kolom 1 aktif delay_ms(10); //waktu tunda selama 10 millisecond
if(PIND==24){x=0;goto up;} //dec.24 : tombol "Cancel" aktif, kembali ke mode awal
if(PIND==136) //dec.136 maka keypad tombol "RUN" aktif {
if(klipatan100==0&&nilai<=2000) //jika nilai klipatan100=0 dan nilai sama atau dibawah 2000 {
PORTA=2; //dec.2 maka Port A Pin 1 aktif, valve open setpoint=(nilai*0.425)-3; //formula set point mode lain
x=3; //ke program RUN }
else {
lcd_clear(); //hapus tampilan pada lcd
lcd_gotoxy(0,0); //menempatkan kursor di kolom 0 baris 0 pada lcd lcd_putsf("INPUT"); //menampilkan string "INPUT" pada lcd
lcd_putsf("Pilihan Salah"); //menampilkan string "Pilihan Salah" pada lcd i=0; nilai=0; temp[0]=0; temp[1]=0; temp[2]=0; temp[3]=0;
delay_ms(1000); //waktu tunda selama 1000 millisecond = 1 dtk lcd_clear(); //hapus tampilan pada lcd
} }
tampil2(); //ke program tampil2 }
while(x==3) //program RUN (buka valve - counter up - stop) {
lcd_clear(); //hapus tampilan pada lcd
lcd_gotoxy(0,0); //menempatkan kursor di kolom 0 baris 0 pada lcd lcd_putsf("Silakan Tunggu!!"); //menampilkan string "Silakan Tunggu!!" pada lcd sprintf(buf,"%i",TCNT1); //tampilkan bilangan integer ke register TCNT1 (counter) lcd_puts(buf); //tampil counter
delay_ms(20); //waktu tunda selama 20 millisecond
TCCR1B=0x07; //counter aktif, sumber ekternal clock T1 rising edge if(TCNT1>=setpoint) //jika bilangan di register sama dengan nilai setpoint {
PORTA=0; //dec.0 maka Port A logika 0, valve close
lcd_clear(); //hapus tampilan pada lcd
lcd_gotoxy(0,1); //menempatkan kursor di kolom 0 baris 1 pada lcd lcd_putsf("Selesai"); //menampilkan string "Selesai" pada lcd
delay_ms(2000); //waktu tunda selama 2000 millisecond = 2 detik lcd_clear(); //hapus tampilan pada lcd
TCNT1=0; //reset register TCNT1 setpoint=0; //nilai setpoint menjadi 0 TCCR1B=0; //mematikan mode counter x=0; //kembali ke program awal goto up;
} } }