CE3019SK Praktikum Mikroprosesor Dan Mikrokontroler Robotics And Embedded System Laboratory Jurusan Sistem Komputer Universitas Andalas 2018 KATA PENGANTAR Alhamdulillah dengan mengucapkan rasa syukur penulis ucapkan atas kehadirat ALLAH SWT yang telah memberikan rahmat dan karunia-Nya serta kesehatan, sehingga MODUL PRAKTIKUM SISTEM MIKROKONTROLER DAN MIKROPROSESOR ini dapat terselesaikan dengan baik tanpa kendala yang berarti, yang mana modul ini diharapakan bisa menjadi panduan bagi praktikan untuk melaksanakan praktikum. Shalawat beserta salam tercurahkan kepada Nabi Muhammad SAW yang membawa kita kea lam yang diterangi oleh ilmu pengetahuan. Tim penyusun mengucapkan terima kasih kepada dosen pengampuh mata kuliah atas bimbingan dan bantuannya dalam menyusun modul ini baik secara material maupun spiritual. Modul ini diharapkan bisa menjadi panduan bagi praktikan untuk melaksanakan praktikum dengan sebaik-baiknya. Akhir kata tim penyusun berharap agar praktikan dapat mengikuti praktikum sesuai panduan dari modul ini dan terlaksana dengan sebaik-baiknya. Padang, 4 Oktober 2017 Penulis Daftar Kontributor Penulis menghargai semua pihak yang telah membantu dan berkonstribusi pada penyusunan petunjuk pratikum. Berikut ini daftar nama yang berkonstribusi pada penyusunan petunjuk pratikum ini Dody Ichwana Putra, MT Nefy Puteri, MT Dian Zulfi Nanda Muhammad Azmi Riyan Fitri Ardiani Stevanus Setianto Engky Lawara Yayan Marreza Rifa Saputra PERATURAN PRATIKUM LABORATORIUM RESLAB 1. TATA TERTIB PRAKTIKUM a. Setiap praktikan diwajibkan mengikuti semua prosedur penyelenggaraan praktikum (asistensi, response, praktikum dan laporan) dengan tertib dan disiplin b. Waktu toleransi praktikum 10 menit keterlambatan jika melebihi dari waktu toleransi maka praktikan dinyatakan gagal modul yang bersangkutan. c. Praktikan hanya dapat melaksanakan praktikum pada jadwal yang telah ditentukan. d. Dalam satu (1) shift pratikum hanya dilaksanakan untuk satu mata kuliah pratikum. e. Praktikan menggunakan PDH HME (rapih dan sopan, celana panjang/rok dan kemeja) f. Modul praktikum di print dan dibawa saat praktikum dilaksanakan. g. Wajib membawa laptop yang telah di install software pendukung sesuai h. dengan instruksi asisten dan kebutuhan praktikum (jika dibutuhkan) i. Tidak membawa senjata tajam dan menciptakan keributan. j. Selama praktikum berlangsung, praktikan dilarang : 1. Menggunakan dan mengoperasikan peralatan tanpa seizin teknisi dan asisten yang bersangkutan. 2. Melakukan hal-hal yang tidak diinstruksikan oleh asisten yang bersangkutan. 3. Makan, minum, membuat keributan, dan hal-hal yang dapat mengganggu pelaksanaan praktikum. k. Setelah praktikum, meja praktikum harus bersih dan semua hal harus dikembalikan ke tempatnya. l. Bagi praktikan yang melanggar tata tertib ini maka praktikumnya digagalkan modul bersangkutan. 2. Pergantian Jadwal Dilakukan apabila praktikan tidak dapat melaksanakan praktikum sesuai dengan jadwal atau melanggar tata tertib praktikum, syarat dan ketentuan: a. Bagi praktikan yang tidak bisa mengikuti praktikum pada waktu yang telah dijadwalkan karena sakit dan atau alasan lain, maka praktikan harus membuat surat izin yang diketahui oleh Asisten Koordinator Praktikum dan diserahkan paling lambat sebelum jadwal praktikumnya. b. Segera setelah praktikan memungkinkan mengikuti kegiatan akademik, praktikan dapat mengikuti praktikum pengganti setelah mendapatkan konfirmasi dari asisten Koordinasi mata kuliah bersangkutan dengan melampirkan surat keterangan dokter bagi yang sakit atau surat terkait untuk yang memiliki urusan pribadi. c. Praktikum pengganti dilaksanakan pada shift praktikum yang akan melaksanakan modul yang akan yang di ganti(disisip). d. Maksimal pergantian 1 Modul praktikum. e. Jika tidak mengikuti pergantian modul maka nilai modul bersangkutan diberikan D 3. FORMAT PENULISAN LAPORAN a. b. c. d. e. f. g. Margin : Top = 4 cm, Bottom = 3 cm Left = 4 cm, Right = 3cm Kertas A4 Judul Times New Roman 14 Pt, Bold talic untuk penggunaan bahasa inggris Isi Times New 12 Pt text-align justify Spasi 1,5 tidak ada space setelah dan sebelum paragraf Gambar Gambar 1 Stabilitas Relatif Gambar dan nama gambar harus proporsional, jelas dengan ukuran yang tidak berlebihan, letak center, diberikan sumber referensi dari mana diperoleh gambar tersebut, berlaku untuk persamaan, dan bunyi hokum h. Setiap bab berisi BAB I PROSEDUR PERCOBAAN Berisi langkah kerja atau prosedur percobaan pada saat praktikum minimal 2 lembar. BAB II TUGAS Berisi tugas pendahuluan, tambahan, dan modul minimal 2 lembar. BAB III ANALISIS Berisi analisis atau penjelasan praktikum yang dilakukan didasari teori yang berasal dari sumber yang terpercayaminimal 3 lembar. BAB IV PENUTUP Berisi kesimpulan dari percobaan yang dilakukan, merupakan jawaban dari tujuan pada saat praktikum minimal 1 lembar. DAFTAR PUSTAKA Berisi daftar rujukan atau pustaka yang telah digunakanpada laporan praktikum. Rujukan yang diperbolehkan meliputi jurnal ilmiah, prosiding seminar, textbook, majalah ilmiah dan sumber lain yang dapat dipertanggungjawabkan.Adapun tata cara penulisan referensi tergantung pada style penulisan sitasi yang digunakan. 1.) Bagi yang menggunakan style APA Feit, S. (1998). TCP/IP: architecture, protocols, and implementation with IPv6 and IP security. United States of America: The McGrawHill Companies, Inc. Jin,H.-W.,and Yoo, C. (2007). Impact of Protocol Overheads on Network Throughput Over High-Speed Interconnects: Measurement, Analysis, and Improvement. The Journal of Supercomputing. Vol.41, No. 1, pp. 17 – 40. 2) Bagi yang menggunakan style numbered (angka) 1. Feit, S., TCP/IP : architecture, protocols, and implementation with IPv6 and IP security. 1998, United States of America: The McGraw-Hill Companies, Inc. 2. Jin, H.-W., & Yoo, C. Impact of Protocol Overheads on Network Throughput Over High-Speed Interconnects: Measurement, Analysis, and Improvement. The Journal of Supercomputing. 2007.Vol. 41, No. 1, pp. 17 – 40. 4. PRESENTASI TUGAS AKHIR Merupakan ujian yang bersifat aplikatif dari materi yang telah dipraktikkan, setiap kelompok mempresentasikan sebuah program dalam bentuk aplikasi serta mendemonstrasikannya. 5. RESPONSI Merupakan review dari awal sampai dengan akhir praktikum dalam bentuk test tertulis yang dilaksanakan sebelum praktikum dan diberikan oleh dosen pengampu praktikum. Bagi yang tidak mengikuti responsi maka praktikan dianggap gugur atau tidak mengikuti praktikum tersebut dan nilai maksimal yang diberikan D. 6. JADWAL PRAKTIKUM a. Waktu yang diberikan sesuai dengan hari kerja (senin s/d jumat) b. Batas jam yang diberikan dari jam 8.00 WIB sampai dengan 16.00 WIB c. Jadwal diberikan sesuai dengan kesepakatan antara asisten dan praktikan, selama tidak mengganggu jam kuliah. 7. SANKSI TABEL SANKSI PRAKTIKUM Kasus Sanksi Semua bentuk plagiat (mencontek) laporan pratikum, tugas pendahuluan Sengaja tidak mengikuti pratikum Tidak hadir pratikum Terlambat hadir pratikum Tugas pendahuluan tidak dikerjakan/hilang/tertinggal Kartu pratikum tertinggal/hilang Gugur modul bersangkutan Gugur modul 10% dari nilai laporan Melapor pada asisten yang bertugas Kartu pratikum tidak lengkap data dan foto Tidak minta paraf asisten di kartu pratikum Terlambat mengumpulkan laporan Kerusakan alat pratikum karena kelalaian praktikan Pengurangan nilai per modul 5 poin nilai laporan 5 poin nilai laporan 25% dari nilai laporan Penggantian alat praktikum Catatan : 1. Praktikan yang terkena sanksi gugur modul nilai praktokum modul bersangkutan dinyatakan D. 2. Setiap pelanggaran berat dan ringan dicatat/diberikan tanda di kartu pratikum 3. Sanksi yang tercantum ditabel adalah sanksi minimum 4. Sanksi yang belum tercantum akan ditentukan kemudian Panduan Umum dan Keselamatan dan Penggunaan Laboratorium Keselamatan Pada prinsipnya untuk mewujudkan pratikm yang aman diperlukan partisipasi seluruh pratikan dan asisten pada pratikum yang bersangkutan. Dengan demikian, kepatuhan setiap pratikan terhadap uraian pada bagian ini akan sangat membantu mewujudkan pratikum yang aman. Bahaya Listrik Perhatikan dan pelajari tempat-tempat sumber listrik (stop-kontak dan circuit breaker) dan cara menyalkan-mematikannya. Jika melihat ada kerusakan yang berpotensi menimbulkan bahaya, laporkan pada asistem Hindari daerah atau benda yang berpotensi menimbulkan bahaya listrik (sengatan listrik/ strum) secara tidak sengaja, misalkan kabel jala-jala yang terkelupas dll. Tidak melakukan sesuatu yang dapat menimbulkan bahaya listrik pada diri sendiri atau orang lain Keringkan bagian tubuh yang basah karena, misalkan keringat dll Selalu waspada terhadapa bahaya listrik pada setiap aktivitas pratikum Kecelakaan akibat bahaya listrik yang sering terjadi adalah tersengat arus listrik. Berikut ini adalah hal-hal yang harus diikuti pratikan jika hal itu terjadi : Jangan panic, Matikan semua peralatan elektronik dan sumber listrik di meja masing-masing dan di meja pratikan yang tesengat arus listrik, Bantu pratikan yang tersengat arus listrik untuk melepaskan diri dari sumber listrik, Beritahu dan minta bantuan asisten, pratikan lain dan orang di sekitar anda tentang terjadinya kecelakaan akibat bahaya listrik Bahaya Api atau Panas Berlebih Jangan membawa benda-benda mudah terbakar (korek api, gas dll) ke dalam ruangan pratikum bila tidak disyaratkan dalam modul pratikum Jangan menimbulkan sesuatu yang dapat menimbulkan api, percikan api atau panas berlebih Selalu waspada pada bahaya api atau panas berlebih pada aktivitas pratikum Berikut ini adalah hal-hal yang harus diikuti pratikan jika menghadapi bahaya panas berlebih : Jangan panik, Matikan semua peralatan elektronik dan sumber listrik di meja masing-masing Beritahu dan minta bantuan asisten, pratikan lain dan orang di sekitar anda tentang terjadinya bahaya api atau panas berlebih Menjauh dari ruangan pratikum Bahaya Lain Untuk menghindari terjadinya hal-hal yang tidak diinginkan selama pelaksanaan percobaan perhatikan juga hal-hal berikut : Jangan membawa benda tajam (pisau, gunting dan sejenisnya) ke ruangan pratikum bila tidak diperlukan untuk pelaksanaan percobaan Jangan memakai perhiasan dari loga, misalnya cincin, kalung, gelang dll Hindari daerah atau logam yang memiliki daerah tajam yang dapat melukai Hindari melakukan sesuatu yang dapat menimbulkan luka pada diri sendiri atau orang lain, misalnya bermain-main saat pratikum Lain-Lain Pratikan dilarang membawa makanan dan minuman ke dalam ruangan pratikum Penggunaan Peralatan Pratikum Berikut adalah panduan yang harus dipatuhi ketika menggunakan alat-alat pratikum Sebelum menggunakan alat-alat pratikum, pahami petunjuk penggunaan alat itu. Perhatikan dan patuhi peringatan (warning) yang biasa tertera pada badan alat Pahami fungsi atau peruntukan alat-alat pratikum dan gunakanlah alat-alat tersebut hanya untuk aktivitas yang sesuai fungsi atau peruntukannya. Menggunakan alat pratikum di luar fungsi atau peruntukannya dapat menimbulkan kerusakan pada alat tersebut dan bahaya keselamatan pratikan Pahami rating dan jangkauan kerja alat-alat pratikum dan gunakanlah alat-alat tersebut sesuai dengan rating dan jangkauan kerjanya. Penggunaan alat-alat pratikum di luar rating kerjanya dapat menimbulkan kerusakan pada alat tersebut dan bahaya keselamatan pratikan Pastikan seluruh peralatan pratikum yang digunakan aman dari benda/logam tajam, api/panas berlebih atau laiinnya yang dapat mengakibatkan kerusakan pada alat tersebut Tidak melakukan aktivitas yang dapat menyebabkan kotor, coretan , goresan atau sejenisnya pada badan alat-alat pratikum yang digunakan Kerusakan instrumentasi pratikum menjadi tanggung jawab bersama rombongan pratikum ybs. Alat yang rusak harus diganti oleh rombongan tersebut. Sanksi Pengabaian uraian panduan di atas dapat dikenakan sanksi tidak lulus mata kuliah yang bersangkutan. PERCOBAAN I ASSEMBLY 1 1.1 TUJUAN 1 Mengenal dan memahami pemrograman ARM dengan menggunakan bahasa Assembly. 2 Memahami tipe data dan register dalam processor ARM. 3 Memahami instruction set dalam processor ARM. 4 Memahami instruksi LDR (Load Register) atau STR (Store Register) memory dalam processor ARM. 1.1 PERSIAPAN Pelajari kembali modul praktikum dan bahan kuliah yang berkaitan dengan pemrograma n Assembly, kemudian kerjakan Tugas Pendahuluan dan kumpulkan sesuai ketentuan yang berlaku. 1.2 DASAR TEORI As s embly adalah low-level programming language pada komputer atau pada perangkat lain yang dapat di program. Keunggulan dari Assembly adalah bahasa ini Power Full yang berarti dengan menggunakan program ini, langsung bermain dalam komunikasi antar register. Bahasa Assembly berbeda -beda tergantung arsitektur prosessor dan instruksi set yang digunakan. Agar dapat dieksekusi, program yang ditulis dalam bahasa Assembly harus di compile ke dalam bentuk bahasa mesin. Bahasa Assembly menggunakan mnemonic untuk merepresentasikan low-level machine instruction atau opcode. Raspberry Pi adalah sebuah SBC (Single Board Computer) yang menggunakan processor ARM. ARM merupakan Processor dengan insruction set RISC (Reduced Instuction Set Computing) yang berarti instruksinya kurang dari 100 instruksi. RISC memiliki beberapa kelebihan dan kekurangan. Salah satu kelebihannya adalah instruksi dapat di eksekusi lebih cepat karena sistem RISC memperpendek waktu esekus dengan mengurangngi clock cycles. Kekurangannya adalah mengurangi evesiensi penulisan software. Tabel 1.1 Register Pada Prosesor ARM # Alias Purpose R0 – General purpose R1 – General purpose R2 – General purpose 1 | ASSEMBLY I # Alias Purpose R3 – General purpose R4 – General purpose R5 – General purpose R6 – General purpose R7 – Holds Syscall Number R8 – General purpose R9 – General purpose R10 – General purpose R11 FP Frame Pointer Special Purpose Registers R12 IP Intra Procedural Call R13 SP Stack Pointer R14 LR Link Register R15 PC Program Counter CPSR – Current Program Status Register Perbandingan Register Antara ARM dengan x86 ARM 2 | ASSEMBLY I Description x86 # Alias Purpose R0 General Purpose EAX R1-R5 General Purpose EBX, ECX, EDX, ESI, EDI R6-R10 General Purpose – R11 (FP) Frame Pointer EBP R12 Intra Procedural Call – R13 (SP) Stack Pointer ESP R14 (LR) Link Register – R15 (PC) <-Program Counter Instruction Pointer -> CPSR Current Program State Register/Flags / EIP EFLAGS Instruksi assembly pada prosessor ARM adalah seperti tabel di bawah ini : Tabel 1.2. Instruksi Pada Prosessor ARM Instruction Description MOV Move data 3 | ASSEMBLY I Ins truction Description MVN Move 2’s complement ADD Addition SUB Subtraction MUL Multiplication LSL Logical Shift Left LSR Logical Shift Right ASR Arithmetic Shift Right ROR Rotate Right CMP Compare AND Bitwise AND ORR Bitwise OR EOR Bitwise XOR LDR Load STR Store LDM Load Multiple STM Store Multiple PUSH Push on Stack 4 | ASSEMBLY I Ins truction Description POP Pop off Stack B Branch BL Branch with Link BX Branch and eXchange BLX Branch with Link and eXchange SWI/SVC System Call 1.3 TUGAS PENDAHULUAN 1. 2. 3. 4. 5. 6. Lakukan instalasi Putty untuk SSH pada laptop anda, buka aplikasi lalu screenshoot Jelaskan Apa itu Mikroprocessor Jelaskan Apa itu Raspberry Jelaskan Fitur dan Port-port yang ada pada Raspberry Pi 1 Model B+ Jelaskan General Purpose register yang ada pada Processor ARM RISC 32 bit Sebutkan Bagaimana Sumber daya optimal yang dibutuhkan pada Mini Komputer Raspberry Pi 1.4 PERCOBAAN A. ALAT YANG DIGUNAKAN 1) 1 unit Raspberry Pi 2) 1 unit SD card (min 2 GB) dengan OS RASBIAN 3) 1 unit SD Adapter 4) 1 unit Kabel UTP 5) 1 unit Laptop 6) 1 unit Kabel data USB to Micro USB B. PROSEDUR PERCOBAAN MEMULAI PERCOBAAN 1. 2. 3. 4. 5. Hidupkan Laptop Masukkan SD Card kedalam slot SD Card Raspberry Pi Hidupkan Raspberry Pi (gunakan kabel USB to Micro USB) Hubungkan laptop dengan Raspberry Pi menggunakan kabel UTP Lakukan komunikasi SSH ke Raspberry Pi melalui Laptop dengan Mengetikka n command berikut di terminal Laptop : ssh pi@<ip-raspberry-pi> -p 22 1. PERCOBAAN 1A : Register dan Aritmatik Sederhana Dalam Assambly 1) Ketikkan Program berikut dengan menggunakan command : nano <nama file>.s : nama file yang digunakan adalah nama_nobp_latihan1.s 7 | ASSEMBLY I 1 /* -- latihan1.s */ .global main 2 3 4 main: mov r1, #3 mov r2, #4 add r0, r1, r2 bx lr 5 6 7 8 /* r1 ← 3 */ /* r2 ← 4 */ /* r0 ← r1 + r2 */ 2) Setelah selesai, jalankan command : as –o <nama-file .o> <nama-file .s> di terminal. 3) Lalu ketikkan command gcc –o <nama-file> <nama-file .s> 4) Lalu ketikkan command ./<nama-file> untuk mengeksekusi program dan melihat hasilnya. 5) Analisa Program di atas. 6) Ketikkan Program berikut dan simpan dengan nama latihan2 kemudian lakukan langkah 9, 10 dan 11 diatas untuk compile dan menjalankan program. 1 2 3 4 5 6 7 8 /* -- latihan2.s */ .global main main: mov r0, #3 mov r1, #4 /* r0 ← 3 */ /* r1 ← 4 */ add r0, r0, r1 /* r0 ← r0 + r1 */ bx lr 7) Analisa Program di atas. 8) Jalankan program pada Raspberry Pi dengan dan lakukan debugging dengan perintah : gdb ./<nama-file> 9) Di dalam cli gdb, lalukan perintah : (gdb) break *main (gdb) run (gdb) info register (gdb) stepi 10) Tekan tombol c pada keyboard untuk menjalankan program hingga breakpoint 11) Jalankan perintah : (gdb) info register 12) Lakukan Screenshoot pada hasil percobaan dan buat analisa jalannya program pada laporan 2. PERCOBAAN 1B: Operasi Load / Store sederhana Assambly 1) Ketikkan Program berikut dan simpan dengan latihan3 kemudian ikuti langkah 9,10 dan 11. 1 2 /* -- latihan3.s */ 3 4 5 6 7 8 9 10 11 12 /* -- Data section */ .data /* Ensure variable is 4-byte aligned */ .balign 4 /* Define storage for myvar1 */ myvar1: /* Contents of myvar1 is just 4 bytes containing value '3' */ .word 3 8 | ASSEMBLY I 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 /* Ensure variable is 4-byte aligned */ .balign 4 /* Define storage for myvar2 */ myvar2: /* Contents of myvar2 is just 4 bytes containing value '4' */ .word 4 /* -- Code section */ .text /* Ensure code is 4 byte aligned .balign 4 .global main main: ldr r1, addr_of_myvar1 /* r1 ldr r1, [r1] /* r1 ldr r2, addr_of_myvar2 /* r2 ldr r2, [r2] /* r2 add r0, r1, r2 /* r0 bx lr */ ← ← ← ← ← &myvar1 */ *r1 */ &myvar2 */ *r2 */ r1 + r2 */ /* Labels needed to access data */ addr_of_myvar1 : .word myvar1 addr_of_myvar2 : .word myvar2 2) Ketikkan Program berikut dan simpan dengan nama latihan4 : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 /* -- latihan4.s */ /* -- Data section */ .data /* Ensure variable is 4-byte aligned */ .balign 4 /* Define storage for myvar1 */ myvar1: /* Contents of myvar1 is just '3' */ .word 0 /* Ensure variable is 4-byte aligned */ .balign 4 /* Define storage for myvar2 */ myvar2: /* Contents of myvar2 is just '3' */ .word 0 9 | ASSEMBLY I 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 /* -- Code section */ .text /* Ensure function section .balign 4 .global main main: ldr r1, addr_of_myvar1 mov r3, #3 str r3, [r1] ldr r2, addr_of_myvar2 mov r3, #4 str r3, [r2] /* Same ldr r1, ldr r1, ldr r2, ldr r2, add r0, bx lr starts 4 byte aligned */ /* /* /* /* /* /* r1 ← &myvar1 */ r3 ← 3 */ *r1 ← r3 */ r2 ← &myvar2 */ r3 ← 4 */ *r2 ← r3 */ instructions as above */ addr_of_myvar1 /* r1 ← &myvar1 */ [r1] /* r1 ← *r1 */ addr_of_myvar2 /* r2 ← &myvar2 */ [r2] /* r2 ← *r2 */ r1, r2 /* Labels needed to access data */ addr_of_myvar1 : .word myvar1 addr_of_myvar2 : .word myvar2 1) Analisa Program di atas. 1.5 MENGAKHIRI PERCOBAAN 1. Sebelum keluar dari ruang praktikum, rapikan meja praktikum. Letakkan Raspberi pi pada tempat yang telah di tentukan 2. Letakkan kursi pada tempat yang telah ditentukan 3. Pastikan asisten telah menandatangani lembar kehadiran praktikum pada kartu praktikum. Lembar kehadiran yang tidak ditandatangani oleh asisten pada praktikum tertentu tidak akan di nilai. 1.6 REFERENSI https://www.raspberrypi.org/documentation/installation/installingimages/ https://arzeria- labs.com https://etcher.io/ http://thinkingeek.com/2013/01/09/arm-assembler-raspberry-pi-chapter-1/ 10 | ASSEMBLY I PERCOBAAN II ASSEMBLY 2 1.1 TUJUAN 1. Memahami dan mengetahui cara Load atau Store Array di assembly ARM. 2. Mengenal dan memahami conditional execiut dan branching dalam assembly ARM. 3. Mengenal stack dan function dalam assembly ARM 1.1 PERSIAPAN Pelajari kembali modul praktikum dan bahan kuliah yang berkaitan dengan Arsitektur Sistem Komputer I, kemudian kerjakan Tugas Pendahuluan dan kumpulkan sesuai ketentuan yang berlaku. 1.2 DASAR TEORI Array merupakan sebuah variabel yang menyimpan lebih dari 1 buah data yang memiliki tipe data yang sama. Jadi dapat dikatakan bahwa array merupakan kumpulan dari data -data tunggal yang dijadikan dalam 1 variabel array yang alamat memorinya berbeda yang selanjutnya disebut elemen-elemen array yang bisa kita akses berdasarkan indeks. Contoh deklarasi array pada bahasa assembly: array_buff: .word 0x00000000 .word 0x00000000 .word 0x00000000 .word 0x00000000 Stack adalah bagian dari memori yang digunakan untuk menyimpan nilai dari register secara sementara. Operasi-operasi langsung yang berhubungan langsung dengan stack yaitu oerasioperasi PUSH and POP; PUSHF and POP. Stack menggunakan pasangan SS:SP untuk menunjukkan lokasi dari stack itu sendiri. Sedangkan pasangan register CS:IP digunakan untuk mengetahui letak dari program. PUSH merupakan operasi yang digunakan ketika kita hendak memasukkan ada yang ada pada general purpose register ke lokasi stack, sedangkan perintah POP merupakan perintah yang digunakan untuk mengeluarkan data yang ada pada stack ke general purpose register untuk dieksekusi. PUSHF merupakan perintah yang digunakan untuk memasukkan atau menyimpan nilai dari flags register pada stack. Sedangkan POPF digunakan untuk mengambil nilai pada stack dan disimpan pada flags register. 1.3 TUGAS PENDAHULUAN 1. Tuliskan pengertian tentang array, dan cara pendeklarasian array dalam assembly. 2. Tuliskan program assambly ketika nilai r1 = 4 maka r1 = r1 + 3, 11 | ASSEMBLY II 3. Jika tidak r1 = r1-3. 4. Bgaimana cara kerja stack (gambarkan), dan jelaskan fungsi dari instuksi Push dan Pop dalam Stack. 1.4 PERCOBAAN A. ALAT YANG DIGUNAKAN 1) 1 unit Raspberry Pi 2) 1 unit SD card (min 2 GB) dengan OS RASBIAN 3) 1 unit SD Adapter 4) 1 unit Kabel UTP 5) 1 unit Laptop 6) 1 unit Kabel data USB to Micro USB B. PROSEDUR PERCOBAAN MEMULAI PERCOBAAN 1. 2. 3. 4. 5. Hidupkan Laptop Masukkan SD Card kedalam slot SD Card Raspberry Pi Hidupkan Raspberry Pi (gunakan kabel USB to Micro USB) Hubungkan laptop dengan Raspberry Pi menggunakan kabel UTP Lakukan komunikasi SSH ke Raspberry Pi melalui Laptop dengan Mengetikkan command berikut di terminal Laptop : ssh pi@<ip-raspberry-pi> -p 22 1. PERCOBAAN 1A : Register dan Aritmatik Sederhana Dalam Assambly 1) Ketikkan Program berikut dengan menggunakan command : echo <sintaks assambly per baris> > <nama file .s>. untuk mengetikkan baris berikutnya dapat menggunakan command : echo <sintaks assambly per baris> >> <nama file .s>. nama file yang digunakan adalah latihan1.s 1 .data 2 3 array_buff: 4 .word 0x00000000 /* array_buff[0] */ 5 .word 0x00000000 /* array_buff[1] */ 6 .word 0x00000000 /* array_buff[2]. This element has a 7 relative address of array_buff+8 */ 8 .word 0x00000000 /* array_buff[3] */ 9 .word 0x00000000 /* array_buff[4] */ 12 | ASSEMBLY II 10 11 .text 12 .global _start 13 14 _start: 15 adr r0, words+12 /* address of words[3] -> r0 */ 16 ldr r1, array_buff_bridge /* address of array_buff[0] -> r1 */ 17 ldr r2, array_buff_bridge+4 /* address of array_buff[2] -> r2 */ 18 ldm r0, {r4,r5} /* words[3] -> r4 = 0x03; words[4] -> 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 r5 = 0x04 */ stm r1, {r4,r5} /* r4 -> array_buff[0] = 0x03; r5 -> array_buff[1] = 0x04 */ ldmia r0, {r4-r6} /* words[3] -> r4 = 0x03, words[4] -> r5 = 0x04; words[5] -> r6 = 0x05; */ stmia r1, {r4-r6} /* r4 -> array_buff[0] = 0x03; r5 -> array_buff[1] = 0x04; r6 -> array_buff[2] = 0x05 */ ldmib r0, {r4-r6} /* words[4] -> r4 = 0x04; words[5] -> r5 = 0x05; words[6] -> r6 = 0x06 */ stmib r1, {r4-r6} /* r4 -> array_buff[1] = 0x04; r5 -> array_buff[2] = 0x05; r6 -> array_buff[3] = 0x06 */ ldmda r0, {r4-r6} /* words[3] -> r6 = 0x03; words[2] -> r5 = 0x02; words[1] -> r4 = 0x01 */ ldmdb r0, {r4-r6} /* words[2] -> r6 = 0x02; words[1] -> r5 = 0x01; words[0] -> r4 = 0x00 */ stmda r2, {r4-r6} /* r6 -> array_buff[2] = 0x02; r5 -> array_buff[1] = 0x01; r4 -> array_buff[0] = 0x00 */ stmdb r2, {r4-r5} /* r5 -> array_buff[1] = 0x01; r4 -> array_buff[0] = 0x00; */ bx lr 39 40 words: 41 .word 0x00000000 /* words[0] */ 42 .word 0x00000001 /* words[1] */ 43 .word 0x00000002 /* words[2] */ 44 .word 0x00000003 /* words[3] */ 45 .word 0x00000004 /* words[4] */ 46 .word 0x00000005 /* words[5] */ 13 | ASSEMBLY II 47 .word 0x00000006 /* words[6] */ 48 49 array_buff_bridge: 50 .word array_buff 51 52 /* address of array_buff, or in other words - array_buff[0] */ .word array_buff+8 /* address of array_buff[2] */ 53 2) Setelah selesai, jalankan command : as –o <nama-file .o> <nama-file .s> di terminal. 3) Lalu ketikkan command gcc –o <nama-file> <nama-file .s> 4) Lalu ketikkan command ./<nama-file> untuk mengeksekusi program dan melihat hasilnya. 5) Analisa Program di atas. 2. PERCOBAAN 1B: Conditional Execution and Branches 1) Ketikkan Program berikut dengan menggunakan command : echo <sintaks assambly per baris> > <nama file.s>. untuk mengetikkan baris berikutnya dapat menggunaka n command : echo <sintaks assambly per baris> >> <nama file.s>. nama file yang digunakan adalah latihan1.s. 1 .text 2 .global _start 3 4 _start: 5 mov r0, #2 6 mov r1, #2 7 add r0, r0, r1 8 cmp r0, #4 9 beq func1 10 add r1, #5 11 b func2 12 func1: 13 mov r1, r0 14 bx 15 lr func2: 14 | ASSEMBLY II 16 mov r0, r1 17 bx lr 18 2) Setelah selesai, jalankan command : as –o <nama-file .o> <nama-file .s> di terminal. 3) Lalu ketikkan command gcc –o <nama-file .o> <nama-file .s> 4) Lalu ketikkan command ./<nama-file> untuk mengeksekusi program dan melihat hasilnya. 5) Analisa Program di atas. 3. PERCOBAAN 2C : Stack 1) Ketikkan Program berikut dengan menggunakan command : echo <sintaks assambly per baris> > <nama file.s>. untuk mengetikkan baris berikutnya dapat menggunakan command : echo <sintaks assambly per baris> >> <nama file.s>. nama file yang digunakan adalah latihan1.s 1 .global main 2 3 main: 4 mov r0, #2 /* set up r0 */ 5 push {r0} /* save r0 onto the stack */ 6 mov r0, #3 /* overwrite r0 */ 7 pop {r0} /* restore r0 to it's initial state */ 8 bx lr /* finish the program */ 3. Setelah selesai, jalankan command : as –o <nama-file .o> <nama-file .s> di terminal. 4. Lalu ketikkan command gcc –o <nama-file .o> <nama-file .s> 5. Lalu ketikkan command ./<nama-file> untuk mengeksekusi program dan melihat hasilnya. 6. Analisa Program di atas. 7. Jalankan program pada Raspberry Pi dengan dan lakukan debugging dengan perintah : gdb ./<nama-file> 8. Di dalam cli gdb, lalukan perintah : (gdb) break *main (gdb) run (gdb) info register (gdb) stepi 9. Tekan tombol c pada keyboard untuk menjalankan program hingga breakpoint 10. Jalankan perintah : (gdb) info register 11. Lakukan Screenshoot pada hasil percobaan dan buat analisa jalannya program pada laporan 4. PERCOBAAN 2D: Stack and Function 1) Ketikkan Program berikut dengan menggunakan command : echo <sintaks assambly per baris> > <nama file.s>. untuk mengetikkan baris berikutnya dapat menggunakan command : echo <sintaks assambly per baris> >> <nama file.s>. nama file yang digunakan adalah latihan1.s 1 .global main 2 15 | ASSEMBLY II 3 main: 4 5 push /* Setting up the bottom of the stack frame sub sp, sp, #16 /* End of the prologue. Allocating some mov r0, #1 /* setting up local variables (a=1). This also serves as setting up the first parameter for the max function */ 12 13 r11, sp, #0 buffer on the stack */ 10 11 add */ 8 9 /* Start of the prologue. Saving Frame Pointer and LR onto the stack */ 6 7 {r11, lr} mov r1, #2 /* setting up local variables (b=2). This also serves as setting up the second parameter for the max function */ 14 bl max /* Calling/branching to function max */ 15 sub sp, r11, #0 /* Start of the epilogue. Readjusting the 16 Stack Pointer */ 17 pop {r11, pc} /* End of the epilogue. Restoring Frame 18 pointer from the stack, jumping to previously saved LR via direct load 19 into PC */ 20 21 max: 22 23 push add r11, sp, #0 /* Setting up the bottom of the stack frame sub sp, sp, #12 /* End of the prologue. Allocating some */ 26 27 /* Start of the prologue. Saving Frame Pointer onto the stack */ 24 25 {r11} buffer on the stack */ 28 cmp r0, r1 /* Implementation of if(a<b) */ 29 movlt r0, r1 /* if r0 was lower than r1, store r1 into r0 add sp, r11, #0 /* Start of the epilogue. Readjusting the 30 31 32 */ Stack Pointer */ 33 pop {r11} /* restoring frame pointer */ 34 bx lr /* End of the epilogue. Jumping back to main 35 via LR register */ 2) Setelah selesai, jalankan command : as –o <nama-file .o> <nama-file .s> di terminal. 3) Lalu ketikkan command gcc –o <nama-file .o> <nama-file .s> 16 | ASSEMBLY II 4) Lalu ketikkan command ./<nama-file> untuk mengeksekusi program dan melihat hasilnya. 5) Analisa Program di atas. 1.5 MENGAKHIRI PERCOBAAN 1. Sebelum keluar dari ruang praktikum, rapikan meja praktikum. Letakkan Raspberi pi pada tempat yang telah di tentukan. 2. Letakkan kursi pada tempat yang telah ditentukan 3. Pastikan asisten telah menandatangani lembar kehadiran praktikum pada kartu praktikum. Lembar kehadiran yang tidak ditandatangani oleh asisten pada praktikum tertentu tidak akan di nilai. 1.6 REFERENSI https://arzeria- labs.com http://www.science.smith.edu/dftwiki/index.php/Tutorial:_Assembly_Language_with_th e_Raspberry_Pi http://thinkingeek.com/2013/01/09/arm-assembler-raspberry-pi-chapter-1/ 17 | ASSEMBLY II PERCOBAAN III PENGENALAN NUVOTON 1 1.1 TUJUAN 1. Memahami arsitektur dan fitur mikrokontroler ARM CORTEX M0 NuMicro NUC140 2. Dapat melakukan instalasi software development tools yang diperlukan untuk pemrograman mikrokontroler ARM 3. Dapat menggunakan software development tools mikrokontroler ARM untuk menulis, melakukan kompilasi, dan memasukkan program ke dalam chip mikrokontroler ARM 4. Dapat melakukan pemrograman mikrokontroler ARM untuk obyek input/output dasar 1.1 PERSIAPAN Pelajari kembali modul praktikum dan bahan kuliah mengenai dasar algoritma dan pemrograman terutama dengan bahasa C serta elektronika analog & digital, kemudian kerjakan Tugas Pendahuluan dan kumpulkan sesuai ketentuan yang berlaku. 1.2 DASAR TEORI Mikrokontroler adalah mikrokomputer kecil dalam satu chip, di dalamnya berisi prosessor, memori dan peripheral I/O yang bisa diprogram. ARM adalah arsitektur prosesor 32 bit yang dibuat oleh ARM Holding dan dilisensikan untuk diproduksi oleh berbagai vendor di dunia termasuk AMD, Atmel, Freescale, Nuvoton, Nvidia, NXP, Samsung, ST Micro, dan TI. Prosesor ARM digunakan pada perangkat smartphone, tablet, dan embedded system. Kini ARM menjadi arsitektur prosesor yang paling banyak diproduksi di dunia. Seri arsitektur ARM terbaru terdiri dari 3 lini kelas penggunaan yaitu: 1. ARM CORTEX A untuk prosesor aplikasi 2. ARM CORTEX R untuk prosesor real time 3. ARM CORTEX M untuk prosesor mikrokontroler Belajar ARM berarti : 1. Learn for the most used architecture Belajar arsitektur prosesor yang paling banyak dikembangkan & didukung industry saat ini 2. Learn for the lates technology Belajar untuk mempersiapkan diri dengan teknologi dan tools yang terkini dan menjadikannya sebagai suatu keunggulan 3. Learn one for all lines Belajar prosesor dengan arsitektur yang memiliki keuntungan dalam hal kesamaan yang luas dari lini prosesor untuk berbagai kelas penggunaan, dari kelas mikrokontroller 18 | PENGENALAN NUVOTON 1 4. Learn with ease of support Belajar dengan banyak dukungan dari pembuat ARM dan para vendor/partner, serta dukungan komunitas yang luas Gambar 5.1 Kelebihan Mikrokontroler ARM Dengan harga yang relatif sama, prosesor ARM memberikan kinerja jauh lebih tinggi dengan konsumsi daya yang rendah. Gambar 5.2 Nuvoton Mikrokontroler ARM Cortex M0 Nuc140 19 | PENGENALAN NUVOTON 1 Gambar 5.3 Blok Diagram Numicro ARM Cortex M0 Nuc140 Gambar 5.4 Learning Board Nuc140 Tampak Depan 20 | PENGENALAN NUVOTON 1 Gambar 5.4 Learning Board Nuc140 Tampak Depan 1.3 TUGAS PENDAHULUAN 1. Lakukan instalasi software CoSmart dan CoIDE sesuai dengan langkah-langkah berikut pada laptop anda! Langkah 1 : Instalasi NUC100SeriesBSP_CMSIS.exe. 1) Perhatikan path destination folder. Defaultnya adalah C:\Nuvoton\BSP Library\ Langkah 2 : Lakukan instalasi Software Compiler GCC ARM. 1) Perhatikan lokasi path folder tempat instalasi software. 21 | PENGENALAN NUVOTON 1 Langkah 3 : Lakukan instalasi Software Editor CoIDE. 1) Sesudah selesai, panggil software CoIDE, lakukan setting compiler yang digunakan melalui menu Project > Select Toolchain Path. 2) Browse ke folder tempat instalasi software GCC ARM pada sub folder bin. 3) Tutup CoIDE jika sudah selesai. Langkah 4 : Lakukan instalasi Software Pin Configurator CooCox CoSmart. 1) Sesudah selesai, panggil software CoSmart, lakukan setting compiler yang digunakan melalui menu Project > Config GCC Path. 2) Browse ke lokasi file arm-none -eabi-gcc.exe di folder tempat instalasi software GCC ARM pada sub folder bin lalu klik OK 22 | PENGENALAN NUVOTON 1 Langkah 5 : Hubungkan Kabel USB ke jalur USB Nu-Link di board sebelah atas. 1) Lalu hubungkan kabel USB ke komputer. Board akan mendapat power dari USB. Pastikan LED merah indikator power menyala. 1.4 PERCOBAAN A. ALAT YANG DIGUNAKAN 1) 1 unit komputer 2) Software CoSmart 3) Software CoIDE 4) 1 unit modul NUVOTON Nu-LB-NUC140 5) Kabel mini USB B. PROSEDUR PERCOBAAN 1. PERCOBAAN 3A : FLIP – FLOP 1) Panggil aplikasi CooCox Software > CoSmart dari Start Menu untuk membantu konfigurasi pin. 2) Klik tombol New Chip di tengah layar. 3) Pilih Nuvoton, lalu pilih NUC140VE3CN 4) Akan muncul gambar chip NUC140VE3CN, dengan semua peripheralnya. Langkah ke 2: Set Pin Pushbutton 1) Contreng GPIOC pada gambar chip. 2) Di jendela Configuration pilih GPIOC 3) Di bawahnya, klik pada Pin 12 s/d 15 agar Enable 4) Scroll ke bawah, atur Pin Config 12 s/d 15: Mode Control: Output Langkah ke 3: Generate Project 1) Simpan konfigurasi dengan klik Project > Save lalu pilih folder dan ketikkan nama file, misal konfigurasi01. 2) Lalu klik Generate > Generate CoIDE Project lalu pilih folder dan ketikkan nama project, misal praktikum01. 3) CoSmart akan membuatkan file project dan membukanya otomatis di Windows Explorer. Langkah ke 4: Buka Project 1) Klik dua kali file praktikum01 untuk membuka project dengan CoIDE. 23 | PENGENALAN NUVOTON 1 2) Terlihat bahwa file project sudah disiapkan, klik dua kali pada main.c untuk mula i memprogram. LISTING PROGRAM: #include "DrvGPIO.h" #include "DrvSYS.h" void Init(); int main(void) { Init(); while(1) { DrvGPIO_ClrBit(E_GPC,12); DrvSYS_Delay(1000000); DrvGPIO_SetBit(E_GPC,12); DrvSYS_Delay(1000000); } } Langkah ke 5: Build dan Download program 1) Klik icon Build (F7) di toolbar untuk melakukan compile program. Pastikan Build Successful, tidak ada error. 2) Klik icon Download Code to Flash di toolbar untuk memasukkan program ke chip. Pastikan Done, tidak ada error. 2. PERCOBAAN 3B: Bell (Push Button dan Buzzer) Langkah ke 1: Pilih Chip 1) Panggil aplikasi CooCox Software > CoSmart dari Start Menu untuk membantu konfigurasi pin. 2) Klik tombol New Chip di tengah layar. 3) Pilih Nuvoton, lalu pilih NUC140VE3CN 4) Akan muncul gambar chip NUC140VE3CN, dengan semua peripheralnya. Langkah ke 2: Set Pin Buzzer 1) Di jendela Configuration pilih GPIOB. 2) Di bawahnya, klik pada Pin 11 agar Enable. 3) Scroll ke bawah, atur Pin Config 11: Mode Control: Output 24 | PENGENALAN NUVOTON 1 Langkah ke 3: Generate Project 1) Simpan konfigurasi dengan klik Project > Save lalu pilih folder dan ketikkan nama file, misal konfigurasi01. 2) Lalu klik Generate > Generate CoIDE Project lalu pilih folder dan ketikkan nama project, misal praktikum01. 3) CoSmart akan membuatkan file project dan membukanya otomatis di Windows Explorer. Langkah ke 4: Buka Project 1) Klik dua kali file praktikum01 untuk membuka project dengan CoIDE. 2) Terlihat bahwa file project sudah disiapkan, klik dua kali pada main.c untuk mula i memprogram. LISTING PROGRAM #include "DrvGPIO.h" #include "DrvSYS.h" void Init(); int main(void) { Init(); while(1) { if(DrvGPIO_GetBit(E_GPB,15)==0) { DrvGPIO_ClrBit(E_GPB,11); } else { DrvGPIO_SetBit(E_GPB,11); } } } Langkah ke 5: Build dan Download program 1) Klik icon Build (F7) di toolbar untuk melakukan compile program. Pastikan Build Successful, tidak ada error. 2) Klik icon Download Code to Flash di toolbar untuk memasukkan program ke chip. Pastikan Done, tidak ada error. 25 | PENGENALAN NUVOTON 1 3. PERCOBAAN 3C: KEY TONE Langkah ke 1: Pilih Chip 5) Panggil aplikasi CooCox Software > CoSmart dari Start Menu untuk membantu konfigurasi pin. 6) Klik tombol New Chip di tengah layar. 7) Pilih Nuvoton, lalu pilih NUC140VE3CN 8) Akan muncul gambar chip NUC140VE3CN, dengan semua peripheralnya. Langkah ke 2: Set Pin Keypad 1) Contreng GPIOA pada gambar chip. 2) Di jendela Configuration pilih GPIOA. 3) Di bawahnya, klik pada Pin 0 s/d 5 agar Enable. Langkah ke 3: Set Pin Buzzer 1) Di jendela Configuration pilih GPIOB. 2) Di bawahnya, klik pada Pin 11 agar Enable. 3) Scroll ke bawah, atur Pin Config 11: Mode Control: Output Langkah ke 4: Generate Project 1) Simpan konfigurasi dengan klik Project > Save lalu pilih folder dan ketikkan nama file, misal konfigurasi01. 2) Lalu klik Generate > Generate CoIDE Project lalu pilih folder dan ketikkan nama project, misal praktikum01. 3) CoSmart akan membuatkan file project dan membukanya otomatis di Windows Explorer. Langkah ke 5: Buka Project 1) Klik dua kali file praktikum01 untuk membuka project dengan CoIDE. 2) Terlihat bahwa file project sudah disiapkan, klik dua kali pada main.c untuk mula i memprogram. Langkah ke 6: Pemrograman Nuvoton telah menyediakan Board Support Package (yang sudah di-instal) yang berisi banyak library yang dapat mempermudah kita memprogram objectobject di Learning Board. Untuk Keypad bisa coba pakai library dari BSP. Langkah 1: Klik kanan di cmsis_lib\Include \Driver, lalu pilih Add Files. Browse ke C:\Nuvoton \BSP Library \NUC100SeriesBSP\NuvPlatform_Keil\Include\NUC1 xxLB_002 Pilih file ScanKey.h 26 | PENGENALAN NUVOTON 1 Langkah 2: Klik kanan di cmsis_lib\Src \Driver, lalu pilih Add Files. Browse ke C:\Nuvoton \BSP Library \NUC100SeriesBSP\NuvPlatform_Keil \Src \NUC1xxLB_002 Pilih file ScanKey.c LISTING PROGRAM #include "DrvGPIO.h" #include "DrvSYS.h" #include "ScanKey.h" int key; void Init(); int main(void) { Init(); while(1) { key=Scankey(); if(key!=0) { DrvGPIO_ClrBit(E_GPB,11); } Else { DrvGPIO_SetBit(E_GPB,11); } } } Langkah ke 7: Build dan Download program 3) Klik icon Build (F7) di toolbar untuk melakukan compile program. Pastikan Build Successful, tidak ada error. 4) Klik icon Download Code to Flash di toolbar untuk memasukkan program ke chip. Pastikan Done, tidak ada error. TUGAS PRAKTIKUM 1. Buatlah program dengan output, saat keypad 1 ditekan, buzzer berbunyi 1 kali lalu led 1 menyala. Saat keypad 2 ditekan buzzer berbunyi 2 kali led 1 dan 2 menyala. Saat keypad 3 ditekan berbunyi 3 kali led 1,2,3 menyala, dan saat keypad 4 ditekan buzzer berbunyi 4 kali dan led 1,2,3, dan 4 menyala. 27 | PENGENALAN NUVOTON 1 1.5 MENGAKHIRI PERCOBAAN 1. Sebelum keluar dari ruang praktikum, rapikan meja praktikum. Masukkan Modul Nuvoton dan kabel konektor kedalam kotak modul, kemudian letakkan pada tempat yang telah di tentukan 2. Letakkan kursi pada tempat yang telah ditentukan 3. Pastikan asisten telah menandatangani lembar kehadiran praktikum pada kartu praktikum. Lembar kehadiran yang tidak ditandatangani oleh asisten pada praktikum tertentu tidak akan di nilai. 1.6 REFERENSI Nuvoton. NuMicro Training Course. Nuvoton Technology Corporation, 2012. Yiu, Joseph. The Definitive Guide to the ARM Cortex-M0. Elsevier Inc, 2011. ARM. Cortex-M0 Technical Reference Manual. ARM Holding Limited, 2009. Nuvoton. NuMicro NUC140 Data Sheet EN V3.02. Nuvoton Technology Corporation, 2012. Nuvoton. Nu-LB-NUC140 User's Guide v2.0. Nuvoton Technology Corporation, 2010. CooCox. 2013. CoIDE User Guide. http://CooCox.org/CooCox_CoIDE.htm. 1 Oktober 2017 28 | PENGENALAN NUVOTON 1 PERCOBAAN IV NUVOTON 2 1.1 TUJUAN 1. Mengetahui cara menggunakan fungsi aritmatika pada pemrograman C. 2. Mengetahui cara kerja if bersarang 3. Menganalisa program Counter Up 7-Segment 4. Menganalisa program Number Key LCD 4.1 PERSIAPAN Pelajari kembali modul praktikum dan bahan kuliah yang berkaitan dengan mikrokontro ler ataupun sistem digital, kemudian kerjakan Tugas Pendahuluan dan kumpulkan sesuai ketentuan yang berlaku. 4.2 DASAR TEORI 7-s egment display di Learning Board menggunakan metode scanning. Untuk memunculkan angka di salah satu 7-segment maka berikan data selagi salah satu 7-segment yang dituju diaktifkan, sementara 7-segment lain tidak diaktifkan. Untuk menonaktifkan semua 7-segment bisa menggunakan perintah berikut: close _seven_segment(); Untuk mengaktifkan dan memberi data salah satu 7-segment, gunakan perintah berikut: show_seven_segment(Nomor_7segment,Data_angka); Untuk bisa menggunakan perintah di atas, perlu memasukkan library #include “Seven_Segment.h“ Keterangan : Nomor_7segment diisi dengan nomor urut 0-3, dihitung dari paling kanan. Data_angka diisi dengan angka 0-9. Pushbutton switch pada rangkaian hardware adalah digital input yang bersifat ACTIVE LOW, yaitu jika ditekan memberikan logika LOW. • Untuk mengambil nilai logika input digital gunakan perintah berikut: DrvGPIO_GetBit(Nama_port, Nomor_pin); Keterangan: Nama_port diisi E_GPA / E_GPB / E_GPC / E_GPD / E_GPE. Dalam hal ini karena Pushbutton switch dihubungkan ke PORT B maka isi dengan E_GPB. Nomor_pin diisi dengan angka pin kaki mikrokontroler di PORT yang terhubung Pushbutton switch yang ingin dimainkan. Dalam hal ini empat buah Pushbutton switch sudah dihubungkan ke pin 15. Fungsi DrvGPIO_GetBit menghasilkan nilai 0 jika logika LOW (pushbutton ditekan), atau 1 jika logika HIGH (pushbutton tidak ditekan). 28 | NUVOTON 2 BUZZER pada rangkaian hardware adalah digital output yang bersifat ACTIVE LOW, yaitu berbunyi jika diberi logika LOW, dan mati jika diberikan logika HIGH. • Untuk memberikan logika HIGH gunakan perintah berikut: DrvGPIO_SetBit(Nama_port, Nomor_pin); • Untuk memberikan logika LOW gunakan perintah berikut: DrvGPIO_ClrBit(Nama_port, Nomor_pin); • Untuk membuat delay bisa menggunakan perintah berikut: DrvSys_Delay(Lama_delay_dalam_cycle); • Untuk bisa menggunakan perintah di atas, perlu memasukkan library #include “DrvGPIO.h“ #include “DrvSYS.h” Keterangan : Nama_port diisi E_GPA / E_GPB / E_GPC / E_GPD / E_GPE. Dalam hal ini karena BUZZER dihubungkan ke PORT B maka isi dengan E_GPB. Nomor_pin diisi dengan angka pin kaki mikrokontroler. Dalam hal ini BUZZER dihubungkan ke pin 11. LCD Matrix Display pada rangkaian hardware dikontrol secara SPI, dan memiliki pin kontrol backlight di port D pin 14 yang bersifat ACTIVE LOW, yaitu menyala jika diberi logika LOW, dan mati jika diberikan logika HIGH. • Untuk menulis karakter di LCD, bisa menggunakan perintah berikut: print_lcd(Nomor_baris,Tulisan); Show_Word(Nomor_baris,Nomor_kolom,Huruf); • Untuk bisa menggunakan perintah di atas, perlu memasukkan library #include “LCD_Driver.h“ • Driver LCD_Driver membutuhkan file Ascii_Table.c untuk menggambar huruf. • Saat init pertama kali, perlu dipanggil perintah berikut: Initialize _pannel(); • Untuk membersihkan display, bisa menggunakan perintah berikut: clr_all_pannal(); Keterangan: Nomor_baris diisi angka 0-3, dihitung dari paling atas. Nomor_kolom diisi angka 0-15, dihitung dari paling kiri. Keypad matrix di Learning Board menggunakan metode scanning. Proses scanning dengan cara membaca logic di Row, ketika Column diberikan logic LOW. Jika tombol ditekan maka Column dan Row yang bersesuaian menjadi terhubung, sehingga Row ikut menjadi LOW. • Untuk membaca penekanan keypad, bisa menggunakan perintah berikut: Scankey(); • Untuk bisa menggunakan perintah di atas, perlu memasukkan library #include “ScanKey.h“ • Untuk menampung hasil pembacaan keypad, ada baiknya membuat suatu variabel, misal bernama Key bertipe data integer: int key; 29 | NUVOTON 2 Keterangan : Hasil pembacaan adalah 0 jika tidak ada yang ditekan, atau berupa angka 1 s/d 9 jika ada yang ditekan. 4.3 TUGAS PENDAHULUAN 1. Jelaskan datasheet dan konfigurasi pin 7-segment, disertai dengan gambar! 2. Sebutkan pin apa saja yang digunakan pada 7-segment, pushbutton, led dan keypad di Nuvoton! 4.4 PERCOBAAN A. ALAT YANG DIGUNAKAN 1) 1 unit komputer 2) Software CoSmart 3) Software CoIDE 4) 1 unit modul NUVOTON Nu-LB-NUC140 5) Kabel mini USB B. PROSEDUR PERCOBAAN 1. PERCOBAAN 5A: Project 1 Counter Up (7-Segment) 1) Panggil aplikasi CooCox Software > CoSmart dari Start Menu untuk membantu konfigurasi pin. 2) Klik tombol New Chip di tengah layar. 3) Pilih Nuvoton, lalu pilih NUC140VE3CN 4) Akan muncul gambar chip NUC140VE3CN, dengan semua peripheralnya. Langkah ke 2: Set Pin Pushbutton 1) Contreng GPIOB pada gambar chip. 2) Di jendela Configuration pilih GPIOB. 3) Di bawahnya, klik pada Pin 15 agar Enable. 4) Scroll ke bawah, atur Pin Config 15: Mode Control: Input Digital Input: Enable Input Signal Deb: Enable Langkah ke 3: Set Pin Buzzer 1) Di jendela Configuration pilih GPIOB. 2) Di bawahnya, klik pada Pin 11 agar Enable. 3) Scroll ke bawah, atur Pin Config 11: 30 | NUVOTON 2 Mode Control: Output Langkah ke 4a: Set Pin 7-Segment Data 1) Contreng GPIOE pada gambar chip. 2) Di jendela Configuration pilih GPIOE 3. Di bawahnya, klik pada Pin 0 s/d 7 agar Enable 4. 3) Scroll ke bawah, atur Pin Config 0 s/d 7: Mode Control: Output Langkah ke 4b: Set Pin 7-Segment Select 1) Di jendela Configuration pilih GPIOC 2) Di bawahnya, klik pada Pin 4 s/d 7 agar Enable 3) Scroll ke bawah, atur Pin Config 4 s/d 7: Mode Control: Output Langkah ke 5: Generate Project 1) Simpan konfigurasi dengan klik Project > Save lalu pilih folder dan ketikkan nama file, misal konfigurasi04a. 2) Lalu klik Generate > Generate CoIDE Project lalu pilih folder dan ketikkan nama project, misal praktikum04a. 3) CoSmart akan membuatkan file project dan membukanya otomatis di Windows Explorer. Langkah ke 6: Buka Project 1) Klik dua kali file praktikum4a untuk membuka project dengan CoIDE. 2) Terlihat bahwa file project sudah disiapkan, klik dua kali pada main.c untuk mula i memprogram. Langkah ke 7: Pemrograman Nuvoton telah menyediakan Board Support Package (yang sudah di-instal) yang berisi banyak library yang dapat mempermudah kita memprogram objectobject di Learning Board. Untuk 7-segment kita bisa coba pakai library dari BSP. Langkah 1: Klik kanan di cmsis_lib\Include \Driver, lalu pilih Add Files. Browse ke C:\Nuvoton \BSP Library \NUC100SeriesBSP \NuvPlatform_Keil \Include \NUC1xxLB_002 Pilih file Seven_Segment.h Langkah 2: Klik kanan di cmsis_lib\Src \Driver, lalu pilih Add Files. Browse ke 31 | NUVOTON 2 C:\Nuvoton \BSP Library \NUC100SeriesBSP\NuvPlatform_Keil \Src \NUC1xxLB_002 Pilih file Seven_Segment.c LISTING PROGRAM: #include "DrvGPIO.h" #include "DrvSYS.h" #include "Seven_Segment.h" int nilai=0,a=0; void Init(); int main(void) { Init(); while(1) { if(DrvGPIO_GetBit(E_GPB,15)==0) { if(a==0) { DrvGPIO_ClrBit(E_GPB,11); nilai=nilai+1; close_seven_segment(); show_seven_segment(0,nilai%10+0); a=1; } } if(DrvGPIO_GetBit(E_GPB,15)==1) { DrvGPIO_SetBit(E_GPB,11); DrvSYS_Delay(10000); a=0; } } } Langkah ke 8: Build dan Download program 1) Klik icon Build (F7) di toolbar untuk melakukan compile program. Pastikan Build Successful, tidak ada error. 2) Klik icon Download Code to Flash di toolbar untuk memasukkan program ke chip. Pastikan Done, tidak ada error. 2. PERCOBAAN 5B: Project 2 Number Key (7-Segment) Langkah ke 1: Pilih Chip 1) Panggil aplikasi CooCox Software > CoSmart dari Start Menu untuk membantu konfigurasi pin. 2) Klik tombol New Chip di tengah layar. 32 | NUVOTON 2 3) Pilih Nuvoton, lalu pilih NUC140VE3CN 4) Akan muncul gambar chip NUC140VE3CN, dengan semua peripheralnya. Langkah ke 3: Set Pin Buzzer 1) Di jendela Configuration pilih GPIOB. 2) Di bawahnya, klik pada Pin 11 agar Enable. 3) Scroll ke bawah, atur Pin Config 11: Mode Control: Output Langkah ke 3: Set Pin Keypad 1) Contreng GPIOA pada gambar chip. 2) Di jendela Configuration pilih GPIOA 3) Di bawahnya, klik pada Pin 0 s/d 5 agar Enable Langkah ke 4a: Set Pin 7-Segment Data 1) Contreng GPIOE pada gambar chip. 2) Di jendela Configuration pilih GPIOE 3. Di bawahnya, klik pada Pin 0 s/d 7 agar Enable 4. 3) Scroll ke bawah, atur Pin Config 0 s/d 7: Mode Control: Output Langkah ke 4b: Set Pin 7-Segment Select 4) Di jendela Configuration pilih GPIOC 5) Di bawahnya, klik pada Pin 4 s/d 7 agar Enable 6) Scroll ke bawah, atur Pin Config 4 s/d 7: Mode Control: Output Langkah ke 7: Generate Project 1) Simpan konfigurasi dengan klik Project > Save lalu pilih folder dan ketikkan nama file, misal konfigurasi01. 2) Lalu klik Generate > Generate CoIDE Project lalu pilih folder dan ketikkan nama project, misal praktikum01. 3) CoSmart akan membuatkan file project dan membukanya otomatis di Windows Explorer. Langkah ke 8: Buka Project 1) Klik dua kali file praktikum01 untuk membuka project dengan CoIDE. 2) Terlihat bahwa file project sudah disiapkan, klik dua kali pada main.c untuk mula i memprogram. 33 | NUVOTON 2 Lnagkah ke 9: Pemrograman Nuvoton telah menyediakan Board Support Package (yang sudah di-instal) yang berisi banyak library yang dapat mempermudah kita memprogram objectobject di Learning Board. Untuk 7-segment kita bisa coba pakai library dari BSP. Langkah 1: Klik kanan di cmsis_lib\Include \Driver, lalu pilih Add Files. Browse ke C:\Nuvoton \BSP Library \NUC100SeriesBSP \NuvPlatform_Keil \Include \NUC1xxLB_002 Pilih file Seven_Segment.h Langkah 2: Klik kanan di cmsis_lib\Src \Driver, lalu pilih Add Files. Browse ke C:\Nuvoton \BSP Library \NUC100SeriesBSP\NuvPlatform_Keil \Src \NUC1xxLB_002 Pilih file Seven_Segment.c Langkah 3: Klik kanan di cmsis_lib\Include \Driver, lalu pilih Add Files. Browse ke C:\Nuvoton \BSP Library \NUC100SeriesBSP\NuvPlatform_Keil\Include\NUC1 xxLB_002 Pilih file ScanKey.h Langkah 4: Klik kanan di cmsis_lib\Src \Driver, lalu pilih Add Files. Browse ke C:\Nuvoton \BSP Library \NUC100SeriesBSP\NuvPlatform_Keil \Src \NUC1xxLB_002 Pilih file ScanKey.c 34 | NUVOTON 2 LISTING PROGRAM #include #include #include #include int key; "DrvGPIO.h" "DrvSYS.h" "Seven_Segment.h" "ScanKey.h" void Init(); int main(void) { Init(); while(1) { key=Scankey(); if(key!=0) { close_seven_segment(); show_seven_segment(0,key); } if(key==1) { close_seven_segment(); show_seven_segment(0,1); DrvGPIO_ClrBit(E_GPB,11); delay(1000000); DrvGPIO_SetBit(E_GPB,11); delay(1000000); } else if(key==2) { close_seven_segment(); show_seven_segment(0,2); DrvGPIO_ClrBit(E_GPB,11); delay(1000000); DrvGPIO_SetBit(E_GPB,11); delay(1000000); } else if(key==3) { close_seven_segment(); show_seven_segment(0,3); DrvGPIO_ClrBit(E_GPB,11); delay(1000000); DrvGPIO_SetBit(E_GPB,11); delay(1000000); } 35 | NUVOTON 2 elseif(key==4) { close_seven_segment(); show_seven_segment(0,4); DrvGPIO_ClrBit(E_GPB,11); delay(1000000); DrvGPIO_SetBit(E_GPB,11); delay(1000000); } elseif(key==5) { close_seven_segment(); show_seven_segment(0,5); DrvGPIO_ClrBit(E_GPB,11); delay(1000000); DrvGPIO_SetBit(E_GPB,11); delay(1000000); } elseif(key==6) { close_seven_segment(); show_seven_segment(0,6); DrvGPIO_ClrBit(E_GPB,11); delay(1000000); DrvGPIO_SetBit(E_GPB,11); delay(1000000); } elseif(key==7) { close_seven_segment(); show_seven_segment(0,7); DrvGPIO_ClrBit(E_GPB,11); delay(1000000); DrvGPIO_SetBit(E_GPB,11); delay(1000000); } elseif(key==8) { close_seven_segment(); show_seven_segment(0,8); DrvGPIO_ClrBit(E_GPB,11); delay(1000000); DrvGPIO_SetBit(E_GPB,11); delay(1000000); } elseif(key==9) { close_seven_segment(); show_seven_segment(0,9); DrvGPIO_ClrBit(E_GPB,11); delay(1000000); DrvGPIO_SetBit(E_GPB,11); delay(1000000); 36 | NUVOTON 2 } DrvSYS_Delay(100000000); } } Langkah ke 12: Build dan Download program 1) Klik icon Build (F7) di toolbar untuk melakukan compile program. Pastikan Build Successful, tidak ada error. 2) Klik icon Download Code to Flash di toolbar untuk memasukkan program ke chip. Pastikan Done, tidak ada error. 3. PERCOBAAN 4C: Project 3 Number Key (LCD) Langkah ke 1: Pilih Chip 5) Panggil aplikasi CooCox Software > CoSmart dari Start Menu untuk membantu konfigurasi pin. 6) Klik tombol New Chip di tengah layar. 7) Pilih Nuvoton, lalu pilih NUC140VE3CN 8) Akan muncul gambar chip NUC140VE3CN, dengan semua peripheralnya. Langkah ke 2: Set Pin Buzzer 4) Di jendela Configuration pilih GPIOB. 5) Di bawahnya, klik pada Pin 11 agar Enable. 6) Scroll ke bawah, atur Pin Config 11: Mode Control: Output Langkah ke 3: Set Pin Keypad 1) Contreng GPIOA pada gambar chip. 2) Di jendela Configuration pilih GPIOA 3) Di bawahnya, klik pada Pin 0 s/d 5 agar Enable Langkah ke 4a: Set Pin LCD Matrix 1) Contreng SPI3 pada gambar chip untuk mengaktifkan fitur komunikasi SPI ke LCD Matrix. Langkah ke 4b: Set Pin Backlight 1) Contreng GPIOD pada gambar chip. 2) Di jendela Configuration pilih GPIOD. 3) Di bawahnya, klik pada Pin 14 agar Enable. 4) Scroll ke bawah, atur Pin Config 14: Mode Control: Output 37 | NUVOTON 2 Langkah ke 5: Generate Project 4) Simpan konfigurasi dengan klik Project > Save lalu pilih folder dan ketikkan nama file, misal konfigurasi01. 5) Lalu klik Generate > Generate CoIDE Project lalu pilih folder dan ketikkan nama project, misal praktikum01. 6) CoSmart akan membuatkan file project dan membukanya otomatis di Windows Explorer. Langkah ke 6: Buka Project 3) Klik dua kali file praktikum01 untuk membuka project dengan CoIDE. 4) Terlihat bahwa file project sudah disiapkan, klik dua kali pada main.c untuk mula i memprogram. Langkah ke 7: Pemrograman Nuvoton telah menyediakan Board Support Package (yang sudah di-instal) yang berisi banyak library yang dapat mempermudah kita memprogram objectobject di Learning Board. Untuk LCD Matrix Display bisa coba pakai library dari BSP. Langkah 1: Klik kanan di cmsis_lib\Include \Driver, lalu pilih Add Files. Browse ke C:\Nuvoton \BSP Library \NUC100SeriesBSP\NuvPlatform_Keil\Include\NUC1 xxLB_002 Pilih file LCD_Driver.h Langkah 2: Klik kanan di cmsis_lib\Src \Driver, lalu pilih Add Files. Browse ke C:\Nuvoton \BSP Library \NUC100SeriesBSP\NuvPlatform_Keil \Src \NUC1xxLB_002 Pilih file LCD_Driver.c Langkah 3: Klik kanan di cmsis_lib\Src \Driver, lalu pilih Add Files. Browse ke C:\Nuvoton \BSP Library \NUC100SeriesBSP\NuvPlatform_Keil \Src \NUC1xxLB_002 Pilih file Ascii_Table.c Langkah 4: Klik kanan di cmsis_lib\Include \Driver, lalu pilih Add Files. Browse ke C:\Nuvoton \BSP Library \NUC100SeriesBSP\NuvPlatform_Keil\Include\NUC1 xxLB_002 Pilih file ScanKey.h Langkah 5: Klik kanan di cmsis_lib\Src \Driver, lalu pilih Add Files. Browse ke C:\Nuvoton \BSP Library \NUC100SeriesBSP\NuvPlatform_Keil \Src \NUC1xxLB_002 38 | NUVOTON 2 Pilih file ScanKey.c #include"DrvGPIO.h" #include"DrvSYS.h" #include"LCD_Driver.h" #include"ScanKey.h" intkey; voidInit(); int main(void) { Init(); while(1) { key=Scankey(); if(key!=0) { Initial_pannel(); DrvGPIO_ClrBit(E_GPD,14); clr_all_pannal(); print_lcd(0,"Nomor:"); } if(key==1) { Show_Word(0,8,'1'); } elseif(key==2) { DrvGPIO_ClrBit(E_GPB,11); DrvSYS_Delay(10000); Show_Word(0,8,'2'); DrvGPIO_SetBit(E_GPB,11); DrvSYS_Delay(10000); } elseif(key==3) { DrvGPIO_ClrBit(E_GPB,11); DrvSYS_Delay(10000); Show_Word(0,8,'3'); DrvGPIO_SetBit(E_GPB,11); DrvSYS_Delay(10000); } elseif(key==4) { DrvGPIO_ClrBit(E_GPB,11); DrvSYS_Delay(10000); Show_Word(0,8,'4'); DrvGPIO_SetBit(E_GPB,11); DrvSYS_Delay(10000); } 39 | NUVOTON 2 else if(key==5) { DrvGPIO_ClrBit(E_GPB,11); DrvSYS_Delay(10000); Show_Word(0,8,'5'); DrvGPIO_SetBit(E_GPB,11); DrvSYS_Delay(10000); } else if(key==6) { DrvGPIO_ClrBit(E_GPB,11); DrvSYS_Delay(10000); Show_Word(0,8,'6'); DrvGPIO_SetBit(E_GPB,11); DrvSYS_Delay(10000); } else if(key==7) { DrvGPIO_ClrBit(E_GPB,11); DrvSYS_Delay(10000); Show_Word(0,8,'7'); DrvGPIO_SetBit(E_GPB,11); DrvSYS_Delay(10000); } else if(key==8) { DrvGPIO_ClrBit(E_GPB,11); DrvSYS_Delay(10000); Show_Word(0,8,'8'); DrvGPIO_SetBit(E_GPB,11); DrvSYS_Delay(10000); } else if(key==9) { DrvGPIO_ClrBit(E_GPB,11); DrvSYS_Delay(10000); Show_Word(0,8,'9'); DrvGPIO_SetBit(E_GPB,11); DrvSYS_Delay(10000); } } } TUGAS PRAKTIKUM 1. Buatlah program Number Key dengan output pada led berupa bilangan biner sesuai dengan keypad yang di tekan 40 | NUVOTON 2 4.5 MENGAKHIRI PERCOBAAN 1. Sebelum keluar dari ruang praktikum, rapikan meja praktikum. Masukkan Modul Nuvoton dan kabel konektor kedalam kotak modul, kemudian letakkan pada tempat yang telah di tentukan 2. Letakkan kursi pada tempat yang telah ditentukan 3. Pastikan asisten telah menandatangani lembar kehadiran praktikum pada kartu praktikum. Lembar kehadiran yang tidak ditandatangani oleh asisten pada praktikum tertentu tidak akan di nilai. 4.6 REFERENSI Nuvoton. NuMicro Training Course. Nuvoton Technology Corporation, 2012. Yiu, Joseph. The Definitive Guide to the ARM Cortex-M0. Elsevier Inc, 2011. ARM. Cortex-M0 Technical Reference Manual. ARM Holding Limited, 2009. Nuvoton. NuMicro NUC140 Data Sheet EN V3.02. Nuvoton Technology Corporation, 2012. Nuvoton. Nu-LB-NUC140 User's Guide v2.0. Nuvoton Technology Corporation, 2010. CooCox. 2013. CoIDE User Guide. http://CooCox.org/CooCox_CoIDE.htm. 1 Oktober 2017 41 | NUVOTON 2 PERCOBAAN V NUVOTON 3 1.1 TUJUAN 1. Mengetahui cara menggunakan fungsi aritmatika pada pemrograman C. 2. Mengetahui cara kerja if bersarang 3. Menganalisa program Counter Up LCD 4. Menganalisa program Water Level 4.1 PERSIAPAN Pelajari kembali modul praktikum dan bahan kuliah yang berkaitan dengan mikrokontro ler ataupun sistem digital, kemudian kerjakan Tugas Pendahuluan dan kumpulkan sesuai ketentuan yang berlaku. 4.2 DASAR TEORI LED pada rangkaian hardware adalah digital output yang bersifat ACTIVE LOW, yaitu menyala jika diberi logika LOW, dan mati jika diberikan logika HIGH. • Untuk memberikan logika HIGH gunakan perintah berikut: DrvGPIO_SetBit(Nama_port, Nomor_pin); • Untuk memberikan logika LOW gunakan perintah berikut: DrvGPIO_ClrBit(Nama_port, Nomor_pin); • Untuk membuat delay bisa menggunakan perintah berikut: DrvSys_Delay(Lama_delay_dalam_cycle); • Untuk bisa menggunakan perintah di atas, perlu memasukkan library #include “DrvGPIO.h“ #include “DrvSYS.h” Nama_port diisi E_GPA / E_GPB / E_GPC / E_GPD / E_GPE. Dalam hal ini karena LED dihubungkan ke PORT C maka isi dengan E_GPC. Nomor_pin diisi dengan angka pin kaki mikrokontroler. Dalam hal ini empat buah LED sudah dihubungkan ke pin 12 s/d 15. Pushbutton switch pada rangkaian hardware adalah digital input yang bersifat ACTIVE LOW, yaitu jika ditekan memberikan logika LOW. • Untuk mengambil nilai logika input digital gunakan perintah berikut: DrvGPIO_GetBit(Nama_port, Nomor_pin); Keterangan: Nama_port diisi E_GPA / E_GPB / E_GPC / E_GPD / E_GPE. Dalam hal ini karena Pushbutton switch dihubungkan ke PORT B maka isi dengan E_GPB. 41 | NUVOTON 3 Nomor_pin diisi dengan angka pin kaki mikrokontroler di PORT yang terhubung Pushbutton switch yang ingin dimainkan. Dalam hal ini empat buah Pushbutton switch sudah dihubungkan ke pin 15. Fungsi DrvGPIO_GetBit menghasilkan nilai 0 jika logika LOW (pushbutton ditekan), atau 1 jika logika HIGH (pushbutton tidak ditekan). BUZZER pada rangkaian hardware adalah digital output yang bersifat ACTIVE LOW, yaitu berbunyi jika diberi logika LOW, dan mati jika diberikan logika HIGH. • Untuk memberikan logika HIGH gunakan perintah berikut: DrvGPIO_SetBit(Nama_port, Nomor_pin); • Untuk memberikan logika LOW gunakan perintah berikut: DrvGPIO_ClrBit(Nama_port, Nomor_pin); • Untuk membuat delay bisa menggunakan perintah berikut: DrvSys_Delay(Lama_delay_dalam_cycle); • Untuk bisa menggunakan perintah di atas, perlu memasukkan library #include “DrvGPIO.h“ #include “DrvSYS.h” Nama_port diisi E_GPA / E_GPB / E_GPC / E_GPD / E_GPE. Dalam hal ini karena BUZZER dihubungkan ke PORT B maka isi dengan E_GPB. Nomor_pin diisi dengan angka pin kaki mikrokontroler. Dalam hal ini BUZZER dihubungkan ke pin 11. LCD Matrix Display pada rangkaian hardware dikontrol secara SPI, dan memiliki pin kontrol backlight di port D pin 14 yang bersifat ACTIVE LOW, yaitu menyala jika diberi logika LOW, dan mati jika diberikan logika HIGH. • Untuk menulis karakter di LCD, bisa menggunakan perintah berikut: print_lcd(Nomor_baris,Tulisan); Show_Word(Nomor_baris,Nomor_kolom,Huruf); • Untuk bisa menggunakan perintah di atas, perlu memasukkan library #include “LCD_Driver.h“ • Driver LCD_Driver membutuhkan file Ascii_Table.c untuk menggambar huruf. • Saat init pertama kali, perlu dipanggil perintah berikut: • Untuk membersihkan display, bisa menggunakan perintah berikut: clr_all_pannal(); Keterangan: Nomor_baris diisi angka 0-3, dihitung dari paling atas. Nomor_kolom diisi angka 0-15, dihitung dari paling kiri. Variabel Resistor pada rangkaian hardware yang memberikan masukan sinyal analog. ARM NUC140 memiliki 8 channel pengkonversi sinyal analog ke nilai digital (ADC) dengan ketelitian 12 bit, yang dapat membaca level sinyal analog menjadi angka dalam range 0-4095. Clock ADC dapat menggunakan internal 22MHz dengan divisor 2. 42 | NUVOTON 3 • Untuk membaca sinyal analog, bisa menggunakan perintah berikut: DrvADC_StartConvert(); DrvADC_GetConversionData(Nomor_channel); • Untuk bisa menggunakan perintah di atas, perlu memasukkan library #include “DrvADC.h“ • Untuk menampung hasil pembacaan ADC, ada baiknya membuat suatu variabel, misal bernama adc bertipe data integer. Keterangan: Nomor_channel diisi angka 0-7, sesuai dengan pin tempat sinyal analog terhubung. Dalam hal ini, Variabel Resistor ada di channel 7. 4.3 TUGAS PENDAHULUAN 1. Jelaskan datasheet dan fungsi dari komponen yang digunakan! 2. Jelaskan apa yang diketahui tentang ADC! 3. Tuliskan bentuk program if bersarang dalam bahasa C (Nuvoton)! 4.4 PERCOBAAN A. ALAT YANG DIGUNAKAN 1) 1 unit komputer 2) Software CoSmart 3) Software CoIDE 4) 1 unit modul NUVOTON Nu-LB-NUC140 5) Kabel mini USB B. PROSEDUR PERCOBAAN 1. PERCOBAAN 5A: Project 1 Counter Up (LCD) 1) Panggil aplikasi CooCox Software > CoSmart dari Start Menu untuk membantu konfigurasi pin. 2) Klik tombol New Chip di tengah layar. 3) Pilih Nuvoton, lalu pilih NUC140VE3CN 4) Akan muncul gambar chip NUC140VE3CN, dengan semua peripheralnya. Langkah ke 2: Set Pin Pushbutton 1) Contreng GPIOB pada gambar chip. 2) Di jendela Configuration pilih GPIOB. 3) Di bawahnya, klik pada Pin 15 agar Enable. 43 | NUVOTON 3 4) Scroll ke bawah, atur Pin Config 15: Mode Control: Input Digital Input: Enable Input Signal Deb: Enable Langkah ke 3: Set Pin Buzzer 1) Di jendela Configuration pilih GPIOB. 2) Di bawahnya, klik pada Pin 11 agar Enable. 3) Scroll ke bawah, atur Pin Config 11: Mode Control: Output Langkah ke 4a: Set Pin LCD Matrix 1) Contreng SPI3 pada gambar chip untuk mengaktifkan fitur komunikasi SPI ke LCD Matrix. Langkah ke 4b: Set Pin Backlight 1) Contreng GPIOD pada gambar chip. 2) Di jendela Configuration pilih GPIOD. 3) Di bawahnya, klik pada Pin 14 agar Enable. 4) Scroll ke bawah, atur Pin Config 14: Mode Control: Output Langkah ke 5: Generate Project 1) Simpan konfigurasi dengan klik Project > Save lalu pilih folder dan ketikkan nama file, misal konfigurasi01. 2) Lalu klik Generate > Generate CoIDE Project lalu pilih folder dan ketikkan nama project, misal praktikum01. 3) CoSmart akan membuatkan file project dan membukanya otomatis di Windows Explorer. Langkah ke 6: Buka Project 1) Klik dua kali file praktikum01 untuk membuka project dengan CoIDE. 2) Terlihat bahwa file project sudah disiapkan, klik dua kali pada main.c untuk mula i memprogram. Langkah ke 7: Pemrograman Nuvoton telah menyediakan Board Support Package (yang sudah di-instal) yang berisi banyak library yang dapat mempermudah kita memprogram objectobject di Learning Board. Untuk LCD Matrix Display bisa coba pakai library dari BSP. Langkah 1: Klik kanan di cmsis_lib\Include \Driver, lalu pilih Add Files. Browse ke 44 | NUVOTON 3 C:\Nuvoton \BSP Library \NUC100SeriesBSP \NuvPlatform_Keil \Include \NUC1xxLB_002 Pilih file LCD_Driver.h Langkah 2: Klik kanan di cmsis_lib\Src \Driver, lalu pilih Add Files. Browse ke C:\Nuvoton \BSP Library \NUC100SeriesBSP\NuvPlatform_Keil \Src \NUC1xxLB_002 Pilih file LCD_Driver.c Langkah 3: Klik kanan di cmsis_lib\Src \Driver, lalu pilih Add Files. Browse ke C:\Nuvoton \BSP Library \NUC100SeriesBSP\NuvPlatform_Keil \Src \NUC1xxLB_002 Pilih file Ascii_Table.c LISTING PROGRAM: #include "DrvGPIO.h" #include "DrvSYS.h" #include "LCD_Driver.h" int nilai=0,a=0; void Init(); int main(void) { Init(); Initial_pannel(); DrvGPIO_ClrBit(E_GPD,14); clr_all_pannal(); print_lcd(0,"0"); while(1) { if(DrvGPIO_GetBit(E_GPB,15)==0) { if(a==0) { DrvGPIO_ClrBit(E_GPB,11); nilai=nilai+1; Show_Word(0,0,nilai%10+'0'); a=1; } } if(DrvGPIO_GetBit(E_GPB,15)==1) { DrvGPIO_SetBit(E_GPB,11); DrvSYS_Delay(10000); a=0; } } 45 | NUVOTON 3 Langkah ke 8: Build dan Download program 1) Klik icon Build (F7) di toolbar untuk melakukan compile program. Pastikan Build Successful, tidak ada error. 2) Klik icon Download Code to Flash di toolbar untuk memasukkan program ke chip. Pastikan Done, tidak ada error. 2. PERCOBAAN 5B: Project 2 WATER LEVEL Langkah ke 1: Pilih Chip 1) Panggil aplikasi CooCox Software > CoSmart dari Start Menu untuk membantu konfigurasi pin. 2) Klik tombol New Chip di tengah layar. 3) Pilih Nuvoton, lalu pilih NUC140VE3CN 4) Akan muncul gambar chip NUC140VE3CN, dengan semua peripheralnya. Langkah ke 2: Set Pin LED 1) Contreng GPIOC pada gambar chip. 2) Di jendela Configuration pilih GPIOC. 3) Di bawahnya, klik pada Pin 12 s/d 15 agar Enable. 4) Scroll ke bawah, atur Pin Config 12 s/d 15: Mode Control: Output Langkah ke 3: Set Pin Pushbutton 1) Contreng GPIOB pada gambar chip. 2) Di jendela Configuration pilih GPIOB. 3) Di bawahnya, klik pada Pin 15 agar Enable. 4) Scroll ke bawah, atur Pin Config 15: Mode Control: Input Digital Input: Enable Input Signal Deb: Enable Langkah ke 4: Set Pin VR 1) Contreng ADC pada gambar chip. 2) Di jendela Configuration pilih ADC. 3) Klik pada Channel 7 agar Enable. 4) Scroll ke atas, klik pada Clock Source, pilih INTERNAL 22M. 5) Klik pada Clock Divisor, isi dengan angka 2. Langkah ke 5: Set Pin Buzzer 1) Di jendela Configuration pilih GPIOB. 2) Di bawahnya, klik pada Pin 11 agar Enable. 46 | NUVOTON 3 3) Scroll ke bawah, atur Pin Config 11: Mode Control: Output Langkah ke 6a: Set Pin LCD Matrix 1) Contreng SPI3 pada gambar chip untuk mengaktifkan fitur komunikasi SPI ke LCD Matrix. Langkah ke 6b: Set Pin Backlight 1) Contreng GPIOD pada gambar chip. 2) Di jendela Configuration pilih GPIOD. 3) Di bawahnya, klik pada Pin 14 agar Enable. 4) Scroll ke bawah, atur Pin Config 14: Mode Control: Output Langkah ke 7: Generate Project 1) Simpan konfigurasi dengan klik Project > Save lalu pilih folder dan ketikkan nama file, misal konfigurasi01. 2) Lalu klik Generate > Generate CoIDE Project lalu pilih folder dan ketikkan nama project, misal praktikum01. 3) CoSmart akan membuatkan file project dan membukanya otomatis di Windows Explorer. Langkah ke 8: Buka Project 1) Klik dua kali file praktikum01 untuk membuka project dengan CoIDE. 2) Terlihat bahwa file project sudah disiapkan, klik dua kali pada main.c untuk mula i memprogram. Lnagkah ke 9: Pemrograman Nuvoton telah menyediakan Board Support Package (yang sudah di-instal) yang berisi banyak library yang dapat mempermudah kita memprogram objectobject di Learning Board. Untuk LCD Matrix Display bisa coba pakai library dari BSP. Langkah 1: Klik kanan di cmsis_lib\Include \Driver, lalu pilih Add Files. Browse ke C:\Nuvoton \BSP Library \NUC100SeriesBSP\NuvPlatform_Keil\Include\NUC1 xxLB_002 Pilih file LCD_Driver.h Langkah 2: Klik kanan di cmsis_lib\Src \Driver, lalu pilih Add Files. Browse ke C:\Nuvoton \BSP Library \NUC100SeriesBSP\NuvPlatform_Keil \Src \NUC1xxLB_002 47 | NUVOTON 3 Pilih file LCD_Driver.c Langkah 3: Klik kanan di cmsis_lib\Src \Driver, lalu pilih Add Files. Browse ke C:\Nuvoton \BSP Library \NUC100SeriesBSP\NuvPlatform_Keil \Src \NUC1xxLB_002 Pilih file Ascii_Table.c LISTING PROGRAM #include "DrvGPIO.h" #include "DrvSYS.h" #include "LCD_Driver.h" #include "DrvADC.h" int adc,a=0; void Init(); int main(void) { Init(); Initial_pannel(); DrvGPIO_ClrBit(E_GPD,14); clr_all_pannal(); while(a==0) { print_lcd(0,"NUVOTON"); print_lcd(1,"DASAR MIKRO"); print_lcd(2,"TEKAN PUSH BTN"); print_lcd(3,"UNTUK MELANJUTKN"); if(DrvGPIO_GetBit(E_GPB,15)==0) { a=1; clr_all_pannal(); } } while(a==1) { if(DrvGPIO_GetBit(E_GPB,15)==1) { print_lcd(0,"ADC="); DrvADC_StartConvert(); adc=DrvADC_GetConversionData(7); Show_Word(0,5,adc/1000+'0'); Show_Word(0,6,adc%1000/100+'0'); Show_Word(0,7,adc%100/10+'0'); Show_Word(0,8,adc%10+'0'); 48 | NUVOTON 3 if(adc<=999) { DrvGPIO_SetBit(E_GPC,15); DrvGPIO_SetBit(E_GPC,14); DrvGPIO_SetBit(E_GPC,13); DrvGPIO_SetBit(E_GPC,12); DrvGPIO_ClrBit(E_GPB,11); print_lcd(1,"LOW!!!"); } if(adc>=1000) { if(adc<=1999) { DrvGPIO_ClrBit(E_GPC,15); DrvGPIO_SetBit(E_GPC,14); DrvGPIO_SetBit(E_GPC,13); DrvGPIO_SetBit(E_GPC,12); DrvGPIO_SetBit(E_GPB,11); print_lcd(1,"NORMAL"); } } if(adc>=2000) { if(adc<=2999) { DrvGPIO_ClrBit(E_GPC,15); DrvGPIO_ClrBit(E_GPC,14); DrvGPIO_SetBit(E_GPC,13); DrvGPIO_SetBit(E_GPC,12); DrvGPIO_SetBit(E_GPB,11); print_lcd(1,"NORMAL"); } } if(adc>=3000) { if(adc<=3999) { DrvGPIO_ClrBit(E_GPC,15); DrvGPIO_ClrBit(E_GPC,14); DrvGPIO_ClrBit(E_GPC,13); DrvGPIO_SetBit(E_GPC,12); DrvGPIO_SetBit(E_GPB,11); print_lcd(1,"NORMAL"); } } 49 | NUVOTON 3 if(adc>=4000) { DrvGPIO_ClrBit(E_GPC,15); DrvGPIO_ClrBit(E_GPC,14); DrvGPIO_ClrBit(E_GPC,13); DrvGPIO_ClrBit(E_GPC,12); DrvGPIO_ClrBit(E_GPB,11); print_lcd(1,"HIGH!!"); } } } } Langkah ke 12: Build dan Download program 1) Klik icon Build (F7) di toolbar untuk melakukan compile program. Pastikan Build Successful, tidak ada error. 2) Klik icon Download Code to Flash di toolbar untuk memasukkan program ke chip. Pastikan Done, tidak ada error. 4.5 MENGAKHIRI PERCOBAAN 1. Sebelum keluar dari ruang praktikum, rapikan meja praktikum. Masukkan Modul Nuvoton dan kabel konektor kedalam kotak modul, kemudian letakkan pada tempat yang telah di tentukan 2. Letakkan kursi pada tempat yang telah ditentukan 3. Pastikan asisten telah menandatangani lembar kehadiran praktikum pada kartu praktikum. Lembar kehadiran yang tidak ditandatangani oleh asisten pada praktikum tertentu tidak akan di nilai. 4.6 REFERENSI Nuvoton. NuMicro Training Course. Nuvoton Technology Corporation, 2012. Yiu, Joseph. The Definitive Guide to the ARM Cortex-M0. Elsevier Inc, 2011. ARM. Cortex-M0 Technical Reference Manual. ARM Holding Limited, 2009. Nuvoton. NuMicro NUC140 Data Sheet EN V3.02. Nuvoton Technology Corporation, 2012. Nuvoton. Nu-LB-NUC140 User's Guide v2.0. Nuvoton Technology Corporation, 2010. CooCox. 2013. CoIDE User Guide. http://CooCox.org/CooCox_CoIDE.htm. 1 Oktober 2017 50 | NUVOTON 3 PERCOBAAN VI PENGENALAN ARDUINO 1.1 TUJUAN 1. Mendesain rangkaian untuk basic arduino 2. Mendesain rangkaian untuk blink led 1.2 PERSIAPAN Pelajari kembali modul praktikum dan bahan kuliah yang berkaitan dengan mikrokontroler ataupun sistem digital, kemudian kerjakan Tugas Pendahuluan dan kumpulkan sesuai ketentuan yang berlaku. 1.3 DASAR TEORI Menurut Massimo Banzi: Arduino is an open source physical computing platform based on a simple input/output (I/O) board and a development environment that implements the Processing language (www.processing.org). Arduino can be used to develop standalone interactive objects or can be connected to software on your computer (such as Flash, Processing, VVVV, orMax/MSP). The boards can be assembled by hand or purchased preassembled; the open source IDE (Integrated Development Environment) can be downloaded for free from www.arduino.cc. Gambar 6.1 Arduino Uno Pada Arduino terdapat dua buah jenis pin, yaitu analog dan digital. Pin digital memiliki dua buah nilai yang dapat ditulis kepadanya yaitu High(1) dan Low(0). Logika high maksudnya ialah 5 Volt dikirim ke pin baik itu oleh mikrokontroler atau dari komponen. Low berarti pin tersebut bertegangan 0 Volt. Dari logika ini, anda dapat membayangkan perumpamaan: start/stop, siap/tidak siap, on/off, dsb. Pin-pin analog memiliki karakteristik yang berbeda dari pin digital. Informasi yang dapat ditulis atau dibaca sangat lebar.Misalnya saja untuk write, nilai dari 0-255 dapat ditulis(0V – 5V). Sedangkan untuk read, nilai dari 0-1023(0V – 5V dengan setiap kenaikan sebesar 0,005V) dapat direpresentasikan. Pin-pin digital berada pada bagian atas. Pin-pin itulah yang nantinya dihubungkan ke berbagai kontrol yang berkomunikasi dengan menggunakan nilai digital. Beberapa pin digital dapat digunakan sebagai Pulse Width Modulation (PWM). Secara umum pin PWM ini dapat digunakan untuk mengirim nilai/informasi analog ke komponen. Tanda ~ pada pin 3, 5, 6, 9, 10, 11 menandakan fungsi PWM. Fungsi PWM ini merupakan tambahan dari fungsi digital. Artinya pinpin tersebut selain fungsi digital, dapat dikonfigurasi menjadi PWM. Kemungkinan nilai dari dari pin-pin digital tersebut ialah IN (informasi masuk dari komponen ke kontrol) dan sebaliknya OUT(informasi keluar dari kontrol ke komponen). Pada bagian bawah, terdapat pin-pin power. Tersedia pin 5V, 3.3V, dua pin ground, Vin, dan reset. Di sebelah kanan bagian bawah, anda akan melihat pin-pin analog input. Pin-pin ini dapat menerima masukan informasi analog dari 0 hingga 5 Volt dengan kenaikan sebesar 0.005 V. Representasi 0 V ialah 0, dan 5V ialah 1023. Di atas pin-pin analog terdapat mikrokontroler AVR. Dan di atas AVR terdapat push button reset untuk merestart program. Terdapat konetor ISP di sebelah kanan push button reset yang dapat digunakan untuk memprogram kontroler Arduino dalam kondisi tertentu(chip erase akan mengakibatkan bootloader Arduino ikut terhapus. Jadi hati-hati dalam menggunakannya). PWM PWM adalah singkatan dari Pulse Width Modulation. Pada Arduino, sinyal PWM adalah sinyal yang beroperasi pada frekuensi 500Hz (ini akan kita bahas pada paragraf selanjutnya). Pada board arduino Uno, pin yang bisa dimanfaatkan untuk PWM adalah pin yang diberi tanda tilde (~), yaitu pin 3, 5, 6, 9, 10, dan pin 11. Pin-pin tersebut merupakan pin yang bisa difungsikan untuk input analog atau output analog. Oleh sebab itu, jika akan menggunakan PWM pada pin ini, bisa dilakukan dengan perintah analogWrite(); Analog input dihasilkan oleh PWM atau Pulse Width Modulation. PWM memanipulasi keluaran digital sedemikian rupa sehingga menghasilkan sinyal analog. Mikrokontroler mengeset output digital ke HIGH dan LOW bergantian dengan porsi waktu tertentu untuk setiap nilai keluarannya. Durasi waktu untuk nilai HIGH disebut pulse width atau panjang pulsa. Variasi nilai output analog didapatkan dari perubahan panjang pulsa yang diberikan pada satu periode waktu dan dilakukan berulang-ulang. Analog Input Pin analog pada Arduino (dan mikrokontroller lain pada umumnya) dapat digunakan untuk input dan output digital. Hanya saja pin analog memiliki fitur untuk dapat mengubah sinyal analog yang masuk menjadi nilai digital yang mudah diukur. Pin digital hanya dapat mengenali sinyal 0 volt sebagai nilai LOW dan 5 volt sebagai nilai HIGH. Sedangkan Pin analog dapat mengenali sinyal pada rentang nilai voltase tersebut. Pin analog ini terhubung dengan converter pada mikrokontroller yang dikenal dengan istilah analog-to-digital converter (disingkat ADC atau A/D). Converterini mengubah nilai analog berbentuk sinyal voltase ke dalam bentuk digital/angka supaya nilai analog ini dapat digunakan dengan lebih mudah dan aplikatif. Pada Arduino (mikrokontroller ATMega) converter ini memiliki resolusi 10 bit, artinya nilai hasil konversi berkisar dari 0 hingga 1023. 1.4 TUGAS PENDAHULUAN 1. Lakukan Instalasi dan pelajari Software Arduino IDE berikut! Langkah 1 : download software Arduino IDE Untuk mulai memprogram, dibutuhkan IDE Arduino. Langsung saja download versi terbaru dari Arduino.cc. Download sesuai dengan OS yang akan digunakan. Pada modul ini digunakan windows dan IDE versi 1.0.5. Ekstrak hasil download, dan ada akan mendapatkan folder “arduino-1.8.5″, kemudian double-click “arduino.exe” untuk mulai melakukan penginstallan. Berikut penampakan IDE Arduino: Pada gambar diatas, terdapat, beberapa tombol yang mempunyai fungsi sebagai berikut: Verify: Cek error dan lakukan kompilasi kode Upload: Upload kode anda ke board/kontroler. Asumsi bahwa board dan serial port telah disetting dengan benar. New: Membuat aplikasi baru. Open: Buka proyek yang telah ada atau dari contoh-contoh/examples. Save: Simpan proyek anda. Serial Monitor: Membuka serial port monitor untuk melihat feedback/umpan balik dari board anda. Proses kerja Arduino ialah anda melakukan pemrograman pada IDE, compile, dan upload binary/hex file ke kontroler. Berbeda dengan Processing yang kode hasil compile langsung dijalankan di komputer, kode hasil compile Arduino harus diupload ke kontroler sehingga dapat dijalankan Langkah 2 : Install USB drivers Untuk menjalankan Arduino, pertama-tama hubungkan USB cable yang terpasang pada board Arduino ke PC. Ketika pertama kali dihubungkan, maka akan muncul kotak dialog “Add New Hardware” wizard, kemudian arahkan folder driver kedalam drivers/FTDI USB Drivers yang terdapat pada folder Arduino berada. Setelah melakukan install drivers, maka kamu telah siap untuk menguplod program yang akan dibuat ke dalam mikrokontroler Arduino. Langkah 3 : Insert libraries Dalam beberapa kondisi, nantinya kadangkala diperlukan libraries tambahan apabila libraries yang telah ada tidak mencukupi project yang akan dibuat. Berikut cara menambahkan libraries ke dalam IDE Arduino. 1. Copy files libraries yang telah di download 2. Letakkan pada folder libraries yang terdapat di dalam folder Arduino 3. Jalankan ulang software Arduino IDE Pada contoh dibawah ialah menambahkan libraries keypad ke dalam libraries yang sebelumnya telah ada kemudian menjalankan ulang software IDE Arduino. 1.1 PERCOBAAN A. ALAT YANG DIGUNAKAN 1) 1 buah kit Arduino untuk satu kelompok Arduino dapat diganti dengan development board dengan kualitas di bawahnya, selama masih kompatibel dengan enviroment Arduino 2) 3) 4) 5) 6) 7) 8) 9) 10) 11) 12) 13) 1 buah laptop 1 buah breadboard (minimal) 3 buah resistor 100 O 1 buah resistor 150 O 3 buah resistor 220 O 10 buah resistor 1 k Kabel jumper 2 buah LED warna merah 1 buah LED warna kuning 2 buah LED warna hijau 1 buah LM35 1 buah light dependent resistor (LDR) B. PROSEDUR PERCOBAAN PERSIAPAN PRAKTIKUM Sebelum melakukan project, pada bagian Arduino IDE dicek terlebih dahulu pada menu tools, board dan port yang digunakan pada project. Sesuaikan board dan port dengan jenis board yang digunakan serta port yang terhubung dengan USB cable pada board Arduino. 1. PERCOBAAN 6A: Stringlength Pada percobaan ini dilakukan pengujian terhadap penggunaan serial monitor yang terdapat pada Arduino. Percobaan ini bertujuan untuk mengetahui panjang kata dari setiap karakter maupun string yang dikirimkan pada Arduino, untuk kemudian ditampilkan pada serial monitor. Berikut merupakan source code yang terdapat pada basic examples Stringlength. String txtMsg = ""; // a string for incoming text unsigned int lastStringLength = txtMsg.length(); // previous length of the String void setup() { Open serial communications and wait for port to open: Serial.begin(9600); while (!Serial) { // wait for serial port to connect. Needed for native USB port only } send an intro: Serial.println("\n\nString Serial.println(); length():"); } Berikutnya compile dan upload program ke dalam Arduino board. Perhatikan dan catat hasil yang terjadi, apakah sesuai dengan spesifikasi atau tidak. 2. PERCOBAAN 6B: PROJECT 3 TRAFFIC LIGHTS Pada percobaan ini, dilakukan pembuatan prototype lampu lalu lintas sederhana. Penyalaan lampu menggunakan LED berwarna merah, kuning, dan hijau yang kenudian disusun secara vertikal berjajar. LED akan menyala seperti halnya lampu lalu lintas yang berada di perempatan jalan. Pertama-tama lampu akan menyala merah, kemudian merah dan kuning secara bersama, lalu hijau yang menandakan kondisi jalan serta kuning dan kembali lagi ke merah. Susun rangkaian seperti terlihat pada gambar berikut (resistor yang digunakan adalah 220 O). Kemudian pasang USB cable pada Arduino dengan port USB yang terdapat pada PC untuk mengupload program. Buka Arduino IDE, lalu ketikkan program berikut. // Project 3 - Traffic Lights int ledDelay = 10000; // delay in between changes int redPin = 10; int yellowPin = 9; int greenPin = 8; void setup() { pinMode(redPin, OUTPUT); pinMode(yellowPin, OUTPUT); pinMode(greenPin, OUTPUT); } void loop() { turn the red light on digitalWrite(redPin, HIGH); delay(ledDelay); // wait 5 seconds digitalWrite(yellowPin, HIGH); // turn on yellow // wait 2 seconds delay(2000); // turn green on digitalWrite(greenPin, HIGH); // turn red off digitalWrite(redPin, LOW); // turn yellow off digitalWrite(yellowPin, LOW); // wait ledDelay delay(ledDelay); milliseconds digitalWrite(yellowPin, HIGH); turn yellow on digitalWrite(greenPin, turn green off LOW); delay(2000); wait 2 seconds digitalWrite(yellowPin, LOW); turn yellow off // now our loop repeats } Berikutnya compile dan upload program ke dalam Arduino board. Perhatikan dan catat hasil yang terjadi, apakah sesuai dengan spesifikasi atau tidak. 3. PERCOBAAN 6C: Serial Temperature Sensor Pada percobaan kali ini dilakukan pengukuran suatu suhu ruangan dengan menggunakan sensor LM35. Suhu yang nantinya ditampilkan memiliki satuan derajat celcius dan dalam kisaran 0-100 derajat. Suhu tersebut dapat dilihat dengan menggunakan serial monitor yang terdapat pada Arduino IDE. Susun rangkaian seperti terlihat pada gambar berikut: Kemudian pasang USB cable pada Arduino dengan port USB yang terdapat pada PC untuk menguplod program. Buka Arduino IDE, lalu ketikkan program berikut. int val; int tempPin = 0; void setup() { Serial.begin(9600); } void loop() { val = analogRead(tempPin); float mv = ( val/1024.0)*5000; float cel = mv/10; float farh = (cel*9)/5 + 32; Serial.print("TEMPRATURE = "); Serial.print(cel); Serial.print("*C"); Serial.println(); delay(1000); /* uncomment this to get temperature in farenhite Serial.print("TEMPRATURE = "); Serial.print(farh); Serial.print("*F"); Serial.println(); */ } Berikutnya compile dan upload program ke dalam Arduino board. Perhatikan dan catat hasil yang terjadi, apakah sesuai dengan spesifikasi atau tidak. 4. PERCOBAAN 6D: Kontrol kecepatan Motor DC int motorPin = 9; void setup() { pinMode(motorPin, OUTPUT); Serial.begin(9600); while (! Serial); Serial.println("Speed 0 to 255"); } void loop() { if (Serial.available()) { int speed = Serial.parseInt(); if (speed >= 0 && speed <= 255) { analogWrite(motorPin, speed); Serial.println(speed); } } } 5. PERCOBAAN 6E: Kontrol Motor Servo 1.2 TUGAS 1. 1.3 MENGAKHIRI PERCOBAAN 2. Sebelum keluar dari ruang praktikum, rapikan meja praktikum. Rapikan kabel, komponen lain yang digunakan pada saat pratikum, dan letakkan kembali pada tempat semula. 3. Pastikan asisten telah menandatangani kartu kehadiran pratikum, dan catatan percobaan. Catatan percobaan yang tidak ditandatangani oleh asisten tidak akan dinilai. 1.4 REFERENSI http://www.EarthshineElectronics.com/ArduinoStarterKitManual http://arduino.cc/en/Tutorial/HomePage http://www.arduino.web.id/ http://ngooprek.com/club/blog/2012/07/18/pengenalan-arduino http://www.instructables.com/id/ARDUINO-TEMPERATURE-SENSOR-LM35/ 61 | PENGENALAN ARDUINO