PETUNJUK PRAKTIKUM
SISTEM
MIKROPROSESOR
2018
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
Tabel II.1 menunjukkan beberapa produk board yang diproduksi Arduino yang ada di
pasaran:
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 Analog
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)
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
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.
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
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); // turn the LED on
delay(1000); // wait for a second
digitalWrite(led, LOW); // turn the LED off
delay(1000); // wait for a second
}
= 13) memiliki tegangan = 5V (HIGH). Hanya ada dua kemungkinan nilai digitalWrite
yaitu HIGH atau LOW yang sebetulnya adalah nilai integer 1 atau 0.
Sketch
// Project 1 - LED Flasher
int ledPin = 10;
void setup() {
pinMode(ledPin, OUTPUT);
}
void loop() {
digitalWrite(ledPin, HIGH); // sets the LED on
delay(1000);
digitalWrite(ledPin, LOW); // sets the LED off
delay(1000);
}
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.
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
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);
}
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.
Rangkaian Percobaan
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.
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
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 pull-
up 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.
Rangkaian Percobaan
(a) (b)
Gambar 2.6. Pengendalian LED dengan Push Button
Program Percobaan
Sketch 2.1. Mengendalikan LED dengan push button
/*
Button
*/
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);
*/
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);
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
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);
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.
Operator logika digunakan untuk mendapatkan hasil perbandingan dari 2 nilai, hasil
keluarannya berupa nilai logika seperti terlihat pada Tabel 3.2.
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,
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.
Rangkaian Percobaan
*/
void setup() {
// initialize the LED pin as an output:
pinMode(ledPin, OUTPUT);
}
void loop() {
// timeDelay deacrement:
timeDelay = timeDelay - 100;
*/
void setup() {
// initialize the LED pin as an output:
pinMode(ledPin, OUTPUT);
}
void loop() {
// reset timeDelay when zero or negatif after 3 seconds.
if (timeDelay <= 0) {
delay(3000;)
timeDelay = 1000;
} else {
// timeDelay deacrement:
timeDelay = timeDelay - 100;
}
// turn LED on and off during delaytime:
digitalWrite(ledPin, HIGH);
delay(timeDelay);
digitalWrite(ledPin, LOW);
delay(timeDelay);
}
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 3.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 3.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) Jika LED berkedip maka percobaan yang dilakukan benar, jika tidak, ulangi langkah
pertama dengan memeriksa koneksi kabel. Catat hasil yang terjadi
7) Kembali ke IDE Arduino, kemudian ketik program pada Sketch 3.2.
8) Compile dan upload program ke board arduino.
9) Jika LED berkedip maka percobaan yang dilakukan benar, jika tidak, ulangi langkah
pertama dengan memeriksa koneksi kabel. Perhatikan dan catat hasil yang terjadi.
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, saat kapan LED menyala? Jelaskan juga mengapa kondisi
menyala LED menjadi seperti itu?
2. Pada percobaan pertama, saat kapan LED menyala? Jelaskan juga mengapa kondisi
menyala LED menjadi seperti itu?
3. Jelaskan perbedaan percabangan if dan if-else
4. Buatlah simulasi Proteus untuk kedua percobaan di atas
3.B. Perulangan dengan WHILE dan FOR
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 3.A.
Program Percobaan
Sketch 3.3. Perulangn while
/*
Turns on and off a light emitting diode (LED) connected to a
digital pin, with using timedelaymodification
*/
void setup() {
// initialize the LED pin as an output:
pinMode(ledPin, OUTPUT);
}
void loop() {
// block code for positif
while (timeDelay > 0) {
// turn LED on and off during 500 ms:
digitalWrite(ledPin, HIGH);
delay(500);
digitalWrite(ledPin, LOW);
delay(500);
// timeDelay deacrement:
timeDelay = timeDelay - 100;
}
// block code for zero or negatif timeDelay.
while (timeDelay <= 0) {
// turn LED on and off during 500 ms:
digitalWrite(ledPin, HIGH);
delay(500);
digitalWrite(ledPin, LOW);
delay(500);
// timeDelay increment:
timeDelay = timeDelay + 100;
}
}
Sketch 3.4. Perulangn for
/*
Turns on and off a light emitting diode (LED) connected to a
digital pin, with using timedelaymodification
*/
// timedelay:
int timeDelay = 3000;
void setup() {
// initialize the LED pin as an output:
pinMode(ledPin, OUTPUT);
}
void loop() {
// 10 times repeating
for(i=0;i<=0);i++ {
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, saat kapan LED menyala? Jelaskan juga mengapa kondisi
menyala LED menjadi seperti itu?
2. Pada percobaan kedua, saat kapan LED menyala? Jelaskan juga mengapa kondisi
menyala LED menjadi seperti itu?
3. Jelaskan perbedaan perulangan while dan for
4. Buatlah simulasi Proteus untuk kedua percobaan di atas
3.C. Animasi LED
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 220 Ω
Kabel jumper
LED warna 8 buah
Rangkaian Percobaan
Program Percobaan
Sketch 3.5. Animasi LED
/*
Lights multiple LEDs in sequence.
The circuit:
- LEDs from pins 2 through 5 to ground
*/
void setup() {
// use a for loop to initialize each pin as output:
pinMode(ledPin1, OUTPUT);
pinMode(ledPin2, OUTPUT);
pinMode(ledPin3, OUTPUT);
pinMode(ledPin4, OUTPUT);
}
void loop() {
// turn the pin off:
digitalWrite(ledPin1, LOW);
digitalWrite(ledPin2, LOW);
digitalWrite(ledPin3, LOW);
digitalWrite(ledPin4, LOW);
delay(1000);
The circuit:
- LEDs from pins 2 through 5 to ground
http://www.arduino.cc/en/Tutorial/ForLoop
*/
int timer = 1000; // The higher the number, the slower the timing.
void setup() {
// use a for loop to initialize each pin as an output:
for (int thisPin = 2; thisPin < 6; thisPin++) {
pinMode(thisPin, OUTPUT);
}
}
void loop() {
// loop from the lowest pin to the highest:
for (int thisPin = 2; thisPin < 6; thisPin++) {
// turn the pin on:
digitalWrite(thisPin, HIGH);
delay(timer);
// turn the pin off:
digitalWrite(thisPin, 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 3.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 3.5.
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 LED berkedip secara berurutan maka percobaan yang dilakukan benar, jika tidak,
ulangi langkah pertama dengan memeriksa sketch dan koneksi kabel. Catat hasil yang
terjadi.
7) Kembali ke IDE Arduino, kemudian ketik program pada Sketch 3.6.
8) Compile dan upload program ke board arduino.
9) Jika LED berkedip secara berurutan maka percobaan yang dilakukan benar, jika tidak,
ulangi langkah pertama dengan memeriksa sketch dan koneksi kabel. Perhatikan dan
catat hasil yang terjadi.
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. Menurut pendapat Anda, apakah kelebihan program kedua dibandingkan dengan
program pertama?
2. Buatlah program untuk menyalakan LED geser bergantian ke kiri
3. Buatlah program untuk menyalakan LED geser bergantian ke kanan dan ke kiri
4. Buatlah aplikasi lampu lalu lintas dari 6 buah LED dimana setiap warna lampu diwakili
oleh 2 buah LED
3.D. Pengenalan Array
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 8 buah
Rangkaian Percobaan
Program Percobaan
Sketch 3.7. Animasi LED dengan Array
/*
Arrays
Demonstrates the use of an array to hold pin numbers in order to
iterate over the pins in a sequence. Lights multiple LEDs in
sequence, then in reverse.
The circuit:
- LEDs from pins 2 through 7 to ground
*/
int timer = 1000; // The higher the number, the slower the timing.
void setup() {
// the array elements are numbered from 0 to (pinCount - 1).
// use a for loop to initialize each pin as an output:
for (int thisPin = 0; thisPin < pinCount; thisPin++) {
pinMode(ledPins[thisPin], OUTPUT);
}
}
void loop() {
// loop from the lowest pin to the highest:
for (int thisPin = 0; thisPin < pinCount; thisPin++) {
// turn the pin on:
digitalWrite(ledPins[thisPin], HIGH);
delay(timer);
// turn the pin off:
digitalWrite(ledPins[thisPin], LOW);
The circuit:
- LEDs from pins 2 through 7 to ground
created 2006
by David A. Mellis
modified 30 Aug 2011
by Tom Igoe
http://www.arduino.cc/en/Tutorial/Array
*/
int timer = 1000; // The higher the number, the slower the timing.
void setup() {
// the array elements are numbered from 0 to (pinCount - 1).
// use a for loop to initialize each pin as an output:
for (int thisPin = 0; thisPin < pinCount; thisPin++) {
pinMode(ledPins[thisPin], OUTPUT);
}
}
void loop() {
// loop from the lowest pin to the highest:
for (int thisPin = 0; thisPin < pinCount; thisPin++) {
// turn the pin on:
digitalWrite(ledPins[thisPin], HIGH);
delay(timer);
// turn the pin off:
digitalWrite(ledPins[thisPin], LOW);
}
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. Apakah yang membedakan kedua percobaan di atas, jelaskan mengapa hal tersebut bisa
terjadi!
2. Buatlah program untuk menyalakan LED geser sesuai kreasi anda masing-masing
MODUL 4 INPUT ANALOG
Tujuan
Setelah melaksanakan praktikum ini, diharapkan mahasiswa mampu:
1. Menggunakan Analog input pada arduino
2. Membuat program sederhana dengan menggunakan analog input sebagai delay untuk lama
nyala LED.
3. Dapat membuat program PWM untuk mengatur kontras LED
Teori Singkat
Pada saat menggunakan tombol sebagai sinyal input/masukan pada pin input Arduino
maka sebenarnya hanya memberikan dua kemungkinan kondisi sinyal masukan yaitu tombol
tertekan atau tombol tidak tertekan. Pada saat tombol tertekan berarti menghubungkan atau
memberikan tegangan 5 volt pada masukan sedangkan sebaliknya pada saat tombol dilepas
hanya memberikan tegangan 0 volt.
Kondisi input yang demikian dikenal sebagai digital input dengan logika 1 dan 0, dimana
1 untuk tegangan HIGH atau 5 volt dan 0 untuk tegangan LOW atau 0 volt. Begitu juga halnya
pada sisi output, jika hanya melibatkan dua kondisi keluaran seperti misalnya saat
menghidupkan dan memadamkan LED pada suatu saat tertentu maka hanya melibatkan dua
kondisi output digital. Output digital 1 atau HIGH dengan output tegangan 5 volt dan output
digital 0 atau LOW dengan output tegangan 0 volt.
Pada beberapa sistim kontrol, pengolahan input dan output secara digital mungkin sudah
memenuhi kinerja yang dibutuhkan. Akan tetapi pada kondisi tertentu ada kemungkinan
dihadapkan pada kondisi input dan output yang membutuhkan besaran yang berubah-ubah
dengan nilai yang kontinyu dan tidak lagi hanya dengan dua keadaan seperti halnya sinyal
digital. Sinyal semacam ini disebut sebagai sinyal analog, sebagai contoh saat menghubungkan
sensor yang tegangan keluarannya bervariasi dalam kisaran dari 0 volt sampai 5 volt. Maka
dalam hal ini Arduino sebagai kontroler harus mampu mengidentifikasi/mengolah semua variasi
tegangan keluaran dari sensor yang dihubungkan pada pin inputnya tersebut. Begitu juga halnya
saat diperlukan tegangan output yang membutuhkan nilai tegangan yang bervariasi, seperti
misalnya saat menginginkan mengatur tingkat keterangan sebuah LED atau berubahnya
kecepatan sebuah motor.
Input Analog
Arduino khusus menyediakan 6 kanal (8 kanal pada model Mini dan Nano, dan 16 pada
model Mega) untuk difungsikan sebagai analog input. Konverter Analog ke Digital
menggunakan resolusi 10 bit yang berarti jangkauan nilai analog dari 0 volt sampai 5 volt akan
dirubah menjadi nilai integer 0 sampai 1023, atau resolusinya adalah 5 volt/1024 = 4,9 mV per
unit, hal ini berarti nilai digital yang dihasilkan akan berubah setiap perubahan 4,9 mV dari
tegangan input analognya. Akan tetapi jangkauan input analog dan resolusi tersebut dapat
dirubah dengan fungsi analogReference().
Perintah yang digunakan untuk fungsi analog input ini adalah:
1. analogRead(Pin): berfungsi untuk membaca nilai analog pada input pin yang akan
menghasilkan nilai integer antara 0-1023.
2. analogReference(Parameter):berfungsi untuk menentukan referensi yang
digunakan. Parameternya meliputi:
DEFAULT: default analog reference yaitu 5V (pada board Arduino 5V) atau 3,3 volt
(pada board Arduino 3,3 V)
INTERNAL: built-in referensi internal tergantung pada jenis mikrokontroler yang
terpasang pada board Arduino, 1.1 volt pada ATmega168 atau ATmega328 dan 2.56
volt pada ATmega8.
INTERNAL1V1: referensi internal 1.1V (khusus Arduino Mega)
EXTERNAL: pilihan referensi yang tergantung pada tegangan yang diberikan pada pin
AREF(hanya dengan range tegangan 0 sampai 5V).
Perlu untuk diperhatikan untuk tidak menggunakan referensi dibawah 0 volt atau lebih dari 5
volt dan pastikan memilih referensi external sebelum perintah analogRead() jika
menghubungkan pin AREF dengan referensi eksternal karena dapat merusak perangkat
mikrokontroler.
Output Analog
Secara teori suatu output analog akan mengeluarkan tegangan bervariasi sesuai dengan
nilai yang dikehendaki, maka seharusnya pin output analog Arduino seharusnya mampu
mengeluarkan tegangan output dengan kisaran tegangan dari 0 V sampai 5 V. Akan tetapi tidak
demikian adanya, karena pin-pin Arduino yang difungsikan sebagai output sebenarnya hanya
mampu bekerja sebagai output digital yaitu hanya mampu mengeluarkan tegangan 0V atau 5V.
Arduino menangani output analog tersebut menggunakan metode Pulse Width Modulation
(PWM) atau modulasi lebar pulsa untuk menghasilkan output analog yang dikehendaki. Metode
PWM ini menggunakan pendekatan perubahan lebar pulsa untuk menghasilkan nilai tegangan
analog yang diinginkan. Pin yang difungsikan sebagai PWM output analog akan mengeluarkan
sinyal pulsa digital dengan frekwensi 500 Hz (500 siklus dalam 1 detik). Jadi, Arduino bisa
menghidup-matikan LED sebanyak 500 kali dalam 1 detik.
Nilai tegangan analog diperoleh dengan merubah duty cycle atau perbandingan lamanya
pulsa HIGH terhadap periode (T) dari sinyal digital tersebut seperti terlihat pada Gambar 4.1.
Jika pulsa HIGH muncul selama setengah dari periode sinyal maka akan menghasilkan duty
cycle 50% sehingga besar sinyal analog yang dihasilkan ekivalen dengan setengah dari tegangan
analog maksimal yaitu 1/2 dari 5 V atau sama dengan 2,5 V begitu juga halnya jika pulsa HIGH
hanya seperempat bagian dari periode sinyal maka tegangan analog identik yang dihasilkan
adalah 1/4 dari 5V = 1,25 V dan seterusnya.
Rangkaian Percobaan
The circuit:
- potentiometer
Center pin of the potentiometer goes to analog pin 3.
Side pins of the potentiometer go to +5V and ground.
- LED connected from digital pin 13 to ground
void setup() {
// initialize the LED pin as an output:
pinMode(ledPin, OUTPUT);
}
void loop() {
// read the value of the potentiometer:
int analogValue = analogRead(analogPin);
http://www.arduino.cc/en/Tutorial/AnalogInput
*/
int sensorPin = A0; // select the input pin for the potentiometer
int ledPin = 13; // select the pin for the LED
int sensorValue = 0; // variable to store the value coming from the
sensor
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 <sensorValue> milliseconds:
delay(sensorValue);
// turn the ledPin off:
digitalWrite(ledPin, LOW);
// stop the program for for <sensorValue> milliseconds:
delay(sensorValue);
}
Sketch 4.3. LED Berkedip Responsif Dengan Potensiometer
/*
Analog Input without Delay
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
// 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();
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.
Rangkaian Percobaan
Sama seperti Percobaan 4.A.
Program Percobaan
Sketch 4.4. Fading
/*
Fading
The circuit:
- LED attached from digital pin 9 to ground.
http://www.arduino.cc/en/Tutorial/Fading
*/
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 <= 255; fadeValue += 5) {
// sets the value (range from 0 to 255):
analogWrite(ledPin, fadeValue);
// wait for 30 milliseconds to see the dimming effect
delay(30);
}
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
http://www.arduino.cc/en/Tutorial/AnalogInOutSerial
*/
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);
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 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.
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.
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.
(a) (b)
Gambar 5.2. Komunikasi PC
Program Percobaan
Sketch 5.1. Membaca Tegangan Analog
/*
ReadAnalogVoltage
http://www.arduino.cc/en/Tutorial/ReadAnalogVoltage
*/
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
http://www.arduino.cc/en/Tutorial/Dimmer
*/
void setup() {
// initialize the serial communication:
Serial.begin(9600);
// initialize the ledPin as an output:
pinMode(ledPin, OUTPUT);
}
void loop() {
byte brightness;
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
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.
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
}
}
*/
#include <IRremote.h>
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(); // Receive the next value
delay(200);
}
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) {
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 <SPI.h>
#include <MFRC522.h>
#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
The circuit:
- LED attached from digital pin 9 to ground.
http://www.arduino.cc/en/Tutorial/Fading
*/
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 <= 255; fadeValue += 5) {
// sets the value (range from 0 to 255):
analogWrite(ledPin, fadeValue);
// wait for 30 milliseconds to see the dimming effect
delay(30);
}
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
http://www.arduino.cc/en/Tutorial/AnalogInOutSerial
*/
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);
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.