TUGAS SOFTSKILL

Rabu, 20 Mei 2020


PENGAMAN PARKIR MOBIL MENGGUNAKAN SENSOR JARAK BERBASIS MIKROKONTROLER

PEMBUATAN DAN PEMBAHASAN

A.    Landasan Teori

1.   Mikrokontroler
a.       Pengertian Mikrokontroler
Mikrokontroler adalah salah satu bagian dasar suatu sistem komputer. Meskipun mempunyai bentuk yang jauh lebih kecil dari suatu komputer pribadi dan komputer mainframe, mikrokontroler dibangun dari elemen-elemen dasar yang sama. Secara sederhana, komputer akan menghasilkan output spesifik berdasarkan input yang diterima dan program yang dikerjakan. (http://mikrokontroler.tripod. com/6805/bab1.htm)
Seperti umumnya komputer, mikrokontroler sebagai alat yang mengerjakan perintah-perintah yang diberikan oleh manusia. Artinya, bagian terpenting dan utama dari suatu sistem komputerisasi adalah program itu sendiri yang dibuat oleh seorang programmer. Program  ini memerintahkan komputer untuk melakukan jalinan yang panjang dari aksi-aksi sederhana untuk melakukan tugas yang lebih kompleks yang diinginkan oleh programmer.
Sistem dengan mikrokontroler umumnya menggunakan piranti
input yang jauh lebih kecil seperti saklar atau keypad kecil.
Hampir semua input mikrokontroler hanya dapat memproses sinyal input digital dengan tegangan yang sama dengan tegangan logika dari sumber. Tegangan positif sumber umumnya adalah 5 volt. Padahal dalam dunia nyata terdapat banyak sinyal analog atau sinyal dengan tegangan level yang bervariasi. Karena itu ada piranti input yang mengkonversikan sinyal analog menjadi sinyal digital sehingga komputer bisa mengerti dan menggunakannya. Ada beberapa




3







mikrokontroler yang dilengkapi dengan piranti konversi ini, yang disebut dengan ADC, dalam satu rangkaian terpadu.
Mikrokontroler ATMega8535 merupakan salah satu mikrokontroler buatan AVR yang memiliki fasilitas–fasilitas yang cukup lengkap, diantaranya :
1)      Flash adalah suatu jenis Read Only Memory yang biasanya diisi dengan program hasil buatan manusia yang harus dijalankan oleh mikrokontroler.
2)      RAM (Random Acces Memory) merupakan memori yang membantu CPU untuk penyimpanan data sementara dan pngolahan data ketika program sedang running.
3)      EEPROM (Electrically Erasable Programmable Read Only Memory) adalah memori untuk penyimpanan data secara permanen oleh program yang sedang running.
4)      Port I/O adalah kaki untuk jalur keluar atau masuk sinyal sebagai hasil keluaran ataupun masukan bagi program.
5)      Timer adalah modul dalam hardware yang bekerja untuk menghitung waktu / pulsa.
6)      UART (Universl Asynchronous Receive Transnit) adalah jalur komunikasi data khusus secara serial asynchronous.
7)      PWM (Pulse Width Modulation) adalah fasilitas untuk membuat modulasi pulsa.
8)      ADC (Analog to Digital Converter) adalah fasilitas untuk dapat menerima sinyal analog dalam range tertentu untuk kemudian dikonversi menjadi suatu nilai digital dalam range tertentu.
9)      SPI (Serial Peripheral Interface) adalah jalur komunikasi data khusus secara serial synchronous.
10)  ISP (In System Programming) adalah kemampuan khusus mikrokontroler untuk dapat diprogram langsung dalam sistem rangkaiannya dengan membutuhkan jumlah pin yang minimal.







b.      Mikrokontroler ATMega8535
Seperti yang telah dijelaskan sebelumnya, ATMega8535 memiliki fasilitas yang cukup lengkap. Dari kapasitas memori program dan memori data yang cukup besar, interupsi, timer / counter, PWM, USART, TWI, analog comparator, EEPROM internal dan juga ADC internal semuanya ada dalam ATMega8535.
Selain itu kemampuan kecepatan eksekusi yang lebih tinggi menjadi alasan bagi banyak orang untuk lebih memilih menggunakan mikrokontroler jenis AVR daripada mikrokontroler  pendahulunya yaitu keluarga MCS-51. Dengan demikian sangatlah tepat untuk mempelajari mikrokontroler keluarga AVR dengan ATMega8535. (Bejo 2008: 10)
Mikrokontroler ATMega8535 merupakan salah satu mikrokontroler buatan AVR yang memiliki bagian–bagian, diantaranya :
1)      Fitur ATMega8535
Berikut ini adalah fitur-fitur yang dimiliki oleh ATMega8535 :
a)      130 macam intruksi, yang hampir semuanya dieksekusi dalam satu siklus clock.
b)      32 x 8 bit register serba guna.
c)      Keceptan mencapai 16 MIPS dengan clock 16 MHz.
d)     8 Kbyte Flash memori, yang memiliki fasilitas In-System Programming.
e)      512 Byte internal EEPROM.
f)       512 Byte SRAM.
g)      Programming    Lock,    fasilitas    untuk    mengamankan    kode program.
h)      2 buah timer / counter 8 bit dan 1 buah timer / counter 16 bit.
i)        4 channel output PWM.
j)        8 channel ADC 10-bit.
k)      Serial USART.







l)        Master / Slave SPI serial interface.
m)    Serial TWI atau 12C.
n)      On-Chip Analog Comparator.
2)      Konfigurasi PIN ATMega8535
PIN adalah kaki-kaki dari sebuah IC. Gambar 1. menunjukkan konfigurasi PIN ATMega8535

Gambar 1. Konfigurasi PIN ATMega8535 (Sumber: datasheet ATMega8535)

Konfigurasi PIN ATMega 8535 pada Gambar 1 terdapat susunan masing-masing kaki mikrokontroler ATMega8535. Tabel.1 menerangkan tentang susunan dari masing-masing kaki mikrokontroler ATMega8535.





Tabel 1. Susunan kaki ATMega8535

PIN
KETERANGAN




1-8
Port B, merupakan Port I/O 8 bit dua arah (bit-directional) dengan resistor pull-up internal. Selain sebagai Port I/O 8 bit Port B juga dapat difungsikan secara individu sebagai  berikut :
PB7 : SCK (SPI Bus Serial Clock)
PB6 : MISO (SPI Bus Mater Input / Slave Output) PB5 : MOSI (SPI Bus Master Output / Slave Input) PB4 : SS (SPI Slave Select Input)
PB3 : AIN1 (Analog Comparator Negatif Input) OC0 (Output Compare Timer / Counter 0)
PB2 : AIN0 (Analog Comparator Positif Input) INT2 (External Interrupt 2 Input)
PB1 : T1 (Timer / counter 1 External Counter Input)
PB0 : T0 (USART External Clock Input / Output)
9
RESET, merupakan pin reset yang akan bekerja bila diberi
pulsa rendah (aktif low) selama minimal 1.5 µs
10
VCC, catu daya digital
11
GND, Ground untuk catu daya digital
12
XTAL2, merupakan output dari penguat oscillator pembalik
13
XTAL1, merupakan input ke penguat oscillator pembalik
dan input ke internal clock.
14-21
Port D, merupakan Port I/O 8 bit dua arah (bi-directional) dengan resistor pull-up internal. Selain sebagai Port I/O 8  bit Port D juga dapat difungsikan secara individu sebagai berikut :
PD7 : OC2 (Output Compare Timer / Counter 2) PD6 : ICP1 (Timer / Counter 1 input Capture)
PD5 : OC1A (Output Compare A Timer / Counter 1)







PD4 : OC1B (Output Compare B Timer / Counter 1) PD3 : INT1 (External Interupt 1 Input)
PD2 : INT0 (External Interupt 0 Input) PD1 : TXD (USART transmit)
PD0 : RXD (USART receive)
22-29
Port C, merupakan Port I/O 8 bit dua arah (bi-directional) dengan resistor pull-up internal. Selain sebagai Port I/O 8 bit 4bit Port C juga dapat difungsikan secara individu sebagai berikut :
PC7 : TOC2 (Timer Ocillator 2) PC6 : TOC1 (Timer Ocillator 1)
PC1 : SDA (Serial Data Input / Output, I²C)
PC0 :SCL (Serial Clock, I²C)
30
AVCC,   merupakan    catu   daya   yang    digunakan   untuk
masukan analog ADC yang terhubung ke Port A
31
GND, Ground untuk catu daya analog
32
AREF, merupakan tegangan referensi analog untuk ADC
33-40
Port A, merupakan Port I/O 8 bit dua arah (bi-directional) dengan resistor pull-up internal. Selain sebagai Port I/O 8 bit Port A juga dapat berfungsi sebagai masukan 8 channel
ADC

1)      Arsitektur ATMega8535
Mikrokontroler ATMega8535 memiliki arsitektur Harvard, yaitu memisahkan memori untuk kode program dan memori untuk data sehingga dapat memaksimalkan unjuk kerja dan paralelisme. Instruksi-instruksi dalam memori program dieksekusi dalam satu alur tunggal, dimana pada saat satu instruksi dikerjakan instruksi berikutnya sudah diambil (pre – fetched) dari memori program.






Konsep inilah yang memungkinkan instruksi–instruksi dapat dieksekusi dalam setiap satu siklus clock.
32 x 8 bit register serba guna digunakan untuk mendukung operasi pada Aritmetic Logic Unit (ALU) yang dapat dilakukan dalam satu siklus. Enam dari register serba guna dapat digunakan sebagai tiga buah register pointer 16 bit pada mode pengalamatan tak langsung untuk mengambil data pada ruang memori data.
Hampir semua perintah AVR memiliki format16 bit (word). Setiap alamat memori program terdiri dari instruksi 16 bit atau 32 bit. Selain register serba guna, terdapat register lain yang terpetakan dengan teknik memory mapped I/O selebar 64 Byte. Beberapa register ini digunakan untuk fungsi khusus antara lain sebagai register kontrol Timer / Counter, Interupsi, ADC, USART, SPI, EEPROM dan fungsi I/O lainnya. Register register ini menepati memori pada alamat 0x20h – 0x5Fh. Gambar arsitektur ATMega8535 terlihat pada Gambar 2


Gambar 2. Arsitektur ATMega8535 (Sumber: datasheet ATMega8535)






1.   Sensor Ultrasonik
a.     Pengertian
DT-SENSE ULTRASONIC merupakan modul pengukur jarak non-kontak yang sangat mudah dihubungkan dengan berbagai sistem berbasis mikrokontroler. Untuk memicu dan membaca data pengukuran dengan DT-SENSE ULTRASONIC hanya memerlukan 1 buah pin mikrokontroler.
Sebuah modul DT-SENSE ULTRASONIC terdiri dari sebuah Ultrasonik Ranger dan dapat dihubungkan dengan 2 buah sensor Infrared Ranger . Ultrasonik Ranger menghasilkan  pulsa  atau  data  keluaran yang menyatakan jarak yang ditempuh oleh sinyal tersebut sebelum menyentuh sebuah obyek dan memantul kembali. Keluaran analog dari sensor Infrared Ranger diubah oleh modul DT-SENSE ULTRASONIC AND INFRARED RANGER menjadi berbentuk pulsa (Modul Sensor Ultrasonik).
b.   Prinsip Kerja Sensor Ultasonik
Prinsip kerja sensor ultrasonik yaitu Sinyal ultrasonik yang dibangkitkan akan dipancarkan dari pemancar (transmitter) ultrasonik. Ketika sinyal mengenai benda penghalang, maka sinyal ini dipantulkan, dan diterima oleh penerima (receiver) ultrasonik. Sinyal yang diterima oleh rangkaian receiver dikirimkan ke rangkaian mikrokontroler, seperti pada Gambar 3.


Gambar 3. Prinsip kerja sensor ultrasonik (Sumber: Ping Ultrasonic Sensor Overview)






B.    Metode Pembuatan Alat

1.         Perencanaan pembuatan perangkat lunak (sofwere)
Pembuatan flow chart dimaksudkan untuk memudahkan pembuatan program, karena dengan flow chart bisa diketahui alur kerja alat. Gambar 4. menunjukkan gambar diagram dasar kerja alat
Gambar 4. Flow chart dasar kerja alat






1.         Perancangan Pembuatan perangkat keras (hardware)
Langkah pertama dalam perancangan hardware adalah membuat desain skema rangkaian serta menentukan alat dan bahan yang akan digunakan
                       a.  Perancangan Pembuatan Perangkat Mikrokontroler
Gambar 5. Skema Rangkaian Sistem Minimum Mikrokontroler








1)      Alat yang digunakan
a)      Spidol Permanent
b)      Bor dan mata bor
c)      Palu
d)     Cutter
e)      Tang potong
f)       Penggaris
g)      Solder
h)      Toolset lengkap

2)      Komponen yang diperlukan:
a)                                                                           Resisrtor 100?  ¼ W.          8 buah
b)                                                                          Resisrtor 330?  ¼ W.          1 buah
c)   Led ½ W..........................................9 buah
d)   IC ATmega 8535……………..…...1 buah
e)   IC LM 7805…………………..…...1 buah
f)    Kristal 11.059200Mhz……...…..…1 buah
g)   Capasitor 1000uf/16v………….… 1 buah
h)   Capasitor 30 pf................................2 buah
i)    Conektor 2pin..................................1 buah
j)    Conektor 6pin..................................1 buah
k)   Sakelar Push On..............................4 buah
l)    Dioda IN 4002.................................1 buah
m)  Transistor BD139............................1 buah
n)   Buzzer 5  Volt.................................1 buah
Keterangan Gambar 6.b: 
a,b         : Kapasitor 30 j 
c            : Konektor 6 pin
d                    : Resistor 330 ? ¼ W
e                     : Led
f                     : Konektor 2 pin
g                    : Dioda 1 A
h                    : Kapasitor 100µF/16V

b.      Perancangan Pembuatan Downloader
Gambar 7. ISP Programer interface Type Kanda Sistem STK200+/300
1)      Alat yang digunakan
a)      Spidol Permanent
b)      Bor dan mata bor
c)      Palu
d)     Cutter
e)      Tang potong
f)       Penggaris
g)      Solder
h)      Toolset lengkap

2)      Daftar Komponen:
a)      Resistor 4K7?  ¼ W....................... 4 buah
b)      Resistor 100?  ¼ W........................ 5 buah
c)      Resistor  1K? ¼ W......................... 4 buah
d)     Resistor 330 ? ¼ W........................ 1 buah
e)      IC 74LS541 + soket....................... 1 buah
f)       Led ¼ W....................................... 1 buah
g)      Conektor DB 25 pin........................ 1 buah
h)      Conektor 6 pin............................... 2 buah

Gambar 8 . a. Layout PCB downloader
b. Tata letak komponen


Keterangan Gambar 8.b:
a,b,c,d       : Resistor 4K7? ¼ W e,f,g,h,q   : Resistor 1K? ¼ W
i.j.k.l.m      : Resistor 100? ¼W q    : Resistor 330 ? ¼ W
n                : IC 74LS541 + soket
o,p             : Conektor 6 pin
















c.






d.      Prosedur Pembuatan
1)      Menyiapkan alat-alat yang akan digunakan
2)      Menggambar jalur
Teknik yang digunakan adalah teknik sablon setrika. Langakah pertama adalah menggambar lay out PCB seperti pada gambar 5a dan 7a. Gambar tersebut di foto kopi di kertas transparan (mika) dan selanjutnya gambar disetrika di atas papan PCB sampai gambar tersebut menempel di papan PCB. Pada saat akan melakukan setrika kita harus membersihkan papan PCB terlebih dahulu agar gambar dapat menempel dengan sempurna
3)      Pelarutan Papan PCB
Gambar di papan PCB yang telah selesai dibuat kemudian dilarutkan dengan cairan ferridclorida (FhCl) untuk menghilangkan lapisan tembaga yang tidak tertutup gambar. Pada saat melakukan pelarutan wadah yang digunakan harus selalu di goyang-goyang.
4)      Pelubangan Papan PCB
Proses pelubangan adalah untuk membuat tempat memasang komponen yang akan digunakan.
5)      Memasang Komponen ke Papan PCB
Pemasangan komponen harus sesuai dangan tata letak yang telah ditentukan sebelumnya. Untuk lebih jelasnya dapat melihat gambar 5b dan gambar 7b.
6)      Menyolder
Untuk menghasilkan hasil solderan yang baik sebaiknya menggunakan mata solder yang bersih dan lancip agar mempermudah dalam penyolderan. Hasil solderan yang baik adalah lancip dan mengkilap.
7)      Pemotongan Kaki Komponen
Pemotongan kaki komponen dilakukan untuk meratakan kaki komponen agar menjadi rapi






A.    Pengujian

Berdasarkan sumber Ary Darmadji, majalah AutoBild tanggal
2-5 Agustus 2003 edisi 7-suplemen ( http://library.monx007) jarak aman parkir adalah 1 meter terhadap pembatas parkir. Namun kali ini kita menentukan sendiri jarak yang akan dibuat simulasi pengaman parkir sesuai keinginan. misaalnya dengan membuat jarak aman 40cm untuk bagian belakang dan 30cm untuk bagian depan. Tabel 2. Adalah hasil pengujian alat pengaman parkir
Tabel 2. hasil pengujian alat pengaman parkir

Pengujian
Ke.
Depan (diharapkan 30cm)
Belakang(diharapkan 40cm)
Kanan (cm)
Kiri (cm)
Kanan (cm)
Kiri (cm)
1
31,0
30,6
41,2
41,2
2
30,8
30,8
41,2
41,3
3
30,8
30,7
41,3
41,3
4
30,8
30,8
41,2
41,2
5
30,8
30,6
41,1
41,2
6
30,6
30,8
41,2
41,2
7
30,6
30,7
41,0
41,2
8
30,8
30,8
41,2
41,2
9
31,0
30,8
41,3
41,2
10
30,8
30,8
41,3
41,2
jumlah
308
307,4
412
412,2

A.    Pembahasan


Berdasarkan hasil pengujian alat terjadi ketidak cocokan antara hasil percobaan dengan hasil yang di inginkan, sehingga terjadi selisih  antara harga sebenarnya dengan harga yang ditunjukan. Setelah melakukan pengukuran sebanyak 10 kali maka akan di cari nilai rata-rata dengan menggunakan persamaan sebagai berikut:



Dimana:

X

= nilai rata-rata hasil pengukuran
X1, X2,
n
Xn
= hasil pengukuran yang dilakukan
= banyaknya pengukuran


Dengan menggunakan persamaan diatas dan berdasarkan data pada table 2. Maka akan di dapatkan nilai rata-rata untuk tiap sensornya
dan berikut adalah video simulasinya 
E. KODINGAN
/********************************************* This program was produced by the  CodeWizardAVR V1.24.0 Standard
Automatic Program Generator
© Copyright 1998-2003 HP InfoTech s.r.l. http://www.hpinfotech.ro


Chip type         : ATmega8535
Program type      : Application Clock frequency         : 12.000000 MHz Memory model                  : Small External SRAM size : 0
Data Stack size   : 128
*********************************************/

#include <mega8535.h> #include <delay.h>

#define buzzer1 PORTC.0 #define buzzer2 PORTC.0 #define buzzer3 PORTC.0 #define buzzer4 PORTC.0

#define sw_4 PINC.4 #define sw_3 PINC.5 #define sw_2 PINC.6 #define sw_1 PINC.7

#define led_1 PORTA.1 #define led_2 PORTA.0 #define led_3 PORTA.6 #define led_4 PORTA.7

#define led_akt1 PORTA.2 #define led_akt2 PORTA.3 #define led_akt3 PORTA.5 #define led_akt4 PORTA.4

typedef unsigned int uint16_t;
unsigned int counter;

uint16_t US,tinggi;

// Alphanumeric LCD Module functions
#asm
.equ lcd_port=0x18 #endasm
#include <lcd.h>

// Declare your global variables here

void sendData()

{

unsigned char Posisi;

tinggi=US;

Posisi=0; lcd_gotoxy(Posisi,0); lcd_putchar('j'); lcd_gotoxy(Posisi+1,0);
lcd_putchar('a'); lcd_gotoxy(Posisi+2,0); lcd_putchar('r'); lcd_gotoxy(Posisi+3,0); lcd_putchar('a');

lcd_gotoxy(Posisi+4,0); lcd_putchar('k'); lcd_gotoxy(Posisi+5,0); lcd_putchar(' '); lcd_gotoxy(Posisi+6,0); lcd_putchar('='); lcd_gotoxy(Posisi+7,0); lcd_putchar(' '); lcd_gotoxy(Posisi+8,0);
lcd_putchar((tinggi/1000)%10 + 0x30 ); lcd_gotoxy(Posisi+9,0);
lcd_putchar((tinggi/100)%10 + 0x30 ); lcd_gotoxy(Posisi+10,0); lcd_putchar((tinggi%100)/10 + 0x30 ); lcd_gotoxy(Posisi+11,0); lcd_putchar(','); lcd_gotoxy(Posisi+12,0); lcd_putchar((tinggi%10)   + 0x30 ); lcd_gotoxy(Posisi+13,0);
lcd_putchar(' '); lcd_gotoxy(Posisi+14,0); lcd_putchar('c'); lcd_gotoxy(Posisi+15,0); lcd_putchar('m');

}
void menu (void)
{
menu1:

if (!sw_1)
{
delay_ms(100);
goto pos1;
}

if (!sw_2)
{
delay_ms(100);
goto pos2;
}

if (!sw_3)
{
delay_ms(100);
goto pos3;
}

if (!sw_4)
{
delay_ms(100);
goto pos4;
}
goto menu1; pos1:
led_1=1;
goto baca_sensor1;
goto pos1;

pos2: led_2=1;
goto baca_sensor2;
goto pos2;

pos3: led_3=1;
goto baca_sensor3;
goto pos3;

pos4: led_4=1;
goto baca_sensor4;
goto pos4;


baca_sensor1:

#define SIG_out   PORTD.0 #define SIG_in            PIND.0 #define SIG_dir           DDRD.0 #define ready                  PIND.1

SIG_dir = 1;   // set SIG pin as output

SIG_out = 0;   //
delay_us(50);  // send start pulse
SIG_out = 1;   //

SIG_dir = 0;   // set SIG pin as input

TCNT1=0;
counter=0;
while (SIG_in && counter<30000// wait for return pulse
counter++;
TCCR1B=0x02;      // start timer (timer period = 2uS)
while ((!SIG_in) && !(TIFR&0x80)); //TIFRx80 :bit overflow:bit ini tidak
// selalu sama letaknya di setiap UC AVR
TCCR1B=0x00;      // stop timer
US = TCNT1;       // save timer value to variable US

US = US/14;        // convert to milimeters

//sendData();
if (US<=300){buzzer1=1;led_akt1=1;delay_ms(5000);buzzer1=0;led_akt1=0; delay_ms(5000);}
else {buzzer1=0;led_akt1=0;}

/////////////////////////

if (!sw_1)
{
delay_ms(100);
goto mati1;
}

if (!sw_2)
{
delay_ms(100);
goto pos2;
}

if (!sw_3)
{
delay_ms(100);
goto pos3;
}

if (!sw_4)
{
delay_ms(100);
goto pos4;
}

//////////////////////////
delay_ms(500);

goto baca_sensor1;

/************/
mati1: led_1=0; led_akt1=0; menu();

goto mati1;
/************/


baca_sensor2:

#define SIG_out   PORTD.2 #define SIG_in            PIND.2 #define SIG_dir           DDRD.2 #define ready                  PIND.3

SIG_dir = 1;   // set SIG pin as output

SIG_out = 0;   //
delay_us(50);  // send start pulse
SIG_out = 1;   //

SIG_dir = 0;   // set SIG pin as input

TCNT1=0;
counter=0;
while (SIG_in && counter<30000// wait for return pulse
counter++;
TCCR1B=0x02;      // start timer (timer period = 2uS)
while ((!SIG_in) && !(TIFR&0x80)); //TIFRx80 :bit overflow:bit ini tidak
// selalu sama letaknya di setiap UC AVR
TCCR1B=0x00;      // stop timer
US = TCNT1;       // save timer value to variable US

US = US/14;        // convert to milimeters

//sendData();
if (US<=300){buzzer2=1;led_akt2=1;delay_ms(5000);buzzer2=0;led_akt2=0; delay_ms(5000);}
else{buzzer2=0;led_akt2=0;}

////////////////////////////////////
if (!sw_1)
{
delay_ms(100);
goto pos1;
}

if (!sw_2)
{
delay_ms(100);
goto mati2;
}

if (!sw_3)
{
delay_ms(100);
goto pos3;
}

if (!sw_4)
{
delay_ms(100);
goto pos4;
}

////////////////////////////////////
delay_ms(500);

goto baca_sensor2;

/************/
mati2: led_2=0; led_akt2=0; menu();

goto mati2;
/************/

baca_sensor3:

#define SIG_out   PORTD.4 #define SIG_in            PIND.4 #define SIG_dir           DDRD.4 #define ready                  PIND.5

SIG_dir = 1;   // set SIG pin as output

SIG_out = 0;   //
delay_us(50);  // send start pulsea /
SIG_out = 1;   //

SIG_dir = 0;   // set SIG pin as input

TCNT1=0;
counter=0;
while (SIG_in && counter<30000// wait for return pulse
counter++;
TCCR1B=0x02;      // start timer (timer period = 2uS)
while ((!SIG_in) && !(TIFR&0x80)); //TIFRx80 :bit overflow:bit ini tidak
// selalu sama letaknya di setiap UC AVR
TCCR1B=0x00;      // stop timer
US = TCNT1;       // save timer value to variable US

US = US/14;        // convert to milimeters

//sendData();
if (US<=400){buzzer3=1;led_akt3=1;delay_ms(5000);buzzer3=0;led_akt3=0; delay_ms(5000);}
else {buzzer3=0;led_akt3=0;}

////////////////////////////
if (!sw_1)
{
delay_ms(100);
goto pos1;
}

if (!sw_2)
{
delay_ms(100);
goto pos2;
}

if (!sw_3)
{
delay_ms(100);
goto mati3;
}

if (!sw_4)
{
delay_ms(100);
goto pos4;
}

////////////////////////////
delay_ms(500);

goto baca_sensor3;

/************/
mati3:
led_3=0; led_akt3=0; menu();

goto mati3;
/************/

baca_sensor4:

#define SIG_out   PORTD.6 #define SIG_in            PIND.6

#define SIG_dir   DDRD.6 #define ready             PIND.7

SIG_dir = 1;   // set SIG pin as output

SIG_out = 0;   //
delay_us(50);  // send start pulse
SIG_out = 1;   //

SIG_dir = 0;   // set SIG pin as input

TCNT1=0;
counter=0;
while (SIG_in && counter<30000// wait for return pulse
counter++;
TCCR1B=0x02;      // start timer (timer period = 2uS)
while ((!SIG_in) && !(TIFR&0x80)); //TIFRx80 :bit overflow:bit ini tidak
// selalu sama letaknya di setiap UC AVR
TCCR1B=0x00;      // stop timer
US = TCNT1;       // save timer value to variable US

US = US/14;        // convert to milimeters

//sendData();
if (US<=400){buzzer4=1;led_akt4=1;delay_ms(5000);buzzer4=0;led_akt4=0; delay_ms(5000);}
else {buzzer4=0;led_akt4=0;}

//////////////////////////////////
if (!sw_1)
{
delay_ms(100);
goto pos1;
}

if (!sw_2)
{
delay_ms(100);
goto pos2;
}

if (!sw_3)
{
delay_ms(100);
goto pos3;
}

if (!sw_4)
{
delay_ms(100);
goto mati4;
}

//////////////////////////////////
delay_ms(500);

goto baca_sensor4;

/************/
mati4:
led_4=0; led_akt4=0; menu();

goto mati4;
/************/

}

void main(void)
{
// Declare your local variables here

// Input/Output Ports initialization
// Port A initialization
PORTA=0x00; DDRA=0xFF;

// Port B initialization
PORTB=0x00; DDRB=0x00;

// Port C initialization
PORTC=0xF0; DDRC=0x01;

// Port D initialization
PORTD=0xBF; DDRD=0x55;

// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
// Mode: Normal top=FFh
// OC0 output: Disconnected
TCCR0=0x00; TCNT0=0x00; OCR0=0x00;

// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: Timer 1 Stopped
// Mode: Normal top=FFFFh
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
TCCR1A=0x00; TCCR1B=0x00; TCNT1H=0x00; TCNT1L=0x00; OCR1AH=0x00; OCR1AL=0x00; OCR1BH=0x00; OCR1BL=0x00;

// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: Timer 2 Stopped
// Mode: Normal top=FFh
// 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;

// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
// Analog Comparator Output: Off
ACSR=0x80; SFIOR=0x00;

// LCD module initialization
lcd_init(16);

led_1=0; led_2=0;

led_3=0; led_4=0;

menu();

while (1)
{
// Place your code here

};
}

DAFTAR PUSTAKA




Arikunto, Suharsimi. 2002. Dasar – dasar evaluasi pendidikan. Jakarta : PT. RinekaCipto.

Bejo,                 Agus.   2008.        C&AVR   Rahasia           Kemudahan  Bahasa           C             dalam Mikokontroler ATMega8535. Yogyakarta : GRAHA ILMU.

Budiharto,    Widodo.    2007.    Panduan    Praktikum    Mikrokontroler     AVR ATMega16. Jakarta : PT. Elex Media Komputindo.

Sugiharto, Agus. 2002. Penerapan Dasar Tranduser Dan Sensor. Yogyakarta : Kanisius.