Jobsheet Praktikum Mikrokontroller Arduino [PDF]

  • 0 0 0
  • Suka dengan makalah ini dan mengunduhnya? Anda bisa menerbitkan file PDF Anda sendiri secara online secara gratis dalam beberapa menit saja! Sign Up
File loading please wait...
Citation preview

UNIVERSITAS NEGERI MEDAN PETUNJUK PRAKTIKUM



SISTEM MIKROPROSESOR



2018



LABORATORIUM TEKNIK ELEKTRO FAKULTAS TEKNIK



DAFTAR ISI DAFTAR ISI............................................................................................................................................... 1 KATA PENGANTAR................................................................................................................................... 5 Pengenalan Mikrokontroler Arduino ...................................................................................................... 6 BAB I PENGANTAR MIKROKONTROLER................................................................................................... 6 A.



Sejarah Mikrokontroler ............................................................................................................... 6



B.



Perkembangan Teknologi Mikrokontroler .................................................................................. 8



C.



Implementasi Teknologi Mikrokontroler .................................................................................. 10



D.



Rangkuman ............................................................................................................................... 11



BAB II MIKROKONTROLER PLATFORM ARDUINO ................................................................................. 12 A.



Konsep Arduino ......................................................................................................................... 12



B.



Perangkat Lunak Arduino .......................................................................................................... 15



C.



Rangkuman ............................................................................................................................... 19



BAB III PEMROGRAMAN ARDUINO ....................................................................................................... 20 A.



Konsep Dasar Pemrograman Arduino....................................................................................... 20 Header........................................................................................................................................... 21 Setup ............................................................................................................................................. 21 Loop............................................................................................................................................... 21



B.



Program Sederhana Arduino .................................................................................................... 22 Sketch ............................................................................................................................................ 22 Pembahasan Sketch ...................................................................................................................... 22



C.



Ringkasan .................................................................................................................................. 23



BAB IV SIMULASI PROTEUS ................................................................................................................... 24 A.



Mengenal Program Proteus ...................................................................................................... 24



B.



Menjalankan Program Proteus ................................................................................................. 25



Praktikum Mikrokontroler Arduino ...................................................................................................... 27 MODUL 1 OUTPUT ................................................................................................................................ 27 Tujuan ............................................................................................................................................... 27 Teori Singkat ..................................................................................................................................... 27 1.A.



Rangkaian dan Program Sederhana ...................................................................................... 28



Alat dan Bahan .............................................................................................................................. 28 Rangkaian Percobaan .................................................................................................................... 28 Program Percobaan ...................................................................................................................... 28



Langkah Percobaan ....................................................................................................................... 29 Tugas ............................................................................................................................................. 29 1.B.



Simulasi Proteus .................................................................................................................... 29



Alat dan Bahan .............................................................................................................................. 29 Rangkaian Percobaan .................................................................................................................... 30 Program Percobaan ...................................................................................................................... 30 Langkah Percobaan ....................................................................................................................... 30 Tugas ............................................................................................................................................. 31 MODUL 2 INPUT – OUTPUT .................................................................................................................. 32 Tujuan ............................................................................................................................................... 32 Teori Singkat ..................................................................................................................................... 32 2.A.



Membaca Saklar.................................................................................................................... 34



Alat dan Bahan .............................................................................................................................. 34 Rangkaian Percobaan .................................................................................................................... 35 Program Percobaan ...................................................................................................................... 35 Langkah Percobaan ....................................................................................................................... 36 Tugas ............................................................................................................................................. 37 2.B.



Pengendalian LED dengan Saklar .......................................................................................... 38



Alat dan Bahan .............................................................................................................................. 38 Rangkaian Percobaan .................................................................................................................... 38 Program Percobaan ...................................................................................................................... 38 Langkah Percobaan ....................................................................................................................... 39 Tugas ............................................................................................................................................. 40 MODUL 3 ITERASI LOOP ........................................................................................................................ 41 Tujuan ............................................................................................................................................... 41 Teori Singkat ..................................................................................................................................... 41 Aritmetika dan Logika ................................................................................................................... 42 Instruksi Kendali ............................................................................................................................ 43 Instruksi Perulangan ..................................................................................................................... 43 Array.............................................................................................................................................. 45 3.A.



Perintah IF dan IF - ELSE ........................................................................................................ 45



Alat dan Bahan .............................................................................................................................. 45 Rangkaian Percobaan .................................................................................................................... 45 Program Percobaan ...................................................................................................................... 46 Langkah Percobaan ....................................................................................................................... 47 Tugas ............................................................................................................................................. 47



3.B.



Perulangan dengan WHILE dan FOR ..................................................................................... 48



Alat dan Bahan .............................................................................................................................. 48 Rangkaian Percobaan .................................................................................................................... 48 Program Percobaan ...................................................................................................................... 48 Langkah Percobaan ....................................................................................................................... 49 Tugas ............................................................................................................................................. 50 3.C.



Animasi LED........................................................................................................................... 51



Alat dan Bahan .............................................................................................................................. 51 Rangkaian Percobaan .................................................................................................................... 51 Program Percobaan ...................................................................................................................... 51 Langkah Percobaan ....................................................................................................................... 53 Tugas ............................................................................................................................................. 53 3.D.



Pengenalan Array .................................................................................................................. 54



Alat dan Bahan .............................................................................................................................. 54 Rangkaian Percobaan .................................................................................................................... 54 Program Percobaan ...................................................................................................................... 54 Langkah Percobaan ....................................................................................................................... 56 Tugas ............................................................................................................................................. 57 MODUL 4 INPUT ANALOG ..................................................................................................................... 58 Tujuan ............................................................................................................................................... 58 Teori Singkat ..................................................................................................................................... 58 Input Analog .................................................................................................................................. 58 Output Analog ............................................................................................................................... 59 4.A.



Input Analog .......................................................................................................................... 61



Alat dan Bahan .............................................................................................................................. 61 Rangkaian Percobaan .................................................................................................................... 61 Program Percobaan ...................................................................................................................... 62 Langkah Percobaan ....................................................................................................................... 65 Tugas ............................................................................................................................................. 66 4.B.



Output Analog ....................................................................................................................... 66



Alat dan Bahan .............................................................................................................................. 66 Rangkaian Percobaan .................................................................................................................... 66 Program Percobaan ...................................................................................................................... 66 Langkah Percobaan ....................................................................................................................... 68 Tugas ............................................................................................................................................. 69 MODUL 5 KOMUNIKASI SERIAL............................................................................................................. 70



Tujuan ............................................................................................................................................... 70 Teori Singkat ..................................................................................................................................... 70 Serial USART .................................................................................................................................. 71 Operasi Dan Pemrograman Sistem Menggunakan Fitur Lingkungan Pengembangan Arduino ... 72 Antarmuka Peripheral Serial (SPI) ................................................................................................. 72 Antarmuka Serial Dua Kabel (TWI)................................................................................................ 74 5.A.



Komunikasi dengan PC .......................................................................................................... 74



Alat dan Bahan .............................................................................................................................. 74 Rangkaian Percobaan .................................................................................................................... 75 Program Percobaan ...................................................................................................................... 75 Langkah Percobaan ....................................................................................................................... 78 Tugas ............................................................................................................................................. 78 5.B.



Komunikasi tanpa Kabel (Wireless)....................................................................................... 79



Alat dan Bahan .............................................................................................................................. 79 Rangkaian Percobaan .................................................................................................................... 79 Program Percobaan ...................................................................................................................... 79 Langkah Percobaan ....................................................................................................................... 83 Tugas ............................................................................................................................................. 84 5.C.



Komunikasi pada Jaringan..................................................................................................... 85



Alat dan Bahan .............................................................................................................................. 85 Rangkaian Percobaan .................................................................................................................... 85 Program Percobaan ...................................................................................................................... 85 Langkah Percobaan ....................................................................................................................... 87 Tugas ............................................................................................................................................. 87



KATA PENGANTAR Puji syukur kita panjatkan ke hadirat Tuhan Yang Esa, karena atas berkat dan karuniaNya telah berdiri Program Studi Teknik Elektro sebagai program studi baru di Jurusan Pendidikan Teknik Elektro. Untuk itu mutlak diperlukan adanya dokumen pembelajaran diantaranya Petunjuk Praktikum guna menjamin pelaksanaan pembelajaran berjalan lancara sesuai tujuan dan kompetensi yang diharapkan berdasarkan KKNI. Dengan usaha dan kerja maksimal akhirnya penyusunan buku ini dapat terselesaikan atas hasil kerjasama tim penyusun dari civitas akademika Program Studi Teknik Elektro Universitas Negeri Medan. Sistem Mikroprosesor merupakan salah satu mata kuliah dan ilmu pengetahuan dasar yang harus dikuasai oleh mahasiswa teknik elektro, yaitu sebagai bekal untuk menguasai bidang keelektroan lainnya. Semakin lama perkembangan elektronika khususnya sistem mikroprosesor semakin pesat dan aplikasinya semakin meluas yang menuntut dasar pondasi yang cukup kuat. Kehadiran panduan praktek ini diharapkan menjadi penunjang dan pelengkap mata kuliah Sistem Mikroprosesor yang harus ditempuh mahasiswa. Tanpa adanya praktikum dirasakan penguasaan mata kuliah bidang keteknikan akan tidak sempurna malah akan tidak berarti sama sekali. Tidak ada gading yang tidak retak, tim penyusun menyadari panduan ini masih jauh dari sempurna. Oleh karenanya diharapkan masukan sehingga ke depan panduan ini dapat disusun dengan lebih sempurna demi berhasilnya tujuan dan kompetensi pembelajaran sebagai salah satu upaya mencerdaskan kehidupan bangsa. Pada kesempatan ini, kami ingin menyampaikan terima kasih yang besar-besarnya pada semua pihak yang telah terlibat dalam penyusunan petunjuk praktikum ini. Ucapan terima kasih juga disampaikan untuk dukungan rekan-rekan teknisi di Laboratorium Dasar Teknik Elektro. Akhir kata, semoga semua usaha yang telah dilakukan berkontribusi pada dihasilkannya lulusan Program Studi Teknik Elektro sebagai engineer dengan standar internasional. Medan, Februari 2018 Penyusun Petunjuk Praktikum Sistem Mikroprosesor



Marwan Affandi, ST, MT.



Pengenalan Mikrokontroler Arduino BAB I



PENGANTAR MIKROKONTROLER A.



Sejarah Mikrokontroler Sejarah awal perkembangan mikrokontroler dimulai pada awal tahun 1970-an. Motorola



mengeluarkan seri mikrokontroler 6800 yang terus dikembangkan menjadi 68HC05, 68HC08, 68HC11, 68HC12, dan 68HC16. Zilog juga mengeluarkan seri mikroprosesor Z80-nya yang terkenal dan terus dikembangkan hingga kini menjadi Z180 dan kemudian diadopsi juga oleh mikroprosesor Rabbit. Tahun 1974, Texas Instrument mengenalkan mikrokontroler dengan seri TMS 1000 yang merupakan mikrokontroler 4 bit. TMS 1000 adalah mikrokomputer dalam sebuah chip, lengkap dengan RAM dan ROM. Tahun 1976, Intel mengeluarkan mikrokontroler 8-bit seri Intel 8748 yang merupakan mikrokontroler dari keluarga MCS 48. Intel juga mengeluarkan mikrokontroler-nya yang populer di dunia yaitu 8051, yang karena begitu populernya maka arsitektur 8051 tersebut kemudian diadopsi oleh vendor lain seperti Phillips, Siemens, Atmel, dan vendor-vendor lain. Selain itu masih ada mikrokontroler populer lainnya seperti Basic Stamps, PIC dari Microchip, MSP 430 dari Texas Instrument dan masih banyak lagi. Mikrokontroler (microcontroller) atau disingkat dengan “micron” adalah pengendali yang merupakan suatu komputer kecil yang terletak di dalam sebuah chip atau IC (integrated circuit) yang berisikan inti prosesor, memori, dan komponen input/output yang dapat diprogram. Mikrokontroler biasa digunakan pada produk dan perangkat yang dapat dikontrol secara otomatis, seperti sistem kontrol mesin mobil (engine control), perangkat medis (medical devices), pengendali jarak jauh (remote control), mesin perkantoran (office machines), dan juga mainan (games). Penggunaan mikrokontroler lebih ekonomis dibandingkan sebuah desain sistem yang berisikan mikroprosesor, memori, dan perangkat input/ouput terpisah. Mikrokontroler adalah komputer mikro dalam satu chip tunggal. Mikrokontroler memadukan CPU, ROM, RWM, I/O paralel, I/O seri, counter-timer, dan rangkaian clock dalam satu chip tunggal seperti terlihat pada Gambar I.1.



Gambar I.1. Blok Diagram Mikrokontroler



Sama halnya dengan mikroprosesor, mikrokontroler adalah perangkat yang dirancang untuk kebutuhan umum (specific purpose). Sesuai dengan fungsinya sebagai pengendali, mikrokontroler berisikan sepaket chip lengkap yang terdiri dari fitur-fitur pengolah data yang juga terdapat dalam mikroprosesor, ditambah RAM, ROM, I/O, dan fitur lain yang terintegrasi di dalamnya. Contohnya dapat ditemui pada perangkat otomotif, mesin industri, elektronik dan perangkat- perangkat lain yang memiliki embedded sistem di dalamnya. Mikrokontroler sebagai sebuah chip telah mengalami perkembangan baik dari sisi arsitektur, teknologi dan kemampuannya. Untuk melihat perbedaan konsep diantara mikroprosesor dan mikrokontroler di bawah ini ditunjukan Tabel I.1 perbandingan konfigurasi, arsitektur, dan set instruksi diantara mikroprosesor Z-80 CPU dengan mikrokontroler AT89C51. Tabel I.1. Perbedaan Mikroprosesor dan Mikrokontroler



No



Konfigurasi Pin



Mikroprosesor Z-



Mikrokontroler



80 CPU



AT89C51



1



Jumlah pin



40



40



2



Jumlah pin alamat



16



16



3



Jumlah pin data



8



8



4



Jumlah pin interupt



2



2



5



Pin I/O



-



32



6



Register 8 bit



20



34



7



Register 16 bit



4



2



8



Ukuran Stack



64 K



128 K



9



ROM Internal



-



4 KByte



10



RAM Internal



-



128 Byte



11



Memori Eksternal



64 KByte



128 KByte



12



Flag



6



4



13



Timer



-



2



14



Port Paralel



-



4 x 8 bit



15



Port Serial



-



1



Terdapat perbedaan yang signifikan antara mikrokontroler dan mikroprosessor. Perbedaan yang utama antara keduanya dapat dilihat dari dua faktor utama yaitu arsitektur perangkat keras (hardware architecture) dan aplikasi masing-masing. 1. Ditinjau dari segi arsitekturnya, mikroprosesor hanya merupakan single chip CPU, sedangkan mikrokontroler dalam IC-nya selain CPU juga terdapat device lain yang memungkinkan mikrokontroler berfungsi sebagai suatu single chip komputer. Dalam sebuah IC mikrokontroler telah terdapat ROM, RAM, EPROM, serial interface dan paralel interface, timer, interrupt controller, konverter Anlog ke Digital, dan lainnya (tergantung feature yang melengkapi mikrokontroler tersebut). 2. Sedangkan dari segi aplikasinya, mikroprosessor hanya berfungsi sebagai Central Processing Unit yang menjadi otak komputer, sedangkan mikrokontroler, dalam bentuknya yang mungil, pada umumnya ditujukan untuk melakukan tugas–tugas yang berorientasi kendali (control) pada rangkaian yang membutuhkan jumlah komponen minimum dan biaya rendah (low cost).



B.



Perkembangan Teknologi Mikrokontroler Mikrokontroler sebagai teknologi baru yaitu teknologi semikonduktor kehadirannya



sangat membantu perkembangan dunia elektronika. Dengan arsitektur yang praktis tetapi memuat banyak kandungan transistor yang terintegrasi, sehingga mendukung dibuatnya rangkaian elektronika yang lebih portable. Mikrokontroler dapat diproduksi secara masal sehingga harganya menjadi lebih murah dibandingkan dengan mikroprosessor, tetapi tetap memiliki kelebihan yang bisa diandalkan. Gambar I.2 memperlihatkan beberapa contoh chip mikrokontroler.



Gambar I.2. Chip Mikrokontroler



Mikrokontroler memiliki perbandingan ROM dan RAM-nya yang besar, artinya program kontrol disimpan dalam ROM (bisa Masked ROM atau Flash PEROM) yang ukurannya relatif lebih besar, sedangkan RAM digunakan sebagai tempat penyimpan sementara, termasuk register-register yang digunakan pada mikrokontroler yang bersangkutan. Perkembangan Mikrokontroler mengalami perubahan dari segi rancangan dan aplikasinya, seperti faktor kecepatan pengolah data yang semakin meningkat (cepat) dibanding pendahulunya. Seperti halnya sebuah mikroprosesor, mikrokontroler juga berkembang sesuai rancangan dan model-model aplikasinya. Mikrokontroler berdasarkan jumlah bit data yang dapat diolah dapat dibedakan dalam: 1. Mikrokontroler 4 Bit; merupakan mikrokontroler dengan jumlah bit data terkecil. Mikrokontroler jenis ini diproduksi untuk meminimalkan jumlah pin dan ukuran kemasan. 2. Mikrokontroler 8 Bit; merupakan mikrokontroler yang paling banyak digunakan untuk pekerjaan-pekerjaan perhitungan skala kecil. Dalam komunikasi data, Data ASCII serial juga disimpan dalam ukuran 8 bit. Kebanyakan IC memori dan fungsi logika dibangun menggunakan data 8 bit sehingga interface bus data menjadi sangat mudah dibangun. Penggunaan mikrokontroler 8 bit jauh lebih banyak dibandingkan dengan mikrokontroler 4 bit. Aplikasinya juga sangat variatif mulai dari aplikasi kendali sederhana sampai kendali mesin berkecepatan tinggi. 3. Mikrokontroler 16 Bit; keterbatasan-keterbatasan yang ada pada mikrokontroler 8 bit berkaitan dengan semakin kompleknya



pengolahan data dan pengendalian serta



kecepatan tanggap/respon disempurnakan dengan menggunakan mikrokontroler 16 bit. Salah satu solusinya adalah dengan menaikkan kecepatan clock, dan ukuran data. Mikrokontroler 16 bit digunakan untuk mengatur tangan robot, dan aplikasi Digital Signal Processing (DSP). 4. Mikrokontroler 32 Bit; ditargetkan untuk aplikasi Robot, Instrumen cerdas, Avionics, Image Processing, Telekomunikasi, Automobil, dan sebagainya. Program-program aplikasinya bekerja dengan sistim operasi dan dipadukan dengan perangkat pintar lainnya. Karena kebutuhan yang tinggi terhadap “smart chip” dengan berbagai fasilitasnya, maka berbagai vendor juga berlomba untuk menawarkan produk-produk mikrokontrolernya. Selain mikroprosesor dan mikrokontroler, sebenarnya telah bemunculan chip-chip pintar lain seperti DSP prosesor dan Application Spesific Integrated Circuit (ASIC). Di masa depan, chip-chip mungil berkemampuan sangat tinggi akan mendominasi semua desain elektronik di dunia



sehingga mampu memberikan kemampuan komputasi yang tinggi serta meminimumkan jumlah komponen-komponen konvensional.



C.



Implementasi Teknologi Mikrokontroler Karena kemampuannya yang tinggi, bentuknya yang kecil, konsumsi dayanya yang



rendah, dan harga yang murah maka mikrokontroler begitu banyak digunakan di dunia. Mikrokontroler digunakan mulai dari mainan anak-anak, perangkat elektronik rumah tangga, perangkat pendukung otomotif, peralatan industri, peralatan telekomunikasi, peralatan medis dan kedokteran, sampai dengan pengendali robot serta persenjataan militer. Terdapat beberapa keunggulan yang diharapkan dari alat-alat yang berbasis mikrokontroler (microcontroller-based solutions): 1. Kehandalan tinggi (high reliability) dan kemudahan integrasi dengan komponen lain (high degree of integration) 2. Ukuran yang semakin dapat diperkecil (reduced in size) 3. Penggunaan komponen dipersedikit (reduced component count) yang juga akan menyebabkan biaya produksi dapat semakin ditekan (lower manufacturing cost) 4. Waktu pembuatan lebih singkat (shorter development time) sehingga lebih cepat pula dijual ke pasar sesuai kebutuhan (shorter time to market) 5. Konsumsi daya yang rendah (lower power consumption) Penerapan teknologi di masyarakat akan memberikan banyak keuntungan. Mikrokontroler merupakan sebuah sistem komputer fungsional dalam sebuah chip. Di dalamnya terkandung sebuah inti prosesor, memori (sejumlah kecil RAM, memori program, atau keduanya), dan perlengkapan input output. Dengan penggunaan mikrokontroler ini maka: 1. Sistem elektronik akan menjadi lebih ringkas, 2. Rancang bangun sistem elektronik akan lebih cepat karena sebagian besar dari sistem adalah perangkat lunak yang mudah dimodifikasi, 3. Pencarian gangguan lebih mudah ditelusuri karena sistemnya yang kompak. Teknologi mikrokontroller dapat diterapkan di berbagai bidang, baik di industri masupun di masyarakat. Dengan menerapkan teknologi Mikrokontroller di masyarakat akan memberikan banyak keuntungan, contohnya: 1. Kunci Kombinasi Digital dengan Remote Kontrol Inframerah 2. Jam Wekker Digital Bertampilan M1632 LCD 3. Alat penyiram tanaman otomatis 4. Pemberi pakan ikan otomatis



5. Deteksi kebakaran menggunakan sensor suhu dan mikrokontroller 6. Pendeteksi kebocoran gas 7. Sistem keamanan mobil 8. Pintu Air Otomatis 9. Pengendali lampu rumah dengan mikrokontroller melalui SMS 10. Robot Cerdas



D.



Rangkuman 1. Mikrokontroler (microcontroller) adalah pengendali yang merupakan suatu komputer kecil yang terletak di dalam sebuah chip atau IC (integrated circuit) yang berisikan inti prosesor, memori, dan komponen input/output yang dapat diprogram. 2. Ditinjau dari segi arsitekturnya, mikroprosesor hanya merupakan single chip CPU, sedangkan mikrokontroler dalam IC-nya selain CPU juga terdapat device lain yang memungkinkan mikrokontroler berfungsi sebagai suatu single chip computer. 3. Mikrokontroler memiliki perbandingan ROM dan RAM-nya yang besar, artinya program kontrol disimpan dalam ROM (bisa Masked ROM atau Flash PEROM) yang ukurannya relatif lebih besar, sedangkan RAM digunakan sebagai tempat penyimpan sementara, termasuk register-register yang digunakan pada mikrokontroler yang bersangkutan.



BAB II



MIKROKONTROLER PLATFORM ARDUINO A.



Konsep Arduino Arduino merupakan papan-tunggal mikrokontroler serba guna yang bisa diprogram dan



bersifat open-source. Platform Arduino sekarang ini menjadi sangat populer dengan pertambahan jumlah pengguna baru yang terus meningkat. Hal ini karena kemudahannya dalam penggunaan dan penulisan kode program. Tidak seperti kebanyakan papan sirkuit pemrograman sebelumnya, Arduino tidak lagi membutuhkan perangkat keras terpisah (disebut programmer atau downloader) untuk memuat atau meng-upload kode baru ke dalam mikrokontroler. Cukup dengan menggunakan kabel USB untuk mulai menggunakan Arduino. Selain itu, Arduino IDE menggunakan bahasa pemrograman C++ dengan versi yang telah disederhanakan, sehingga lebih mudah dalam belajar pemrograman. Arduino akhirnya berhasil menjadi papan sirkuit pemrograman paling disukai hingga menjadikannya sebagai bentuk standar dari fungsi mikrokontroler dengan paket yang mudah untuk diakses. Hardware dan software Arduino dirancang bagi para seniman, desainer, pe-hobi, hacker, pemula dan siapapun yang tertarik untuk menciptakan objek interaktif dan pengembangan lingkungan. Arduino mampu berinteraksi dengan tombol, LED, motor, speaker, GPS, kamera, internet, ponsel pintar bahkan dengan televisi. Fleksibilitas ini dihasilkan dari kombinasi ketersediaan software Arduino yang gratis, papan perangkat keras yang murah, dan keduanya yang mudah untuk dipelajari. Hal inilah yang menciptakan jumlah pengguna menjadi sebuah komunitas besar dengan berbagai kontribusinya yang telah dirilis pada berbagai proyek dengan berbasiskan Arduino. Arduino Uno merupakan versi terbaru dari keluarga Arduino, berbasis mikrokontroler ATmega328, menyempurnakan tipe sebelumnya, Duemilanove. Perbedaan Arduino tersebut adalah tidak menggunakan IC FTDI (Future Technology Devices International) USB to Serial sebagai driver komunikasi USB-nya tetapi menggunakan mikrokontroler ATmega8U2 yang diprogram sebagai konverter USB ke serial. Uno sendiri diambil dari bahasa Italia yang artinya 1 (satu). Gambar II.1 adalah board Arduino Uno dengan spesifikasi hardware: 



Mikrokontroler : ATmega328







Tegangan Operasi : 5 V







Tegangan Input : 7 – 12V







Digital I/O : 14 pin







PWM : 6 channel







Analog Input : 6 channel







Memory : 32KB Flash PEROM (0,5 KB digunakan oleh bootloader), 2KB







SRAM dan 1KB EEPROM







Frekuensi Clock : 16 MHz



Gambar II.1. Arduino Uno Board



Tabel II.1 menunjukkan beberapa produk board yang diproduksi Arduino yang ada di pasaran: Tabel II.1. Produk Board Arduino No 1 2 3 4 5 6 7 8 9 10 11 12 13



Nama Board Arduino Uno Arduino Leonardo Arduino Due Arduino Yun Arduino Tre Arduino Micro Arduino Robot Arduino Esplora Arduino Mega ADK Arduino Fio Arduino USB Arduino Nano Arduino Serial



No 14 15 16 17 18 19 20 21 22 23 24 25 26



Nama Board Lilypad Arduino Arduino NG (Nuova Generazione) Arduino Extreme Arduino Diecimila Arduino Mega Arduino Mega 2560 Arduino Pro Arduino Pro Mini Arduino Ethernet Arduino Duemilanove Arduino Shields Arduino Singel Side Serial Arduino Mini



Gambar II.2 memperlihatkan bagian utama dari papan Arduino uno, yakni terminal power supply, port USB, pin digital I/O, tombol reset, mikrokontroler ATmega328 dan pin analog input. Pin Digital I/O



Pin Analog



Gambar II.2. Bagian Utama Arduino Uno Board



Berikut ini adalah penjelasan beberapa bagian utama dari papan Arduino uno, yaitu: 1. Power Supply. Pada Arduino board, ada 2 (dua) pilihan sumber tegangan yang dapat digunakan, yakni dari port USB maupun dari power supply eksternal. Dengan menghubungkan port USB di komputer/laptop dengan Arduino maka secara otomatis power supply Arduino bersumber dari port USB. Untuk sumber tegangan eksternal (non-USB) yakni dengan menghubungkan Arduino board dengan sumber tegangan DC. Tegangan yang direkomendasikan adalah 7 sampai 12 V. 2. Input – Output Port Arduino berbeda penamaannya dengan sistem minimum mikrokontroler atau microntroller development system. Sebagai contoh pada system minimum ATmega8535 penamaan port adalah PORTA, PORTB, PORTC dan PORTD, untuk akses per-bit maka PORTA.0 s/d PORTA.7, contoh lain pada AT89S51 maka PORT0, PORT1 dan seterusnya. Sistem penamaan port pada Arduino merupakan urutan nomor port, mulai dari nomor nol (0), satu (1) dan seterusnya. Untuk digital I/O dengan nama pin 1, 2 sampai 13, sedangkan untuk analog input menggunakan nama A0, A1 sampai A5. Pada Arduino uno terdapat 14 pin digital input – output. Secara umum berfungsi sebagai port input – output biasa, namun ada beberapa pin yang mempunyai fungsi alternatif. Sebagai contoh, pin 2 dan 3 juga sebagai pin interupsi eksternal. Kemudian pin 5,6,9,10 dan 11 dapat dipakai untuk PWM (Pulse Width Modulation) yang sering dipakai untuk kendali motor DC maupun motor servo. Tabel II.2 menunjukkan nomor dan fungsi pin pada Arduino uno. Tabel II.2. Konfigurasi Pin Arduino Uno No Pin 0 1 2 3 4 5 6 7 8 9 10 11 12 13



Fungsi Digital I/O 0 Digital I/O 1 Digital I/O 2 Digital I/O 3 Digital I/O 4 Digital I/O 5 Digital I/O 6 Digital I/O 7 Digital I/O 8 Digital I/O 9 Digital I/O 10 Digital I/O 11 Digital I/O 12 Digital I/O 13



Fungsi alternatif RX (serial – receiver) TX (serial – pengirim) Interupsi external Interupsi external & PWM – PWM PWM – – PWM SPI – SS & PWM SPI – MOSI & PWM SPI – MISO SPI – SCK & LED



3. Analog Input Arduino memiliki 6 pin analog input, berfungsi membaca sinyal masukan analog seperti sensor analog. Meskipun demikian pin analog input dapat pula digunakan untuk keperluan digital I/O. Tabel II.3 menunjukkan nomor dan fungsi pin input analog. Tabel II.3. Konfigurasi Pin Analog Input



No pin A0 A1 A2 A3 A4 A5



Fungsi Analog Input 1 Analog Input 2 Analog Input 3 Analog Input 4 Analog Input 5 Analog Input 6



Fungsi Alternatif – – – – TWI – SDA TWI – SCL



Arduino memberikan kemudahan bagi penggunanya untuk membuat berbagai proyek berbasis mikrokontroler. Contohnya yang dapat dibuat dengan Arduino antara lain, untuk membuat simulasi lampu, membuat robot, mengontrol motor dc, mengontrol motor stepper, pengatur suhu, display LCD, dan masih banyak yang lainnya. Gambar II.3 adalah contoh produk alat menggunakan Arduino.



Gambar II.3. Robot berbasis Arduino Uno



B.



Perangkat Lunak Arduino Arduino dapat digunakan untuk mengembangkan objek interaktif, mengambil masukan



dari berbagai switch atau sensor, dan mengendalikan berbagai lampu, motor, dan output fisik lainnya. Proyek Arduino dapat berdiri sendiri, atau berkomunikasi dengan perangkat lunak (software) yang berjalan pada komputer (misalnya: Flash, Pengolahan, MaxMSP, database, dsb). Board dapat dirakit sendiri atau dibeli; open-source IDE dapat didownload secara gratis. Arduino IDE adalah software open source yang memudahkan untuk menulis kode program dan meng-upload-nya ke board Arduino. Software Arduino dapat berjalan pada Windows, Mac OS X, dan Linux. Software ini ditulis dalam bentuk Java dan berbasis processing, avr-gcc, dan perangkat lunak open source lainnya. Software Arduino yang ada dalam situs Arduino (https://www.arduino.cc/) telah memiliki versi 1.8.5, seperti terlihat pada Gambar II.4 Software Arduino IDE (Integrated



Development Environment) adalah sebuah perangkat lunak yang memudahkan dalam mengembangkan aplikasi mikrokontroler mulai dari menuliskan source program, kompilasi, upload hasil kompilasi, dan uji coba secara terminal serial. Arduino dapat dijalankan di komputer dengan berbagai macam platform karena didukung atau berbasis Java. Source program yang dibuat untuk aplikasi mikrokontroler adalah bahasa C/C++ dan dapat digabungkan dengan assembly.



Gambar II.4. Tampilan Software Arduino 1.8.5



Di samping IDE Arduino sebagai jantungnya, bootloader adalah jantung dari Arduino lainnya yang berupa program kecil yang dieksekusi sesaat setelah mikrokontroler diberi catu daya. Bootloader ini berfungsi sebagai pemonitor aktifitas yang diinginkan oleh Arduino. Jika dalam IDE terdapat file hasil kompilasi yang akan di-upload, bootloader secara otomatis menyambutnya untuk disimpan dalam memori program. Jika pada saat awal mikrokontroler bekerja, bootloader akan mengeksekusi program aplikasi yang telah diupload sebelumnya. Jika IDE hendak mengupload program baru, bootloader seketika menghentikan eksekusi program berganti menerima data program untuk selanjutnya diprogramkan dalam memori program mikrokontroler. Hubungan komunikasi data antara IDE arduino dengan board Arduino digunakan komunikasi secara serial dengan protokol RS232. Jika board arduino sudah dilengkapi dengan komunikasi serial RS232 (biasanya USB), maka dapat langsung ditancapkan ke USB komputer. Piranti serial RS232 ini digunakan jika board arduino atau arduino buatan sendiri tidak dilengkapi dengan piranti serial 232. Prosedur Menggunakan Arduino Board 1. Menyiapkan Arduino Board dan Kabel USB (Gambar II.5)



Gambar II.5. Arduino dan Kabel USB



2. Mengunduh Software Arduino Dapatkan versi terbaru dari halaman download yang tersedia di situs resmi Arduino, https://www.arduino.cc/en/Main/Software. Setelah download selesai, unzip file yang didownload (jika mendownload file tipe .zip). Pastikan untuk mempertahankan struktur folder. Klik dua kali pada folder untuk membukanya, dan akan ada beberapa file dan sub-folder di dalam. 3. Menghubungkan Arduino Board ke Komputer Arduino Uno, Mega Duemilanove dan Arduino Nano memerlukan sumber listrik dari salah satu koneksi USB komputer atau power supply eksternal. Sumber daya dipilih dengan jumper, plastik kecil yang terdapat antara USB dan jack listrik. Periksa apakah jumper diatur pada dua pin paling dekat dengan port USB atau tidak. Hubungkan papan Arduino ke komputer menggunakan kabel USB. LED indikator daya hijau (berlabel PWR) akan menyala. 4. Membuka Software Arduino (Gambar II.6) Klik dua kali aplikasi Arduino, lalu dapat dilakukan simulasi dengan hal-hal sebagai berikut:  Buka contoh blink Buka LED berkedip contoh sketsa: File > Examples > 1.Basics > Blink



Gambar II.6. Contoh Blink LED



 Pilih Board yang digunakan dengan memilih entri dalam menu Tools > Board yang sesuai dengan Arduino. Misalnya dipilih Arduino Uno (Gambar II.7)



Gambar II.7. Memilih Board



 Pilih port serial (Gambar II.8) Pilih perangkat serial Arduino dari menu Tools | Serial Port. Biasanya Port akan otomatis terdeteksi.



Gambar II.8. Memilih Port



 Upload Program (Gambar II.9) Dengan meng-klik tombol "Upload". Tunggu beberapa detik – akan terlihat akan berkedip LED RX dan TX pada Arduino Board.



Gambar II.9. Upload Program



C.



Rangkuman 1. Arduino merupakan papan-tunggal mikrokontroler serba guna yang bisa diprogram dan bersifat open-source. 2. Arduino Uno adalah salah satu kit mikrokontroler yang berbasis pada ATmega328. Modul ini sudah dilengkapi dengan berbagai hal yang dibutuhkan untuk mendukung mikrokontroler untuk bekerja. 3. Arduino IDE menggunakan bahasa pemrograman C++ dengan versi yang telah disederhanakan, sehingga lebih mudah dalam belajar pemrograman. 4. Software Arduino IDE (Integrated Development Environment) adalah sebuah perangkat lunak yang memudahkan dalam mengembangkan aplikasi mikrokontroler mulai dari menuliskan source program, kompilasi, upload hasil kompilasi, dan uji coba secara terminal serial. 5. Hubungan komunikasi data antara IDE arduino dengan board Arduino digunakan komunikasi secara serial dengan protokol RS232. Jika board arduino sudah dilengkapi dengan komunikasi serial RS232 (biasanya USB),maka dapat langsung ditancapkan ke USB komputer.



BAB III



PEMROGRAMAN ARDUINO A.



Konsep Dasar Pemrograman Arduino Software/program yang ditulis menggunakan Arduino disebut sketsa (sketch). Sketsa ini



ditulis dalam editor teks. Sketsa disimpan dengan ekstensi file .ino, yang memiliki fitur untuk meng-cut, meng-copy, mem-paste, mencari/ mengganti teks, dll. Area pesan (console) memberikan umpan balik, menyimpan dan mengekspor juga menampilkan kesalahan. Konsol menampilkan teks output dalam lingkungan Arduino termasuk detail pesan error dan informasi lainnya. Bagian sudut bawah sebelah kanan jendela menampilkan board dan port serial yang sedang dipakai. Tombol-tombol toolbar (Gambar III.1) memungkinkan untuk memverifikasi dan meng-upload program, membuat, membuka, dan menyimpan sketsa, juga membuka monitor serial.



Gambar III.1. Toolbar dan Menu Arduino



Code Program Arduino biasa disebut sketch dan dibuat menggunakan bahasa pemrograman C. Program atau sketch yang sudah selesai ditulis di Arduino IDE dapat langsung di-compile dan di-upload ke Arduino Board.



Gambar III.2. Sketch dalam Arduino IDE



Secara sederhana, sketch dalam Arduino dikelompokkan menjadi 3 blok (Gambar III.2.), yakni : Header, Setup dan Loop. Untuk program yang lebih kompleks akan ada blok lain berupa fungsi-fungsi pendukung. Header Pada bagian ini biasanya ditulis definisi-definisi penting yang akan digunakan selanjutnya dalam program, misalnya penggunaan library dan pendefinisian variabel. Code dalam blok ini dijalankan hanya sekali pada waktu compile. Di bawah ini contoh code untuk mendeklarasikan variable led (integer) dan sekaligus di isi dengan angka 13. int led = 13;



Setup Di sinilah awal program Arduino berjalan, yaitu di saat awal, atau ketika power on Arduino board. Biasanya di blok ini diisi penentuan apakah suatu pin digunakan sebagai input atau output, menggunakan perintah pinMode. Initialisasi variable juga bisa dilakukan di blok ini. // the setup routine runs once when you press reset: void setup() { // initialize the digital pin as an output. pinMode(led, OUTPUT); } OUTPUT adalah suatu makro yang sudah didefinisikan Arduino yang berarti = 1. Jadi



perintah di atas sama dengan pinMode(led,1); Suatu pin dapat difungsikan sebagai output atau input. Jika difungsikan sebagai output, pin tersebut siap mengirimkan arus listrik (maksimum 100 mA) kepada beban yang disambungkannya. Jika difungsikan sebagai input, pin tersebut memiliki impedansi yang tinggi dan siap menerima arus yang dikirimkan kepadanya. Loop Blok ini akan dieksekusi secara terus menerus. Apabila program sudah sampai akhir blok, maka akan dilanjutkan dengan mengulang eksekusi dari awal blok. Program akan berhenti apabila tombol power Arduino di matikan. Di sinilah fungsi utama program Arduino kita berada. void loop() { digitalWrite(led, HIGH); delay(1000); digitalWrite(led, LOW); delay(1000); }



// // // //



turn wait turn wait



the for the for



LED on a second LED off a second



Perintah digitalWrite(pinNumber, nilai) akan memerintahkan arduino untuk



menyalakan atau mematikan tegangan di pinNumber tergantung nilainya. Jadi perintah digitalWrite(led, HIGH) akan membuat pin nomor 13 (karena di header dideklarasi led = 13) memiliki tegangan = 5V (HIGH). Hanya ada dua kemungkinan nilai digitalWrite



yaitu HIGH atau LOW yang sebetulnya adalah nilai integer 1 atau 0.



B.



Program Sederhana Arduino Program sederhana adalah Led Blink, program ini akan mengakses pin 10 dan



memerintahkan Arduino untuk mengulang blink led, Gambar III.3.



Gambar III.3. Wiring LED blinking



Sketch // Project 1 - LED Flasher int ledPin = 10; void setup() { pinMode(ledPin, OUTPUT); } void loop() { digitalWrite(ledPin, HIGH); delay(1000); digitalWrite(ledPin, LOW); delay(1000); }



// sets the LED on // sets the LED off



Pembahasan Sketch // Project 1 - LED Flasher



Ini adalah komentar baris yang berguna untuk dokumentasi program, kompiler akan mengabaikan bagian ini. Baris komentar berguna bagi programmer agar bisa mengerti maksud program. int ledPin = 10;



Inisialisasi variable, dalam hal ini inisialisasi variable bernama ledPin dengan type data integer dan nilai 10.



void setup() { pinMode(ledPin, OUTPUT); }



Setiap sketch Arduino wajib memiliki fungsi setup() dan loop(). Fungsi setup() dipanggil hanya sekali saat pertama kali program berjalan. Fungsi setup()biasanya tempat untuk men-setup hal-hal umum agar program siap dijalankan, seperti setup pin modes, setting serial baud rates, dan lainnya. Pada sketch Led Blink, fungsi setup hanya memiliki 1 baris perintah yaitu: pinMode(ledPin, OUTPUT); pinMode merupakan fungsi yang berguna untuk memberitahu arduino bahwa pin pada



board akan digunakan sebagai input atau output. Dalam baris program di atas, memberitahu arduino untuk menset pin 10 (nilai ledPin adalah 10) sebagai Output. void loop() { digitalWrite(ledPin, HIGH); delay(1000); digitalWrite(ledPin, LOW); delay(1000); }



Fungsi loop() adalah program utama yang dipanggil secara kontinu selama Arduino menyala. Setiap perintah dalam fungsi loop() akan dipanggil satu persatu sampai perintah terakhir dalam blok loop dicapai, lalu Arduino akan kembali ke awal perintah di blok fungsi loop(), sampai Arduino dimatikan atau tombol reset ditekan.



C.



Ringkasan 1. Kode Program Arduino biasa disebut sketch dan dibuat menggunakan bahasa pemrograman C. Program atau sketch yang sudah selesai ditulis di Arduino IDE dapat langsung di-compile dan di-upload ke Arduino Board. 2. Secara sederhana, sketch dalam Arduino dikelompokkan menjadi 3 blok yakni : Header, Setup dan Loop. 3. Setiap sketch Arduino wajib memiliki fungsi setup() dan loop(). Fungsi setup() dipanggil hanya sekali saat pertama kali program berjalan. Fungsi loop() adalah program utama yang dipanggil secara kontinu selama Arduino menyala.



BAB IV



SIMULASI PROTEUS A.



Mengenal Program Proteus Proteus merupakan salah satu aplikasi simulasi dalam mendesain perangkat elektronik,



baik yang Non Programmable maupun yang Programmable. Proteus merupakan gabungan dari program ISIS dan ARES. Dengan penggabungan tersebut maka skematik rangkaian elektronika dapat dirancang serta disimulasikan dan dibuat menjadi layout PCB. Fitur - fitur yang terdapat pada Proteus antara lain : 



Memiliki kemampuan untuk mensimulasikan hasil rancangan baik digital maupun analog maupun gabungan keduanya,







Mendukung simulasi yang menarik dan simulasi secara grafis,







Mendukung simulasi berbagai jenis microcontroller seperti AVR, PIC, 8051 series dan mikrokontroller lainnya.







Memiliki model-model peripheral yang interactive seperti LED, tampilan LCD, RS232, dan berbagai jenis library lainnya,







Mendukung instrument-instrument virtual seperti voltmeter, ammeter, oscciloscope, logic analyser, dll.







Memiliki kemampuan menampilkan berbagi jenis analisis secara grafis seperti transient, frekuensi, noise, distorsi, AC dan DC, dan lain-lain.







Mendukung berbagai jenis komponen-komponen analog,







Mendukung open architecture sehingga kita bisa memasukkan program seperti C++ untuk keperluan simulasi,







Mendukung pembuatan PCB yang di-update secara langsung dari program ISIS ke program pembuat PCB-ARES. ISIS merupakan singkatan dari Intelligent Schematic Input System dipergunakan untuk



keperluan pendidikan dan perancangan. Beberapa fitur umum dari ISIS adalah sebagai berikut: 



Dapat dioperasikan pada Windows 98/Me/2k/XP/Vista dan Windows terbaru







Routing secara otomatis dan memiliki fasilitas penempatan dan penghapusan dot.







Sangat powerful untuk pemilihan komponen dan pemberian properties-nya.







Mendukung untuk perancangan berbagai jenis bus dan komponen-komponen pin, port modul dan jalur.







Memiliki fasilitas report terhadap kesalahan-kesalahan perancangan dan simulasi elektrik.







Mendukung fasilitas interkoneksi dengan program pembuat PCB-ARES.







Memiliki fasilitas untuk menambahkan package dari komponen yang belum didukung. ARES (Advanced Routing and Editing Software) digunakan untuk membuat modul



layout PCB. Adapun fitur-fitur dari ARES adalah sebagai berikut : 



Memiliki database dengan tingkat keakuratan 32-bit dan memberikan resolusi sampai 10 nm, resolusi angular 0,1 derajat dan ukuran maksimum board hingga 10 m. ARES mendukung sampai 16 layer.







Terintegrasi dengan program pembuat skematik ISIS, dengan kemampuan untuk menentukan informasi routing pada skematik.







Visualisasi board 3-Dimensi.







Penggambaran 2-Dimensi dengan simbol library. Dalam simulasi arduino dibutuhkan Library Arduino Uno, yang dapat di unduh secara



gratis. Kelebihan dari simulasi proteus dan Arduino Uno ini terutama pada hasil simulasi yang mendekati hasil sebenarnya, sehingga Proteus ini cocok digunakan dalam perancangan Mikrokontroler sebelum dicoba ke dalam Board Arduino Uno. Selain itu tidak diperlukan membuat rangkaian minimum Arduino Uno, karena Library Arduino Uno yang telah diunduh telah menyertakan Board Arduino Uno secara utuh seperti aslinya.



B.



Menjalankan Program Proteus Sebelum membuat rangkaian elektronika, ada baiknya rancangan rangkaian tersebut



disimulasikan terlebih dahulu salah satunya menggunakan PROTEUS. Dengan simulasi, dapat dengan mudah diketahui apakah rancangan elektronika yang dibuat sudah benar atau masih ada yang kesalahan. Ketika terdapat kesalahan maka dengan mudah ditelusuri bagian atau komponen yang memerlukan perbaikan untuk diuji kembali. Cara menggunakan Proteus dapat dilakukan dengan langkah berikut:  Buka dan jalankan aplikasi Proteus, saat ini versi terbaru adalah versi 8.7.  Akan muncul GUI seperti terlihat pada Gambar IV.1, kemudian klik icon ISIS



Gambar IV.1. Tampilan Awal Proteus



 Akan terlihat tampilan awal ISIS seperti pada Gambar IV.2



Gambar IV.2. Tampilan Awal ISIS



 Kemudian pilih komponen yang akan digunakan.  Pada toolbox sebelah kiri, pilih Component Mode kemudian klik tombol yang berisi huruf P Untuk mengaktifkan Pick Device. Pick Device adalah kotak dialog untuk memilih komponen yang akan kita gunakan.  Akan muncul kotak dialog, isikan komponen yang Anda inginkan pada kolom keywords. misalnya diisi Arduino Uno kemudian pilih salah satu list komponen yang muncul.  Letakkan komponen yang dipilih pada stage.  Selanjutnya silahkan mencari lainnya kemudian letakkan ke stage.  Langkah berikutnya adalah menyambung komponen satu dengan yang lain dengan mengarahkan kursor mendekati ujung komponen, klik mouse kemudian arahkan kursor menuju ujung komponen yang lain.  Lakukan berulang sehingga mendapatkan rangkaian yang betul-betul baik  Setelah menggambar komponen selesai, saatnya menulis programnya  Setelah program selesai ditulis jalankan simulasi. Simulasi akan berjalan setelah menekan tombol PLAY.



Praktikum Mikrokontroler Arduino MODUL 1 OUTPUT Tujuan Setelah melaksanakan praktikum ini, diharapkan mahasiswa mampu: 1. Menggunakan output arduino sebagai aplikasi mikrokontroler 2. Merangkai dan membuat program sederhana berbasis LED 3. Menjalankan simulasi Proteus untuk melihat hasil aplikasi berbasis Arduino 4. Memanfaatkan fungsi tundaan waktu pada aplikasi mikrokontroler berbasis Arduino



Teori Singkat Pada Arduino terdapat dua buah jenis pin, yaitu analog dan digital. Pin digital memiliki dua buah nilai yang dapat ditulis dalam 2 keadaan 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, dapat ditulis nilai dari 0-255 (0V – 5V). Sedangkan untuk read, dapat direpresentasikan nilai dari 0-1023 (0V – 5V dengan setiap kenaikan sebesar 0,005V). Pada proyek pertama ini dilakukan dengan membuat LED berkedip sebagai outputnya. Arduino bekerja pada tegangan 5-12 volt dengan arus yang relatif besar yang sanggup memutuskan LED. Sehingga jika kita ingin menyambungkan LED, maka kita butuh tahanan (resistor) untuk membatasi arus yang masuk ke LED. LED memiliki tegangan kerja (forward voltage/vf) yaitu tegangan yang dibutuhkan LED untuk dapat menyala dengan baik. Ukuran resistor yang dapat dipakai mulai dari 100Ω hingga 1KΩ. Semakin besar nilai resistor maka nyala LED akan semakin redup. Pada Arduino, tegangan yang keluar dari pin-pinnya adalah 0-5 volt, sementara catu daya yang dapat diberikan pada Arduino adalah 5-12 volt. Oleh sebab itu, pemilihan resistor tergantung tegangan mana yang akan kita gunakan. Pada proyek ini juga dilakukan pengujian terhadap board Arduino. Pengujian ini dilakukan untuk menguji fungsi kerja board dapat berfungsi dengan baik atau tidak, selain itu untuk menguji keterkiriman source code yang di upload pada board. Pada pengujian dasar ini dilakukan penyalaan LED yang menempel langsung pada board Arduino. LED tersebut akan menyala dan mati secara bergantian.



1.A.



Rangkaian dan Program Sederhana



Alat dan Bahan  Kit Arduino untuk satu kelompok (max 3 org) 



Arduino dapat diganti dengan development board dengan kualitas di bawahnya, selama masih kompatibel dengan IDE Arduino







Laptop







Breadboard







Resistor 100 Ω







Kabel jumper







LED warna



Rangkaian Percobaan



Gambar 1.1. Percobaan LED



Program Percobaan Sketch 1.1. Contoh Program Arduino /* Blink Turns an LED on for one second, then off for one second, repeatedly. */ // the setup function runs once when you press reset or power the board void setup() { // initialize digital pin LED_BUILTIN as an output. pinMode(LED_BUILTIN, OUTPUT); } // the loop function runs over and over again forever void loop() { digitalWrite(LED_BUILTIN, HIGH); // turn the LED on delay(1000); // wait for a second digitalWrite(LED_BUILTIN, LOW); // turn the LED off delay(1000); // wait for a second }



Langkah Percobaan Sebelum melakukan percobaan, perhatikan baik-baik letak port tegangan dan ground pada board Arduino. Kemudian lakukan langkah berikut: 1) Susun rangkaian pada Gambar 1.1 menggunakan Breadboard dan kabel jumper. 2) Hubungkan board Arduino Uno dengan komputer/laptop menggunakan kabel USB. 3) Pastikan LED menyala, jika tidak, ulangi langkah pertama dengan memeriksa polaritas LED dan koneksi kabel. 4) Bukalah IDE Arduino, kemudian buka file source code example berjudul Blink yang terdapat pada bagian Basic atau ketik program pada Sketch 1.1. 5) Sebelum melakukan project, pada bagian IDE Arduino periksa 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 kabel USB pada board Arduino. 6) Compile menggunakan verify button (tanda ceklist pada IDE Arduino) untuk memeriksa ada atau tidaknya error/kesalahan dalam pengetikan. 7) Upload program ke board arduino dengan cara, pilih File > Upload to I/O board, atau tekan tombol tanda panah pada jendela IDE Arduino. 8) Perhatikan dan catat hasil yang terjadi, apakah sesuai dengan spesifikasi rangkaian Tugas Berikan jawaban dari soal di bawah ini pada Laporan Praktikum. Berikan juga kesimpulan dari percobaan pada subbab akhir di Laporan. 1. Pada akhir percobaan, LED mana saja yang menyala, berikan penjelasan juga bagaimana kondisi menyalanya tiap LED. 2. Jelaskan juga mengapa kondisi menyala LED menjadi seperti akhir percobaan 3. Berapa lama kedipan LED pada board Arduino, jelaskan penyebabnya.



1.B.



Simulasi Proteus



Alat dan Bahan  Kit Arduino untuk satu kelompok (max 3 org) 



Arduino dapat diganti dengan development board dengan kualitas di bawahnya, selama masih kompatibel dengan IDE Arduino.







Laptop







Breadboard







Resistor 100 Ω 8 buah







Kabel jumper







LED warna 8 buah



Rangkaian Percobaan



Gambar 1.2. LED Berkedip



Program Percobaan Sketch 1.2. LED Flasher // Project 1 - LED Flasher int ledPin = 10; // LED connected to digital pin 10 void setup() { pinMode(ledPin, OUTPUT); // sets the digital pin as output } void loop() { digitalWrite(ledPin, HIGH); delay(1000); digitalWrite(ledPin, LOW); delay(1000); }



Langkah Percobaan Sebelum melakukan percobaan, pada bagian IDE Arduino periksa 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 kabel USB pada board Arduino. Kemudian lakukan langkah berikut: 1) Susun rangkaian pada Gambar 1.2 menggunakan Breadboard dan kabel jumper. 2) Hubungkan board Arduino Uno dengan komputer/laptop menggunakan kabel USB. 3) Bukalah IDE Arduino, kemudian ketik program pada Sketch 1.2. 4) Compile dan upload program ke board arduino, perhatikan dan catat hasil yang terjadi. 5) Jika LED berkedip seperti Percobaan 1.A maka maka percobaan yang dilakukan benar.



6) Buka Program Proteus, buat skema rangkaian di atas dan beri nama file sesuai NIM anda. 7) Buka kembali IDE Arduino, perhatikan baris di bagian bawah muncul keterangan lokasi program Sketch 1.2 yang sudah di compile, sorot kemudian copy (Ctrl + C). 8) Kembali ke Proteus. Masukkan programnya ke Arduino Uno dengan cara double klik hingga muncul kotak dialog Edit Component. Pada bagian Program File, paste (Ctrl + V) hingga tertulis lokasi program Arduino Uno yang sudah dibuat sebelumnya. 9) Klik Play dan amati hasilnya, LED akan menyala secara bergantian. Tugas Desain program di bawah ini dan simulasikan menggunakan Proteus. Laporkan hasilnya pada Laporan Praktikum. Berikan juga kesimpulan dari percobaan pada subbab akhir di Laporan. 1. Gambarkan flow chart dari program yang digunakan pada percobaan di atas 2. Buatlah program untuk menyalakan 8 LED pada modul secara bersamaan 3. Modifikasi program di atas sehingga menghasilkan keluaran led (OUTPUT LED DISLAY) sesuai dengan representasi biner dari nomor kelompok Anda.



MODUL 2 INPUT – OUTPUT Tujuan Setelah melaksanakan praktikum ini, diharapkan mahasiswa mampu: 1. Menggunakan Arduino sebagai input dan output 2. Merangkai dan membuat aplikasi input dan output pada Arduino dengan menggunakan IDE



Arduino 3. Menjalankan simulasi Proteus untuk melihat hasil aplikasi input dan output berbasis Arduino



Teori Singkat Pada modul sebelumnya sudah dilakukan cara meng-akses pin sebagai keluaran, maka pada proyek ini akan digabung dengan masukan atau input. Masukan untuk mikrokontroler maupun Arduino dapat berasal dari saklar, sinyal logika, atau rangkaian lain yang memiliki keluaran. Cara yang termudah adalah menggunakan saklar. Prinsip kerja yang sederhana untuk membaca saklar ini nantinya dapat dikembangkan untuk membaca piranti masukan lain seperti sensor.



Saklar geser dan simbolnya.



Saklar tekan dan simbolnya



Gambar 2.1 Saklar



f



c



e



g



Gambar 2.2 Saklar jenis lain: (a) reed switch, (b) rotary switch, (c) key switch (d) DPDT switch, (e) multi switch, (f) tilt switch, (g) micro switch.



Saklar merupakan sebuah piranti masukan mekanis yang berfungsi untuk memberikan data kepada mikrokontroler ataupun Arduino. Terdapat dua macam saklar, yaitu saklar geser dan saklar tekan seperti terlihat pada Gambar 2.1. Jenis saklar yang lain ditunjukkan oleh Gambar 2.2.



Pada Arduino, ketika menjadikan pin INPUT sebagai HIGH, maka secara internal Arduino akan menghubungkan pin tersebut pada pull-up resistor. Untuk lebih jelasnya dapat digambarkan skema pull-up resistor pada Gambar 2.3



Gambar 2.3 Skema pull-up resistor



Jika sebuah pin diset sebagai INPUT, kemudian pin tersebut belum tersambung ke VCC atau GND, maka logika pada pin tersebut masih mengambang (floating). Oleh sebab itu, pin tersebut harus ditentukan apakah akan diberi pull-up resistor (sehingga bernilai HIGH) atau diberi pull-down (sehingga bernilai LOW). Jika pin tersebut diset HIGH, secara internal mikrokontroler pada Arduino pin tersebut akan disambungkan ke VCC dengan pengaman sebuah resistor yang diistilahkan sebagai pullup resistor. Begitu juga jika pin tersebut diset LOW, maka pin tersebut akan dihubungkan ke GND dengan pengaman resistor kemudian diistilahkan dengan pull-down resistor. Secara umum menghubungkan saklar ke mikrokontroler ditunjukkan oleh Gambar 2.4. Dengan cara pertama (a), saklar dapat dihubungkan ke port mikrokontroler yang mempunyai internal pull-up resistor. Pada lembar data disebutkan bila port mikrokontroler digunakan sebagai jalur masukan atau jalur keluaran maka port 1 , port 2, dan port 3 memiliki internal pull-up resistor sedangkan port 0 tidak. Bila saklar pada posisi terbuka maka logika yang dibaca oleh mikrokontroler adalah karena internal pull-up resistor bekerja. Sedangkan saat saklar pada posisi tertutup maka logika yang dibaca oleh mikrokontroler adalah 0. Cara kedua (b) sama seperti cara pertama. Eksternal pull-up resistor yang dipasang memungkinkan untuk menghubungkan saklar ke port 0. Cara ketiga (c) juga dapat dihubungkan ke port manapun dengan logika kerja yang berkebalikan dengan cara pertama maupun cara kedua. Pada cara ketiga terdapat kekurangan yaitu bila dihubungkan ke port yang mempunyai internal pull-up resistor maka akan selalu timbul arus yang mengalir dari port ke ground.



(a)



(b)



(c)



Gambar 2.4 Menghubungkan saklar ke mikokontroler



Saat menekan atau menggeser saklar, pulsa yang dihasilkan tidak berbentuk persegi yang halus tetapi mempunyai sedikit getaran. Ini disebabkan karena saklar adalah peralatan mekanis dimana pelat-pelat logamnya bergetar sebentar setelah bertabrakan atau terlepas. Perhatikan Gambar 2.5. Getaran tersebut dikenal dengan istilah efek bouncing. Efek bouncing ini dapat mengganggu kinerja mikrokontroler saat mengambil nilai logika saklar. Getaran yang terjadi dapat menimbulkan nilai logika saklar yang berubah dengan cepat.



Gambar 2.5 Efek bouncing yang muncul pada saklar mekanis



2.A.



Membaca Saklar



Alat dan Bahan  Kit Arduino untuk satu kelompok (max 3 org) 



Arduino dapat diganti dengan development board dengan kualitas di bawahnya, selama masih kompatibel dengan IDE Arduino







Laptop







Breadboard







Resistor 1 kΩ







Kabel jumper







LED warna



Rangkaian Percobaan



(a)



(b)



Gambar 2.6. Pengendalian LED dengan Push Button



Program Percobaan Sketch 2.1.



Mengendalikan LED dengan push button



/* Button Turns on and off a light emitting diode(LED) when pressing a pushbutton attached to pin 7. */ // constants won't change. They're used here to set pin numbers: const int buttonPin = 7; // the number of the pushbutton pin // variables will change: int buttonState = 0;



// variable of pushbutton status



void setup() { // initialize the LED pin as an output: pinMode(LED_BUILTIN, OUTPUT); // initialize the pushbutton pin as an input: pinMode(buttonPin, INPUT); } void loop() { // read the state of the pushbutton value: buttonState = digitalRead(buttonPin); // check if the pushbutton is pressed. if (buttonState == HIGH) { // turn LED off:



digitalWrite(LED_BUILTIN, LOW); } else { // turn LED on: digitalWrite(LED_BUILTIN, HIGH); } }



Sketch 2.2. Modifikasi Aplikasi Pengendalian LED dengan push button /* Button Turns on and off a light emitting diode(LED) when pressing a pushbutton attached to pin 7. */ // constants won't change. They're used here to set pin numbers: const int buttonPin = 7; // the number of the pushbutton pin // variables will change: int buttonState = 0;



// variable of pushbutton status



void setup() { // initialize the LED pin as an output: pinMode(LED_BUILTIN, OUTPUT); // initialize the pushbutton pin as an input: pinMode(buttonPin, INPUT); } void loop() { // read the state of the pushbutton value: buttonState = digitalRead(buttonPin); // check if the pushbutton is pressed. if (buttonState == HIGH) { // turn LED on: digitalWrite(LED_BUILTIN,HIGH); } else { // turn LED off: digitalWrite(LED_BUILTIN,LOW); } }



Langkah Percobaan Sebelum melakukan percobaan, perhatikan baik-baik letak port tegangan dan ground pada board Arduino. Kemudian lakukan langkah berikut: 1) Susun rangkaian pada Gambar 2.6(a) menggunakan Breadboard dan kabel jumper. 2) Hubungkan board Arduino Uno dengan komputer/laptop menggunakan kabel USB. 3) Bukalah IDE Arduino, kemudian ketik program pada Error! Reference source not found.. 4) Pada IDE Arduino periksa 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 kabel USB pada board Arduino. 5) Compile dan upload program ke board arduino 6) Tekan push button, jika LED menyala maka percobaan yang dilakukan benar, jika tidak, ulangi langkah pertama dengan memeriksa koneksi push button dan kabel. 7) Ubah rangkaian hingga seperti pada Gambar 2.6(b) 8) Tekan kembali push button, perhatikan dan catat hasil yang terjadi. 9) Kembali ke IDE Arduino, kemudian ketik program pada Sketch 2.2. 10) Compile dan upload program ke board arduino. 11) Tekan push button, jika LED menyala maka percobaan yang dilakukan benar. Tugas Gambarkan flow chart dari program yang digunakan pada percobaan di atas dan berikan jawaban dari soal di bawah ini pada Laporan Praktikum. Berikan juga kesimpulan dari percobaan pada subbab akhir di Laporan. 1. Pada percobaan pertama dengan sketch kedua, saat kapan LED menyala? Jelaskan juga mengapa kondisi menyala LED menjadi seperti itu? 2. Bagaimana cara menyalakan LED jika menggunakan rangkaian kedua dan sketch pertama? 3. Buatlah simulasi Proteus untuk kedua percobaan di atas



2.B.



Pengendalian LED dengan Saklar



Alat dan Bahan  Kit Arduino untuk satu kelompok (max 3 org) 



Arduino dapat diganti dengan development board dengan kualitas di bawahnya, selama masih kompatibel dengan IDE Arduino.







Laptop







Breadboard







Resistor 10 kΩ 3 buah







Kabel jumper







LED RGB 1 buah atau LED Merah, Hijau, Biru masing-masing 1 buah



Rangkaian Percobaan



Gambar 2.7 Rangkaian Rangkaian Pengendalian LED RGB dengan Push Button



Program Percobaan Sketch 2.3 Pengendalian LED RGB dengan push button /* 3 Button Turns on and off a RGB light emitting diode(LED) when pressing pushbuttons attached to pin A0, A2, and A4.



*/ // variables will change: int buttonState1 = 0; int buttonState2 = 0; int buttonState3 = 0;



// variable of pushbutton status



void setup() { // initialize the LED pin as an output: pinMode(7, OUTPUT); pinMode(10, OUTPUT); pinMode(13, OUTPUT); // initialize the pushbutton pin as an input: pinMode(A0, INPUT); pinMode(A2, INPUT); pinMode(A4, INPUT); } void loop() { // read the state of the pushbutton1 value: buttonState1 = digitalRead(A0); // check if the pushbutton1 is pressed. if (buttonState1 == HIGH) { // turn LED on: digitalWrite(7,HIGH); } else { // turn LED off: digitalWrite(7,LOW); } // read the state of the pushbutton2 value: buttonState2 = digitalRead(A2); // check if the pushbutton2 is pressed. if (buttonState2 == HIGH) { // turn LED on: digitalWrite(10,HIGH); } else { // turn LED off: digitalWrite(10,LOW); } // read the state of the pushbutton3 value: buttonState3 = digitalRead(A4);



}



// check if the pushbutton3 is pressed. if (buttonState3 == HIGH) { // turn LED on: digitalWrite(13,HIGH); } else { // turn LED off: digitalWrite(13,LOW); }



Langkah Percobaan Sebelum melakukan percobaan, pada bagian IDE Arduino periksa 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 kabel USB pada board Arduino. Kemudian lakukan langkah berikut: 1) Hubungkan board Arduino Uno dengan komputer/laptop menggunakan kabel USB. 2) Buka Program Proteus, buat skema rangkaian pada Gambar 2.7 dan beri nama file sesuai NIM anda. 3) Bukalah IDE Arduino, kemudian ketik program pada Sketch 2.3. 4) Compile program, perhatikan baris di bagian bawah muncul keterangan lokasi program Sketch 2.3 yang sudah di compile, sorot kemudian copy (Ctrl + C). 5) Kembali ke Proteus. Masukkan programnya ke Arduino Uno dengan cara double klik hingga muncul kotak dialog Edit Component. Pada bagian Program File, paste (Ctrl + V) hingga tertulis lokasi program Arduino Uno yang sudah dibuat sebelumnya. 6) Klik Play dan amati hasilnya, LED akan menyala jika tiap push button ditekan. 7) Susun rangkaian pada Gambar 2.7 menggunakan Breadboard dan kabel jumper. 8) Kembali ke IDE Arduino, kemudian upload program ke board arduino. 9) Tekan tiap push button, jika LED menyala seperti pada simulasi Proteus, maka percobaan yang dilakukan benar. Tugas Gambarkan flow chart dari program yang digunakan pada percobaan di atas dan desain program sesuai ketentuan di bawah ini dan simulasikan menggunakan Proteus. Laporkan hasilnya pada Laporan Praktikum. Berikan juga kesimpulan dari percobaan pada subbab akhir di Laporan 1. Buat program untuk menyalakan LED RGB dengan kondisi sebagai berikut:  Ketika push button 1 ditekan, hanya cahaya merah yang menyala  Ketika push button 2 ditekan, 2 warna cahaya akan menyala  Ketika push button 3 ditekan, seluruh warna cahaya akan menyala 2. Modifikasi program di atas 3 buah LED sehingga menghasilkan keluaran led (OUTPUT LED DISLAY) seperti halnya lampu lalu lintas yang berada di perempatan jalan, dengan fungsi push button sebagai saklar pengaktifan dan penon-aktifan lampu merah.



MODUL 3 ITERASI LOOP Tujuan Setelah melaksanakan praktikum ini, diharapkan mahasiswa mampu: 1. Membuat program dengan teknik loop dalam arduino untuk aplikasi running LED 2. Merangkai rangkaian aplikasi running LED dengan arduino. 3.



Teori Singkat Modul sebelumnya dilakukan pengaturan untuk membuat LED berkedip, maka modul kali ini akan menekankan pada pemahaman tentang bahasa pemrograman dan fungsi-fungsi logika yang umum dipakai. Implementasi dari pembelajaran fungsi logika tersebut akan diterapkan pada beberapa model Animasi LED seperti running LED atau yang lainnya. Kerja mikrokontroler bergantung dari software berupa program yang telah ditanam di dalam memorinya. Software mikrokontroler berupa rangkaian instruksi yang diprogram sesuai keinginan programmer. Tiap keluarga mikrokontroler mempunyai instruction set (seperangkat instruksi) berupa bahasa assembler yang berbeda-beda. Bahasa assembler merupakan bahasa yang langsung mewakili opcode yang dimilki oleh mikrokontroler. Biasa disebut bahasa tingkat rendah karena perbendaharaan katanya masih jauh dari bahasa komunikasi manusia dan hanya menangani operasi yang sederhana. Oleh karena itu penggunaan bahasa assembler kurang begitu populer dan digantikan dengan bahasa pemrograman tingkat tinggi seperti Basic, Pascal, C, dan sebagainya. Bahasa C termasuk bahasa tingkat tinggi karena instruksinya mudah dipahami. Saat ini telah banyak mikrokontroler yang memiliki Compiler bahasa C. Compiler inilah yang menerjemahkan bahasa C menjadi object code untuk di-download ke ROM mikrokontroler. Selain menulis secara langsung, pemrograman dalam bahasa C juga dapat dilakukan menggunakan aplikasi IDE (Integrated Development Environmet) yaitu suatu program aplikasi yang digunakan untuk menuliskan program beserta pengujiannya. Aplikasi ini akan bertindak sebagai software C-cross Compiler yang dapat digunakan untuk membuat, meng- compile dan mendownload program dalam bahasa C. Sebagaimana diketahui pengembangan sebuah sistem menggunakan mikrokontroler platform Arduino dapat dilakukan dengan menggunakan aplikasi bawaan dari Arduino. Software Arduino IDE merupakan perangkat lunak yang memudahkan dalam mengembangkan aplikasi mikrokontroler mulai dari menuliskan source program, kompilasi, upload hasil kompilasi, dan uji coba secara terminal serial. Arduino dapat dijalankan di komputer dengan



berbagai macam platform karena didukung atau berbasis Java. Source program yang dibuat untuk aplikasi mikrokontroler adalah bahasa C/C++ dan dapat digabungkan dengan assembler. Secara umum program dalam bahasa apapun seperti halnya pada Arduino IDE memiliki elemen dasar pemrograman yang kurang lebih sama seperti aritmetika dan logika, instruksi kendali, serta algoritma program. Aritmetika dan Logika Operasi yang dilakukan dalam program tidak akan lepas dari operasi aritmetika dan logika. Hampir semua program selalu melibatkan operator-operator aritmetika dan logika. Operator aritmetika berguna untuk mengerjakan fungsi-fungsi aritmetika dasar. Beberapa operator matematika yang dibutuhkan dalam bahasa pemrograman dapat dilihat pada Tabel 3.1. Tabel 3.1 Operator Aritmetika



Operator



Arti



=



Operator assignment, untuk memberi nilai pada variabel



+



Operator penambahan



-



Operator pengurangan



*



Operator perkalian



/



Operator pembagian. Sebagai catatan:



%



Operator modulo (sisa pembagian). Misal:



++



Increment (penambahan 1 pada nilai variabel)



--



Decrement (pengurangan 1 pada nilai variabel) Operator logika digunakan untuk mendapatkan hasil perbandingan dari 2 nilai, hasil



keluarannya berupa nilai logika seperti terlihat pada Tabel 3.2. Tabel 3.2 Operator logika



Operator Arti ==



Sama dengan



!=



Tidak sama dengan








Lebih besar



=



Lebih besar atau sama dengan



&&



Logika AND



||



Logika OR



!



Logika NOT



Instruksi Kendali Instruksi kendali merupakan instruksi yang berkaitan dengan pengendalian aliran program. Terdapat 2 macam instruksi kendali pada pemrograman menggunakan IDE Arduino yaitu instruksi percabangan dan perulangan. Instruksi percabangan biasanya digunakan dalam proses pengambilan keputusan. Instruksi percabangan akan mengecek kondisi suatu pernyataan, untuk dicari nilai kebenarannya dan bertindak sesuai hasil kebenaran tersebut. Perulangan atau looping berfungsi untuk melakukan perulangan eksekusi instruksi pada suatu baris kode sebanyak n kali atau selama kondisi tertentu. Jika kondisi tidak terpenuhi, maka proses perulangan akan dihentikan. Alur program seringkali membutuhkan percabangan baik itu bersyarat ataupun tanpa syarat. Percabangan bersyarat meliputi proses seleksi atau pengujian kondisi dari suatu masukan untuk menentukan alur program berikutnya. Instruksi percabangan dalam pemrograman IDE Arduino dikenal sebagai perintah if. Perintah if memiliki beberapa kombinasi, bisa if saja, if-else if-else if-else, dan seterusnya. Semakin kompleks tentu logika yang dipakai akan tampak semakin rumit. Perintah if akan mengeksekusi blok kode antara tanda kurung jika kondisi dalam pernyataan if secara logis bernilai benar (true). Sintaks perintah if dapat ditulis sebagai berikut: if(kondisi) //jika kondisi benar laksanakan pernyataan dibawahnya { pernyataan1; pernyataan2; ... }



Pada dasarnya if-else merupakan pengembangan dari if. else berarti kondisi yang tidak sesuai dengan kondisi dalam if. Dengan kata lain, else artinya “jika tidak”. Sintaks perintah if-else dapat ditulis sebagai berikut: if(kondisi){ pernyataan1; } else { pernyataan2; }



Instruksi Perulangan Perulangan atau looping berfungsi untuk melakukan perulangan eksekusi instruksi pada suatu baris kode sebanyak n kali atau selama kondisi tertentu. Jika kondisi tidak terpenuhi, maka proses perulangan akan dihentikan. Terdapat 3 instruksi yang termasuk dalam instruksi kendali yaitu while, do-while, dan for. Setiap instruksi tersebut memiliki karakteristik tersendiri.



Perintah while merupakan perintah untuk melakukan perulangan berdasarkan suatu kondisi, jadi banyaknya perulangan tidak bisa ditentukan dengan pasti. Dalam while seakan ada pengecekan kondisi seperti perintah if untuk melakukan perulangan. Bentuk umum dari perintah while yaitu : while(kondisi){ // eksekusi kode pernyataan1; pernyataan2; }



Instruksi perulangan while, akan melakukan perulangan terhadap blok kode, selama kondisi bernilai true, atau benar. Jika kondisi sesuai, maka perintah atau source code yang ada dalam kurung kurawal “{}” tersebut akan dieksekusi. Untuk lebih memahami tentang perintah while,



Berbeda dengan instruksi while, instruksi do-while akan menjalankan atau mengeksekusi blok kode minimal satu kali di awal, dan kemudian eksekusi selanjutnya bergantung kondisi dalam while. Berikut sintaks instruksi do-while: do { // eksekusi kode pernyataan1; pernyataan2;



} while(kondisi) Instruksi for



merupakan instruksi perulangan dimana jumlah perulangan telah



ditetapkan/diketahui terlebih dahulu. Pada awal pendeklarasian instruksi for, biasanya diikuti dengan operator tertentu untuk mengubah nilai variabel (nilai awalan) agar proses loop dapat terhenti sesuai target untuk menghindari for tanpa batas. Berikut sintaks perulangan for: for (inisialisasi;kondisi;penambahan){ // eksekusi kode pernyataan1; pernyataan2; }



Inisialisasi berisi tentang kondisi awal, biasanya inisialisasi suatu variabel atau data (misal, a=0). Sedangkan penambahan merupakan perubahan yang akan terjadi pada variabel pada statemen awal (misal a=a+1). Sedangkan kondisi merupakan kondisi dimana perulangan akan terjadi, ketika kondisi sudah tidak sesuai, maka perulangan akan berhenti. Pernyataan penambahan a=a+1 dapat diganti menjadi a++ dengan maksud yang sama. Selain a++, ada juga ++a, a--, dan --a. Penulisan a-- sama dengan a++, hanya saja a-- berarti a=a-1, atau a akan berkurang 1 terus-menerus selama perulangan.



Penempatan ++ di depan atau di belakang i berarri bahwa : jika ++ nya ada di belang, maka proses penambahannya dilakukan setelah blok kode dalam for dijalankan. Tapi jika ++ nya ada di depan, maka proses penambahan akan dilakukan sebelum proses dijalankan. Array Array merupakan variabel yang bisa menampung banyak data, masing-masing data bisa diambil dengan alamat indeks (posisi) data dalam Array tersebut. Alamat indeks pada array standarnya adalah angka integer yang diawali dari angka 0. Jadi, jika kita punya data 5 dalam variabel Array, maka data pertama pada alamat indeks ke-0, data ke-2 pada alamat indeks ke-1, dan data ke-5 pada alamat indeks ke-4.



3.A.



Perintah IF dan IF - ELSE



Alat dan Bahan  Kit Arduino untuk satu kelompok (max 3 org) 



Arduino dapat diganti dengan development board dengan kualitas di bawahnya, selama masih kompatibel dengan IDE Arduino







Laptop







Breadboard







Resistor 1 kΩ







Kabel jumper







LED warna



Rangkaian Percobaan



Gambar 3.1. Modifikasi timeDelay



Program Percobaan Sketch 3.1. Modifikasi timeDelay /* Turns on and off a light emitting diode (LED) connected to a digital pin, with using timedelaymodification */ // constants won't change. They're used here to set pin numbers: const int ledPin = 10; // LED connected to digital pin 10 // variables will change: int timeDelay = 1000; // time delay inisialization 1000 |1s void setup() { // initialize the LED pin as an output: pinMode(ledPin, OUTPUT); } void loop() { // timeDelay deacrement: timeDelay = timeDelay - 100; // reset timeDelay when zero or negatif. if (timeDelay threshold) { digitalWrite(ledPin, HIGH); } else { digitalWrite(ledPin, LOW); } }



Sketch 4.2. LED Berkedip Dengan Potensiometer /* Analog Input Demonstrates analog input by reading an analog sensor on analog pin 3 and turning on and off a light emitting diode(LED) connected to digital pin 13. The amount of time the LED will be on and off depends on the value obtained by analogRead().



The circuit: - potentiometer center pin of the potentiometer to the analog input 3 one side pin (either one) to ground the other side pin to +5V - LED anode (long leg) attached to digital output 13 cathode (short leg) attached to ground - Note: because most Arduinos have a built-in LED attached to pin 13 on the board, the LED is optional. created by David Cuartielles modified 30 Aug 2011 By Tom Igoe This example code is in the public domain. http://www.arduino.cc/en/Tutorial/AnalogInput */ int sensorPin = A0; int ledPin = 13; int sensorValue = 0; sensor



// select the input pin for the potentiometer // select the pin for the LED // variable to store the value coming from the



void setup() { // declare the ledPin as an OUTPUT: pinMode(ledPin, OUTPUT); } void loop() { // read the value from the sensor: sensorValue = analogRead(sensorPin); // turn the ledPin on digitalWrite(ledPin, HIGH); // stop the program for milliseconds: delay(sensorValue); // turn the ledPin off: digitalWrite(ledPin, LOW); // stop the program for for milliseconds: delay(sensorValue); }



Sketch 4.3. LED Berkedip Responsif Dengan Potensiometer /* Analog Input without Delay Demonstrates analog input by reading an analog sensor and turning on and off a light emitting diode(LED) connected to digital pin without using the delay() function. This means that other code can run at



the same time without being interrupted by the LED code. The amount of time the LED will be on and off depends on the value obtained by analogRead(). The circuit: - potentiometer center pin of the potentiometer to the analog input 3 one side pin (either one) to ground the other side pin to +5V - LED anode (long leg) attached to digital output 13 cathode (short leg) attached to ground - Note: because most Arduinos have a built-in LED attached to pin 13 on the board, the LED is optional. */ // constants won't change. Used here to set a pin number: int sensorPin = A0; // select the input pin for the potentiometer int ledPin = 13; // select the pin for the LED // Variables will change: int ledState = LOW; // ledState used to set the LED int sensorValue = 0; // variable to store the value coming from the sensor // Generally, you should use "unsigned long" for variables that hold time // The value will quickly become too large for an int to store unsigned long previousMillis=0;// will store last time LED was updated void setup() { // set the digital pin as output: pinMode(ledPin, OUTPUT); } void loop() { // read the value from the sensor: sensorValue = analogRead(sensorPin); // here is where you'd put code that needs to be running all the time. // check to see if it's time to blink the LED; that is, if the difference // between the current time and last time you blinked the LED is bigger than // the interval at which you want to blink the LED. unsigned long currentMillis = millis(); if (currentMillis - previousMillis >= sensorValue) {



// save the last time you blinked the LED previousMillis = currentMillis; // if the LED is off turn it on and vice-versa: if (ledState == LOW) { ledState = HIGH; } else { ledState = LOW; } // set the LED with the ledState of the variable: digitalWrite(ledPin, ledState); } }



Langkah Percobaan Sebelum melakukan percobaan, perhatikan baik-baik letak port tegangan dan ground pada board Arduino. Kemudian lakukan langkah berikut: 1) Susun rangkaian pada Gambar 4.3 menggunakan Breadboard dan kabel jumper. 2) Hubungkan board Arduino Uno dengan komputer/laptop menggunakan kabel USB. 3) Bukalah IDE Arduino, kemudian ketik program pada Error! Reference source not found.. 4) Pada IDE Arduino periksa 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 kabel USB pada board Arduino. 5) Compile dan upload program ke board arduino 6) Putar potensiometer hingga LED menyala, maka percobaan yang dilakukan benar, jika tidak, ulangi langkah pertama dengan memeriksa program dan koneksitas 7) Kembali ke IDE Arduino, kemudian ketik program pada Error! Reference source not found.. 8) Compile dan upload program ke board arduino. 9) Putar potensiometer, jika LED berkedip maka percobaan yang dilakukan benar, jika tidak, ulangi langkah pertama dengan memeriksa koneksi kabel. Perhatikan dan catat hasil yang terjadi. 10) Kembali ke IDE Arduino, kemudian ketik program pada Sketch 4.3. 11) Compile dan upload program ke board arduino. 12) Putar potensiometer, jika LED berkedip maka percobaan yang dilakukan benar, jika tidak, ulangi langkah pertama dengan memeriksa koneksi kabel. Perhatikan dan catat hasil yang terjadi



Tugas Berikan jawaban dari soal di bawah ini pada Laporan Praktikum. Berikan juga kesimpulan dari percobaan pada subbab akhir di Laporan. 1. Pada percobaan pertama, saat kapan LED menyala? Jelaskan juga mengapa kondisi menyala LED seperti itu? 2. Pada percobaan kedua, bagaimana kondisi nyala LED? Jelaskan juga mengapa kondisi menyala LED menjadi seperti itu? 3. Jelaskan perbedaan hasil pemrograman pada percobaan kedua denga ketiga 4. Dari percobaan diatas buat analisa jalannya sistem berserta analisa perbaris tiap line program. 5. Buatlah program dengan menggunakan potensiometer dan 4 LED dimana terdapat 4 kondisi yaitu : 1) Led Mati semua, 2) Led hidup secara berkedip-kedip, 3)Led berjalan dari kiri ke kanan, dan 4) Led berjalan dari kanan ke kiri. Simulasikan menggunakan Proteus.



4.B.



Output Analog



Alat dan Bahan  Kit Arduino untuk satu kelompok (max 3 org) 



Arduino dapat diganti dengan development board dengan kualitas di bawahnya, selama masih kompatibel dengan IDE Arduino







Laptop







Breadboard







Resistor 1 kΩ







Kabel jumper







LED warna



Rangkaian Percobaan Sama seperti Percobaan 4.A.



Program Percobaan Sketch 4.4. Fading /*



Fading



This example shows how to fade an LED using the analogWrite() function. The circuit:



- LED attached from digital pin 9 to ground. This example code is in the public domain. http://www.arduino.cc/en/Tutorial/Fading */ int ledPin = 9;



// LED connected to digital pin 9



void setup() { // declare pin 9 to be an output: pinMode(led, OUTPUT); } void loop() { // fade in from min to max in increments of 5 points: for (int fadeValue = 0 ; fadeValue = 0; fadeValue -= 5) { // sets the value (range from 0 to 255): analogWrite(ledPin, fadeValue); // wait for 30 milliseconds to see the dimming effect delay(30); }



Sketch 4.5. Mengatur kecerahan LED dengan potensiometer /* Analog input, analog output, serial output Reads an analog input pin, maps the result to a range from 0 to 255 and uses the result to set the pulse width modulation (PWM) of an output pin. Also prints the results to the Serial Monitor. The circuit: - potentiometer connected to analog pin 3. Center pin of the potentiometer goes to the analog pin. side pins of the potentiometer go to +5V and ground - LED connected from digital pin 9 to ground This example code is in the public domain. */



http://www.arduino.cc/en/Tutorial/AnalogInOutSerial



// These constants won't change. They're used to give names to the pins used: const int analogInPin = A0; // Analog input pin that the potentiometer is attached to const int analogOutPin = 9; // Analog output pin that the LED is



attached to int sensorValue = 0; int outputValue = 0;



// value read from the pot // value output to the PWM (analog out)



void setup() { // initialize serial communications at 9600 bps: Serial.begin(9600); } void loop() { // read the analog in value: sensorValue = analogRead(analogInPin); // map it to the range of the analog out: outputValue = map(sensorValue, 0, 1023, 0, 255); // change the analog out value: analogWrite(analogOutPin, outputValue); // print the results to the Serial Monitor: Serial.print("sensor = "); Serial.print(sensorValue); Serial.print("\t output = "); Serial.println(outputValue); // wait 2 milliseconds before the next loop for the analog-todigital // converter to settle after the last reading: delay(2); }



Langkah Percobaan Sebelum melakukan percobaan, perhatikan baik-baik letak port tegangan dan ground pada board Arduino. Kemudian lakukan langkah berikut: 1) Susun rangkaian pada Gambar 4.1 menggunakan Breadboard dan kabel jumper. 2) Hubungkan board Arduino Uno dengan komputer/laptop menggunakan kabel USB. 3) Bukalah IDE Arduino, kemudian ketik program pada Sketch 4.4. 4) Pada IDE Arduino periksa 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 kabel USB pada board Arduino. 5) Compile dan upload program ke board arduino 6) Jika kecerahan LED berubah maka percobaan yang dilakukan benar, jika tidak, ulangi langkah pertama dengan memeriksa program dan koneksitas. Catat hasil yang terjadi. 7) Kembali ke IDE Arduino, kemudian ketik program pada Sketch 4.5. 8) Compile dan upload program ke board arduino. 9) Lalu buka serial port melalui Tools  Serial Monitor. 10) Putar potensiometer hingga kecerahan LED berubah, maka percobaan yang dilakukan benar, jika tidak, ulangi langkah pertama dengan memeriksa program dan koneksitas.



Perhatikan dan catat hasil yang terjadi Tugas Berikan jawaban dari soal di bawah ini pada Laporan Praktikum. Berikan juga kesimpulan dari percobaan pada subbab akhir di Laporan. 1. Pada percobaan pertama, saat kapan LED menyala? Jelaskan juga mengapa kondisi menyala LED seperti itu? 2. Pada percobaan kedua, bagaimana kondisi nyala LED? Jelaskan juga mengapa kondisi menyala LED menjadi seperti itu? 3. Dari percobaan diatas buat analisa jalannya sistem berserta analisa perbaris tiap line program. 5. Buatlah program dengan menggunakan potensiometer, 2 buah push-button dan 4 LED dimana terdapat 4 kondisi yaitu : 1) Led Mati semua, 2) Led hidup secara berkedipkedip, 3)Led berjalan dari kiri ke kanan, dan 4) Led berjalan dari kanan ke kiri. Intensitas cahaya LED dapat diatur dengan kedua push-button. Tampilkan hasil program pada rangkaian Arduino dan simulasikan menggunakan Proteus.



MODUL 5 KOMUNIKASI SERIAL Tujuan Setelah melaksanakan praktikum ini, diharapkan mahasiswa mampu: 1. Menggunakan komunikasi serial pada arduino 2. Membuat program sederhana pengendalian input/output memanfaatkan komunikasi serial. 3. Dapat membuat aplikasi pengaturan jarak jauh.



Teori Singkat Kemampuan untuk melakukan komunikasi data antar perangkat elektronik merupakan hal yang sangat penting yang harus dimikili oleh sebuah mikrokontroler. Mikrokontroler harus sering bertukar data dengan mikrokontroler atau perangkat periferal lainnya. Perlu diperhatikan bahwa kemampuan komunikasi tersebut tidak boleh sampai mengganggu fungsi dari mikrokontroler itu sendiri. Data dapat dipertukarkan dengan menggunakan teknik paralel atau serial. Dengan teknik paralel, seluruh byte data biasanya dikirim secara bersamaan dari perangkat pengiriman ke perangkat penerima. Sistem ini cukup efisien dilakukan dipandang dari sudut pandang waktu, dimana membutuhkan delapan jalur terpisah untuk transfer data. Sedangkan komunikasi serial adalah sebuah komunikasi yang terjadi dengan mengirimkan data per-bit secara berurutan dan bergantian. Dari segi waktu sistem ini terlihat tidak efisien. Namun komunikasi ini hanya membutuhkan satu jalur atau kabel sehingga jauh lebih sedikit dibandingkan dengan komunikasi paralel karena hanya satu bit data yang dikirimkan melalui seuntai jalur atau kabel pada waktu tertentu secara berurutan. Manfaat paling dasar adanya komunikasi serial adalah memungkinkan terjadinya pertukaran informasi antara papan arduino dan komputer. Hal ini memungkinkan untuk dapat memantau status pekerjaan yang sedang dilakukan melalui komputer. Sebagai contoh, data sensor dapat diuji tanpa harus menggunakan tampilan dari LCD tetapi langsung diamati menggunakan komputer. Dengan demikian pengujian rangkaian sensor dan perkiraan tercapainya hasil akhir yang diharapkan dapat langsung diamati tanpa harus merangkai LCD display dan memprogramnya kembali berdasrkan data dari sensor yang sedang digunakan.



Komunikasi serial pada Arduino dapat dilakukan secara dua arah. Artinya baik komputer yang kita gunakan maupun papan Arduino yang sedang kita program dapat saling berkomunikasi dan saling mengirim maupun menerima informasi. Mikrokontroler ATmega328 yang terdapat pada papan Arduino dilengkapi dengan sejumlah sistem komunikasi serial yang berbeda seperti serial USART, antarmuka periferal serial atau serial peripheral interface (SPI),



dan Two-wire Serial Interface (TWI). Sistem-sistem ini memiliki perbedaan dalam pengiriman serial data. Serial USART Serial USART (Universal Synchronous dan Asynchronous Receiver and Transmitter) melakukan komunikasi full duplex (dua arah) antara penerima dan pengirim. Hal ini dilakukan dengan melengkapi ATmega328 dengan perangkat keras lain sebagai pengirim dan penerima. USART biasanya digunakan sebagai komunikasi asynchronous. Artinya, tidak ada kesamaan clock antara pengirim dan penerima agar data tetap sinkron satu sama lain. Untuk mempertahankan sinkronisasi antara pengirim dan penerima, bit-bit awal dan akhir kerangka digunakan di awal dan akhir setiap byte data dalam urutan pengiriman seperti yang terdapat USART Atmel. Generator clock USART menyediakan sumber clock sistem USART dan mengatur Baud rate USART. Baud rate berasal dari sumber clock sistem mikrokontroler. Sistem clock terbagi atas register Baud rate USART (USART Baud Rate Register/UBRR) H dan L dan beberapa bagian tambahan untuk mengatur Baud rate. Pada mode normal asynchronous, Baud rate ditentukan menggunakan persamaan berikut: 𝐵𝑎𝑢𝑑 𝑟𝑎𝑡𝑒 =



𝑓𝑟𝑒𝑘𝑢𝑒𝑛𝑠𝑖 𝑐𝑙𝑜𝑐𝑘 𝑠𝑖𝑠𝑡𝑒𝑚 16 (𝑈𝐵𝑅𝑅 + 1)



Dimana UBRR adalah isi register UBRRH dan UBRRL (0 hingga 4095). Penyelesaian untuk UBRR menghasilkan: 𝑈𝐵𝑅𝑅 =



𝑓𝑟𝑒𝑘𝑢𝑒𝑛𝑠𝑖 𝑐𝑙𝑜𝑐𝑘 𝑠𝑖𝑠𝑡𝑒𝑚 −1 16 × 𝐵𝑎𝑢𝑑 𝑟𝑎𝑡𝑒



Pengirim USART terdiri dari suatu register pemindah pengiriman (Transmit Shift Register). Data yang akan dikirim dimuat ke dalam Transmit Shift Register melalui USART I/O Data Register (UDR). Bit kerangka mulai dan berhenti secara otomatis ditambahkan ke data pada Transmit Shift Register. Paritas secara otomatis dihitung dan ditambahkan ke Transmit Shift Register. Data kemudian dipindahkan keluar Transmit Shift Register melalui pin TxD setiap bitnya pada Baud rate yang ditetapkan. Pengirim USART dilengkapi dengan dua status flag: UDRE dan TXC. Flag USART Data Register Empty (UDRE) menentukan saat buffer pengirim kosong yang menandakan siap untuk menerima data baru. Bit ini harus dituliskan menjadi nilai nol saat penulisan USART Control and Status Register A (UCSRA). Bit UDRE dibersihkan dengan penulisan ke USART I/O Data Register (UDR). Bit flag Transmit Complete (TXC) diatur ke logika satu ketika seluruh kerangka di Transmit Shift Register telah dipindah keluar dan tidak ada data baru di buffer pengirim. Bit TXC di reset dengan menulis logika 1.



Penerima USART hampir identik dengan Transmitter USART dengan arah aliran data dibalik. Data diterima tiap bit melalui pin RxD pada Baud Rate yang ditentukan. Penerima USART dilengkapi dengan flag Receive Complete (RXC). Flag RXC adalah berlogika satu ketika data yang belum dibaca berada pada buffer penerima. Operasi Dan Pemrograman Sistem Menggunakan Fitur Lingkungan Pengembangan Arduino Lingkungan Pengembangan Arduino dilengkapi dengan fitur komunikasi USART bawaan. Pengiriman (TX) dan penerimaan (RX) USART dilakukan melalui pin DIGITAL 1 (TX) dan 0 (RX) ) Arduino Uno ke perangkat input, perangkat output, atau mikrokontroler lain yang mendukung USART. Arduino Uno juga dapat berkomunikasi dengan komputer melalui kabel USB. Perintah Arduino Development Environment untuk melakukan komunikasi USART disediakan pada Tabel 5.1. Tabel 5.1. Perintah USART pada pemrograman Arduino



Perintah Serial.begin ()



Deskripsi Mengaturl baud rate



Serial.end ()



Menonaktifkan komunikasi serial. Memungkinkan TX Digital (1) dan RX Digital (0) digunakan untuk input dan output digital.



Serial.available ()



Menentukan berapa banyak byte yang telah diterima dan disimpan dalam buffer 128 byte.



Serial.read ()



Membaca data serial yang masuk.



Serial.flush ()



Menghapus buffer penerimaan data serial.



Serial.print ()



Mencetak data ke port serial sebagai teks ASCII. Pilihan parameter kedua menentukan format pencetakan (BYTE, BIN, OCT, DEC, HEX).



Serial.println ()



Mencetak data ke port serial sebagai teks ASCII diikuti perintah return (enter)



Serial.write ()



Menulis data biner ke port serial. Satu byte, serangkaian byte, atau array byte dapat dikirim.



Antarmuka Peripheral Serial (SPI) Antarmuka Peripheral Serial atau Serial Peripheral Interface (SPI) pada ATmega328 juga menyediakan komunikasi serial dua arah antara pengirim dan penerima. Dalam sistem SPI, pengirim dan penerima memiliki kesamaan sumber clock. Hal ini membutuhkan jalur clock



tambahan antara pengirim dan penerima namun memungkinkan tingkat pengirim data yang lebih tinggi dibandingkan dengan USART. Sistem SPI memungkinkan pertukaran data yang cepat dan efisien antara mikrokontroler dengan perangkat periferal. Ada banyak sistem SPI eksternal yang kompatibel tersedia untuk memperluas fitur mikrokontroler. Sebagai contoh, LCD atau konverter digital-ke-analog dapat ditambahkan ke mikrokontroler menggunakan sistem SPI.



Gambar 5.1. Tinjauan SPI



SPI dapat dipandang sebagai register geser sinkron 16-bit dengan 8-bit setengahnya berada di pengirim dan 8-bit lainnya yang berada di penerima seperti yang ditunjukkan pada Gambar 5.1. Pengirim dinyatakan sebagai master karena menyediakan sumber clock sinkronisasi antara pengirim dan penerima. Penerima ditetapkan sebagai slave. Slave dipilih sebagai penerima dengan menyatakan jalur Slave Select (𝑆𝑆) bernilai rendah. Ketika jalur 𝑆𝑆 bernilai rendah, pergeseran slave diaktifkan. Pengiriman SPI dimulai dengan memuat byte data ke dalam data SPI yang dikonfigurasi SPI Data Register (SPDR). Setiap saat generator clock SPI memberikan pulsa clock ke master dan juga ke slave melalui pin SCK. Tiap bit digeser keluar dari register geser yang dijadikan master ke pin Master Out Slave In (MOSI) mikrokontroler pada setiap pulsa SCK. Data diterima di pin MOSI dari perangkat yang dijadikan slave. Pada saat yang sama, satu bit digeser keluar dari pin Master In Slave Out (MISO) dari perangkat slave ke pin MISO dari perangkat master. Setelah delapan pulsa clock SCK master, satu byte data telah dipertukarkan antara master dan perangkat SPI yang dijadikan slave. Lengkapnya pengiriman data dari master dan penerimaan data di slave ditandai oleh SPI Interrupt Flag (SPIF) di kedua perangkat. Flag SPIF terletak di SPI Status Register (SPSR) dari masing-masing perangkat. Pada saat yang bersamaan, byte data lain dapat dikirimkan. Arduino



Development Environment menyediakan perintah "shiftOut" untuk



menyediakan komunikasi serial menggunakan ISP. Perintah shiftOut membutuhkan empat parameter ketika dipanggil: 



dataPin: pin DIGITAL Arduino Uno yang akan digunakan untuk output serial.







clockPin: pin DIGITAL Arduino Uno yang akan digunakan untuk clock.







bitOrder: menunjukkan apakah byte data yang akan dikirim pertama adalah MSB



(MSBFIRST) atau LSB (LSBFIRST). 



value: byte data yang akan digeser keluar.



Untuk menggunakan perintah shiftOut, pin yang sesuai dideklarasikan sebagai output menggunakan pinMode perintah dalam fungsi setup (). Perintah shiftOut kemudian dipanggil di tempat yang tepat dalam fungsi loop () menggunakan sintaks berikut: shiftOut (dataPin, clockPin, LSBFIRST, nilai);



Sebagai hasil dari perintah ini, nilai yang ditentukan akan digeser secara serial dari pin data yang ditentukan, LSB pertama, pada tingkat clock yang disediakan melalui pin clock. Antarmuka Serial Dua Kabel (TWI) Sistem TWI memungkinkan perancang sistem untuk menghubungkan sejumlah perangkat (mikrokontroler, transduser, display, penyimpanan memori, dll.) bersama-sama ke dalam sistem menggunakan skema interkoneksi dua kawat. TWI memungkinkan maksimum 128 perangkat untuk dihubungkan bersama. Setiap perangkat memiliki alamat uniknya sendiri dan keduanya dapat mengirim dan menerima melalui dua bus kawat pada frekuensi hingga 400 kHz. Hal ini memungkinkan perangkat untuk bertukar informasi secara bebas dengan perangkat lain di jaringan dalam area kecil.



5.A.



Komunikasi dengan PC



Alat dan Bahan  Kit Arduino untuk satu kelompok (max 3 org) 



Laptop







Breadboard







Resistor 220 Ω







Potensiometer 100 kΩ







Kabel jumper







LED warna



Rangkaian Percobaan



(a)



(b)



Gambar 5.2. Komunikasi PC



Program Percobaan Sketch 5.1. Membaca Tegangan Analog /* ReadAnalogVoltage Reads an analog input on pin 0, converts it to voltage, and prints the result to the Serial Monitor. Graphical representation is available using Serial Plotter (Tools > Serial Plotter menu). Attach the center pin of a potentiometer to pin A0, and the outside pins to +5V and ground. This example code is in the public domain. http://www.arduino.cc/en/Tutorial/ReadAnalogVoltage */ // the setup routine runs once when you press reset: void setup() { // initialize serial communication at 9600 bits per second: Serial.begin(9600); } // the loop routine runs over and over again forever: void loop() { // read the input on analog pin 0: int sensorValue = analogRead(A0); // Convert the analog reading (which goes from 0 - 1023) to a voltage (0 - 5V): float voltage = sensorValue * (5.0 / 1023.0); // print out the value you read: Serial.println(voltage); }



Sketch 5.2. Dimmer /* Dimmer Demonstrates sending data from the computer to the Arduino board, in this case to control the brightness of an LED. The data is sent in individual bytes, each of which ranges from 0 to 255. Arduino reads these bytes and uses them to set the brightness of the LED. The circuit: - LED attached from digital pin 9 to ground. - Serial connection to Processing, Max/MSP, or another serial application created 2006 by David A. Mellis modified 30 Aug 2011 by Tom Igoe and Scott Fitzgerald This example code is in the public domain. http://www.arduino.cc/en/Tutorial/Dimmer */ const int ledPin = 9;



// the pin that the LED is attached to



void setup() { // initialize the serial communication: Serial.begin(9600); // initialize the ledPin as an output: pinMode(ledPin, OUTPUT); } void loop() { byte brightness; // check if data has been sent from the computer: if (Serial.available()) { // read the most recent byte (which will be from 0 to 255): brightness = Serial.read(); // set the brightness of the LED: analogWrite(ledPin, brightness); } }



Sketch 5.3. Dimmer dengan String Input Serial /* Serial input String, analog output dimmer, serial output Reads a serial input string until it sees a newline, then converts the string to a number if the characters are digits and uses the



result to set the pulse width modulation (PWM) of an output pin. When new serial data arrives, this sketch adds it to a String. When a newline is received, the loop prints the string and clears it. Also prints the results to the Serial Monitor. */ String inString = ""; // string to hold input const int ledPin = 9; // the pin that the LED is attached to 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 pinMode(ledPin, OUTPUT); } // send an intro: Serial.println("Convert string to integer "); Serial.println("To set PWM duty cycle "); Serial.println(); } void loop() { // Read serial input: while (Serial.available() > 0) { int inChar = Serial.read(); if (isDigit(inChar)) { // convert the incoming byte to a char and add it to the string: inString += (char)inChar; } // if you get a newline, print the string, then the string's value: if (inChar == '\n') { int PWM_duty_cycle = inString.toInt(); //Convert to integer //Convert to max duty cycle if(PWM_duty_cycle > 255) { Serial.println("\nWarning: Maximum Value is 255"); PWM_duty_cycle = 255; } Serial.print("\nPWM duty cycle at pin 9 is "); Serial.println(PWM_duty_cycle); Serial.print("String: "); Serial.println(inString); analogWrite(ledPin, PWM_duty_cycle);//Set PWM duty cycle at //pin 9 // clear the string for new input: inString = ""; } }



}



Langkah Percobaan Sebelum melakukan percobaan, perhatikan baik-baik letak port tegangan dan ground pada board Arduino. Kemudian lakukan langkah berikut: 1) Susun rangkaian pada Gambar 5.2(a) menggunakan Breadboard dan kabel jumper. 2) Hubungkan board Arduino Uno dengan komputer/laptop menggunakan kabel USB. 3) Bukalah IDE Arduino, kemudian ketik program pada Sketch 5.1. 4) Pada IDE Arduino periksa 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 kabel USB pada board Arduino. 5) Compile dan upload program ke board arduino 6) Lalu buka serial port melalui Tools  Serial Monitor. 7) Putar potensiometer hingga Serial Monitor menampilkan besar tegangan yang terukur, maka percobaan yang dilakukan benar, jika tidak, ulangi langkah pertama dengan memeriksa program dan koneksitas 8) Susun kembali rangkaian pada Gambar 5.2(b) menggunakan Breadboard dan kabel jumper. 9) Kembali ke IDE Arduino, kemudian ketik program pada Sketch 5.2. 10) Compile dan upload program ke board arduino. 11) Putar potensiometer, jika LED berkedip maka percobaan yang dilakukan benar, jika tidak, ulangi langkah pertama dengan memeriksa koneksi kabel. Perhatikan dan catat hasil yang terjadi. 12) Kembali ke IDE Arduino, kemudian ketik program pada Sketch 4.3. 13) Compile dan upload program ke board arduino. 14) Putar potensiometer, jika LED berkedip maka percobaan yang dilakukan benar, jika tidak, ulangi langkah pertama dengan memeriksa koneksi kabel. Perhatikan dan catat hasil yang terjadi Tugas Berikan jawaban dari soal di bawah ini pada Laporan Praktikum. Berikan juga kesimpulan dari percobaan pada subbab akhir di Laporan. 1. Pada percobaan pertama, tegangan pada bagian yang terukur? Jelaskan juga mengapa mengapa terjadi seperti itu? 2. Pada percobaan kedua, bagaimana kondisi nyala LED? Jelaskan juga mengapa kondisi



menyala LED menjadi seperti itu? 3. Dari percobaan diatas buat analisa jalannya sistem berserta analisa perbaris tiap line program.



5.B.



Komunikasi tanpa Kabel (Wireless)



Alat dan Bahan  Kit Arduino untuk satu kelompok 



Laptop







Breadboard







Resistor 220 Ω







Kabel jumper







LED warna dan Infra Red







Modul Bluetooth HC05 dan RFID-RC522



Rangkaian Percobaan



(a)



(b)



(c)



Gambar 5.3. Komunikasi Wireless



Program Percobaan Sketch 5.4. Komunikasi Bluetooth



/*



Bluetooh Basic: LED ON OFF Control a LED on pin of arduino using a bluetooth module



*/ char data = 0; //Variable for storing received data void setup() { Serial.begin(9600); //Sets the baud for serial data transmission pinMode(13, OUTPUT); //Sets digital pin 13 as output pin } void loop() { if (Serial.available() > 0) // Send data only when you receive data: { data = Serial.read(); //Read the incoming data & store into data Serial.print(data); //Print Value inside data in Serial monitor Serial.print("\n"); if (data == '1') // Checks whether value of data is equal to 1 digitalWrite(13, HIGH); //If value is 1 then LED turns ON else if (data == '0') // Checks whether value of data is equal to 0 digitalWrite(13, LOW); //If value is 0 then LED turns OFF } }



Sketch 5.5. Komunikasi Radio (IR) /* IRremote: IRrecvDemo - demonstrates receiving IR codes with IRrecv. Arduino should have an IR detector/demodulator connected to the receive pin (9) and a visible LED connected to pin 11. */ #include const int receiver = 9; const int led = 11; IRrecv ir_receiver(receiver); decode_results results; void setup() { Serial.begin(9600); // In case the interrupt driver crashes on setup, give a clue // to the user what's going on. Serial.println("Enabling IRin"); ir_receiver.enableIRIn(); // Start the receiver Serial.println("Enabled IRin"); pinMode(led, OUTPUT); } void loop() { if (ir_receiver.decode(&results)) {



Serial.println(results.value, HEX);



}



translateIR(); ir_receiver.resume(); delay(200);



// Receive the next value



} void translateIR() { int sensorValue = 0; sensorValue = digitalRead(led); switch (results.value) { case 0x20DF10EF: //change here the hex value of the button accessed if (sensorValue == 0) { Serial.println(" ON "); digitalWrite(led, HIGH); break;



} if (sensorValue == 1) {



Serial.println(" OFF "); digitalWrite(led, LOW); break; } case 0x20DFD02F: //change here the hex value of the button accessed if (sensorValue == 0) { Serial.println(" BLINK "); for (int i = 1; i < 5; i++) { digitalWrite(led, HIGH); delay(500); digitalWrite(led, LOW); delay(500); } break; } default: Serial.println(" other button "); }



}



Sketch 5.6. Komunikasi Radio (RFID) /* * ------------------------------------------------------------------------------------------------------------------* Example sketch/program showing how to read data & access control from a PICC to serial. * ------------------------------------------------------------------------------------------------------------------* This is a MFRC522 library example; for further details and other examples see: https://github.com/miguelbalboa/rfid * * Example sketch/program showing how to read data from a PICC (that is: a RFID Tag or Card) using a MFRC522 based RFID * Reader on the Arduino SPI interface. * Access the security control



* When the Arduino and the MFRC522 module are connected (see the pin layout below), load this sketch into Arduino IDE * then verify/compile and upload it. To see the output: use Tools, Serial Monitor of the IDE (hit Ctrl+Shft+M). When * you present a PICC (that is: a RFID Tag or Card) at reading distance of the MFRC522 Reader/PCD, the serial output * will show the ID/UID, type and any data blocks it can read. Note: you may see "Timeout in communication" messages * when removing the PICC from reading distance too early. * * If your reader supports it, this sketch/program will read all the PICCs presented (that is: multiple tag reading). * So if you stack two or more PICCs on top of each other and present them to the reader, it will first output all * details of the first and then the next PICC. Note that this may take some time as all data blocks are dumped, so * keep the PICCs at reading distance until complete. */ #include #include #define SS_PIN 10 #define RST_PIN 9 MFRC522 mfrc522(SS_PIN, RST_PIN);



// Create MFRC522 instance.



void setup() { Serial.begin(9600); // Initiate a serial communication SPI.begin(); // Initiate SPI bus mfrc522.PCD_Init(); // Initiate MFRC522 Serial.println("Approximate your card to the reader..."); Serial.println(); } void loop() { // Look for new cards if ( ! mfrc522.PICC_IsNewCardPresent()) { return; } // Select one of the cards if ( ! mfrc522.PICC_ReadCardSerial()) { return; } //Show UID on serial monitor Serial.print("UID tag :"); String content= ""; byte letter; for (byte i = 0; i < mfrc522.uid.size; i++) { Serial.print(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " "); Serial.print(mfrc522.uid.uidByte[i], HEX); content.concat(String(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " ")); content.concat(String(mfrc522.uid.uidByte[i], HEX)); } Serial.println(); Serial.print("Message : "); content.toUpperCase();



if (content.substring(1) == "BD 31 15 2B") //change here the UID of the card/cards that you want to give access { Serial.println("Authorized access"); Serial.println(); delay(3000); } else { Serial.println(" Access denied"); delay(3000); } }



Langkah Percobaan Sebelum melakukan percobaan, perhatikan baik-baik letak port tegangan dan ground pada board Arduino. Kemudian lakukan langkah berikut: 1) Susun rangkaian rangkaian LED seperti terlihat pada Gambar 5.3(a) menggunakan Breadboard dan kabel jumper. Perhatikan modul bluetooth HC05 jangan dihubugkan terlebih dahulu 2) Hubungkan board Arduino Uno dengan komputer/laptop menggunakan kabel USB. 3) Bukalah IDE Arduino, kemudian ketik program pada Sketch 5.4. 4) Pada IDE Arduino periksa 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 kabel USB pada board Arduino. 5) Compile dan upload program ke board arduino 6) Hubungkan modul bluetooth HC05 ke board Arduino Uno sesuai Gambar 5.3(a). 7) Unduh aplikasi android LED Controller.apk atau aplikasi android pengendalian LED lainnya dengan terlebih dahulu menyesaikan nilai variabel yang dihasilkan aplikasi 8) Jalankan aplikasi android pada handphone dengan terebih dahulu menghubungkan komunikasi bluetooth antara handphone dengan board arduino. 9) Lalu buka serial port melalui Tools  Serial Monitor. 10) Klik suatu button pada aplikasi android, jika LED menyala, maka percobaan yang dilakukan benar. Jika tidak, ulangi percobaan dengan memeriksa program, koneksi kabel dan bluetooth, serta nilai keluaran yang dihasilkan perangkat remote control pada Serial Monitor. Perhatikan dan catat hasil yang terjadi. 11) Lepaskan modul bluetooth HC05 dan hubungkan LED Infra Merah seperti pada Gambar 5.3(b). 12) Kembali ke IDE Arduino, kemudian ketik program pada Sketch 5.5. 13) Compile dan upload program ke board arduino.



14) Lalu buka serial port melalui Tools  Serial Monitor. 15) Tekan suatu button pada perangkat remote control, hingga kecerahan LED berubah, maka percobaan yang dilakukan benar, jika tidak, ulangi percobaan dengan memeriksa program, koneksitas, serta nilai keluaran yang dihasilkan perangkat remote control pada Serial Monitor. Perhatikan dan catat hasil yang terjadi. 16) Lepaskan seluruh rangkaian dan susun kembali rangkaian pada Gambar 5.3(c). 17) Kembali ke IDE Arduino, kemudian ketik program pada Sketch 5.6. 18) Compile dan upload program ke board arduino. 19) Lalu buka serial port melalui Tools  Serial Monitor. 20) Letakkan kartu RFID atau tag ID pada modul RFID-RC522, jika Serial Monitor menginformasikan akses ditolak maka percobaan yang dilakukan benar, jika tidak, ulangi langkah pertama dengan memeriksa program dan koneksitas. 21) Ubah program dengan memberikan kode yang dihasilkan kartu RFID atau tag ID pada Serial Monitor. 22) Letakkan kartu RFID atau tag ID pada modul RFID-RC522, jika Serial Monitor menginformasikan akses diterima maka percobaan yang dilakukan benar, jika tidak, ulangi langkah pertama dengan memeriksa program dan koneksitas.Perhatikan dan catat hasil yang terjadi Tugas Berikan jawaban dari soal di bawah ini pada Laporan Praktikum. Berikan juga kesimpulan dari percobaan pada subbab akhir di Laporan. 1. Susun diagram alir program untuk tiap sketch di atas 2. Buatlah program dengan menggunakan modul bluetooth dimana intensitas cahaya LED dapat diatur dari perangkat android 3. Buatlah program dengan menggunakan remote control dan 4 LED dimana terdapat 4 kondisi yaitu : 1) Led Mati semua, 2) Led hidup secara berkedip-kedip, 3)Led berjalan dari kiri ke kanan, dan 4) Led berjalan dari kanan ke kiri. Tampilkan hasil program pada rangkaian Arduino dan simulasikan menggunakan Proteus. 4. Buatlah program dengan menggunakan RFID dimana akses hanya bisa diterima untuk 3 kartu, dimana saat akses diterima diindikasikan dengan LED, dan akses ditolak diindikasikan dengan buzzer.



5.C.



Komunikasi pada Jaringan



Alat dan Bahan  Kit Arduino untuk satu kelompok (max 3 org) 



Arduino dapat diganti dengan development board dengan kualitas di bawahnya, selama masih kompatibel dengan IDE Arduino







Laptop







Breadboard







Resistor 1 kΩ







Kabel jumper







LED warna



Rangkaian Percobaan Sama seperti Percobaan 4.A. Program Percobaan Sketch 5. 7. Komunikasi via Ethernet /*



Fading



This example shows how to fade an LED using the analogWrite() function. The circuit: - LED attached from digital pin 9 to ground. This example code is in the public domain. http://www.arduino.cc/en/Tutorial/Fading */ int ledPin = 9;



// LED connected to digital pin 9



void setup() { // declare pin 9 to be an output: pinMode(led, OUTPUT); } void loop() { // fade in from min to max in increments of 5 points: for (int fadeValue = 0 ; fadeValue = 0; fadeValue -= 5) { // sets the value (range from 0 to 255):



}



analogWrite(ledPin, fadeValue); // wait for 30 milliseconds to see the dimming effect delay(30);



}



Sketch 5.8. Komunikasi via Internet /*



Analog input, analog output, serial output



Reads an analog input pin, maps the result to a range from 0 to 255 and uses the result to set the pulse width modulation (PWM) of an output pin. Also prints the results to the Serial Monitor. The circuit: - potentiometer connected to analog pin 3. Center pin of the potentiometer goes to the analog pin. side pins of the potentiometer go to +5V and ground - LED connected from digital pin 9 to ground This example code is in the public domain. http://www.arduino.cc/en/Tutorial/AnalogInOutSerial */ // These constants won't change. They're used to give names to the pins used: const int analogInPin = A0; // Analog input pin that the potentiometer is attached to const int analogOutPin = 9; // Analog output pin that the LED is attached to int sensorValue = 0; int outputValue = 0;



// value read from the pot // value output to the PWM (analog out)



void setup() { // initialize serial communications at 9600 bps: Serial.begin(9600); } void loop() { // read the analog in value: sensorValue = analogRead(analogInPin); // map it to the range of the analog out: outputValue = map(sensorValue, 0, 1023, 0, 255); // change the analog out value: analogWrite(analogOutPin, outputValue); // print the results to the Serial Monitor: Serial.print("sensor = "); Serial.print(sensorValue); Serial.print("\t output = "); Serial.println(outputValue); // wait 2 milliseconds before the next loop for the analog-todigital



}



// converter to settle after the last reading: delay(2);



Langkah Percobaan Sebelum melakukan percobaan, perhatikan baik-baik letak port tegangan dan ground pada board Arduino. Kemudian lakukan langkah berikut: 23) Susun rangkaian pada Gambar 4.1 menggunakan Breadboard dan kabel jumper. 24) Hubungkan board Arduino Uno dengan komputer/laptop menggunakan kabel USB. 25) Bukalah IDE Arduino, kemudian ketik program pada Sketch 4.4. 26) Pada IDE Arduino periksa 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 kabel USB pada board Arduino. 27) Compile dan upload program ke board arduino 28) Jika kecerahan LED berubah maka percobaan yang dilakukan benar, jika tidak, ulangi langkah pertama dengan memeriksa program dan koneksitas. Catat hasil yang terjadi. 29) Kembali ke IDE Arduino, kemudian ketik program pada Sketch 4.5. 30) Compile dan upload program ke board arduino. 31) Lalu buka serial port melalui Tools  Serial Monitor. 32) Putar potensiometer hingga kecerahan LED berubah, maka percobaan yang dilakukan benar, jika tidak, ulangi langkah pertama dengan memeriksa program dan koneksitas. Perhatikan dan catat hasil yang terjadi Tugas Berikan jawaban dari soal di bawah ini pada Laporan Praktikum. Berikan juga kesimpulan dari percobaan pada subbab akhir di Laporan. 5. Pada percobaan pertama, saat kapan LED menyala? Jelaskan juga mengapa kondisi menyala LED seperti itu? 6. Pada percobaan kedua, bagaimana kondisi nyala LED? Jelaskan juga mengapa kondisi menyala LED menjadi seperti itu? 7. Dari percobaan diatas buat analisa jalannya sistem berserta analisa perbaris tiap line program. Buatlah program dengan menggunakan potensiometer, 2 buah push-button dan 4 LED dimana terdapat 4 kondisi yaitu : 1) Led Mati semua, 2) Led hidup secara berkedip-kedip, 3)Led berjalan dari kiri ke kanan, dan 4) Led berjalan dari kanan ke kiri. Intensitas cahaya LED dapat diatur dengan kedua push-button. Tampilkan hasil program pada rangkaian Arduino dan simulasikan menggunakan Proteus.