Tugas 3

 


[KEMBALI KE MENU SEBELUMNYA]


DAFTAR ISI 
1.Tujuan
2. Komponen
3. Dasar Teori
Problem
Example
Pilihan Ganda
4.Langkah percobaan
5. Gambar Rangkaian
6. Prinsip
7.Video Simulasi  
8. File Download



1. Tujuan[back]

A. Untuk memahami Program Aplikasi Int 21 Service 09

2. Komponen [back]

A. Emulator Emu8086



3.Dasar Teori [back]

Teori Bahasa Assembler 
Dalam bahasa tingkat rendah tidak dibutuhkan struktur program karena semuanya diserahkan kepada pemakai. 
REGISTER
Register adalah sebagian kecil memori komputer yang dipakai untuk tempat penampungan data. Sebagian besar register yang terdapat pada mikroprosesor 8088 adalah 16 bit. 
Ada 5 kelompok Register, yaitu : 
1. General Purpose Register
General purpose register dapat dibagi menjadi register  low dan high bits yang masing-masing berkemampuan 8 bit. Seperti register AX, register low-nya adalah AL dan register
high-nya adalah AH.  Ada empat macam General purpose register yaitu: 
a.   Register AX (AH + AL) atau Accumulator Register adalah register aritmatik untuk dipakai dalam operasi pertambahan, pengurangan, perkalian dan pembagian. Register AH dapat juga digunakan untuk tempat nilai service number untuk beberapa interrupt tertentu. 
b.   Register BX  (BH + BL) atau  Base register adalah salah satu dari dua register base Addressing mode, yang dapat mengambil atau menulis langsung dari/ke memory. 
c.   Register CX (CH + CL) atau Counter Register adalah  suatu   counter   untuk meletakkan jumlah lompatan pada loop yang dilakukan. 
d.   Register DX (DH + DL) atau Data Register mempunyai tiga tugas, yaitu: 
1. Membantu    AX    dalam    proses    perkalian    dan    pembagian, terutama perkalian dan pembagian 16 bit.  
2. DX merupakan register offset dari DS  
3. DX bertugas menunjukkan nomor port pada operasi port 

2. Segment Register
a. CS (Code Segment) Register adalah berfungsi  menunjukkan segment program berada dengan pasangan register ini adalah register IP.
b. DS (Data Segment) Register adalah berfungsi  menunjukkan segment dari segment data.  Pasangan dari DS adalah DX. 
c. SS (Stack Segment) Register adalah berfungsi   menunjukkan segment dari segment stack. Pasangan dari SS adalah SP
d. ES (Extra Segment) Register adalah berfungsi  untuk pemograman pada saat melakukan operasi ke segment lain.

3. Pointer Register berfungsi menyimpan offset dari relative address.
a. IP (Instruction Pointer) Register adalah berfungsi untuk menunjukkan baris perintah program. Pada saat pertama program dijalankan register ini akan langsung menunjuk pada awal program.
b. SP (Stack Pointer) Register adalah merupakan pasangan SS yang digunakan untuk operasi stack. Pada saat pertama program dijalankan register ini akan menunjuk pada byte terakhir stack.
c. BP (Base Pointer) Register adalah mempunyai fungsi sama dengan register BX, tetapi BX menulis dan membaca dengan segment DS (Data Segment) sedang BP menulis dan membaca dengan segment SS (Stack Segment).

4. Index Register yaitu SI (Source Index) dan DI (Destination Index) adalah berfungsi melakukan operasi STRING. Namun demikian, kedua register ini sering digunakan untuk menulis dan membaca ke atau dari memori seperti halnya BX dan BP.
 
5. Flag Register adalah berfungsi mengecek apakah sesuatu berfungsi atau tidak. 
Contohnya: 
a. Interrupt Flag mengecek apakah pada saat operasi Interrupt sedang aktif atau tidak, bila tidak aktif, Interrupt tidak akan dijalankan.  
b. Carry Flag mengecek apakah pada saat operasi terjadi kesalahan atau tidak,  
c. Sign Flag menunjukkan apakah suatu bilangan bertanda atau tidak dan sebagainya.

Gambar 23 di bawah ini adalah bit-bit register Flag 

PERINTAH DASAR ASSEMBLER
1. MOV
Perintah    untuk     mengisi,    memindahkan, memperbaharui isi suatu register, variabel ataupun suatu
lokasi memori.

Tata penulisan:  MOV [operand1],[operand2]
a. Operand1 berupa register, variabel, lokasi memory dan 
b. Operand2 berupa: register, variabel, lokasi memory ataupun bilangan.  
Contoh :
MOV AH,AL  ; mengkopi isi register AL ke register AH. 
MOV AH, 02  ; mengisi register AH dengan 02 
2. Int (Interrupt)
Subrotine yang akan dipanggil sudah tersedia pada memori komputer. Ada dua jenis yaitu :
a. Bios Interrupt yaitu Int 0H hingga 1FH yang disediakan oleh BIOS (Basic Input Output System). 
 Contoh: Int 16H service 01H berfungsi untuk mencek apakah ada tombol keyboard yang ditekan. 
b. DOS Interrupt yaitu Int 1FH keatas yang disediakan oleh DOS (Disk Operating System). 
Contoh: Int 20H berfungsi menghentikan kerja suatu program. 
3.   Int 20h dan Int 21h service 02h 
a. Int 20h
Bertugas memberhentikan proses komputer terhadap suatu program COM. Bila pada setiap program COM yang
dibuat tidak terdapat Int 20h, maka akan terjadi hanging pada komputer. Hal ini terjadi karena komputer tidak menemukan perintah pemberhentian proses. 
b. Int 21h Service 02
Seperti Int 20h, Int 21h adalah salah satu Int yang termasuk DOS Interrupt, karena Int 21h mempunyai banyak sekali tugas, maka tugasnya dibagi-bagi menjadi beberapa bagian. Untuk memanggil bagian-bagian  itu, perlu menyertakan nomor  bagiannya yang disebut juga dengan service number. Contoh Int
21h yang bertugas mencetak sebuah huruf ke layar yaitu fungsi kedua dari Int 21h. Untuk menjalankan fungsi Int 21h service 02 harus dipenuhi beberapa syarat yaitu :
a) Register   AH,   harus  berisi   service   number   dari  Int   21h  yang   akan dijalankan (02h).
b) Register DL, harus berisi bilangan hexa dari karakter ASCII (American Standard Code for Information Interchange) yang akan dicetak. 

OPERASI ARITMATIK 
1. Operasi Pertambahan
Ada dua macam perintah pertambahan, yaitu : 
a. Pertambahan dengan 1
Dengan perintah seperti: A = A+ 1, yang bermaksud  pertambahan dengan 1,
Tata penulisan:  INC [Register/Variabel] 
b. Pertambahan selain Satu
Dengan 'ADD' dapat menambahkan berapa saja pada suatu  register ataupun suatu variabel. 
Tata penulisan:  ADD [operand1],[operand2] 
dimana isi operand1  adalah register atau variabel dan operand2 berupa register, variabel atau bilangan.

Hasil pertambahan disimpan di operand1 , seperti contoh
berikut ini.
Contoh:
ADD   AH,AL   dengan   isi   AH   adalah   12   dan   AL   adalah   3,   maka komputer melaksanakan perintah
tersebut sebagai berikut : 
                                        AH............... 12
                                        AL................   3_ +
                                        AH............... 15 
2. Operasi Pengurangan
Seperti halnya pertambahan, ada dua fungsi yaitu : 
a. Pengurangan dengan Satu
Untuk maksud seperti A = A - 1 
Tata penulisan: DEC (Variabel Register) 
 
b. Pengurangan Selain Satu
Tata penulisan: SUB [operand1], [operand2] 
Syarat-syarat   Operand1   dan   operand2-nya   sama   seperti  
pada operasi pertambahan dan hasilnya pun akan diletakkan
pada Operand1.  

3. Perkalian
Tata penulisan: MUL (Register) 
Contoh:
 MUL BL ; Mengalikan nilai register BL dengan nilai  register AL dan disimpan di register AX. 
MUL BX ; Mengalikan nilai register BX dengan nilai register AX dan disimpan di register DX:AX dimana DX merupakan hasil lebih dari FFFFH.

4. Operasi Pembagian
Tata penulisan: DIV (Register)

LOMPAT / JUMP
Pada jump dengan memakai register CX, dimana setiap kali  lompat nilai CX berkurang satu dan sampai CX = 0 maka tidak bisa melompat lagi.  Pada instruksi jump ini, lompatan hanya dapat dipakai satu kali saja. 
Ada 2 macam lompatan, yaitu :
1. Lompatan Tak Bersyarat
Lompatan tak bersyarat dapat dikelompokkan menjadi dua macam, yaitu : 
a. Near Jump: yang jauh lompatan tidak lebih dari FF hexa byte, ataupun 256 byte. 
b. Far Jump: yang jauh lompatan tidak lebih dari FFFF hexa byte, ataupun 1 segment. 
Tata penulisan: JMP [Lokasi Memory] 

2. Lompatan Bersyarat
Ada beberapa jenis lompatan yang kegunaannya dapat  disesuaikan dengan keperluan yang dibutuhkan.  Tata penulisan: [Perintah jump] [Lokasi Memory] 
Sebelum memakai lompatan bersyarat, terlebih dahulu dilakukan perintah perbandingan (Compare). Hal ini dilakukan karena untuk beberapa jenis lompatan harus menggunakannya sebelum melakukan lompatan.  
Tata penulisan: CMP [Operand1],[Operand2]
Operand1: variabel atau register dan 
Operand2: variabel, isi lokasi memory, lokasi memory, variabel ataupun register. 
Beberapa perintah lompatan bersyarat:
1.  JE (Jump if Equal): bila pada saat pembandingan kedua operand sama. 
Contoh : 
CMP  AX,0120 
JE   ulangi  ;Jump ke label ulangi jika AX sama dengan 0120, namun bila ternyata AX tidak sama dengan 0120, maka komputer akan meneruskan dengan perintah baris berikutnya.

2.  JNE (Jump if Not Equal): berlaku apabila nilai AX tidak sama. 
Contoh : 
CMP AX,0120 
JNE ulangi  ; jump jika AX tidak sama dengan 0120 

Perintah-perintah yang lain adalah: 
a. JG (Jump if Greater than): jump jika  lebih besar dari operand kedua. 
b. JGE (Jump If Greater Or Equal): jump jika  lebih besar atau sama dengan operand kedua. 
c. JNG (Jump If Not Greater than): jump jika tidak lebih besar dari operand kedua. 
d. JNGE (Jump If Not Greater Or Equal): jump jika lebih kecil dari operand kedua. Sama dengan perintah JLE. 
e. JL (Jump if Less): Perintah ini sama dengan perintah JB tetapi dalam bil bertanda. 
f. JLE (Jump If Less or Equal): jump jika lebih kecil atau sama dengan operand kedua. Sama dengan perintah JNGE. 
g. JNL (Jump If Not Less Or Equal): jump jika tidak lebih kecil dari operand kedua. Perintah ini sama dengan JG. 
h. JNLE (Jump If Not Less Or Equal): jump jika tidak lebih kecil atau sama dengan operand kedua. Perintah ini sama dengan JG. 
i. JS (Jump On Sign): jump jika Sign Flag yang terdapat Flag Register berisikan angka 1. 
j. JNS (Jump On Not Sign): jump jika Sign Flag yang terdapat pada Flag Register berisikan angka 0. 
k. JC (Jump On Carry): jump jika Carry Flag yang terdapat pada Flag Register berisikan angka 1. 
l. JNC (Jump On Not Carry):jump jika Carry Flag yang terdapat pada Flag Register berisikan angka 0.  
m. JCXZ (Jump If CX = 0) Perintah ini dilaksanakan bila isi register CX sama dengan 0. 
n. JZ (Jump on Zero): jump jika Zero Flag yang terdapat pada Flag Register berisi angka 1. Jump ini mempunyai  fungsi  dan  cara  kerja yang  sama dengan JE. 
o. JNZ (Jump on Not Zero): jump jika Zero Flag yang terdapat pada Flag Register berisikan angka 0. Jump ini mempunyai  fungsi  dan  cara  kerja yang  sama dengan JNE sehingga dapat dipertukarkan pada saat pemakaian.
 
Adapun instruksi jump yang digunakan untuk bilangan tak bertanda adalah:
a) JA (Jump If Above): jump jika lebih besar dari pada operand kedua
b) JAE (Jump If Above of Equal): jump jika lebih besar atau sama dengan operand kedua
c) JNA (Jump If Not Above): jump jika tidak lebih besar dari operand kedua.
d) JNAE (Jump If Not Above Or Equal): jump jika tidak lebih besar atau sama dengan operand kedua.
e) JB (Jump If Below): jump jika lebih kecil dari operand kedua.
f) JBE (Jump If Below Or Equal): jump jika lebih kecil atau sama dengan   operand kedua.
g) JNB (Jump If Not Below): jump jika tidak lebih kecil dari operand kedua.
h) JNBE (Jump If Not Below Or Equal): jump jika tidak lebih kecil atau sama dengan operand kedua. 

OPERASI STACK
Stack adalah tempat peletakan sementara isi register.  Stack pada file.COM terdapat diakhir segment dan ketika pertama kali dijalankan program penunjuk stack (SP) akan langsung ke byte terakhir dari segment.  
Perintah Stack
Operasi stack mempunyai dua fungsi, yaitu fungsi untuk  memasukkan isi suatu register/variabel ke stack yaitu PUSH [operand 16 bit] , seperti ditunjukkan pada gambar 32. Untuk mengeluarkan isi register/variabel dari stack yaitu POP [Operand 16 bit] , seperti ditunjukkan pada gambar 33.

Bila setelah itu dilakukan perintah PUSH CX dengan register CX berisikan angka 0007, maka terlihat di stack.

OPERASI LOGIKA
Tata penulisan: OR/AND/XOR Operandl,Operand2 
1. Operand1 adalah varibael, register ataupun isi lokasi memory,  
2. Operand2 adalah register, variabel, isi lokasi memory ataupun suatu angka.  
3. Hasil dari operasi logika tersebut akan ditampung di Operand1.  
Contoh:
OR AL,BH  ; proses   OR   terhadap   BH   ke   AL.   Hasilnya   akan ditampung   di   register AL. 

 Bahasa Assembler 
MENCETAK SEBUAH KALIMAT 
Menggunakan fasilitas Int 21h dengan service 09h.  Sebelumnya dipelajari dulu tentang variabel.
Ada 2 jenis variabel, yaitu :
a. Variabel yang Dapat Dimodifikasi Isinya Variabel yang memakan tempat pada memory, yaitu;  
a) DB   (Define Byte), mendefinisikan variabel per byte. 
b) DW (Define Word), mendefinisikan variabel per word (2 byte). 
c) DD (Define Double Word), mendefinisikan variabel per 2 word. 
Tata penulisan: Label (DB/DW/DD) [Isi Variabel]
Contoh:
Satu db ‘ satu variabel$' 
Dua   db 12ABh
Tiga db 75h 

b. Variabel yang Tidak Dapat Dimodifikasi Isinya
Tidak memakan memori pada komputer, jenis variabel ini  hanya dapat dipakai dalam Assambler menggunakan Compiler dengan memakai equ.

Contoh: 
Satu equ 2470h 
Dua  equ 2442h

Syarat menggunakan Int 21 hexa service 09 hexa ini
adalah : 
a) AH=09H 
b) DS= segment variabel tempat menampung kata yang akan dicetak  
c) DX= offset-nya dan  
d) kata-kata yang dicetak tersebut harus diakhiri dengan tanda Dollar '$'. 

Contoh program menggunakan Int 21 hexa service 09 
hexa ditunjukkan pada gambar 37. 


Problem[back]


1. Sebutkan dan jelaskan aplikasi penggunaan mikroprosesor
JAWAB
    Mikroprosesor adalah mesin kecil sebagai pemproses dan pengendali utama proses yang terjadi pda komputer,yang dibuat dalam bentuk chip. meskipun ukurannya secara fisik tidak terlalu besar ,tetapi pemikir utama dari sebuah komputer adalah pada mikropsesor ini, dan disinilah proses utama diolah. contoh penggunaan prosesor MSP430F413buatan Texas Instrumen untuk mengendalikan alat ukur jarak yang menggunakan gelombang ultrasonik 40 kHz.


    Mikroprosesor pada alat ini berperan sebagai pengendali yang mengaktifkan pengirim sinyal, mengukur waktu propagasi sinyal dengan menunggu aktifnya penerima sinyal atau menunggu kedatangan sinyal pantulan, kemudian menghitung jarak antara alat ini dengan benda yang memantulkan sinyal ultrasonik serta menampilkan hasil perhitungannya dalam bilangan desimal pada display 7-segment.

2. Jelaskan kerugian dan keuntungan menggunakan mikroprosesor ?
          Jawab
 Beberapa keuntungan dari penggunaan sistem mikroprosesor antara lain:
Ø Sistem mikroprosesor dapat diprogram (programable), sehingga dengan perangkat keras (hardware) yang relatif sama tetapi dapat dipergunakan untuk bermacammacam sistem aplikasi yang berbeda tergantung dari program yang diberikan pada perangkat keras tersebut.
Ø Sistem menjadi lebih handal baik dalam kecepatan maupun ketepatan
Ø Operasional menjadi lebih mudah, bahkan dapat diatur untuk kearah otomasi
Ø Jumlah komponen yang diperlukan semakin sedikit serta daya yang diperlukan semakin kecil pula.

 Disamping keuntungan yang menjanjikan, sistem mikroprosesor juga memiliki kerugian-kerugian sebagai berikut:
Ø Mikroprosesor banyak jenisnya dan antara satu dengan yang lainnya tidak kompatible karena dari segi hardware maupun softwarenya berbeda, sehingga pengembangan sistemnya juga tidak sama
Ø Mikroprosesor mengalami perkembangan yang sangat pesat sehingga suatu sistem mikroprosesor menjadi cepat usang (out of date).

Example[back]


1. Jelaskan perbedaan dari mikroprosesor, mikrokomputer dan
    mikrokontroler ?
          Jawab
Ø Mikroprosesor adalah sebuah chip (keping) yang dapat melaksanakan operasi-operasi hitungan, operasi nalar, dan operasi kendali secara elektronis (digital).
Ø Mikrokomputer adalah suatu sistem mikroprosesor, yang minimum terdiri dari chip mikroprosesor (CPU: Central Processing Unit), ROM (Read Only Memori) yang berisi firmeware (Program kendali sistem uP), RAM (Random Access Memori) yang berisi program atau data sementara, dan Piranti input-output (I/O device) yang berguna untuk komunikasi antara sistem mikroprosesor dengan piranti yang dikendalikan.
Ø Mikrokontroler adalah gabungan dari mikroprosesor chip yang didalamnya terkandung sistem interaksi antar mikroprosesor, RAM, ROM, I/O interface dan beberapa peripheral.

2. Sebutkan dan jelaskan saluran-saluran yang terdapat pada mikroprosesor ?
          Jawab
Ø Bus Saluran Alamat/ Address Bus
Saluran alamat (address bus) diperlukan untuk menentukan suatu lokasi alamat memori maupun lokasi alamat dari perangkat input/output (Input Output Interface) yang selalu digunakan dalam suatu sistem mikroprosesor itu sendiri, sebab jumlah saluran yang ada langsung menentukan banyaknya alamat memori (kapasitas memori) yang dapat ditanganinya. Pada awal pengembangannya, mikroprosesor buatan Intel dengan tipe 8008 hanya meiliki empat buah saluran alamat, sehingga total alamat memori yang dapat ditanganinya sebanyak 16384 alamat. Setelah mengalami pengembangan selanjutnya sudah mencapai 16 saluran alamat sehingga mampu menangani 65536 alamat memori. Sifat saluran alamat adalah keluaran, sehingga kendali dilakukan dari mikroprosesor menuju ke perangkat-perangkat VCC + GND ingatan maupun perangkat-perangkat keluaran/masukan (input output peripheral).
                                                                              
Ø Bus Saluran Data/ Data Bus
Data bus (saluran data) diperlukan sebagai jalan masukan atau keluaran data yang berfungsi sebagai instruksi atau penyerta instruksi antara perangkat ingatan dan perangkat I/O dengan CPU. Untuk mikroprosesor Z80 memiliki 8 buah saluran data (D0- D7) atau 8 bit data. Sifat dari saluran data adalah dua arah (bidirectional), jadi arahnya dapat bolak-balik antara mikroprosesor dengan perangkat ingatan maupun perangkat masukan keluaran. Dalam sistem mikrokomputer, data bus dipakai bersamasama antara CPU dengan perangkat-perangkat lainnya agar pengawatan menjadi lebih praktis, sehingga cara penyambungannya secara paralel. Untuk menghindari terjadinya konflik data antara perangkat satu dengan yang lainnya maka berlaku sistem bergantian dan stanby atau kalau perlu keadaan tersebut dapat diatur melalui CPU lewat saluran kendali bus.

Ø Bus Saluran Kendali/ Control Bus
Saluran kendali (Control Bus) digunakan untuk melakukan pengendalian terhadap komponen-komponen pendukung dalam sistem mikroprosesor. Semua aktifitas lalu lintas data maupun pengambilan instruksi ke perangkat ingatan, perangkat keluaran masukan dan lain-lainnya diatur dan dikendalikan lewat saluran kendali tersebut. Pada mikroprosesor saluran-saluran kendali ada dua kelompok yaitu:
o Saluran kendali yang bersifat keluaran, artinya suatu pengendalian yang arahnya dari mikroprosesor menuju ke perangkat pendukung (perangkat ingatan, I/O, dekoder dan lain-lainnya).
o Saluran kendali yang bersifat masukan artinya suatu pengendalian yang arahnya dari perangkat luar mikroprosesor menuju ke mikroprosesor tersebut.

Pilihan Ganda[back]

1. Perintah Untuk memasukkan nilai register dengan angka hexa tertentu pada bahasa assembly menggunakan perintah...

a. PUSH

b. MOV

c. ADD

d. LOOP

e. DIV

Jawaban : b.MOV



2. Perintah Untuk keluar dari suatu program biasa menggunakan perintah ...

a. CMP

b. INT

c. INC

d. PUSH

e. POP

Jawaban : b.INT


Step 1:SUSUN dan SIAPKAN KOMPONEN 

Step 2:RANGKAI KOMPONEN

Step 3: BUAT SIMULASI PADA PROTEUS

Step 4: MENCOBA RANGKAIAN

Step 5: MENERAPKAN RANGKAIAN






6.Prinsip Kerja[back]
;PROGRAM MENCETAK SEBUAH KALIMAT
  
  JMP mulai  //melakukan lompatan ke arah lokasi memory dengan label mulai.

;Disini data dimulai

KATA db 'kata yang dicetak',13,10      // terdapat variabel KATA yang digunakan untuk mencetak kata
        db 'dengan Interrupt 21H service 09H',13,10   //mencetak kata dan angka 13,10 pada akhir baris data merupakan instruksi untuk ganti baris 
        db '$'
        
;Programnya
mulai:
    
        MOV     DX,OFFSET KATA  //mengisi register DX dengan OFFSET DATA yaitu dengan variabel KATA
        MOV     AH,09H          //mengisi AH dengan service
        INT     21H                   //mencetak kata
        MOV     AH,4CH        //mengisi AH dengan 4CH


7.Video Simulasi [back]




8. File Download [back]

Download Emulator Emu8086 disini
Download Video disini
Download Codingan disini
Download HTML disini
Download Buku Referensi disini

[Kembali ke daftar isi]

tugas 2








1. Pendahuluan
 [Kembali]

Dalam era perkembangan teknologi yang pesat, keberadaan lift telah menjadi bagian integral dari kehidupan sehari-hari. Sejalan dengan itu, permintaan akan lift yang lebih efisien, aman, dan ramah lingkungan terus meningkat. Untuk memenuhi tuntutan tersebut, pengaplikasian teknologi pintar (smart) dalam desain lift menjadi suatu langkah inovatif yang menjanjikan. Penerapan mikrokontroler, seperti Arduino, dan berbagai jenis sensor seperti PIR, touch, vibration, keypad, serta seven-segment, menjadi solusi yang mampu meningkatkan kualitas pengalaman pengguna lift secara signifikan.

Peningkatan Keamanan dan Efisiensi
Lift yang dilengkapi dengan sensor PIR mampu mendeteksi keberadaan orang di dalamnya secara akurat. Hal ini tidak hanya mengoptimalkan penggunaan energi dengan mengatur pencahayaan dan pendinginan secara otomatis, tetapi juga meningkatkan keamanan pengguna dengan memonitor kondisi kehadiran di dalam lift.

Antarmuka Intuitif untuk Pengguna
Penggunaan sensor touch pada panel lantai memberikan pengalaman pengguna yang lebih intuitif. Pengguna dapat memilih tujuan lantai dengan mudah melalui sentuhan ringan, sementara respons yang cepat dari sensor touch meningkatkan efisiensi operasional lift.

Deteksi Keadaan Darurat
Sensor vibrasi berperan penting dalam mendeteksi gangguan atau keadaan darurat. Dengan mendeteksi getaran yang tidak normal, lift dapat merespons secara cepat, seperti memberikan peringatan darurat atau menghentikan operasional lift untuk menghindari potensi bahaya.

Alternatif Input dan Visualisasi Informasi:
Keypad dan seven-segment digunakan sebagai alternatif input dan tampilan informasi. Keypad memberikan opsi lain bagi pengguna untuk memilih lantai, sementara seven-segment memberikan visualisasi yang jelas mengenai lantai yang dipilih atau informasi tambahan.

Melalui integrasi teknologi ini, smart lift tidak hanya memberikan pengalaman pengguna yang lebih baik, tetapi juga meningkatkan efisiensi operasional lift secara keseluruhan. Dengan memanfaatkan kecerdasan buatan pada tingkat lokal (mikrokontroler) dan berbagai sensor, sistem ini dapat disesuaikan dengan kebutuhan spesifik pengguna dan lingkungan sekitarnya. Pengaplikasian smart lift dengan Arduino dan sensor-sensor canggih ini menciptakan sistem transportasi vertikal yang lebih cerdas, adaptif, dan sesuai dengan perkembangan teknologi terkini.

2. Tujuan [Kembali]
  1. Memahami prinsip dasar input dan output pada mikrokontroler.
  2. Mampu mengonfigurasi dan mengendalikan 7-segment sebagai output pada mikrokontroler.
  3. Mampu menangkap dan memproses input dari keypad.
3. Alat dan Bahan [Kembali]
A. Alat
  • Power Supply
B. Bahan

  • Motor DC

  • Seven Segment Common Cathode

  • Arduino Uno
  • Keypad 4 x 3

  • Vibration Sensor

  • PIR Sensor

  • Touch Sensor



4. Dasar Teori [Kembali]

  • Motor DC

Motor terdiri atas 2 bagian utama yaitu stator dan motor. Pada stator terdapat lilitan (winding) atau magnet permanen, sedangkan rotor adalah bagian yang dialiri dengan sumber arus DC. Arus yang melalui medan magnet inilah yang menyebabkan rotor dapat berputar. Arah gaya elektromagnet yang ditimbulkan akibat medan magnet yang dilalui oleh arus dapat ditentukan dengan menggunakan kaidah tangan kanan.



          


Keuntungan utama motor DC adalah sebagai pengendali kecepatan, yang tidak mempengaruhi kualitas pasokan daya. Motor ini dapat dikendalikan dengan mengatur:
• Tegangan dinamo : meningkatkan tegangan dinamo akan meningkatkan kecepatan
• Arus medan : menurunkan arus medan akan meningkatkan kecepatan.

Mekanisme Kerja Motor D

Mekanisme kerja untuk seluruh jenis motor secara umum sama
  • Arus listrik dalam medan magnet akan menimbulkan gaya.
  • Jika kawat yang membawa arus dibengkokkan menjadi sebuah lingkaran/loop, maka kedua sisi loop yaitu pada sudut kanan medan magnet akan mendapat gaya pada arah yang berlawanan.
  • Pasangan gaya menghasilkan torsi untuk memutar kumparan.
  • Motor- motor memiliki beberapa loop pada dinamonya untuk memberikan tenaga putar yang lebih seragam dari medan magnetnya dihasilkan oleh susunan elektromagnetik yang disebut kumparan medan

 

  • Seven Segment Common Cathode
Seven segment adalah suatu segmen-segmen yang digunakan untuk menampilkan angka / bilangan decimal. Seven segmen ada 2 jenis, yaitu Common Anoda dan Common Katoda. 

 

LED Seven Segment Display Tipe Common Katoda
Common Cathode merupakan bergabung menjadi satu Pin, sedangkan penujang Anoda bisa menjadi Input untuk masing-masing Segmen LED. Kaki Katoda yang terhubung menjadi 1 Pin ini merupakan Terminal Negatif (-) atau Ground sedangkan Signal Kendali (Control Signal) akan diberikan kepada masing-masing Kaki Anoda Segmen LED.LED Seven Segment Display Tipe Common Katoda.


  • Arduino Uno

Arduino adalah kit elektronik atau papan rangkaian elektronik open source yang di dalamnya terdapat komponen utama yaitu sebuah chip mikrokontroler dengan jenis AVR dari perusahaan Atmel. Arduino yang kita gunakan dalam praktikum ini adalah Arduino Uno yang menggunakan chip AVR ATmega 328P. Dalam memprogram Arduino, kita bisa menggunakan komunikasi serial agar Arduino dapat berhubungan dengan komputer ataupun perangkat lain.

Adapun spesifikasi dari Arduino Uno ini adalah sebagai berikut :

 

Arduino Uno

Bagian-bagian arduino uno:

-Power USB

Digunakan untuk menghubungkan Papan Arduino dengan komputer lewat koneksi USB.

-Power jack

Supply atau sumber listrik untuk Arduino dengan tipe Jack. Input DC 5 - 12 V.

-Crystal Oscillator

Kristal ini digunakan sebagai layaknya detak jantung pada Arduino. Jumlah cetak menunjukkan             16000 atau 16000 kHz, atau 16 MHz.

-Reset

Digunakan untuk mengulang program Arduino dari awal atau Reset.

-Digital Pins I / O

Papan Arduino UNO memiliki 14 Digital Pin. Berfungsi untuk memberikan nilai logika ( 0 atau 1 ). Pin berlabel " ~ " adalah pin-pin PWM ( Pulse Width Modulation ) yang dapat digunakan untuk menghasilkan PWM.

-Analog Pins

Papan Arduino UNO memiliki 6 pin analog A0 sampai A5. Digunakan untuk membaca sinyal atau sensor analog seperti sensor jarak, suhu dsb, dan mengubahnya menjadi nilai digital.

-LED Power Indicator

Lampu ini akan menyala dan menandakan Papan Arduino mendapatkan supply listrik dengan baik.

Bagian - bagian pendukung:

-RAM

RAM (Random Access Memory) adalah tempat penyimpanan sementara pada komputer yang isinya dapat diakses dalam waktu yang tetap, tidak memperdulikan letak data tersebut dalam memori atau acak. Secara umum ada 2 jenis RAM yaitu SRAM (Static Random Acces Memory) dan DRAM (Dynamic Random Acces Memory).

-ROM

ROM (Read-only Memory) adalah perangkat keras pada computer yang dapat menyimpan data secara permanen tanpa harus memperhatikan adanya sumber listrik. ROM terdiri dari Mask ROM, PROM, EPROM, EEPROM.

Block Diagram Mikrokontroler ATMega 328P pada Arduino UNO

Adapun block diagram mikrokontroler ATMega 328P dapat dilihat pada gambar berikut:



Block diagram dapat digunakan untuk memudahkan / memahami bagaimana kinerja dari mikrokontroler ATMega 328P.

Pin-pin ATMega 328P:

            Rangkaian Mikrokontroler ATMega 328P pada Arduino UNO

 

  • Vibration Sensor

Vibration sensor / Sensor getaran ini memegang peranan penting dalam kegiatan pemantauan sinyal getaran karena terletak di sisi depan (front end) dari suatu proses pemantauan getaran mesin. Secara konseptual, sensor getaran berfungsi untuk mengubah besar sinyal getaran fisik menjadi sinyal getaran analog dalam besaran listrik dan pada umumnya berbentuk tegangan listrik. Pemakaian sensor getaran ini memungkinkan sinyal getaran tersebut diolah secara elektrik sehingga memudahkan dalam proses manipulasi sinyal, diantaranya:
  • Pembesaran sinyal getaran
  • Penyaringan sinyal getaran dari sinyal pengganggu.
  • Penguraian sinyal, dan lainnya.
Sensor getaran dipilih sesuai dengan jenis sinyal getaran yang akan dipantau. Karena itu, sensor getaran dapat dibedakan menjadi:
  • Sensor penyimpangan getaran (displacement transducer)
  • Sensor kecepatan getaran (velocity tranducer)
  • Sensor percepatam getaran (accelerometer).

Pemilihan sensor getaran untuk keperluan pemantauan sinyal getaran didasarkan atas pertimbangan berikut:
  • Jenis sinyal getaran
  • Rentang frekuensi pengukuran
  • Ukuran dan berat objek getaran.
  • Sensitivitas sensor
Berdasarkan cara kerjanya sensor dapat dibedakan menjadi:
  • Sensor aktif, yakni sensor yang langsung menghasilkan tegangan listrik tanpa perlu catu daya (power supply) dari luar, misalnya Velocity Transducer.
  • Sensor pasif yakni sensor yang memerlukan catu daya dari luar agar dapat berkerja.

        Grafik perbandingan frekuensi dengan sensitivitas sensor getaran :


 

  • PIR Sensor


PIR (Passive Infrared Receiver) merupakan sebuah sensor berbasiskan infrared. Akan tetapi, tidak seperti sensor infrared kebanyakan yang terdiri dari IR LED dan fototransistor. PIR tidak memancarkan apapun seperti IR LED. Sesuai dengan namanya ‘Passive’, sensor ini hanya merespon energi dari pancaran sinar inframerah pasif yang dimiliki oleh setiap benda yang terdeteksi olehnya. Benda yang bisa dideteksi oleh sensor ini biasanya adalah tubuh manusia

Diagram sensor PIR:

PIR (Passive Infrared Receiver) merupakan sebuah sensor berbasiskan infrared. Akan tetapi, tidak seperti sensor infrared kebanyakan yang terdiri dari IR LED dan fototransistor. PIR tidak memancarkan apapun seperti IR LED. Sesuai dengan namanya ‘Passive’, sensor ini hanya merespon energi dari pancaran sinar inframerah pasif yang dimiliki oleh setiap benda yang terdeteksi olehnya. Benda yang bisa dideteksi oleh sensor ini biasanya adalah tubuh manusia.

Sensor PIR ini bekerja dengan menangkap energi panas yang dihasilkan dari pancaran sinar inframerah pasif yang dimiliki setiap benda dengan suhu benda diatas nol mutlak. Seperti tubuh manusia yang memiliki suhu tubuh kira-kira 32 derajat celcius, yang merupakan suhu panas yang khas yang terdapat pada lingkungan. Pancaran sinar inframerah inilah yang kemudian ditangkap oleh Pyroelectric sensor yang merupakan inti dari sensor PIR ini sehingga menyebabkan Pyroelectic sensor yang terdiri dari galium nitrida, caesium nitrat dan litium tantalate menghasilkan arus listrik. Mengapa bisa menghasilkan arus listrik? Karena pancaran sinar inframerah pasif ini membawa energi panas. Prosesnya hampir sama seperti arus listrik yang terbentuk ketika sinar matahari mengenai solar cell.

Grafik Respon Pir terhadap suhu


Grafik sensor pir terhadap jarak, kecepatan,arah objek



  • Touch Sensor


Touch Sensor atau Sensor Sentuh adalah sensor elektronik yang dapat mendeteksi sentuhan. Sensor Sentuh ini pada dasarnya beroperasi sebagai sakelar apabila disentuh, seperti sakelar pada lampu, layar sentuh ponsel dan lain sebagainya. Sensor Sentuh ini dikenal juga sebagai Sensor Taktil (Tactile Sensor). Seiring dengan perkembangan teknologi, sensor sentuh ini semakin banyak digunakan dan telah menggeser peranan sakelar mekanik pada perangkat-perangkat elektronik.

Berdasarkan fungsinya, Sensor Sentuh dapat dibedakan menjadi dua jenis utama yaitu Sensor Kapasitif dan Sensor Resistif. Sensor Kapasitif atau Capacitive Sensor bekerja dengan mengukur kapasitansi sedangkan sensor Resistif bekerja dengan mengukur tekanan yang diberikan pada permukaannya.

Sensor Kapasitif

Sensor sentuh Kapasitif merupakan sensor sentuh yang sangat populer pada saat ini, hal ini dikarenakan Sensor Kapasitif lebih kuat, tahan lama dan mudah digunakan serta harga yang relatif lebih murah dari sensor resistif. Ponsel-ponsel pintar saat ini telah banyak yang menggunakan teknologi ini karena juga menghasilkan respon yang lebih akurat.

Berbeda dengan Sensor Resistif yang menggunakan tekanan tertentu untuk merasakan perubahan pada permukaan layar, Sensor Kapasitif memanfaatkan sifat konduktif alami pada tubuh manusia untuk mendeteksi perubahan layar sentuhnya. Layar sentuh sensor kapasitif ini terbuat dari bahan konduktif (biasanya Indium Tin Oxide atau disingkat dengan ITO) yang dilapisi oleh kaca tipis dan hanya bisa disentuh oleh jari manusia atau stylus khusus ataupun sarung khusus yang memiliki sifat konduktif.

Pada saat jari menyentuh layar, akan terjadi perubahaan medan listrik pada layar sentuh tersebut dan kemudian di respon oleh processor untuk membaca pergerakan jari tangan tersebut. Jadi perlu diperhatikan bahwa sentuhan kita tidak akan di respon oleh layar sensor kapasitif ini apabila kita menggunakan bahan-bahan non-konduktif sebagai perantara jari tangan dan layar sentuh tersebut.

Sensor Resistif

Tidak seperti sensor sentuh kapasitif, sensor sentuh resistif ini tidak tergantung pada sifat listrik yang terjadi pada konduktivitas pelat logam. Sensor Resistif bekerja dengan mengukur tekanan yang diberikan pada permukaannya. Karena tidak perlu mengukur perbedaan kapasitansi, sensor sentuh resistif ini dapat beroperasi pada bahan non-konduktif seperti pena, stylus atau jari di dalam sarung tangan.

Sensor sentuh resistif terdiri dari dua lapisan konduktif yang dipisahkan oleh jarak atau celah yang sangat kecil. Dua lapisan konduktif (lapisan atas dan lapisan bawah) ini pada dasarnya terbuat dari sebuah film. Film-film umumnya dilapisi oleh Indium Tin Oxide yang merupakan konduktor listrik yang baik dan juga transparan (bening).

Cara kerjanya hampir sama dengan sebuah sakelar, pada saat film lapisan atas mendapatkan tekanan tertentu baik dengan jari maupun stylus, maka film lapisan atas akan bersentuhan dengan film lapisan bawah sehingga menimbulkan aliran listrik pada titik koordinat tertentu layar tersebut dan memberikan signal ke prosesor untuk melakukan proses selanjutnya.

Gambar Grafik Sensor Sentuh


5. Percobaan [Kembali]
a. Prosedur[Kembali]
    • Siapkan segala komponen yang di butuhkan
    • Susun rangkaian sesuai panduan
    • Input codingan arduino
    • Hidupkan rangkaian
    • Apabila tidak terjadi eror, maka rangkaian selesai dibuat.
b. Hardware dan Diagram Block [Kembali]
  • Hardware

    • Diagram Block

c. Rangkaian Simulasi dan Prinsip Kerja[Kembali] 


Sensor vibration terhubung ke kaki A0 sebagai input, Sensor PIR terhubung ke kaki A1 sebagai input, Sensor touch terhubung ke kaki A2 sebagai input. Sedangkan A3 dan A4 sebagai output yang terhubung ke pada motor DC. Pada saat salah satu sensor aktif, maka arduino akan mengeluarkan output high pada A4 dan low pada A3 sehingga motor untuk membuka pintu lift akan bergerak, sedangkan ketika semua sensor berlogika nol maka arduino akan mengeluarkan output high pada A3 dan low pada A4 sehingga motor untuk menutup pintu lift akan bergerak. Keypad terhubung kearduino sebagai input dimana bagian row keypad terhubung ke pin 0-3 arduino, sedangkan bagian columb terhubung ke pin 4-6. Ketika keypad memberi input, arduino akan menjalankan input tersebut dengan menjadikan ouput pada kaki 7-13 yang terhubung kepada sevensegment. Ketika keypad memberi input 1 maka pada seven segment akan menampilkan 1.

 

c. Flowchart dan Listing Program[Kembali]

  • Flowchart


    • Listing Program 
#include <Key.h>
#include <Keypad.h>

#include <Key.h> and <Keypad.h>: Include libraries for keypad functionality.

int check;

Mendeklarasikan variabel check untuk menyimpan informasi status.

const byte rows = 4;
const byte cols = 3;

Mendefinisikan jumlah baris dan kolom pada keypad.

 char key[rows][cols] =

{
  {'1', '2', '3'},
  {'4', '5', '6'},
  {'7', '8', '9'},
  {'*', '0', '#'}
};

Definisi matriks 4x3 yang berisi karakter-karakter yang merepresentasikan tombol-tombol pada keypad.

 byte rowpins[rows] = {0, 1, 2, 3};

byte colpins[cols] = {4, 5, 6};

Array yang menentukan pin-pin Arduino yang terhubung ke baris dan kolom keypad.

//Create an object of keypad
Keypad keypad = Keypad( makeKeymap(key), rowpins, colpins,  rows, cols );

Pembuatan objek Keypad dengan nama keypad menggunakan matriks tombol yang telah didefinisikan dan konfigurasi pin.

 const int pinVib = A0;

Mendefinisikan pin A0 untuk sensor getaran.

const int pinPIR = A1;

Mendefinisikan pin A1 untuk sensor PIR.

const int pinTouch = A2;
Mendefinisikan pin A2 untuk sensor sentuhan.

const int pinTertutup = A3;  
Mendefinisikan pin A3 keluaran untuk motor menutup pintu lift

const int pinTerbuka = A4;  
Mendefinisikan pin A4 keluaran untuk motor menutup pintu lift

const int sevenSegmentPins[] ={7, 8, 9, 10, 11, 12, 13};
Array pin digital yang terhubung ke 7-segment display.

 void setup() {

  for (int i = 0; i < 7; i++) {
    pinMode(sevenSegmentPins[i], OUTPUT);
  }

for yang digunakan untuk mengatur mode pin pada tujuh pin digital yang terhubung ke 7-segment display. Loop ini mengatur setiap pin pada mode OUTPUT, yang berarti pin tersebut akan digunakan sebagai output digital untuk mengontrol 7-segment display.

 

  pinMode(pinVib, INPUT);
  pinMode(pinPIR, INPUT);
  pinMode(pinTouch, INPUT);

pinVib, pinPIR, dan pinTouch, Semua pin ini diatur ke mode INPUT

  pinMode(pinTertutup, OUTPUT);
  pinMode(pinTerbuka, OUTPUT);

dua pin digital pinTertutup dan pinTerbuka diatur ke mode OUTPUT

  // Set up row and column pins for keypad
  for (int i = 0; i < rows; i++) {
    pinMode(rowpins[i], INPUT);

  }

setiap pin pada baris keypad diatur menjadi INPUT.

  for (int j = 0; j < cols; j++) {
    pinMode(colpins[j], INPUT);
  }

mengatur mode pin pada kolom keypad menjadi INPUT

  Serial.begin(9600);
inisialisasi komunikasi serial dengan kecepatan 9600 baud.
}

void zero() {
  digitalWrite(7, HIGH);
  digitalWrite(8, HIGH);
  digitalWrite(9, HIGH);
  digitalWrite(10, HIGH);
  digitalWrite(11, HIGH);
  digitalWrite(12, HIGH);
  digitalWrite(13, LOW);   // 0
}

Menetapkan pin 7-12 menjadi HIGH (tinggi) dan pin 13 menjadi LOW (rendah).
Ini mewakili konfigurasi untuk menampilkan angka "0" pada 7-segment display.

 

void one() {
  digitalWrite(7, LOW);
  digitalWrite(8, HIGH);
  digitalWrite(9, HIGH);
  digitalWrite(10, LOW);
  digitalWrite(11, LOW);
  digitalWrite(12, LOW);
  digitalWrite(13, LOW);   // 1
}

Menetapkan pin 8-12 menjadi LOW dan pin 7 menjadi HIGH.
Ini mewakili konfigurasi untuk menampilkan angka "1" pada 7-segment display.

void two() {
  digitalWrite(7, HIGH);
  digitalWrite(8, HIGH);
  digitalWrite(9, LOW);
  digitalWrite(10, HIGH);
  digitalWrite(11, HIGH);
  digitalWrite(12, LOW);
  digitalWrite(13, HIGH);   // 2
}

Menetapkan pin 7, 8, 10, 11, dan 13 menjadi HIGH, sedangkan pin 9 dan 12 menjadi LOW.
Ini mewakili konfigurasi untuk menampilkan angka "2" pada 7-segment display.

void three() {
  digitalWrite(7, HIGH);
  digitalWrite(8, HIGH);
  digitalWrite(9, HIGH);
  digitalWrite(10, HIGH);
  digitalWrite(11, LOW);
  digitalWrite(12, LOW);
  digitalWrite(13, HIGH);   // 3
}

Menetapkan pin 7-9, 10, dan 13 menjadi HIGH, sedangkan pin 11 dan 12 menjadi LOW.
Ini mewakili konfigurasi untuk menampilkan angka "3" pada 7-segment display.

void four() {
  digitalWrite(7, LOW);
  digitalWrite(8, HIGH);
  digitalWrite(9, HIGH);
  digitalWrite(10, LOW);
  digitalWrite(11, LOW);
  digitalWrite(12, HIGH);
  digitalWrite(13, HIGH);   // 4
}

Menetapkan pin 8, 9, 12, dan 13 menjadi HIGH, sedangkan pin 7, 10, dan 11 menjadi LOW.
Ini mewakili konfigurasi untuk menampilkan angka "4" pada 7-segment display.

void five() {
  digitalWrite(7, HIGH);
  digitalWrite(8, LOW);
  digitalWrite(9, HIGH);
  digitalWrite(10, HIGH);
  digitalWrite(11, LOW);
  digitalWrite(12, HIGH);
  digitalWrite(13, HIGH);   // 5
}

Menetapkan pin 7, 9, 10, 11, dan 12 menjadi HIGH, sedangkan pin 8 dan 13 menjadi LOW.
Ini mewakili konfigurasi untuk menampilkan angka "5" pada 7-segment display.

 

void six() {
  digitalWrite(7, LOW);
  digitalWrite(8, LOW);
  digitalWrite(9, HIGH);
  digitalWrite(10, HIGH);
  digitalWrite(11, HIGH);
  digitalWrite(12, HIGH);
  digitalWrite(13, HIGH);   // 6
}

Menetapkan pin 7 dan 12-13 menjadi HIGH, sedangkan pin 8-11 menjadi LOW.
Ini mewakili konfigurasi untuk menampilkan angka "6" pada 7-segment display.

 

void seven() {
  digitalWrite(7, HIGH);
  digitalWrite(8, HIGH);
  digitalWrite(9, HIGH);
  digitalWrite(10, LOW);
  digitalWrite(11, LOW);
  digitalWrite(12, LOW);
  digitalWrite(13, LOW);  // 7
}

Menetapkan pin 7-9 menjadi HIGH, sedangkan pin 10-13 menjadi LOW.
Ini mewakili konfigurasi untuk menampilkan angka "7" pada 7-segment display.

 

void eight() {
  digitalWrite(7, HIGH);
  digitalWrite(8, HIGH);
  digitalWrite(9, HIGH);
  digitalWrite(10, HIGH);
  digitalWrite(11, HIGH);
  digitalWrite(12, HIGH);
  digitalWrite(13, HIGH);   // 8
}

Menetapkan semua pin (7-13) menjadi HIGH.
Ini mewakili konfigurasi untuk menampilkan angka "8" pada 7-segment display.

 

void nine() {
  digitalWrite(7, HIGH);
  digitalWrite(8, HIGH);
  digitalWrite(9, HIGH);
  digitalWrite(10, HIGH);
  digitalWrite(11, LOW);
  digitalWrite(12, HIGH);
  digitalWrite(13, HIGH);   // 9
}

Menetapkan pin 7-8, 10-13 menjadi HIGH, sedangkan pin 9 menjadi LOW.
Ini mewakili konfigurasi untuk menampilkan angka "9" pada 7-segment display.

void loop() {

fungsi loop() yang akan dijalankan secara terus-menerus setelah fungsi setup() selesai dieksekusi

 

    char keyPressed = keypad.getKey();


membaca input dari keypad dan menyimpannya dalam variabel keyPressed. Fungsi getKey() dari objek keypad mengembalikan karakter tombol yang ditekan

    if (keyPressed == '#') {
      zero();
      check = 0;
    }

Jika tombol yang ditekan adalah tanda pagar (#), maka fungsi zero() akan dipanggil untuk menampilkan angka "0" pada 7-segment display. Selanjutnya, variabel check diatur menjadi 0.

    if (keyPressed == '0') {
      zero();
      check = 1;
    }

Jika tombol yang ditekan adalah angka "0", maka juga fungsi zero() akan dipanggil, dan variabel check diatur menjadi 1.

 

    if (keyPressed == '1') {
      one();
      check = 1;
    }

    if (keyPressed == '2') {
      two();
      check = 1;
    }

    if (keyPressed == '3') {
      three();
      check = 1;
    }

    if (keyPressed == '4') {
      four();
      check = 1;
    }

    if (keyPressed == '5') {
      five();
      check = 1;
    }

    if (keyPressed == '6') {
      six();
      check = 1;
    }

    if (keyPressed == '7') {
      seven();
      check = 1;
    }

    if (keyPressed == '8') {
      eight();
      check = 1;
    }

    if (keyPressed == '9') {
      nine();
      check = 1;
    }
 

Seri if-statements yang menghandle tombol angka 1 hingga 9. Jika salah satu tombol tersebut ditekan, fungsi yang sesuai (misalnya, one() untuk angka 1) akan dipanggil dan variabel check diatur menjadi 1.

  // Cek kondisi A0, A1, A2
    if (digitalRead(pinVib) == HIGH || digitalRead(pinPIR) == HIGH || digitalRead(pinTouch) == HIGH)
digitalRead(pinVib) == HIGH: Mengecek apakah sinyal pada pinVib (A0) berada pada (HIGH).
digitalRead(pinPIR) == HIGH: Mengecek apakah sinyal pada pinPIR (A1) berada pada (HIGH).
digitalRead(pinTouch) == HIGH: Mengecek apakah sinyal pada pinTouch (A2) berada pada (HIGH).
Kondisi akan terpenuhi jika setidaknya satu dari ketiga sensor tersebut mendeteksi keadaan yang diinginkan (berlogika HIGH)
{
    digitalWrite(pinTerbuka, HIGH);
    digitalWrite(pinTertutup, LOW);

Jika kondisi terpenuhi (minimal satu sensor memberikan sinyal HIGH), maka pinTerbuka akan diatur menjadi HIGH dan pinTertutup akan diatur menjadi LOW
  }
  else
  {
    digitalWrite(pinTerbuka, LOW);
    digitalWrite(pinTertutup, HIGH);
  }
  }

Jika kondisi tidak terpenuhi (tidak ada sensor yang memberikan sinyal HIGH), maka pinTerbuka akan diatur menjadi LOW dan pinTertutup akan diatur menjadi HIGH.

d. Video Simulasi[Kembali]

 



e. Download File[Kembali]

 Bahan Presentasi untuk mata kuliah kimia         Oleh : Zhafir Ibnu Tanjung 2010953028     Dosen Pengampu: Darwison...