Berdasarkan keterangan di atas maka kita sudah dapat membuat progam untuk
menampilkan karaker pada display LCD. Adapun program yang diisikan ke mikrokontroller untuk menampilkan karakter pada display LCD adalah sebagai
berikut:
include mega8a.h include alcd.h
void mainvoid {
PORTA=0x00; DDRA=0x00;
PORTB=0x00; DDRB=0x00;
PORTC=0x00; DDRC=0x00;
PORTD=0x00; DDRD=0x00;
lcd_init16; while 1
{ Place your code here
lcd_gotoxy0,0; lcd_putsftes LCD;
} }
Program di atas akan menampilkan kata “tes LCD” di baris pertama pada display LCD 16x2
4.4 Pengujian Rangkaian Sensor Koduktivitas
Pengujian dilakukan dengan membedakan hasil keluaran dari ADC air dan bensin, kemudian perbedaan tersebut dimasukan kedalam program. agar ketika
pompa hidup, bensin tidak ikut terkuras. Pengujian yang saya lakukan pada sensor konduktivitas, pada kondisi awal ketika diberi tegangan masukan sebesar 5
Volt sensor memberikan nilai tegangan ADC pada bensin sebesar 1023 bit. Akan
Universitas Sumatera Utara
tetapi apabila terdeteksi air maka nilai tegangan ADC turun. Ini disebabkan apabila kutub positif pada sensor ketemu ground pada saat terdeteksi air maka
nilai tegangan ADC turun. Pengujian pada sensor ini dapat kita lihat pada tabel 4.2. Pengujian pada sensor konduktivitas dapat kita lihat pada gambar dibawah
ini:
Gambar 4.4 Tampilan pengujian Sensor Koduktivitas
Tabel 4.2 Perbandingan Nilai ADC Air dengan Bensin Sensor
Nilai ADC Air bit Nilai ADC Bensin bit
1. 643
1023 2.
623 1023
3. 615
1023 4.
611 1023
5. 609
1023 6.
617 1023
Adapun program yang diisikan ke mikrokontroller untuk menampilkan volume air yang terdeteksi sensor konduktivitas adalah sebagai berikut:
include mega8.h include stdlib.h
include delay.h
Universitas Sumatera Utara
define pompa PORTD.2 int data[6];
int n,counter; char buff[30];
int volume; unsigned int tinggi_air=0;
include alcd.h
include stdio.h define ADC_VREF_TYPE 0REFS1 | 0REFS0 |
0ADLAR unsigned int read_adcunsigned char adc_input
{ ADMUX=adc_input | ADC_VREF_TYPE;
delay_us10; ADCSRA|=1ADSC;
while ADCSRA 1ADIF==0; ADCSRA|=1ADIF;
return ADCW; }
void mainvoid {
DDRB=0DDB7 | 0DDB6 | 0DDB5 | 0DDB4 | 0DDB3 | 0DDB2 | 0DDB1 | 0DDB0;
PORTB=0PORTB7 |
0PORTB6 |
0PORTB5 |
0PORTB4 | 0PORTB3 | 0PORTB2 | 0PORTB1 | 0PORTB0;
DDRC=0DDC6 | 0DDC5 | 0DDC4 | 0DDC3 | 0DDC2 | 0DDC1 | 0DDC0;
Universitas Sumatera Utara
DDRD=0DDD7 | 0DDD6 | 0DDD5 | 0DDD4 | 0DDD3 | 1DDD2 | 0DDD1 | 0DDD0;
PORTD=0PORTD7 |
0PORTD6 |
0PORTD5 |
0PORTD4 | 0PORTD3 | 0PORTD2 | 0PORTD1 | 0PORTD0;
TCCR0=0CS02 | 0CS01 | 0CS00; TCNT0=0x00;
lcd_init16;
while 1 {
Place your code here awal:
counter++; for n=0;n6;n++
{ data[n]=read_adcn;
if data[n]500{data[n]=0;} else {data[n]=1;}
}
tinggi_air=data[0]+data[1]+data[2]+data[3]+data[4]+dat a[5];
if tinggi_air6{tinggi_air=6;} volume=3.145.255.25tinggi_air;
if volume=500{pompa=1;} else if tinggi_air=0{pompa=0;}
lcd_clear; itoavolume,buff;
lcd_gotoxy0,0;
Universitas Sumatera Utara
lcd_putsf Volume air; lcd_gotoxy0,1;
lcd_putsfVolume = ; lcd_putsbuff;
lcd_gotoxy13,1; lcd_putsfcm3;
printfD; putsbuff;
printf; delay_ms600;
} }
4.5 Pengujian Rangkaian Relay, Driver Relay Dan Pompa