Modul Ajar Pemrograman Mikrokontroler Dan Mikroprosesor
Modul Ajar Pemrograman Mikrokontroler Dan Mikroprosesor
1. Informasi Umum
a. Identitas
Nama Penyusun : Andi Muhammad Dzulfikar. S.Pd.
Sekolah : SMK Palapa Semarang
Tahun : 2023
Jenjang Sekolah : SMK
Kelas : XI TAV
Alokasi Waktu : 18 JP (18 x 45 menit)
Jumlah Pertemuan : 3 Pertemuan @ 18 JP
2. Komponen Inti
a. Tujuan Pembelajaran 1. Setelah mengikuti proses
pembelajaran, peserta didik
diharapkan dapat memahami
identifikasi peralatan dan
perlengkapan di tempat kerja
2. dengan benar
Setelah mengikuti proses
pembelajaran, peserta didik
diharapkan dapat mempersiapkan
dan menggunakan peralatan dan
perlengkapan di tempat kerja
dengan benar
d. Kegiatan Pertemuan 1
2
Pembelajaran a) Pembukaan
(1) Guru mengucapkan salam
mengecek kehadiran
(2) Guru dan siswa berdoa
bersama
(3) Guru menyampaikan tujuan
pembelajaran dan garis
besar kegiatan pembelajaran dan
teknik penilaian
(4) Apersepsi dengan
memberikan pertanyaan
pertanyaan pemantik
(b) Kegiatan Inti
(5) Mulai Dari Diri : Guru mengajukan
pertanyaan pemantik. Siswa
menjawab pertanyaan pemantik
yang disampaikan oleh guru. Guru
memberikan gambaran materi
pembelajaran secara umum tentang
identifikasi peralatan di tempat
kerja.
(6) Ruang Kolaborasi: Guru
membentuk kelompok siswa, setiap
kelompok mendiskusikan tentang
bagaimana cara mengidentifikasi
macam macam peraltan kerja pada
proses bidang otomotif.
(7) Elaborasi Pemahaman:
Setiap kelompok
mempresentasikan hasil diskusi.
(8) Koneksi Antar Materi: setiap
kelompok menyusun laporan hasil
diskusi dengan menghubungkan
beberapa materi yang sudah
mereka pelajari.
(9) Aksi Nyata : Peserta didik
mengumpulkan laporan hasil
diskusi ke pada guru
(C) Penutup:
(10) Memberikan kesimpulan dari
serangkaian kegiatan
(11) Refleksi terhadap pembelajaran
yang dilakukan
(12) Memberikan informasi Penugasan
observasi di lingkungan sekitar
secara berkelompok (LKPD)
3
Pertemuan 2
(a) Pembukaan
(1) Guru mengucapkan salam
mengecek kehadiran
(2) Guru dan siswa berdoa
bersama
(3) Guru menyampaikan tujuan
pembelajaran dan garis
besar kegiatan pembelajaran
dan teknik penilaian
(4) Apersepsi dengan
memberikan pertanyaan
pertanyaan pemantik
(b) Kegiatan Inti
(5) Mulai Dari Diri : Guru
mengajukan pertanyaan pemantik.
Siswa menjawab pertanyaan
pemantik yang disampaikan oleh
guru tentang mempersiapkan dan
menggunakan peralatan dan
perlengkapan di tempat kerja
bidang otomotif.
(6) Ruang Kolaborasi: Siswa
mempresentasikan hasil
observasi mempersiapkan dan
menggunakaka peralatan di
bidang otomotif sesuai kelompok
masing- masing.
(7) Elaborasi Pemahaman: siswa
lain diberi kesempatan
mengajukan pertanyaan ke
kelompok yang melakukan
presentasi.
(8) Koneksi Antar Materi: setiap
kelompok memperbaiki laporan
observasi berdasarkan masukan
masukan dari hasil diskusi..
(9) Aksi Nyata : Peserta didik
mengumpulkan laporan hasil
diskusi ke pada guru
(c) Penutup:
(1) Memberikan kesimpulan dari
serangkaian kegiatan
(2) Refleksi terhadap pembelajaran
yang dilakukan
(3) Memberikan informasi materi yang
akan dipelajari selanjutnya.
e. Asesmen Jenis:
Asesmen Diagnostik, Asesmen Formatif
Asesmen Sumatif
Teknik:
Observasi, Penugasan, Tes Tertulis
Instrumen:
Lembar Observasi, catatan anekdo, Lembar
Kerja Peserta Didik, Soal Uraian
Kata Peng a n ta r ii
V
Vl DAFTARISI
6 Interfa ce O utput PW M 97
Tujuan Pembelajaran . . . 97
6.1 Timer/Counter .... 98
6.1.1 Timer/ Counter 8 Bit 98
6.1.2 Timer / Counter 16 Bit 100
6.2 PWM (Pulse Width Modulation) 101
6.3 Komponen dengan kontrol output PWM . 102
6.3.1 LED . 103
6.3.2 Motor DC . 104
6.3.3 Motor Servo . . . . . . . . . . . . 105
6.4 Interface PWM di mikrokontroler AVR. 107
6.4.1 Interface PWM menggunakan Motor DC 107
6.4.2 Interface PWM menggunakan Motor Servo 109
6.5 Interface PWM di Arduino . 111
6.5.1 Interface PWM dengan Motor DC . 112
6.5.2 Interface PWM dengan Motor Servo 113
Rangkuman .. 115
Soal Formatif . 115
Togas Latihan 115
Glosarium 175
Tujuan Pembelajaran
1
2 Pengenalan & Sejarah Mikrokontroler
keinginan kita. Saat ini keluarga mikrokontroller yang ada dipasaran yaitu
intel 8048 dan 8051 ( MCS51 ), Motorola 68HC11, microchip PI,hitachi H8,
dan atmel AVR.
9. Tahun 1972, Mikrokontroler yang dibuat adalah TMS 1000. TMS 1000
merupakan mikrokontroler 4-bit buatan Texas Instrument (TI). Mik•
rokontroler TMS 1000 dibuat oleh Gary Boone dari Texas Intrumen.
Boone merancang IC yang dapat menampumg hampir semua kompo•
nen yang membentuk kalkulator, hanya layar dan keypad yang tidak
dimasukkan. TI menawarkan mikrokontroler ini untuk dijual kepada
industri elektronik pada tahun 1983, sebanyak 100 juta IC mikrokon•
troler TMS 1000 telah dijual.
12. Tahun 1976, dibuat Intel 8048, yang merupakan mikrokontroler intel
pertama.
13. Tahun 1978, mikroprosesor 16 bit menjadi lebih umum digunakan yai•
tu Intel 8086, Motorola 68000 dan Zilog Z8000. Sejak saat itu pabrik•
an mikroprosesor terus mengembangkan mikroprosesor dengan berba•
Mikrop ro seso r, Mikro -K o m pu ter dan Mikrokontroler 5
14. Tahun 1980,Intel 8051 atau lebih dikenal dengan keluarga mikrokon•
troler yang paling populer. Vendor lain yang mengadopsi mikrokontr o•
ler Intel 8051 yaitu : Philips, Siemens, Atmel ATMEL juga membuat
Mikrokontroler MCS 51 yaitu mikrokontroler Atmel seri AT89xxx, mi•
salnya : AT89S51 dan AT89S52.
15. Tahun 1996, Atmel AVR adalah salah satu keluarga mikrokontroler
pertama yang menggunakan on-chip flash memory untuk penyimpanan
program.
Mlcrocontroller
w--------
Vecc
•
POHTA DBVE
BUS FFERS
PO
AVCC
ADC
1WI
ITE FACE
AEF
TIME S'
OSCILLATO H
CCUTES
NIENAL
OSCILL ATO
WATCH D O G OSCILL
A TO
TIME
} {
X
X1AL2
y MCU crnL
ESET
& mmING
NIENAL
IN TEBUP T
UNIT CALIBAT E I
OSCILATO
L...
SPI USAT
COMP
ITE FACE
POT B DVE S
E UFFE HS POTD DRIVES
BUF F ES
. _J
Pp0-PBT PDo-PDT
itu dimensi IC dan konsumsi daya prosesor RISC umumnya lebih kecil di•
banding prosesor CISC. Akan tetapi, program assembly pada prosesor CSIC
menjadi lebih sederhana karena sudah ada instruksi yang kompleks. Untuk
membuat instruksi yang kompleks seperti instruksi perkalian , pembagian,
dan instruksi lain yang rumit pada prosesor CSIC, diperlukan hardware yang
kompleks juga. Dibutuhkan ribuan gerbang lojik ( logic gates) transistor un•
tuk membuat prosesor CSIC. Instruksi yang kompleks juga membutuhka n
jumlah siklus mesin ( machine cycle) yang lebih panjang untuk dapat me•
nyelesaikan eksekusinya.
Salah satu mikrokontroler yang banyak digunakan saat ini yaitu mik•
rokotroler AVR. AVR adalah mikrokontroler RSIC (reduce instruction set
compute) 8 bit berdasarkan arsitektur Harvard , yang dibuat oleh Atmel
pada tahun 1996. AVR mempunyai kepanjangan Advanced versatile RSIC
atau Alf and Vegards Risc processor yang berasal dari nama dua mahasiswa
Norwegian institute of technologi (NTH), yaitu Alf-Egil Bogen dan Vegard
Wollan.
AVR memiliki keunggulan dibandingkan dengan mikrokontroller lain,
keunggulan mikrokontroller AVR yaitu AVR memiliki kecepatan eksekusi
program yang lebih cepat karena sebagian besar instruksi dieksekusi da•
lam 1 siklus clock, lebih cepat dibandingkan dengan mikrokontroller MCS51
yang memiliki arsitektur CISC (complex insruction set computer ) di mana
mikrokontroller MSC51 membutuhkan 12 siklus clock untuk mengeksekusi
1 instruksi . selain itu, mikrokontroller AVR memiliki fitur yang lengkap (
ADC internal, EEPROM internal, Timer/counter,Watchdog Timer, PWM
,Port I/O, Komunikasi serial, komparator, I2C,dll.), sehingga dengan fasili•
tas yang lengkap ini, programmer dan desainer dapat menggunakan untuk
berbagai aplikasi sistem elektronika seperti robot, otomatis instruksi, pera•
latan telekomuniksi,dan berbagai keperluan lain.secara umum mikrokontro •
ller AVR dapat dikelompokkan menjadi 5 kelompok yaitu keluarga Attiny,
AT90SXX,Atmega,AVRXMega, dan AVR32 UC3.
1.6.1 Motorola
Motorolla merupakan sebuah perusahaan multinasional yang menghasi lk •
an berbagai macam produk teknologi. Didirikan pada tahun 1928 dengan nama
Ludwig van Beethoven and Johannes Brahms. Bermarkas di Schaum• burg,
Illinois. Perusahaan ini menghasilkan berbagai macam produk-produk
teknologi. Mempekerjakan 66.000 pekerja pada tahun 2006. Setelah kehi•
langan $4,3 miliar dari tahun 2007 hingga 2009, perusahaan ini dibagi men•
jadi dua perusahaan publik yang independen, Motorola Mobility dan Moto•
rola Solutions pada tanggal 4 Januari 2011.[6] Motorola Solutions umumnya
dianggap menjadi penerus langsung ke Motorola, Inc, karena reorganisasi
itu terstruktur dengan Motorola Mobility yang dipisahkan.
1.6.2 Mitsubishi
Mitsubishi Companies adalah sebuah perusahaan Jepang yang menaungi
berbagai perusahaan yang berbagi merek dagang dan bagian perusahaan
Mitsubishi. Perusahaan ini didirikan pada tahun 1870 sebagai perusahaan
pelayaran oleh Yataro Iwasaki.
10 Pengenalan & Sejarah Mikrokontroler
1.6.3 NEC
NEC Corporatio n ( dahulu meru p akan singkatan dari Nippo n Electr i c
Comp an y) adalah sebuah peru sahaan teknolog i info rmas i multi-nasio n a l
yang berkanto r pusat di M inato, Toky o, Jepan g. NEC menyed ikan infor m a •
si teknolog i dan solutsi jarin g kan kepad a bisnis, penyedia jasa komunik as i ,
dan pemerin tah. NEC meru p ak an pemb u at dari Eart h Simu lato r, salah satu
superko m p uter tercep at di dunia. NEC meru p akan bagian dari Sumit o m o
Gro u p.
Bisnis mereka terbag i dalam tiga segmen utama: Solusi TI, Solusi ja•
ringan, dan peralat an elektro n ik . Solusi TI melay an i solusi penghitun g a n
kepad a bisnis, pemerinta h, dan indiv id ual. Solusi jaring an menaw ark an sis•
tern jarin g an, peralat an genggam , penyiara n, dan sistem lainny a. Div is i
peralatan elektro nik ny a termas u k semiko nd ukto r, tamp ilan, dan lain-lain.
Tahun-tahu n belakang an ini NEC meru pak an salah satu peru sah aan ter•
atas dalam jumlah paten A.S. yang dikeluar kan, dengan rata-rata paten
disetujui 1. 764 per tahu n.
1.6.4 Hitachi
Hitach i, adalah peru sah aan multin as io nal yang berkan to r pusat di M a•
ru nou ch i, Chiyo da, Tokyo, Jepan g. Peru s ah aan induk bagi Hitac hi Gro u p.
Hitac hi berad a di perin g k at 371 dalam Forbes Global 2000 tahun 2007. Di•
dirikan pada tahun 1910. Peru s ah aan ini memp ekerjak an 384.444 pekerj a
pada tahun 2007.
1.6.5 Philips
Konin klijke Philips Electro nics N.V. (Roy al Dutch Philips Electro ni c s
Lt d.), biasa dikenal sebagai Philips, ialah salah satu pro dusen elektro n i k
konsu men terbesar di dunia. Pad a 2004, penju alan ny a sekita r 30,3 juta
dan mereka memp eker jakan 161.586 orang di lebih dari 60 negara. Phili p s
diorgan is as i dalam sejumlah divisi: Philips Consumer Electro nics , Phili p s
Semico nd ucto rs , Philips Lighting , Philips M edical Systems dan Philips Do•
mestic Applian ces and Personal Care.
Peru s ah aan ini didirikan pada 1891 oleh 2 bersau d ara Gerard dan An •
ton Philips (1874-1951) di Ein d hoven, Belan d a. Pro d u k pertam an ya ialah
bola lampu 'dan alat elektro n ik lainny a'. Pabrik pertam an ya kini menja d i
museu m. Pad a 1920-an, peru sah aan ini mulai mempro d u ks i produ k lain,
dan pada 1939 pisau cukur listrik pertam any a, Philis hav e, diperke na lk a n.
Philips memas ark an alat cukurn ya di AS dengan nama Norelco . Philips
Pro d u sen Mikrok on trol er 11
1.6.6 Intel
Intel Corporation (NASDAQ: INTC; didirikan 1968) adalah sebuah peru•
sahaan multinasional yang berpusat di Amerika Serikat dan terkenal dengan
rancangan dan produksi mikroprosesor dan mengkhususkan dalam sirkuit
terpadu. Intel juga membuat kartu jaringan, chipset papan induk, kompo •
nen, dan alat lainnya. Intel memiliki projek riset yang maju dalam seluruh
aspek produksi semikonduktor, termasuk MEMS. Intel mengganti logo dan
slogannya pada 2 Januari 2006. Slogan lamanya "Intel inside" diganti de•
ngan "Leap ahead".
1.6. 7 Toshiba
Toshiba adalah perusahaan pemroduksi elektronik teknologi tinggi yang
bermarkas di Tokyo, Jepang. Toshiba adalah perusahaan elektronik terbesar
12 Pengenalan & Sejarah Mikrokontroler
1.6.9 Zilog
1.6.12 Sharp
Sharp Corporation merupakan sebuah perusahaan multinasional yang
menghasilkan berbagai macam produk elektronik. Didirikan pada tahun
1912. Bermarkas di Osaka, Jepang. Perusahaan ini mempekerjakan 56.000
pekerjanya pada tahun 2008.
14 Pengenalan & Sejarah Mikrokontroler
Rangkuman
Soal Formatif
Tujuan Pembelajaran
15
16 Hardware dan Software Mikrokontroler AVR dan Arduino
2 .1 Mikrokontroler AVR
Mikrokontroler AVR ( Alf and Vegards Risc processor) dari Atmel ini
menggunakan arsitektur RISC ( Reduced Instruction Set Computer) yang
artinya prosesor tersebut memiliki set instruksi program yang lebih sedikit
dibandingkan dengan MCS-51 yang menerapkan arsitektur CISC ( Complex
Instruction Set Computer).
hana memb erikan konstrib usi pada kecepatan dengan instruksi mesin yan g
terbatas. M ikroko ntro ler AVR RISC dapat berjalan pada single cycle dari
pro sesor clock, yang berarti M ikro ko ntro ler AVR dengan clock 8 M Hz, da•
pat mengeks ek us i sekitar 8 juta instruksi perdetik ny a atau 8 M IPS( million
instruction per second).
2.1.2 M emori
Bagian memori dari mikro ko nt ro l Atmel RISC AVR berbas is Harv ard M o•
del, yang mana memo r in ya terbagi sehingg a dapat mening katkan kecep at an
akses dan mening katk an kapasitas . CPU membagi antarm u ka untuk bag ian
kode memori FLA SH , bagian memori data , dan memori EEP ROM .
Memori FLASH memori FLA SH meru p akan blok dari memori FLA S H
yang dimulai dari lokasi OxOOO dan ukuran n y a tergan t u ng dari mik ro •
kontro ler yang digunak an. M emori FLA SH meru pak an memori non •
volatile dan digun ak an untuk meny im p an kode eksekusi dan kons tan •
ta, karen a kode-kod e tersebut akan digunakan kembali meskip un mik•
rokontro l e r tidak terhu b u n g ke catu daya, oh iya.. yang dima ks u d
non-volatil e yaitu kode yang disimp an dalam memori tidak hilan g
meskip un mikro ko ntro l tidak dialiri listrik, ru ang memori antara 16
bit pada setiap lokasi untuk menag an i instruksi mesin yang khus un y a
single-16 bit word.
Memori Data M emori data Atmel AVR khasnya terdiri dari tiga bag ian
memori baca/tu lis terpis ah .bagian teren d ah terd iri dari 32 regis ter
kerja umu m, yang diikuti oleh 64 register I/0, yang diiku ti oleh in ter •
nal SRAM . Reg ister kerja umum hanya: digun ak an untuk menyi m p an
variab el lokal dan data tempo ral yang digunakan oleh pro gram saat
dieksusi dan dapat juga digun akan untuk penyim p an an data variabel
global, 64 register I/0 digunakan sebagai antarm u ka untuk peran g k at
I/0 dan perip h eral yang berad a di papan mikro k ont ro ler. dan intern al
SRAM digunakan sebagai area penyim p an an variable umum dan jug a
untuk pro sessor stack .
Register-register , Reg ister kerja umum menemp ati 32 sel ternd ah da•
lam data memo ri. register ini kebany akan digunakan seperti data pe•
nyimp an an dalam kalku lato r yang mana hanya disimp an semen ta r a.
terkad ang digunak an untuk meny im p an variable lokal, dan terkad a n g
variable global, dan terkad ang sebagai pengarah ke memori yang dig u •
nakan oleh prosessor. singkatn ya pro sessor menggu n akan 32 regis ter
kerja sebagaim ana pro gram dieksekus i.
18 Hardware dan Software Mikrokontroler AVR dan Arduino
I/O yang sudah fix dan bisa digunakan dengan mudah. Arduino dapat di•
gabungkan dengan modul elektro yang lain sehingga proses perakitan jauh
lebih efisien. Para desainer hanya tinggal membuat software untuk men•
dayagunakan rancangan H/D yang ada. Software jauh lebih mudah untuk
dimodifikasi tanpa memindahkan kabel.
Saat ini arduino sangat mudah dijumpai dan ada beberapa perusaha•
an yang mengembangkan sistem H/D open source in i. Pengembanga n •
pengembangan tersebut antara lain:
• Arduino : http://www.arduino.cc/
• I-CubeX : http://www.infusionsystems.com/
• Arieh Robot Project Junior : http://www.arobotineveryhome.com/
• Dwengo : http://www.dwenfo.org/
• EmbeddedLab : http:/www.embedded.arch.ethz.ch/
• GP3 : http://www.awce.com/gp3.htm/
Di antara pengembang-pengambang yang ada, Arduino merupakan sa•
lah satu pengambang yang banyak digunakan. Pada buku ini, kita akan
menggunakan produk pengembang dari Arduino. Keistimewaan arduino
adalah hardware yang open source. Hal ini sangatlah memberi keleluasan
bagi pengguna untuk bereksperiment secara bebas dan gratis.
Arduino adalah pengendali mikro single-board yang bersifat open-source,
diturunkan dari Wiring platform, dirancang untuk memudahkan pengguna •
an elektronik dalam berbagai bidang. Hardwarenya memiliki prosesor Atmel
AVR dan softwarenya memiliki bahasa pemrograman sendiri.
Saat ini Arduino sangat populer di seluruh dunia. Banyak pemula yang
belajar mengenal robotika dan elektronika lewat Arduino karena mudah di•
pelajari. Tapi tidak hanya pemula, para hobbyist atau profesional pun ikut
senang mengembangkan aplikasi elektronik menggunakan Arduino. Baha•
sa yang dipakai dalam Arduino bukan assembler yang relatif sulit, tetapi
bahasa C yang disederhanakan dengan bantuan pustaka-pustaka (libraries)
Arduino. Dan seperti Microcontroller yang banyak jenisnya, Arduino la•
hir dan berkembang, kemudian muncul dengan berbagai jenis. Diantaranya
adalah:
1. Arduino Uno Jenis yang ini adalah yang paling banyak digunakan.
Terutama untuk pemula sangat disarankan untuk menggunakan Ardu•
ino Uno. Dan banyak sekali referensi yang membahas Arduino Uno.
20 Hardware dan Software Mikrokontroler AVR dan Arduino
9. Arduino Micro Ukurannya lebih panjang dari Nano dan Mini. Karena
memang fasilitasnya lebih banyak yaitu; memiliki 20 pin I/0 digital
dan 12 pin input analog.
10. Arduino Ethernet Ini arduino yang sudah dilengkapi dengan fasilitas
ethernet. Membuat Arduino kamu dapat berhubungan melalui jaring•
an LAN pada komputer. Untuk fasilitas pada Pin I/0 Digital dan
Input Analognya sama dengan Uno.
11. Arduino Esplora Rekomendasi bagi kamu yang mau membuat gadget
sepeti Smartphone, karena sudah dilengkapi dengan Joystick, button,
dan sebagainya. Kamu hanya perlu tambahkan LCD, untuk lebih
mempercantik Esplora.
12. Arduino Robot Ini adalah paket komplit dari Arduino yang sudah ber•
bentuk robot. Sudah dilengkapi dengan LCD, Speaker, Roda, Sensor
Infrared, dan semua yang kamu butuhkan untuk robot sudah ada pada
Arduino ini.
. ..
: Serial Out (TX)
Serial In (RX)
USB Plug
Reset Button
In-Circuit
Serial Programmer
ATmega328
Microcontroller
Analog In
pee (0-5)
Ground Pins
2.3.2 Program
Agar dapat dilaksanakan oleh pemproses, algoritma harus ditulis dalam
notasi bahasa pemrograman sehingga dinamakan program. Jadi program
adalah perwujudan atau implementasi teknis algoritma yang ditulis dalam
bahasa pemrograman tertentu sehingga dapat dilaksanakan oleh pemproses.
Kata algoritma dan kata program seringkali dipertukarkan dalam penggu•
naannya. Algoritma adalah urutan langkah-langkah penyelesaian masalah
sedangkan Program adalah realisasi algoritma dalam bahasa pemrograman.
Program ditulis dalam salah satu bahasa pemrograman dan kegiatan mem•
buat program disebut pemrograman (programming). Orang yang menulis
program disebut programmer. Tiap-tiap langkah di dalam program disebut
pernyataan atau instruksi. Jadi, program tersusun atas sederetan instruksi.
Bila suatu instruksi dilaksanakan, maka operasi-operasi yang bersesuaian
dengan instruksi tersebut dikerjakan oleh pemproses. Secara garis besar
perangkat yang membutuhkan alogaritma tersusun atas empat kompone n
utama, yakni:
1. piranti masukan berfungsi untuk memasukkan data atau program ke
dalam memori
24 Hardware dan Software Mikrokontroler AVR dan Arduino
Compiler:
• baca bilangan 1.
• baca bilangan 2.
• baca bilangan 3.
• bandingkan MAX dengan bilangan 3, dan pilih yang lebih besar, jika
keduanya sama besar, pilih MAX dan sebut bilangan tersebut MAX.
Pseudocode
Pseudocode adalah notasi yang menyerupai bahasa pemrograman tingkat
tinggi. Keuntungan menggunakan notasi pseudocode adalah memberikan
kemudahan bagi programmer untuk menerjemahkan ke notasi bahasa pem•
rograman, karena terdapat korespondensi antara setiap pseudocode dengan
notasi bahasa pemrograman.
26 Hardware dan Software Mikrokontroler AVR dan Arduino
Flowchart
Flowchart adalah penggambaran secara grafik dari langkah-langkah dan
urut-rutan prosedur dari suatu program. Flowchart menolong analis dan
programmer untuk memecahkan masalah ke dalam segmen-segmen yang
lebih kecil dan menolong dalam menganalisis alternatif-alternatif lain da•
lam pengoperasian. Bila seorang analis dan programmer akan membuat
flowchart, ada beberapa petunjuk yang harus diperhatikan, seperti:
• Setiap langkah dari aktivitas harus berada pada urutan yang benar
l 7 t
Input/outp ut ; Prose s ;
1
•
- Menunjukkan
Garis alir;
<> digunak an
suatu
Keputusa n;
utk
selrksi
kondisi didlm
program
r oses
0 0 Menu nj ukk a n
- - menunjukkan
Penghubung; terdefinisi;
pen ghu b u n g
himan y sama
e II 11 suatu operasi
rinciannya
yg
< Persiapan,
digunak a n
memberi
awal
besaran
utk
nilai
suatu
( )
Terminal,
menunjukkan
awal & akhir dart
suatu proses
-
Gambar 2.4: Simbol Flowchart dan Kegunaannya
Bahasa Pem prog ram an 27
• CBI adalah kode Assembly untuk instruksi Clear Bit I/O, yaitu mem•
beri logika nol pada suatu pin I/O digital.
void main(void) {
DDRA=0 XFF; //isi program
PORTA=0 XFF;
while(l) {
//isi program yang berulang
Baris pertama #/include < ... > bukanlah pernyataan sehingga tak dia•
khiri tanda titik koma ";". Baris tersebut meminta kompiler untuk menyer•
takan file yang namanya ada di antara tanda < ... > dalam proses kompilas i.
File-file ini (berekstensi .h) berisi deklarasi fungsi ataupun variable. File
ini disebut header dan digunakan semacam perpustakaan untuk pernyataan
yang ada di tubuh program.
4 wt.
es 1 « G e m a.
... I I I I , 4$s, 4$4,
• «·.
a/ ++,
100L BAR I
Code Nitto 4a ant
e C odevi s io n
/u. a e
8. [ uod e
EDITOR WINDOWS
I
PROJECT
NAVIGATOR
MESSAGE MIND0N S
Ada beberapa program yang dapat digunakan sebagai editor dan compiler
untuk mikrokontroler AVR, salah satunya adalah CodeVisionAVR. Code•
VisionAVR adalah salahsatu alat bantu pemrograman (programing tools)
yang bekerja dalam lingkunga pengambangan perangkat lunak yang terinte•
grasi (Integrated Develoment Environment, IDE). Seperti aplikasi IDE lai•
nya, CodevisionAVR dilengkapi dengan sourcecode editor, compiler, linker,
Ba h a sa Pemro gra ma n C 31
void se tup() {
/l put your se tup code he re , to run once :
void loop{) I
// put your mai n code here , to run repeat edly:
Penjelas an tentan g fungsi setiap sintak pada A rduino hamp ir sama de•
ngan AVR. Beberap a bagian yang membed ak an n ya adalah sebagai beriku t:
• "void main(v o id )" menjadi "void setup() ": penan da atau sebagai p e•
nunju k isi dari pro gram dalam pemp ro g ram an AVR, isi dari pro g ra m
dimulai dari tanda kuru n g kurawal ( {) dan diakh iri pula dengan tan d a
tutup kuru n g kurawal (})
• perint ah " while(1)" sendiri juga dapat digun ak an di arduin o, tapi seca•
ra khusus aplikasi arduino sudah meny ed i akan tempat untuk menul is
program yang memiliki karakteris tik beru lang (looping) yang tertul is
" void loop()"
Secara Prinsip, sketch selalu melib atk an dua fu ngsi, yaitu setup() dan
loop(). Kode Sketch menimal dapat dilih at pada gambar 2.7. Baris yan g
mengand u ng void dan nama fungsi adalah judul fungsi, sedangkan bagian { }
dinam ak an tubuh fungsi. Semua definisi fungsi melibatkan judu l fungsi dan
tubuh fungsi. M enuru t Kadir (2015 ) fungsi sendiri adalah deretan instruks i
yang diberi suatu anam, umumn ya fungsi memberi kan nilai ketika dipan g g il .
Nilai yang diberik an tersebut dinamak an nilai balik.
32 Hardware dan Software Mikrokontroler AVR dan Arduino
2.5.4 Operator
Operator adalah source code yang digunakan dalam mengelolah data baik
itu membandingkan, menyamakan, menjumlahkan, dls.
Bitwise Exclusive OR
>> Right Shift
<< Left Shift
Rangkuman
Soal Formatif
Tujuan Pembelajaran
2. Peserta Didik mampu menentukan data digital sebagai input dan ou•
tput pada mikrokontroler.
35
36 Interface Data Digital
taan ini tidak bertujuan untuk membuat kita menjadi pesimis, tetapi seba•
liknya agar bersiap-siap untuk bekerja keras jika ingin berkecimpung dalam
bidang elektronika. Thomas A. Edison pernah berpesan bahwa : Ada cara
untuk menyempurnakan. Singkaplah !.
Penelitian yang tidak kenal lelah meneruskan berbagai penemuan untuk
menyempurnakan yang sudah ada dan untuk mendapatkan hal-hal yang ba•
ru. Melalui evaluasi gagasan, penelitian, kreativitas, inspirasi dan kerja ke•
ras telah ditemukan hal-hal baru yang lebih inovatif dan semakin sempurna.
Kita dapat mempelajari elektronika sampai sejauh yang kita perlukan. Oleh
karenanya kita tidak perlu pesimis asal siap bekerja keras sampai dengan
taraf tertentu kita dapat menguasainya.
#if
l
Gambar 3.1: Led Emitting Diode
Terdapat dua jenis seven segment yaitu seven segment commod cathode
(katoda) dan seven segment commod anode(anoda).
Pada seven Segmen jenis Common Cathode (Katoda), Kaki Katoda pada
semua segmen LED adalah terhubung menjadi 1 Pin, sedangkan Kaki Anoda
akan menjadi Input untuk masing-masing Segmen LED. Kaki Katoda yang
terhubung menjadi 1 Pin ini merupakan Terminal Negatif (-) atau Ground
sedangkan Signal Kendali (Control Signal) akan diberikan kepada masing•
masing Kaki Anoda Segmen LED.
TIPE COMMON CATHODE
(Common Katoda)
g fGND a b
3&8
is
a
D d dp
e d GND¢ dp
Pada seven Segmen jenis Common Anode (Anoda), Kaki Anoda pada se•
mua segmen LED adalah terhubung menjadi 1 Pin, sedangkan kaki Katoda
akan menjadi Input untuk masing-masing Segmen LED. Kaki Anoda yang
terhubung menjadi 1 Pin ini akan diberikan Tegangan Positif ( +) dan Signal
Kendali (control signal) akan diberikan kepada masing-masing Kaki.
TIPE COMMON ANODE
(Common Anoda)
g f c a b
3&8
a
~~:
e d Vc
d
c
dp
dp
teknike
Pada dasaran ya led matri x adalah display led yang disusun sedemi k i •
an ru pa sehingga untuk memb u at sebuah karakter dibut uh k an kombi n as i
tegang an antara pin baris dan kolom.
lg lb .t u
c1 c2 c3 c4 c5 C6 c7 C8
Kemu d ian untuk memp erm u d ah kontro l dan meng hem at pin maka di•
perlu kan pro ses scanning pada bagian colom sedangkan pada baris diber i k an
bit sesuai huru f/kara kter yang akan ditamp ilkan yang bersesuaian deng an
posisi scanning.
Scanning untuk kolom dimaksud memberi kan "1" high ( untuk commo n
katoda) atau" O " untuk common anoda , untuk kolom lainnya diberi nilai
negasi dari kolom yg diberi nilai 1 sebelumn ya begitu selanjutny a un tu k
kolom berik ut n y a sampai kolom terakh ir dari rangkaian led mat rix dan ber•
ulang dari depan lagi. Pro ses ini dilaku kan sangat cepat sehingga mata kita
melihatn ya tetap sebagai suatu karakter yg diam.
misalny a ingin menamp ilkan huru f A , secara umum digambar kan seba•
gai beriku t:
42 Interface Data Digital
o0000ooo
o00o00o
o0oooo0o
doooooo¢
0000000o
0ooooood
0ooooood
oooooo¢
Gambar 3. 7: Menamilkan Karakter "A" pada Led Matrikx
dari gambar dapat dijelaskan dengan logika saat kolom pertama ( scan
kolom 1 = 1 /high) maka bit yg diberi pada baris berupa "1110000", se•
hingga jika ketemu 1 vs 1 tidak ada arus mengalir, jadi LED mati, jika 1
ketemu 0 maka arus mengalir, led menyala. Begitu juga untuk kolom ke•
dua, ketika kolom kedua diberi tegangan maka pada baris bit yg diberikan
adalah "1101011" dan seterusnya, ketika kolom nya mencapai ujung maka
akan diulang ke kolom 1 lagi. Untuk melakukan scanning biasanya dila•
kukan dengan memanfaatkan shift register, atau paling sederhana dengan
menggunakan IC 4017 yang di cascade menjadi led berjalan yang panjang.
3.3.4 M otor
Motor atau lebih tepatnya motor listrik adalah komponen elektrik yang si•
fatnya merubah besaran elektrik menjadi fisik berupa putaran. Motor listrik
terdiri atas tiga bagian utama yang disebut stator (bagian yang diam) dan
rotor (bagian yang bergerak) dan air gap. Rotor dapat berputar karena
adanya medan magnet yang dipengaruhi oleh arus listrik. Air gap adalah
bagian yang memisahkan rotor dan stator. Motor terdiri dari dua jenis yaitu
motor AC dan motor DC. Motor DC menggunakan 2 data yang harus ter-
Ap lika si In terfa ce Data Digital 43
3.3.5 B uzzer
Buzzer adalah komponen yang merubah besaran elektrik menjadi besaran
suara. Penggunaan bazzer untuk anatarmuka mikrokontroler sama prinsip •
nya dengan LED. Yang diperlukan hanya menghubungkan salah satu PIN
dari mikrokontroler ke kaki positif buzer, dan kaki satunya ke GND rangka•
ian.
k
·[· Term i na l 1 -2 NC
Term i nal 3 -4 NO
::
• •
3 4
Kondis i norm al
3
Kondi si
4
diteka n
XCK/TO/P1 n fr PAO/ADCo
T1/ PI t# PA /AD C
INT2/A1NO/P2 r3 EC PA2/ADC2
OCO/ A IN / P1 3 IJ a; PA3/ADC3
ss/P 14 r r PA4/ADC4
MOS1 / P S t
6 E PA/ADC5
MIS0/P16 ET .r PA6/ADC6
SCK/P7 L E PA7/ADC7
Reset l'ol I AREF
A tm eg a16
vcc £ GND
GND I Avcc
XTA L . 2 Pe7/1Os€2
XTA I . 1 Pc6/Toscf
RXD/PDO 4 Pc / TD 1
1XD/PD1 PC /TD O
INTO/PD2 PC3/TMS
INT1/PD3 PC2/TCK
0C11/PD4 PC1/sDA
OCLA/PD' PCo/SCI
C PL/P D 6 PD 7/0 C 2
Terlihat pada gambar 3.21 sebagai contoh, gambar tersebut adalah data se•
et ATmega16, terdapat 4 buah port yaitu Port A(PA), Port B(PB), Port
C(PC), Port D(PD), keempat port tersebut merupakan jalur bi-directional
yang semuanya dapat diprogram sebagai input ataupun output dengan pi•
lihan internal puul-up.
Port A Merupakan 8-bit directional port I/0. Setiap pinnya dapat menye•
diakan internal pull-up resistor (dapat diatur per bit). Output buffer
Port A dapat memberi arus 20 mA dan dapat mengendalikan display
LED secara langsung. Data Direction Register port A (DDRA) harus
disetting terlebih dahulu sebelum Port A digunakan. Bit-bit DDRA
diisi O jika ingin memfungsikan pin-pin port A yang bersesuaian se•
bagai input, atau diisi 1 jika sebagai output. Selain itu, kedelapan pin
port A juga digunakan untuk masukan sinyal analog bagi A/D
converter.
Port B Merupakan 8-bit directional port I/0. Setiap pinnya dapat menye•
diakan internal pull-up resistor (dapat diatur per bit). Output buffer
Port B dapat memberi arus 20 mA dan dapat mengendalikan display
LED secara langsung. Data Direction Register port B (DDRB) harus
disetting terlebih dahulu sebelum Port B digunakan. Bit-bit DDRB di•
isi O jika ingin memfungsikan pin-pin port B yang bersesuaian sebagai
input, atau diisi 1 jika sebagai output. Pin-pin port B juga memiliki
untuk fungsi-fungsi alternatif khusus seperti yang dapat dilihat dalam
tabel berikut.
Port C Merupakan 8-bit directional port I/0. Setiap pinnya dapat menye•
diakan internal pull-up resistor (dapat diatur per bit). Output buffer
Port C dapat memberi arus 20 mA dan dapat mengendalikan display
LED secara langsung. Data Direction Register port C (DDRC) harus
disetting terlebih dahulu sebelum Port C digunakan. Bit-bit DDRC
diisi O jika ingin memfungsikan pin-pin port C yang bersesuaian seba•
gai input, atau diisi 1 jika sebagai output. Selain itu, dua pin port C
(PC6 dan PC7) juga memiliki fungsi alternatif sebagai oscillator untuk
timer/counter 2.
Port D Merupakan 8-bit directional port I/0. Setiap pinnya dapat menye•
diakan internal pull-up resistor (dapat diatur per bit). Output buffer
Port D dapat memberi arus 20 mA dan dapat mengendalikan display
LED secara langsung. Data Direction Register port D (DDRD) harus
disetting terlebih dahulu sebelum Port D digunakan. Bit-bit DDRD
Data Digital Mikrokontroler AVR 47
RESET RST pada pin 9 merupakan reset dari AVR. Jika pada pin ini
diberi masukan low selama minimal 2 machine cycle maka system akan
di-reset.
AVcc Avcc adalah kaki masukan tegangan bagi A/D Converter. Kaki ini
harus secara eksternal terhubung ke Vcc melalui lowpass filter.
AREF AREF adalah kaki masukan referensi bagi A/D Converter. Untuk
operasionalisasi ADC, suatu level tegangan antara AGND dan Avcc
harus dibeikan ke kaki ini.
Setiap port tersebut mempunyai tiga buuah register bit, yaitu DDxn,
PORTxn dan PINxn. Huruf x mewakili nama port, sedangkan n mewakili
nama bit. Bit DDxn terdapat pada I/O address DDRx, bit PORTxn ter•
dapat pada I/O address PORTx dan bit PINxn terdapat pada I/O address
PINx.
Port I/O pada mikrokontroler AVR dapat dikonfigurasi sebagai input/output,
dengan cara mengubah I/O register data direction register. Bit DDxn da-
lam register DD Rx (Data Direction Register) menentukan arah pin.
Misalnya, jika ingin port B dikonfigurasi sebagai output, maka bit Data
Direction Register di Port B haruh dirubah menjadi 1. Contoh: DDRB.1=1;
: artinya bit 1 (pinl) pada port B telah dikonfigurasi menjadi pin ou•
tput. Dan sebaliknya jika ingin port B dikonfigurasi sebagai input, maka
bit Data Direction Register di Port B haruh dirubah menjadi 0,. Contoh:
48 Interface Data Digital
#include <mega16a.h>
void main(void)
{
PORTA = 0 X F F; //output pin di port A berlogika 1
DDRA = O F F; //semua pin di port A dikonfigurasi output
Tegangan keluaran pada pin I/O mikrokontroler ketika logiak "l" besar•
nya sekitar 4,2v dan arusnya 20mA. Port I/O sebagai output hanya mem•
berikan arus (sourcing) sebesar 20 mA, keluaran dari suatu port mikro•
kontroler hanya dapat mengemudikan perangkat output dengan arus keci,
sehingga untuk perlatan elektronik yang membutuhkan arus besar misalnya
untuk menggurakkan motor DC perlu memberikan penguat tambahan, oleh
karena itu biasanyadipergunakan transistor atai IC penguat (driver) agar
port sebagai sinking current, seperti pada port untuk menyalakan led, yang
akan memyala saat port diberikan logika low (0) dan mati ketika port diberi
logika high(1).
Data Digital Mikrokontroler AVR 49
■ U1
■ PCOISCL
PC1SDA
■ PC2TCK
■ PC 3/T MS
PC 4fT DO
■ PC S/ T OI
PC 6/T OSC 1
PC7/TOS C2
■
■ PDOFRXD
PD1/TXD
■ PD2ANTO
PD3MNTT
PD 4 /0 C 1 B
■ POSIOC1A
■ PD6ACP1
PD7/0C2
■
■
■ AREF
AVCC
-_ ATM E G A 1 6
«TEXT>
Dari rangkaian pada gambar 3.14 dapat dibuat listting program sebagai
berikut.
Listing Program:
s t st stststst ststttttttttttttttttttttt # st #st# st #ts# s t #t tt#
satu buah seven segment dihubungkan dengan port C pada mikrokontr o ler
ATmega16 dan pada seven segment jenis commond cathode membutuhkan
pin gnd untuk catu daya.
U1
PC0CL
PC1/SDA
XTAL1 PC2TCK
XT AL2 PC3/TMS
PC4/TDO
PA0IADCO PCS/TD
PA1/ADC1 PC6/TOSC1
PA2IADC2 PC7/TOSC2
PA3IADC3
PA4/ADC4 PDORXD
PAS/ADCS PD1/TXD
PA6/ADC6 PD2INTO
PA7/ADC7 PD3MNTT
PD4/0C18
PB0/TOXCK PD5/OC1A
PB1/T1 PD6MCP1
PB2IAINOANT2 PD7/0C2
PB3/AIN1 /0CO
PB45S
PB5MOSI
PB6MSO AREF
PB7SCK AVCC
Dari rangkaian pada gambar 3.15 dapat dubat listing program sebagai
berikut.
Listing Program:
stests#ls#ls#ls#ls#ls#ts#les ses#te st es#es#es#es# es#ts#t s # te st es#es#es#es#es#es#es#ts#stestes#es# es#es#es#es# es#ts#ste s tes#es#es#es# es#es#es#ts # te s tes#es #l e
sts#ltd#de#testes#tests#ts#le #te s te s #t e#te sts#ts #le #test#es #l es s#ts#l s#ts #ts# ls#t s#l s#t s#ts#le s s#ts# ts#ts#t s#ls# ts#t s#l s#t s#ts# ts# ts#ls# ts# ts f
#include <mega16.h>
void main(void)
{
P ORTC=0 X O 0;
DDRC= O xFF;
P ORTC=O b0 1 10 1 1 0 1 ; //membuat angka "s"
}
Data Digital Mikrokontroler AVR 51
U1
PC0SCL
PC1/SDA
XTAL1 PC2/TCK
XTAL2 PC3/TM S
PC4/TDO
PA0/ADC0 PCS/TOI
PA1/ADC1 PC6/TOSC1
PA2/ADC2 PC7/TOSC2
PA3/ADC3
PA4/ADC4 PD0 R X D
PAS/ADCS PD1 /T X D
PA6/ADC6 PD2 I N T O
PA7/ADC7 PD3ANT1
PD40C18
PB0/T0/ X CK PD5NOC1A
PB1TT PD6MCPf
PB2IAI N0 A NT 2 PD7/0C2
PB3/AI N1 /OC0
PB45s
PB5MO SI
PB6MSO AREF
PB7SCK AVCC
Dari rangkaian pada gambar 3.16 dapat dibuat listing program sebagai
berikut.
Listing Program:
silts#lets#des#tests # de s# ts # d es#tests#testes# ts#ids # d es# ts#ds dids # d es# ts # d es# ts #s td#ls#ids # li ds# ts #ids#did#dsdids#did#des# tid es#did#des# ts # d es#did
stile#es#testes#ts#testes#testes#ts#testes#tes tes #t s #t estes# d es # testes # testes #t estes#ts#testes # testes#ts#tes te s # de s #t ests #t ests# de s#t ide s #t ests#d sdtides # d es#t ides#dids t
#include <mega16.h>
voi d ma in (voi d )
POR TD = Ox 0 O;
DDRD=Ox F F ;
POR TD = Ob 1 0010000; //me mb u at ang k a "g"
}
52 Interface Data Digital
Pada dasarnya Motor DC dapat berputar ketika satu pinnya berlogika 1 dan
yang satunya berlogika 0. Pada rangkaian berikut hanya menggunakan 1 pin
dari motor ke mikrokontroler dan satu pinnya lagi duhubungkan ke ground
(berlogika 0), sehingga untuk memutar motor DC cukup dengan memberik•
an sinyal high (logika 1) ke pin yang menghubungkan mikrokontroler dan
motor DC. Pada rangkaian berikut menggunakan pin 7 pada Port C untuk
mengontrol motor DC.
U1
9 RESET PC0/SCL
13 PC1/SDA
XTAL1 PC2ITCK
XT AL2 PC3/TMS
PC4ITD O
PA0/ADC0 PC5/TDI
PA1ADC1 PC6/TOSC1
PA2IADC2 PC7/T0SC2
PA3/AD C3
PAA/ADC4 PDORXD
PA5/ADC5 PD1/TXD
PA6IADC6 PD2INTO
PA7/ADOT PD3JINT1
PD4/0C18
PBO/TO/ XCK PD5/OC1A
PB / ; PD6/ICP1
•
PB2/AINO/IN T2 PD7/0C2
PB3/AIN1/OC0
PB4S S
PB5MOS
PB6/MISO AREF
PB7/SCK AVCC
Dari rangkaian pada gambar 3.17 dapat dibuat listing program sebagai
berikut.
Listing Program:
s t st ststststtttttttttt t t ttttttttttttttttttttttttttttt t
#include <mega16.h>
// Declare your global variable s here
voi d ma in (voi d)
{ DDR C . 7 =1 ;
PORTC . 7 = 1 ;
}
Data Digital Mikrokontroler AVR 53
Keunggulan dari pengontrolan motor dengan 2 data adalah arah rotasi yang
dapat dirubah tiap saat sesuai dengan instruksi program, seperti membe•
rikan waktu untuk putar kiri kemudian setelah selang waktu 5 detik akan
merubah rotasi menjadi putar ke kanan. Contoh rangkaian dapat dilihat
pada gambar berikut:
U1
9 RESET PCO/SCL
PC1/SDA
13 XTAL1 PC2TCK
XT AL2 PC3/TMS
PCA/TDO
PAO/ADC0 PC5/TDI
PA1 / AD C 1 PC6fTOSC 1
PA2/ADC2 PC7fTOSC2
PA3/ADC3
-
PA4/ADC4 PDO / R X D
PA5/ADC5 P D 1fT X D
PA6/ADC6 PD2/INT0
PA7/ADC7 PD 3/ I N T 1
PD4 /0C 1 B
PB0/ T O/X CK PD5 /0 C 1 A
PB1f T 1 PD6/ICP 1
P82 / AI N O/I NT2 PD7/ 0C2
PB3/AIN 1 / O C0
PB45
S
P85/M OSI
PB6/MIS O AREF
PB7/SCK AVCC
Dari rangkaian pada gambar 3.18 dapat dibuat listing program sebagai
berikut.
Listing Program:
silt s#le s s#l s#le s s#le s s#t s#le s s#t s#le s s#e s#le s s#e s#le s s#le s s#t s#le s s#e s#le s s#e s#le s s#e s#le s s#le sle s s#le s s#e s#e s#e s#e s#e s#e s#le s s#t s#le s s#e s#e s
ATM E G A 1 6
Listing Program:
silt s#le s s#l s#le s s#le s s#t s#le s s#t s#le s s#e s#le s s#e s#le s s#le s s#t s#le s s#e s#le s s#e s#le s s#e s#le s s#le sle s s#le s s#e s#e s#e s#e s#e s#e s#le s s#t s#le s s#e s#e s
U1
9 RE S E T PCO/ SCL
PC1/SD A
XTALT PC2ITCK
XTAL2 PC3/MS
PC4 / T O O
PAO/ADC0 PC5/TDI
■ PA1/ AD C 1
PA2/ADC2
PC6/TO SC 1
PC7f TO SC2
R2 PA3/ADC 3
•
10k PA4/ADC4 PO 0 / R XD
<TE XT> PA5/ADC5 PD1/XD ■
PA6/ADC6 PO 2 /I N T 0
■ PA7/ A D C 7 PD3INT T
PD4 /0C 1 B
PB1/TT D6 CP 1 _
PBO/ T 0/X CK P05 / 0 C 1 A
P
PB2/AIN O N T 2 PD7/0 C 2
_ PB3 / A I N 1 / O C 0
PBA SS
PB5/MOSI
PB6I M ISO AR E F
PB7/ S C K AVCC
Dari rangkaian pada gambar 3.20 dapat dibuat listing program sebagai
berikut.
Listing Program:
AVR Core Clock frequency: 16,000000 MHz
Memory model Small
External RAM size 0
Data Stack size 256
voi d ma in(voi d)
whil e (1)
if (PINB.0= = 0) {PORTD.0=1; }
56 Interface Data Digital
0OE oao» E
L
#define led 1
#define tomb ol 2
void setup() {
pinMode(1 , OUT PUT );
pinMo de(2 , INPUT );
void loop() (
/l put your main code here, to run repeatedly:
Pada dasarnya semua pin yang ada pada Arduino (ATMega) berada
pada mode input secara default. Jadi ketika kita ingin menggunakan suatu
pin sebagai input, maka kita tidak mesti menuliskan pinMode(nomorP in,
INPUT);.
Untuk menerima input digital yang masuk ke pin, kita gunakan fungsi
digitalRead(nomorPin). Fungsi ini menerima satu parameter, yaitu nomor
pin mana yang akan dibaca nilai inputnya. Fungsi ini akan mengembalikan
Data Digital Arduino 57
nilai 1 dan 0, atau HIGH dan LOW (HIGH adalah konstanta dengan nilai
1 dan LOW adalah konstanta dengan nilai 0)
Untuk mengirimkan sinyal digital, kita gunakan fungsi digitalWrite(nomorPin,
nilaiDigital). Fungsi ini dapat digunakan pada pin yang sebelumnya sudah
diset ke mode OUTPUT. Parameter kedua adalah set nilai HIGH atau LOW.
Apabila pin diset dengan nilai HIGH, maka voltase pin tersebut akan diset
ke 5V (atau 3.3V pada board bertipe 3.3V) dan bila pin diset ke LOW,
maka voltase pin tersebut akan diset ke OV.
• • -- R1
D1
• • ■
■
••• % ••• 6= -
100
r? 0 <TE X T > LED-YELLOW
)> <TE X T >
~]
2z
• •z • r
> $
)>
• • Tz -
U
■ R2
D2
■
• • Sn
100
• •
<TEX T > LED-YELLOW
RX <TE X T >
-_
Dari rangkaian pada gambar 3.22 dapat dibuat listing program sebagai
berikut.
void setup() {
pinMode (3, OUTP UT );
pinMode(9, O U T P U T );
)
void loop() (
digitalrite(3 ,HIGH ); //Led Meny ala
digitalrite(9,LOW) ; //Led Mati
)
58 Interface Data Digital
Sebuah seven segment dihubungkan dengan pin digital pada Arduino UNO,
dan pada seven segment jenis commond cathode membutuhkan pin gnd un•
tuk catu daya serta membutuhkan sinyal high(l) dari mikrokontroler untuk
menyalakannya.
DUIN01
-
e
r
6
-
t r-- -
~ s c
g T 5
I
...
0 z 3
l
0 7
z
-i TX
RX
1 '$
Listing Program:
_7segement_co_c athode $
define a 7 //mende finisika n pin a pada 7segment terhubung dengan pin digital 7
define b 6
define c 5
define d 4
define e 3
define f 2
tdefine g 1
void setup() {
pinMode (a, OUT PUT ); //set ke mode pn output
pinMode (b, OUT PUT );
Data Digital Arduino 59
Sama halnya dengan seven segment jenis command cathode, seven segment
commond anode dihubungkan dengan pin digital pada Arduino UNO dan
pada seven segment jenis commond Anode membutuhkan pin vcc(5v) untuk
catu daya serta memerlukan sinyal low dari mikrokontroler untuk mnyala•
kannya. Berikut adalah rangkaian seven segment yang menampilkan angka
7 sesuai instruksi program.
DUIN01
•
•
0
» o
~]
z 5
3
7
0
z
n
RX
Listing Program:
_7 segement_co_a nodhe
define a 7 //mendefinisika n pin a pada 7segment terhubung dengan pin digital 7
define b 6
define c 5
define d 4
define e 3
#define f 2
define g 1
void setup()
pinMo de (a, OUT PUT ); //set ke mode pn output
pinMo de (b, OUT PUT );
pinMo de (c, OUT PUT );
pinMo de (d, OUT PUT );
pinMo de (e, OUT PUT );
pinMo de (f, OUT PUT );
pinMo de (g, OUT PUT );
)
Pada dasarnya Motor DC dapat berputar ketika satu pinnya berlogika 1 dan
yang satunya berlogika 0.
■■ ■
■ •■
■ ■
■ ■
: a
:
5z
Gl
l: ■
■
■
■
:
+
i5
+ 2
;= %
5
RX
Listing Program:
Motor_ 1_Data
void setup() {
pinMo de(7, OUTPUT); //set ke mode pin output
)
0 ■ •
- ■
•■
•a
%
;
> : o
z
6
:3••
g "
5
■
■
+
;i5+
'z
■ RX
Dari rangkaian pada gambar 3.26 dapat dibuat listing program sebagai
berikut.
Listing Program:
Motor_ 2_ D a ta
void setup() {
pinM od e (7 , OUIPUT ); //set ke mode pin output
pinMod e (6, OUT PUT );
)
void loop() {
digita lrite(7,HI G H);dig ita l~r ite (6,L O W ); //putar arah ke kanan
delay(1000);
digitalr ite(7,L O W );digita lirite(6,H IG H ); //putar arah ke kiri]
delay(1000 );
)
+5v +9v
• • -
• • U1
16
• •
r?
» ::~ 0
5 vss
z
» • i • 3
! l • • 7
-
z -
g
• •
o gN2
~
Er □■
• •
1 IN3 OUT3 11
RX 15 GND GND OU T4 14
-_
Listing Program:
M otor_2_Data
void setup() {
pinMode(7, OUTPUT); //set ke mode pin output
pinMode (6, OUTPU T);
)
void loop()
digital~r it e ( 7, HI G H); dig i ta lWr it e( 6,LO W); //putar arah ke kanan
delay(1000 );
digitalrite(7,L OW);dig italNrite(6,H IG H ); //putar arah ke kiri]
delay(1000 );
)
R2
10k
<TEX T >
•
• • -
• • c5
r#
•
»z ::~
» • j • z -
~l
D1
-
• •
R1
■
7
• z -
o
•■
100
LED-YELLOW
=
<TEXT>
<TEXT>
• ■
TX
RX
Dari rangkaian pada gambar 3.28 dapat dibuat listing program sebagai
berikut.
Listing Program:
tombol_le S
void setup()
pinMo de (4, OUTPU T); //set ke mode pin output (LED)
pinMode (10, INPU T); //set ke mod e pin input (Pu sh Button)
)
void loop()
if(digitalRead(10 )= =0) [ //jika tombo l ditekan
digitalN rite(4,H IGH ); //maka led meny ala
)
64 Interface Data Digital
Rangkuman
1. Data digital adalah data yang hanya memproses 2 keadaan yaitu ada
(1) atau tidak ada (0)
2. Komponen antarmuka yang dapat dikontrol sebagai input maupun ou•
tput dengan data digital antarnya adalah, led, matrix, seven segment,
buzzer, motor, pushbutton.
3. Syarat komponen yang dapat dikontrol oleh mikrokontroller adalah
stand dengan dua keadaan yaitu ada atau tidak ada.
Soal Formatif
Togas Latihan
Tujuan Pembelajaran
65
66 In terfa ce Dengan LCD
Menurut Adrianto (2015) LCD adalah suatu display dari bahan cairan
kristal yang pengoperasiannya menggunakan sistem dot matriks. LCD ba•
nyak digunakan sebagai display dari alat-alat elektronika seperti kalkulator,
multimeter digital, jam digital dan sebagainya. Secara Garis Besar, terda•
pat dua jenis LCD yaiut LCD teks dan LCD grafik. LCD teks digunakan
untuk menampilkan teks atau simbol-simbol tertentu. Adapun LCD grafik
memungkinkan untuk menampilkan gambar.
• • - 1 ··
TLhl5 15 a ''
line LCD Disrlas
r ]
'
•·~
.=
. .
t#J ar?
»
,• ~•=
.·--=
g
ag
· ·"=• =
_ :- -=
"
:~'-'--"·'-~_16_
· -Y -
ID1602A -I- .~
•
Gambar 4.2: Data Seet LCD 2x16 Karakter
Pin 1 dan 2 Merupakan sambungan catu daya, Vss, dan Vdd. Pin Vdd
dihubungkan dengan tegangan positif catu daya, sedangkan Vss pada
0 volt atau ground. Meskipun demikian, data menentukan catu 5
Vdc (hanya beberapa mA), menyediakan 6V dan 4,5V yang keduanya
bekerja dengan baik, bahkan 3V cukup untuk beberapa modul.
Pin 3 Merupakan pin kontrol Vcc yang digunakan untuk mengatur kontras
display. Idealnya pin ini dihubungkan dengan tegangan yang bisa diu•
bah untuk memungkinkan pengaturan tingkatan kontras display sesuai
kebutuhan.
Pin 4 Merupakan register select (RS), masukan yang pertama dari 3 com•
mand control input. Dengan membuat RS menjadi high, data karakter
dapat ditransfer dari dan menuju modulnya.
Pin 6 Merupakan Enable (E). Input ini digunakan untuk transfer aktual
perintah-perintah atau karakter anatara modul dengan hubungan da•
ta. Ketika menulis ke display, data ditransfer hanya pada perpindahan
68 Interface Dengan LCD
LCD1
LM016L
<TEXT>
IIKROKONTROLER
dan Interface
U1
9 pEsE PC0/SCL
PC1/SDA
PC2/T CK
PC3/T MS
PC4/T DO
PA0/ADCO PC5/T DI
PA1/ADC1 PC6/T OSC1
PA2/ADC2 PC7/T 0SC2
PA3/ADC3
PAA/ADC4 [ff ) [f lt ff[fl pf/lt4[ft
PA5/ADC5 PD3/INT 1
PA6/ADO6 pf/ff[kll
PA7/ADC7 pf'/ff1ht fli/ff]
[fl/ff}
PBO/T O/XCK
PB1/T 1
PB2/AINO/INT 2
PB3/AIN1/OC0 AREF
PB4/5S AVCC
PB5/MOSI
PB6/MISO
PB7/SCK
4.3.2 Pemrograman
Pada umumnya, pemrograman LCD pada AVR memanfaatkan library
bawaan seperti yang tersedia pada aplikasi CodeVision AVR yaitu "alcd. h".
Berikut adalah source code dan fungsinya pada penggunaan LCD.
I PORTO ·le •
D4
•v•
PORT0
-l
D5 I PORTO -ls·
D6
D7
t s#l s#l s#t s#l s#l s#le s s#l s#le s s# s#l s#le s s#t s#l s#le s s#e s#le s s#t s#le s se s#t s#le s s#t s#e s#le s s#t s#le s s#t s#e s#le s s#t s#le s s#t s#l s#le s s#t s#e s#le s s# st
voi d ma in(voi d )
{
l c d_i nit (16 );
whil e (1)
l c d_gotoxy ( 0, 0); //posisi penulisan
l c d_puts ("M I K R O K O NT R O LE R"); //tulisan
1c d_Got o x y( 3 , 1);
l c d_puts ("d a n Inte r fa c e ");
LM01 6 L
['likrokontro ler
dan Interface
R
10
«T'X' >
•
•
c
2»
2z £ 5
~! 2 --
2»
T
i.
•
RX
Pada aplikasi Arduino IDE memerlukan satu library yang bernama "LiquidCrystal.h",
library ini menyediakan perintah dasar yang langsung dapat digunakan, per-
intah dasar dapat dilihat pada tabel berikut.
Berikut adalah contoh source code pada aplikasi arduino.IDE untuk me•
nampilkan kata "Mikrokontrolerdaninterface" pada LCD.
Listing Program:
/I Memang g il Librari
include <LiquidCrys t al.h>
void setup() [
lcd.beg i n(1 6, 2); / menggunakan LCD 16x2
In terface LCD di Arduino 73
void loop() { lcd .setCu
rsor(0,0); //po sisi tulisan
lcd .print("Mikrok ont ro l e r" ); / tulisan
lcd.setCursor(3,1);
lcd.print("dan Interface");
74 In terfa ce Dengan LCD
Rangkuman
1. LCD adalah suatu display dari bahan cairan kristal yang pengope•
rasiannya menggunakan sistem dot matriks. LCD banyak digunakan
sebagai display dari alat-alat elektronika seperti kalkulator, multime •
ter digital, jam digital dan sebagainya.
2. Terdapat dua jenis LCD yaiut LCD teks dan LCD grafik. LCD teks
digunakan untuk menampilkan teks atau simbol-simbol tertentu. Ada•
pun LCD garafik memungkinkan untuk menampilkan gambar.
Soal Formatif
Togas Latihan
Tujuan Pembelajaran
77
78 Interface Input Analog (ADC)
• Phase adalah besar sudut dari sinyal analog pada saat tertentu.
tidak terjadi pada sistem digital. Oleh karenanya saat ini banyak peralatan
maupun aplikasi yang beralih dari sistem analog menjadi sistem digital.
0-------.---------------.--------
jumlah perubahan sedikit sekali maka kita katakan sinyal tersebut memili•
ki frekuensi rendah. Apabila suatu sinyal berubah secara instan (tiba-tiba
berubah) maka sinyal tersebut memiliki frekuensi tak terhingga. Apabila
suatu sinyal tidak berubah sama sekali maka sinyal tersebut memiliki freku•
ensi nol. Misalnya, sinyal direct current (DC) yang dikeluarkan oleh sebuah
baterai akan menghasilkan sinyal sebesar 1.5 volt terns menerus, karena itu
frekuensi dari sinyal DC adalah nol.
Periode adalah waktu yang dibutuhkan untuk menempuh 1 siklus gelom•
bang. Dalam Gambar 5.1, satu siklus gelombang ditempuh dalam waktu 0,5
detik. Karena itu periode dari gelombang adalah 0,5 detik. Yang mana f
adalah frekuensi dalam satuan Hertz atau siklus/detik dan T adalah periode
dalam satuan detik.
Panjang gelombang adalah jarak yang dilalui untuk menempuh satu si•
klus gelombang dalam satuan meter. Properti terakhir yang akan kita bahas
adalah fasa. Fasa yang diukur dalam satuan derajat atau radian merupakan
jarak pergeseran sinyal relatif terhadap titik 0. Apabila fasa bernilai positif,
maka sinyal bergeser ke kiri relatif terhadap titik 0. Sebaliknya apabila fasa
bernilai negatif, maka sinyal bergeser ke kanan relatif terhadap titik 0.
7 z 7
if:I,I,I,
-0.5 0
Waktu (d eti k)
05 1
il
Gambar 5.2: Gelombang sinus dengan pergeseran fasa
Analog to Digital Converter 81
K ecepatan sam pling suatu ADC menyatakan seberapa sering sinyal ana•
log dikonversikan ke bentuk sinyal digital pada selang waktu tertentu.
Kecepatan sampling biasanya dinyatakan dalam sample per second
(SPS).
Vs+
1= V, > V.
0= V, < V.
-
Vs•
tor merubah keadaan logika output sesuai fungsi tegangan input analog.
Sebuah komparator dapat tersusun dari sebuah opamp yang memberikan
output terpotong untuk menghasilkan level yang diinginkan untuk kondisi
K o mp o n en An t a r Mu ka ADC 83
logika (+5 dan 0 untuk TTL 1 dan 0). Komparator komersil didesain untuk
memiliki level logika yang dperlukan pada bagian outputnya.
Counter Ramp ADC didalamnya tedapat DAC yang diberi masukan da•
ri counter, masukan counter dari sumber Clock dimana sumber Clock
dikontrol dengan cara meng AND kan dengan keluaran Comparator.
Comparator membandingkan antara tegangan masukan analog dengan
tegangan keluaran DAC, apabila tegangan masukan yang akan dikon•
versi belum sama dengan tegangan keluaran dari DAC maka keluaran
comparator = 1 sehingga Clock dapat memberi masukan counter dan
hitungan counter naik.
ADC SAR Yaitu dengan memakai konvigurasi yang hampir sama dengan
counter ramp tetapi dalam melakukan trace dengan cara tracking de•
ngan mengeluarkan kombinasi bit MSB = 1 ====> 1000 0000. Apa•
bila belum sama (kurang dari tegangan analog input maka bit MSB
berikutnya = 1 ===>1100 0000) dan apabila tegangan analog input
ternyata lebih kecil dari tegangan yang dihasilkan DAC maka langkah
berikutnya menurunkan kombinasi bit ====> 10100000.
Penggunaan data analog untuk mengelolah data dari sensor cahaya da•
pat memungkinkan pengguna dapat mendapatkan informasi lebih mendetail
seperti, gelap sekali, gelap, terang, terang sekali, redup, senja, dan seterus•
nya.
Term istor adalah resistor yang peka terhadap panas yang biasanya mem•
punyai koefisien suhu negatif, karena saat suhu meningkat maka tahan•
an menurun atau sebaliknya. Jenis ini sangat peka dengan perubahan
tahan 5% per C sehingga mampu mendeteksi perubahan suhu yang
kecil.
LM35
GND - Ground
Vout - Output
darah orang dewasa secara otomatis. Alat tersebut dilakukan dengan man•
set yang dipasang di lengan pasien, kemudian dipompa sampai pada tekanan
tertentu yang selanjutnya barn dilakukan pengukuran tekanan darah.
• digital bit rate : resolusi bit bisa menggunakn 8bit atau 10bit.
5 .5 .1 Rangkaian
Berikut adalah contoh rangkaian mikrokkontroler AVR ATmega16 yang
mnrggunakan interface ADC sensor Cahaya Photodiode ditambahkan de•
ngan interface LCD untuk menampilkan nilai digital atau hasil conversi dari
tegangan analog.
LCD1
LM016L
<TEXT>
-
••
■
■
A
LDR1
LDR
7ex >
fff/'f
ff]ff[ M
lll
[flt4[ hill"
PD3mNT
Du/oC[
g{3[
/ill"
ff/flf}it
l
Setelah melakukan pengaturan seperti gambar 5.9, maka pada source co•
de akan langsung otomatis tersedia perintah untuk membaca data ADC. Per•
intah dalam pembacaan ADC adalah "read _adc(pin);" contoh "read _adc(0)"
artinya kita akan mengelolah data sensor yang terhubung pada pin ADC.O.
Berikut source code lengkap untuk membaca data ADC dan menampilkan•
nya pada LCD.
In terface ADC di Mikrokontroler AVR 91
Listing Program:
d./sls#ts#ts#ls#ls#ls# ls# ls# ts #s ls# ls# ls# ls# ls#less es# ts# ls# ls# ls# es#lesses# ts# ts# es#es# es #les s es# ts#es# es# es #less es# ts# ts# es#es# es#less es# ts#es #le
c ha r t ampil [1 6];
whi le (1)
■
R2
10k
<TEXT>
■
-
••
■
A
LDR1
LOR
7err>
l>
»
= 0
7
o
• ..
i;i
.
'
■ :;
Sm
_ RX
5.6.2 pemrograman
void setup() {
lcd.begin(16 , 2); // mengguna ka n LCD 16x2
pinMo de (AO, INPUT);
void loop() (
lcd.setCurs or(0 ,0);
lcd .print("Ni la i Baca ADC :");
lcd. setCursor( 0 ,1);
//mem bca data dari PIN A0 dan menam p ilka n ny a di LCD:
lcd.print(analo gRea d( A0 ));
94 Interface Input Analog (ADC)
Rangkuman
1. Data analog adalah sinyal data dalam bentuk gelombang yang yang
kontinyu, yang membawa informasi dengan mengubah karakteristik
gelombang
Soal Formatif
Togas Latihan
Tujuan Pembelajaran
97
98 Interface Output PWM
6.1 Timer/Counter
Timer/ Counter adalah Seperangkat pencacah biner (binary counter) yang
terhubung langsung ke saluran data mikrokontroler, sehingga mikrokontro•
ler bisa membaca kondisi pencacah dan bila diperlukan mikrokontroler dapat
pula merubah kondisi pencacah tersebut. Saat sinyal clock yang diberikan
sudah melebihi kapasitas pencacah, maka pencacah akan memberikan sinyal
overflow/limpahan. Limpahan pencacah ini dicatat dalam suatu register.
Timer pada dasarnya hanya menghitung pulsa clock. Frequensi pulsa
clock yang dihitung tersebut sama dengan frequensi kristal yang dipasang
atau dapat diperlambat menggunakan prescaler dengan faktor 8, 64, 256
atau 1024.
Sinyal clock yang diberikan ke pencacah dibedakan menjadi 2 macam :
TCCRn
count fef
(int eq)
Cont r ol Logi c
] Lu[", ] ocn
■
■
COUNTER
TIMER
l Pww
4. Frekuensi generator
CTC ( clear timer on compare match) Pada mode CTC, nilai timer yang
ada pada TCNTn akan dinolkan lagi jika TCNTn sudah sama dengan
nilai yang ada pada register OCRn, sebelumnya OCR diset dulu, ka•
rena timer O dan 2 maksimumnya 255, maka range OCR 0-255.
Fast PWM Memberikan pulsa PWM frekuensi tinggi. Fast PWM berbeda
dengan mode PWM lain, fast PWM berdasarkan operasi single slope.
Counter menghitung dari BOTTOM hingga TP kemudian kembali lagi
mulai menghitung berawal dari BOTTOM.
Clear tea.)
Clock Select
Edge
Detector
(From Prescal er )
Edge Noise
IC Rn Canceler
Detector
TCCRnA TCCRn8
TIMSK & TIFR Timer Interupt Mask Register (TIMSK) dan Timer In•
terupt Flag (TIFR) register digunakan untuk mengendalikan inter•
rupt mana yang diaktifkan dengan cara melakukan pengaturan pada
TIMSK dan untuk mengetahui interrrupt mana yang sedang terjadi.
Inverted Mode Pada mode inverted ini jika nilai sinyal lebih besar dari
pada titik pembanding (compare level) maka output akan di set high
10 2 Interface Output PWM
_ut 80%
:1 50%
: ii 20%
ON 09%
Off---------------
(5v) dan sebaliknya jika nilai sinyal lebih kecil maka output akan di
set low (Ov) seperti pada gelombang A pada gambar di atas.
N on Inverted M ode Pada mode non inverted ini output akan bernilai hi•
gh (5v) jika titik pembanding (compare level) lebih besar dari pada
nilai sinyal dan sebaliknya jika bernilai low (Ov) pada saat titik pem•
banding lebih kecil dari nilai sinyal seperti pada gelombang B pada
gambar di atas.
Tog gl e Mod e Pada mode toggle output akan beralih dari nilai high (5v)
ke nilai low (Ov) jika titik pembanding sesuai dan sebaliknya beralih
dari nilai low ke high.
6.3.1 LED
Komponen LED ini telah dibahas sebelumnya pada BAB 3 tentang inter•
face data digital. Light Emitting Diode (LED) adalah komponen elektronika
yang dapat memancarkan cahaya. Sesuai dengan namanya, LED adalah sa•
lah satu jenis diode. Sebagaimana yang diketahui , diode adalah komponen
yang hanya dapat mengalirkan arus listrik satu arah. Arns listrik hanya
mengalir kalau tegangan positif dihubungkan ke kaki yang disebut anode
dan tegangan negatif dihubungkan ke kaki yang dinamakan katode.
L !
j l Ul
Gambar 6.5: Contoh Kondisi LED dengan output PWM
104 Interface Output PWM
Selain dapat dikontrol dengan data Digital, komponen ini juga mampu
dikontrol dengan output PWM. Perbedaanya adalah, jika menggunakan ou•
tput digital maka LED hanya akan memilik 2 kondisi yaitu menyala dan
tidak menyala, sedangkan jika menggunakan output PWM maka LED da•
pat memiliki lebih dari 2 kondisi yaitu mati, menyala terang, menyala terang
sekali, menyala redup, menyala redup sekali, dan seterusnya.
6.3.2 Motor DC
Motor atau lebih tepatnya motor listrik adalah komponen elektrik yang
sifatnya merubah besaran elektrik menjadi fisik berupa putaran. Motor lis•
trik terdiri atas tiga bagian utama yang disebut stator (bagian yang diam)
dan rotor (bagian yang bergerak) dan air gap. Rotor dapat berputar karena
adanya medan magnet yang dipengaruhi oleh arus listrik. Air gap adalah
bagian yang memisahkan rotor dan stator. Motor terdiri dari dua jenis yaitu
motor AC dan motor DC. Motor DC menggunakan 2 data yang harus ter•
sambung ke data digital mikrokontroler namun ketika harus menggunakan
motor DC yang membutuhkan arus tinggi harus menggunakan rangkaian
penguat (driver) dari motor ke mikrokontroler. Sedangkan Motor AC bi•
asanya memerlukan rangkian berupa relay untuk menjalankannya, karena
tegangan yang berasal dari mikrokontroler adalah DC sedangkan tegangan
yang dibutuhkan adalah tegangan AC.
Penjelsan mengenai Motor hampir sama dengan LED, selain dapat di•
kontrol dengan data Digital, komponen ini juga mampu dikontrol dengan
output PWM. Perbedaanya adalah, jika menggunakan output digital maka
Motor hanya akan memilik 2 kondisi yaitu diam dan berputar, sedangk•
an jika menggunakan output PWM maka motor dapat memiliki lebih dari
K o mp o n en d en g a n k o n tro l o u tp u t PWM 105
2 kondisi yaitu mati, pelansekali, pelan, normal, cepat, cepat sekali, dan
seterusnya.
inc
&AIM!owes
o ez cane4or
t.
.'
Ret (+)
-cc33
(Signal)
PD 7 I O C 2 GND OND OU T4 14
L2930
AREF
AvCC
_ «TEXT>
PWM adalah sinyal yang dibangkitkan lewat fitur timer yang ada pada
108 Interface Output PWM
Comp. A: 0 h B: 0 h
Listing Program:
s t#ls#ts #st#st#st#st#s t#s t#st#s t#s t#st#s# ls#st#s# ls #s# ls#st#s # ls #s# ls# ts#less#less#less#less#less#less#less#le
le#es#testes#test es # te s tes#test e s #t es t es # te s tes#test e s #t es tes # t es tes#test e s #t es t e s #t es te s #t e st e s #t es t es#teste s #t e st e s #t es t es#teste s #t e st e s #t es tes#teste s #t e st es#test es # te s te s #t ests#tf
#include <mega16.h>
In terfac e PWM di mikrokontroler AVR 109
voi d puta r ka na n () {
P ORTD. 0= 0 ;
P ORTD.1= 1 ;
}
voi d puta r kir i (){
P ORTD. 0= 1 ;
P ORTD. 1= 0 ;
}
voi d stop (){
P ORTD. 0= 0;
P ORTD. 1= 0;
}
voi d ma in( v oi d )
{
P ORTD= 0 x 0 0 ;
DDR D = 0XFF;
TCCR1A = 0 X A 1;
TCCR 1 B=0 x 0 1;
TCNTl H = 0 x0 0 ;
TCNT1L= 0 x0 0 ;
ICRIH= 0 x 0 0 ;
ICRIL=0 x0 ;
OC RLAH =0x00;
OC RLAL =0X00;
OC RLB =0x00;
OC RlBL=0x0 0 ;
while (1)
C1
U1
■
RES E T PCO/ SCL
1nF ■ PC1/SDA
<TEXT> X1 XTAL 1 PC2/TCK
L CRYSTAL XTAl...2 PC3 / MS
<TEXT>
C2 ■ PAO/A DCO
PC4/TD O
■ PA1 /A DC 1
PC5/TD I
PC6/T O SC 1
PA2 / AD C2 PC7/10SC2
1nF
<TEXT> PA3/ADC 3
PA4/ADC4 PDO / RXD
PA5/A DC5 PD1/T X D
_ PA6/ADC 6
PA7 / A D C7
PD2/INT0
PD3/INT1
PD4/OC 1 8
PB0/T0/XCK PD5/ O C 1 A
PB1/T 1 PD6/I C P 1
PB2I AI N O /I N T 2 PD7/ O C 2
PB3/AIN 1 / O C0
PB45S
PB5/MOSI
PB6/ M I S O AR EF
PB? /S CK AVCC
Beradasarkan dari rangkaian pada gambar 6.11 dapat dibuat listing pro•
gram sebagai berikut.
Listing Program:
s#l s # t s # t s # ls # ls # ls # st s # t s # ls # ls#ls# st s # ls #l s # l s # ls # st s # ls # l s # ls # ls # st s # l s # ls #l s # st s # ls#l s # ls # ls # sts#l s # ls # ls # ls # st s # ls # ls #l s # ls # st s # ls #l s # ls
le#testes#testes # te s tes#tes te s #t es te s# ts # te s te s #t estes #t es te s#ts #t estes #t ests# t ides #tid es#ts#ddts#didst#ddtides#tides# ts#ts#l id#didst#did#did#ts#s t
#include <mega16.h>
#include <delay.h>
void main(void)
TCNTIH = O x 0O;
TCNT1 L= 0 x OO;
ICRLH= 0 x1 3 ;
ICRIL= Ox 7 ;
OC R1A = xO0;
OC RLAL =0xOO;
OC R1BH= O x 0 0;
OC R1BL=0 X O 0;
//set servo ke 90 derajat]
set_servo(90);
}
0v I I I
n IL
jhih
JL JL JL Jl
0v
1 U 1 LL
5v
0v =====
Gambar 6.12: PWM pada Arduino
112 Interface Output PWM
+5v +y
16 8 U1
= ■
:y VSS VS 0UT1 { OUT 2
- ■
■
■ ra
■
■
I
-
E
y°
0 OUT3
■ ii GND GND OUT4
.:,-1 l> ~ ■ g id
o
0 ■ - •
»r - L2930
7 <TEXT>
z ■ o
~
■ Sm
■ RX
g] [ dy
Listing Program:
Molor_2_ Dat a _ P W M
void setup() {
pinMode (13, OUTPU T); //set ke mode pin output
pinMo de (12, OUTPU T);
pinMo de(9,O U TP U T);
}
void loop() {
//mengatur motor agar berputar.
digitalr ite(1 2,HIG H );dig italNrite(13 ,L ON );
■
■
■
•■ 7.,,
•■ :lE
Sn
• RX
A RDUIND UNO R3
nakan perin t ah "analog W rite(p in,nil ai);", pin adalah kaki yang yang dig u •
nakan sebagai output pwm, dan nilai diisi dengan nilai besar duty sycle yan g
akan diberikan pada outp ut pwm.
Pada pemro g ram an pwm untuk servo, arduino telah menyed iakan pus•
taka yang dapat memu d ah k an penggun a untuk melaku ak an pemrog r a m a n,
pustaka tersebut adalah "Servo .h ". Penggu n aan pustakan dan listring pro •
gram untuk mengontro l servo dapat dilih at dibawah, listing pro gram sud ah
disesuaikan dengan rangkaian pada gambar 6.14.
Listing Progra m :
S ervo_P WM
include <Servo.h>
Servo iniserv o;
void setup() {
//mende finis ika n servo terhubung pada pin digital 10 Arduin o
iniservo.attac h(10 );
)
void loop() {
/menga tur derajat arah servo]
iniservo .write(1 20 );
In terfac e PWM di Arduino 115
Rangkuman
Soal Formatif
Togas Latihan
Tujuan Pembelajaran
117
118 Interface Serial USART
MSB A, 1 8,
A, 0 8,
Circuit A, 1 B, Circuit
A 1 B
A, 8,
0 8,
LsB
A B
1,T,1, T, T 8,
our
..
]Transmi si Serial]
TX
RX
• Bit 4 FE: Frame Error, FE otomatis akan bernilai 1, jika ada frame
eror.
• Bit 3 DOR: Data OverRun, DOR otomatis akan bernilai 1, jika data
datang ketika bufer penuh(terjadi antrian).
• Bit 2 PE: Parity Error, PE otomatis akan bernilai 1, jika terjadi parity
eror.
• Bit 1 U2X: Double the USART Transmission Speed, kita set U2X=0,
kecepatan normal. U2X=1 kecepatan 2xbaudrate.
• Bit 1 RXB8: Receive Data Bit 8, RXB8 menjadi bit ke-9 jika panjang
data yg diterima 9 bit .
• Bit 0 TXB8: Transmit Data Bit 8, TXB8 menjadi bit ke-9 jika pan•
jang data yg dikirim 9 bit.
• Bit 6 UMSEL: USART Mode Select, kita set UMSEL=1, mode syn•
ceonous. UMSEL=0 mode asyncronous
• Bit 3 USBS: Stop Bit Select, kita set USBS=0, stop bit =1 bit,
USBS=1 panjang stop bit = 2 bit.
• Bit 0 UCPOL: Clock Polarity bit ini digunakan untuk mode syn•
coronous saja, kita set UCPOL=0 trnasmisi clock naik, UCPOL=1
transmisi clock turun. (khusus yg ini dont care krn kita menggunakan
mode asyncronous)
4. Mendukung serial frames dengan data bit 5,6,7,8 atau 9 data bit dan
dilengkapi dengan 1 atau 2 stop bit.
5. Dilengkapi dengan fasilitas parity check dan dapat bekerja pada parity
Odd atau Even.
10. Mempunyai tiga interupsi yang terpisah pata Tx Complete, Data Re•
gister Empty Rx complete.
7.5.1 Bluetooth
Bluetooth adalah sebuah teknologi komunikasi wireless (tanpa kabel)
yang beroperasi pada pita frekuensi 2,4 GHz unlicensed ISM (Industria l,
Scientific and Medical) dengan menggunakan sebuah frekuensi hopping tran•
ceiver yang mampu menyediakan layanan komunikasi data dan suara secara
real-time antara host-host bluetooth dengan jarak jangkauan layanan yang
terbatas (sekitar 10 meter). Bluetooth juga merupakan spesifikasi industri
untuk jaringan kawasan pribadi (Personal Area Networks atau PAN) tanpa
kabel. Bluetooth dapat dipakai untuk melakukan tukar-menukar informasi
di antara peralatan-peralatan (gadget).
124 Interface Serial USART
MICRO SIM
I Bluetooth:
zz; »
pelt¢E d.Ell
PC 3/TMS
ft_ff[ ell
ff ff@tell pc7foe6l
z ti
PD2INTO
PD 3 AN T1
PD 4/ C 1 8
PD5/0C1 A
PD6MCPf
P07/0C2
AREF
AVCC
--
Gambar 7.6: Interface Bluetooth dengan Mikrokontroler ATmega16
Mode: [ Asynchronous
ls#ls# ls#stestes #t estes#ls#l s#l s#ls# ls#t s#ts#s stestes # te st es#es#es#es#ls#t s#t s #l es s#ste s te s #t es t es#es#es#es#es# es#es#ts#ste s te s #t es t es # te s tes#es#es#es # le st f
#include <mega16.h>
#include <alcd.h>
#include <stdio.h>
#include <delay.h>
int bt;
char lcd[16];
In terface Serial pada Arduino 127
f#ts#ts#ls# ts#ls#ls#ts# ts#ls#ts# ls#s#ts# ls#s#t s#ls#ts# ts# ls#t s#ts# ls# ts#t s#ls# ts #ts# ls#t s#t s#ls# ts#t s#l s#ts# ls# ls#t s#l s#ls# ts#l s#s#ts# ls#s#t s#l s#ts# ts#ls
l s#l s# st #t st st s#t s#t s#t s#t s#t s#t s#l s# st #t s#t st st st st s#t s#t s#t s#t s#l s#l s# st #t #t s#t s#t s#t s#t s#t s#t s#t s#t s#l s # st #t s#t s#t s#t s#t s#t s#t s#t s
int bt;
c ha r l c d[16);
voi d ma in(v oi d )
OCSRA = 0 x 0 0;
UCSRB = x 1 8;
UCSR C =0 x £ 6;
UB RR H =0x 0 0 ;
UB RRL =0X67;
whil e (1) {
bt=ge tc ha r( );
1c d_goto x y ( 0, 1);
sprint f(lc d, "c ", bt);
l c d_puts (lc d);
de la y_ms ( 5);
}
HC1
BLU ET O O TH HC.0 6
LCD1
LM0 1 6 L
«TEX T >
I Bluetooth
DUIN01
R
10
.1 »
Listing Program:
lcd_bluetotth §
include <Softwar eSerial.h> include
<Liquid Cry s ta l.h> Liquid Cry sta l
lcd(7, 6, 5, 4, 3, 2);
Softwar eSerial BT(9, 8); //TX,RX
String data;
void setup()
lcd.begin(16 , 2); // menggun akan LCD 16x2]
BT.begin(960 0); /l bit rate USART
void loop() (
lcd.setCurs o r(0 ,O );lc d.print("Blue to oth");
while (BT.ava ila ble ()) {
delay(10);
char c = BT.read();
data += Cc;
Pada listing program diatas dapat diperhatikan bahwa pin digital 8 di•
gunakan sebagai pin TX dan pin digital 9 digunakan sebagai RX. Data
yang terkirim dan diterima oleh bluetooth akan dikelolah dan ditampilka n
ke LCD 16x2.
130 Interface Serial USART
Rangkuman
Soal Formatif
3. Jelaskan fungsi kedua pin (Rx dan Tx) yang ada pada komuni kas i
serial USART?
Togas Latihan
Tujuan Pembelajaran
133
134 In terfa ce Serial SPI
___T_
X . ,_
, .,._, ,..R X _.
1nnr
idle 2 3 4 5 6 7 iii next byte
ii0oio1o
0x53 = ASCII 'S '
idle or
idle next byte
cLoc K
DATA
---.. 0 1 2 3 45 6 7
'
'
4 f 44 f
·---
11001010
ox53 = ASCII'S'
Salah satu alasan bahwa SPI sangat populer adalah bahwa hardware
penerima bisa menjadi register geser sederhana . Ini adalah jauh lebih se•
derhana ( dan murah ! ) Bagian dari perangkat keras daripada UART
full- up ( Universal Asynchronous Receiver / Transmitter ) bahwa serial
asynchronous membutuhkan .
136 Interface Serial SPI
Dalam SPI , hanya satu sisi menghasilkan sinyal clock (biasanya disebut
CLK atau SCK untuk Serial Clock) . Sisi yang menghasilkan jam disebut
master , dan sisi lainnya disebut budak . Selalu hanya satu master ( yang
hampir selalu mikrokontroler Anda ) , tetapi bisa ada beberapa budak (
lebih lanjut tentang ini dalam sedikit ) .
Ketika data dikirim dari master ke slave , itu dikirim pada baris data
yang disebut MOSI , untuk Guru Out / Slave In . Jika slave harus mengirim
respon kembali ke master , master akan terns menghasilkan sejumlah diatur
sebelumnya clock cycle , dan budak akan menempatkan data ke jalur data
ketiga yang disebut MISO , untuk Guru In / Out Slave
scK scK
MOSif]M O S
I 8o MISO
de
scK
eek from
Mu te
1 2 4 5 6 7
Most 1ful
I I I I I
I it; .t
Mr tr-Ort :"%'
we-he 11001010
0us3 = AsCit 'S'
MIS0
Master- n
law Cwt
tukan panjang dari data dan kemudian memiliki master mengambil jumlah
penuh. )
Perhatikan bahwa SPI adalah full duplex ( memiliki mengirim dan
menerima baris yang terpisah ) , dan , dengan demikian , dalam situasi
tertentu , Anda dapat mengirim dan menerima data pada waktu yang sama
( misalnya , meminta pembacaan sensor baru saat mengambil data dari
sebelumnya ) . Datasheet perangkat Anda akan memberitahu Anda jika hal
ini mungkin . Slave Pilih ( SS )
Ada satu baris terakhir Anda harus menyadari , yang disebut SS untuk
Slave Pilih. Ini memberitahu budak yang harus bangun dan menerima /
mengirim data dan juga digunakan ketika beberapa budak yang hadir untuk
memilih salah satu yang ingin diajak bicara.
Garis SS biasanya terangkat tinggi , yang memutus hubungan budak
dari bus SPI . ( Jenis logika dikenal sebagai aktif rendah , dan Anda akan
sering melihat digunakan untuk mengaktifkan dan me-reset baris . ) Tepat
sebelum data dikirim ke budak , garis dibawa rendah , yang mengaktifkan
budak . Ketika Anda selesai menggunakan budak , garis dibuat tinggi la•
gi. Dalam sebuah register geser , ini sesuai dengan kait masukan , yang
mentransfer data yang diterima ke garis output.
yaitu pada pin yang sama MOSI, MISO,SCK, RESET, GROUND. Sehingga
akan nampak seperti bagan gambar berikut ini.
Mikrokonroler MOSI ~
ATMega32 /
ATMega8/ MISO US8-ASP
-
ATMega16/
SCK
ATMega8535
Dsb. RESET
p
GND
T Hijau(PsxAck)
47
Puth (NC)
Mera h (Vcc)
Hitam (God)
J
@ High
l
62.500 kHz
Listing Program:
files#ls#ls#les s#ls#ls#less#ts#e s #les s#ts # les ses#ts#e s #t es tes# ts#es #t ests#es#es #te s tes#es#es #t es te s#es#es #tests#es#es #t es t es#es#es #te s tes#es#es #t ests#es#es#es
l s#les s#ls#es#less#ts#es#l es s#es#l es ses#es#es#t ests#es#es# tests#es#es #t es tes#es#es #te st es#es#es #t ests#es#es# te s tes#es#es #t es tes#es#es # tests#es#es #t es tes#es t
voi d ma in( v oi d )
{
while (1)
l c d_c le a r();
i toa (I D, ana log);
l c d_goto x y( 0 , 0 );
l c d_puts (a na l o g);
if (I D == 65)
{
l c d_goto x y ( 5 , 0);
l c d_puts ("a n a l og of f ");
de la y_ms ( 5 0 0 );
}
else i f (I D == 115)
l c d_got0 x y ( 5 , 0);
l c d_puts ("a n a l og on");
de la y_ms ( 5 0 0 );
}
l c d_c le a r();
if (byte == 0b 111111 1)
{
l c d_c le a r();
1c d_Go t 0 x y ( 0, 1);
l c d_puts ("le f t ");
de la y_ms ( 7 0 0);
}
l c d_c le a r();
l c d_Got o x y ( 0, 1 );
l c d_puts (" d ow n ");
de la y_ms ( 7 0 0 );
}
l c d_c le a r();
l c d_goto x y ( 0, 1);
c d_puts ( "r i gh t");
de la y_ms ( 7 0 0 );
}
l c d_c le a r();
l c d_Got o xy ( 0, 1);
l c d_puts (" up ");
de la y_m s( 7 0 0 );
}
144 In terfa ce Serial SPI
e lse if (byte 4 Ob11 110 11 1 )
{
l c d_c le a r();
1c d_Go t o x y (0, 1);
l c d_puts ("s ta rt ");
de la y_ms( 7 0 0);
}
l c d_c le a r0);
l c d_goto x y (0, 1);
l c d_puts ("s e le c t" );
de la y_ms( 7 0 0);
l c d_c le a r();
l c d_Got o x y ( 0, 1);
l c d_puts ("ko ta k ");
de la y_ms ( 7 0 0);
}
l c d_c le a r();
l c d_goto x y (0, 1);
l c d_puts ("x");
de la y_ms( 7 0 0);
l c d_c le a r0);
l c d_goto x y (0 , 1);
l c d_puts ("b u la t ");
de la y_ms( 7 0 0);
l c d_c le a r();
l c d_goto x y (0, 1);
l c d_puts ("s e g iti ga ");
de la y_ms( 7 0 0);
l c d_c le a r0);
In terface Serial pada Mikrokontroler AVR 145
l c d_gotox y ( 0, 1);
l c d_puts (" R 1" );
de la y_ms ( 7 0 0);
c d_c le a r() ;
l c d_gotox y ( 0, 1);
c d_puts ("L 1" );
de la y_ms ( 7 0 0);
l c d_c le a r();
1c d_Go t o x y ( 0, 1);
c d_puts ( R 2");
de la y_ms ( 7 0 0);
l c d_c le a r();
1c d_Go t o x y ( 0, 1);
l c d_puts ("L 2");
de la y_ms ( 7 0 0);
else i f ( (I D == 11 5 ) &&
(byt e 6 == 0b00000 0 0 0) II (byt e 6 Obll ll lll l) )
{itoa (b yt e 6, a na l0g6);
l c d_c le a r0);
l c d_gotox y ( 0, 1);
l c d_puts (a na l 0 g 6);
l c d_gotox y ( 0, 5);
l c d_puts (" a na log ON");
de la y_ms ( 7 0 0); }
e ls e if ( (I D == 11 5 ) &&
(byt e 7 == Ob00000 0 0 0) II (byt e 7 Obllllllll) )
{itoa (b yt e 7, ana l0g7);
l c d_c le a r();
l c d_Goto x y ( 0, 1);
l c d_puts (a na l o g 7);
l c d_goto x y ( 0, 5);
l c d_puts (" a n a log ON");
de la y_ms ( 7 0 0); }
e ls e if ((I D == 11 5 ) &&
(byt e 8 == 0b00000 0 0 0) II (byte 8 Obllll lll l) )
146 Interface Serial SPI
{itoa(byte8, analog?);
lcd_clea::::();
lcd_gotoxy(0,1);
lcd_puts(analog8);
lcd_gotoxy(0,5);
lcd_puts(" analog ON");
delay_ms(700);}
else i f ((ID== 115) &&
(byte9 == 0b00000000) II (byte9 Ob11111111) )
{itoa(byte9, analog9);
lcd_clear();
lcd_Gotoxy(0,1);
lcd_puts(analog9);
1cd_Gotoxy(0,5);
lcd_puts(" analog ON");
delay_ms(700);}
lcd_clear();
//right now, the library does NOT suppor t hot plugg able controllers , meaning
//you must always either restart your Ard uino after you connect the contro lle r,
//or call config _ a m e pa d( pi ns) again after connecting the contro l le r.
int error = 0;
by te ty pe = 0;
byte vibrate = 0;
void setup(){
Serial.be g in(57 6 00 );
delay(30 0 );
//CHANGES fOr VI.6 HERE!!! ++++++FAY ATTENTION++++++++
error = ps2x.co n fig_ gamepa d(PS2 _ C LK , PS2_CMD, PS2_SEL, PS2_DAT, pressures , rum ble);
if(error == 0){
Serial . pr int(" Found Contro l le r, config ure d successful ");
Serial .pr int( " pr es s ur es = ");
if (pressure s)
Serial.println("true ");
else
Serial.pri ntln("fals e");
Serial.print ("rumble = ");
if (rum ble)
Serial .prin tln("tru e )");
else
Serial .println("fals e");
Serial .println (" T ry out all the buttons,");
Serial .pr intln (" hold ing L1 or R will print out the analog stick values.");
Serial .pr intln (" N o te: Go to www.billpor te r .info for updates and to report
bugs .");
else if(error == 1)
Serial .println(" No controller found, check wiring");
else if(error == 2)
Serial .pr intln(" Co ntr olle r found but not accepting comman ds .");
else if(error == 3)
Serial .pr intln(" Co ntr o ller refusing to enter Pressure s mod e, may not support it. ");
ty pe = ps2x.read Ty pe ();
switch(ty pe ) {
case 0:
Serial .pr in t(" U nk n o w n Controller type found ");
break;
case 1:
Serial.pri nt ("Dua lSh ock Contro ller found ");
break;
case 2:
Serial .pr in t(" G uita rH e ro Contro ller found ");
break;
case 3:
Serial .pr in t(" Wir ele s s Sony Dual5hock Contro ller found ");
break;
In terface Serial pada Arduino 149
void loop() {
You must Read Gamepa d to get new values and set vibra tio n value s
ps2x.read_ g a m e pa d(s m all moto r on/off, larger motor streng ht from 0-255)
if you don't enable the rumb le, use pa2x.re a d_ g am epa d (); with no value s
You should call this at least once a second
if(ps2x.Butto n ? Pres se d( G R E EN _ F R ET ))
Serial.println("G reen Fret Pressed");
if(pas2x .Butto n ? Pres se d( R ED _ F R ET ))
Serial.prin tln("Re d Fret Pressed");
if(pas2x.Butto nPres se d( Y E LL O W _F R ET ))
Serial.println("Y ello w Fret Presse d");
if(pas2x.Butto nPres se d( B L U E_F R ET ))
Serial .println ("B lue Fret Pressed");
if(pa2x.Butto nPres se d( O RA N G E_F R E T ))
Serial.println("O ran ge Fret Pressed");
delay(50 );
Interfa ce Serial pada Arduino 151
Rangkuman
3. Komunikasi SPI menggunakan 3 pin data yaitu mosi, miso, dan sck.
Soal Formatif
3. Jelaskan kegunaan pasing-masing pin mosi, miso dan sck yang ada
pada komunikasi serial SPI?
152 Interface Serial SPI
addcontentslinetocsectionTugas Latihan
Togas Latihan
Tujuan Pembelajaran
153
154 Interface Serial I2C
DATA uTPT
BYRECEIVER
Sinyal dasar yang lain dalam I2C Bus adalah sinyal acknowledge yang
disimbolkan dengan ACK Setelah transfer data oleh master berhasil dite•
rima slave, slave akan menjawabnya dengan mengirim sinyal acknowledge,
RTC sebagai Interface I2C 155
yaitu dengan membuat SDA menjadi O selama siklus clock ke 9. Ini menun•
jukkan bahwa Slave telah menerima 8 bit data dari Master. Kondisi sinyal
acknowledge seperti tampak pada Gambar 9.2
Dalam melakukan transfer data pada I2C Bus, kita harus mengikuti tata
cara yang telah ditetapkan yaitu:
• Transfer data hanya dapat dilakukan ketikan Bus tidak dalam keadaan
sibuk.
• Selama proses transfer data, keadaan data pada SDA harus stabil
selama SCL dalam keadan tinggi. Keadaan perubahan 1 atau O pada
SDA hanya dapat dilakukan selama SCL dalam keadaan rendah. Jika
terjadi perubahan keadaan SDA pada saat SCL dalam keadaan tinggi,
maka perubahan itu dianggap sebagai sinyal Start atau sinyal Stop.
j
X \
cats lire
st±tie;
1
t
!
f
f
cange
et eta
r\
I
I
j
data valid I lowed f
., , .
.,
+"
#
;
X21
VaAT
GND
□ 2
4
78
5
Vcc
SOW/OUT
SCL
SDA
t ~
t,
DS13o7 memiliki akurasi hingga tahun 2100. Sistem RTC D81307 memer•
lukan baterai eksternal 3 volt yang terhubung ke pin Vbat dan ground. Pin
Xl dan X2 dihubungkan dengan kristal osilator 32,768 KHz. Sedangkan pin
SCL, SDA, dan SQW/OUT di-pull-up dengan resistor (nilainya lk s.d 10k)
ke Vcc. Untuk membaca data tangal dan waktu yang tersimpan di memori
RTC D81307 dapat dilakukan melalui komunikasi serial 2C.
9 .3 .1 Rangkaian
LCD1
LMo 16L
U2
22
RESE T PC/SCL
PC1/S O A
XT AL1 PC2/T OK
c X1
XT Al..2 PC3/MS
Pc4nDo CRYS T A L
PAO/A D C O PC5/TDI P A 1/ A D C
888 2. 858338 8 %
PO6/ TO S C T
PA2I/A D C 2 PC7f TO S C 2
PA3/A D C 3
PA4/ A D C 4 PD O R X D
PA5/A D C 5 P D 1/D D
PA6/ A D S
PD2INT O PA7/ A D C 7
PD3/I N TT
PD4/0 C 1 B
PB/T 0 / X CK PD6/ O C 1 A
PB1/T PD6/1 C P1
BAT1
PB2IA I N / N T 2
PB3IA I N 1 / 0C O
PD7/0 C 2
AREF
l 3v
•
PB45S
PB5/M O SI
PB6/MISO
PB7/SCK AV¢
9.3.2 Pemrograman
•
12C 1 Wire TWI (12C)
sum- sass
Bu nae 100 % Hz
EE,
+cress os1on]~ -----
Square 'Wawe lutput
[ Enabled [] Enabled
a@·l
Pada pembuatan program RTC, dibutuhkan sebuah tipe data untuk me•
nampung data jam, menit, dan detik. Data yang ditampung tersebut ter•
lebih dahulu dilakukan request ke RTC untuk memperoleh data. Berikut
adalah contoh listing program RTC yang menampilka jam, menit dan detik
pada LCD.
In terface I2C pada Mikrokontroler AVR 159
Listing Program:
files#les s#ls#ls #ls #l es s #l es s#ls #les s #l es s #l es s e s #l es s #l es s #l es se s #l es s #l es ses#les s #l es s #l es ses#les s #l es s es#less#les ses#less#les s#lest
le#testes#le#tes t es#test es#tes t es#test e s # t es#test es#tes tes#tes t e s #t es#tes t es#test e s #t e s t es t es#tes tes#tes t e s #t es#tes t es#test es#tes t e s #t es#test es#tes t es#tes#test es#test es#tes tes#tests# le
#include <mega16.h>
#include <delay.h>
#include <stdio.h>
void main(void)
{
i2c_init();
rtc_init(0,0,0);
lcd_init(1 6);
//mengatur vaktu
rtc_set_tim e(23,11 ,0);
while (1) t
rtc_get_tim e(&ja m ,&m enit,& detik);
lcd_Go tox y(0,0);
sprintf(buff,"Ja m: Sd:5d:5d ",jam,men it,detik);
lcd_puts( buff);
} ;
160 Interface Serial I2C
Arduino sudah menyediakan pin dengan fitur SDA dan SCL, pada mikro•
kontroler jenisArduino UNO pin SDA/SCL berada pada pin Analog 4 dan 5.
Berikut adalah contoh pengaplikasian interface I2C pada perangkat RTC.
9.4.1 Rangkaian
Pada Gambar 9.8, ArduinoUNO diberikan interface berupa RTC dan inter•
face LCD untuk menampilkan data berupa waktu. Prinsip kerjanya adalah
mikrokontroler akan melakukan request data setiap waktu ke RTC dan ak•
an mengumpan ke LCD untuk menampilkan waktu yang telah diterima dari
RTC.
DUIN01
ARDUINO UNO R3
s ass4 a
[St r3up
m mmm n n m
9.4.2 Pemrograman
Listing Program:
ds1307 5
// Date an d time fun ctio n s usin g a DS1307 RIC
/l and conn ecte d via I2C an d Wire lib
#inclu de <Wire . h>
+incl u de "RTC li b .h"
RTC_D S1 3 07 rte;
void setu p () {
while ('Seria l ); // for Leona rd o /M icro /Z ero
Serial . b e gi n(5 7 6 0 0 );
if (! rtc.b e gin( )) {
Serial .p rintln (" C o u ldn' t find RIC");
while (1);
if ( rtc.i s ru n n ing()) {
Serial .pri ntln (" R IC is NOT runn ing!");
// follo w in g line sets the RTC to the date s time this sketch was comp iled
rte.adjus t ( D a teT im e (F(_ D A T E _ ), F(_TIM E _ )));
// This line sets the RTC with an exp licit date s tim e, for examp le to set
// Jan uary 21, 2014 at 3am y ou would call:
/ rtc.adjus t ( D a teT im e (201 4, 1, 21, 3, 0, 0));
void loo p () I
Date' T ime now = rtc.now ( );
Rangkuman
1. Inter Integrated Circuit atau sering disebut I2C adalah standar komu•
nikasi serial dua arah menggunakan dua saluran yang didisain khusus
untuk mengirim maupun menerima data.
2. Sistem I2C terdiri dari saluran SCL (Serial Clock) dan SDA (Serial
Data) yang membawa informasi data antara I2C dengan pengontrol •
nya.
Saal Formatif
Togas Latihan
Marta Dinata, Yuwono: 2015 , Arduino Itu Mudah, PT Alex Media Kompu•
tindo, Jakarta.
Rangkuti, S.: 2011, Mikrokontroler Atmel AVR Simulasi dan Praktik Meng•
gunakan ISIS Proteus dan Code VisionA VR, Informatika Bandung, Ban•
dung.
165
166 Kunci Jawaban
167
168 Kunci Jawaban
1. Data digital adalah data yang hanya memproses 2 keadaan yaitu ada
(1) atau tidak ada (0)
2. Data digital hanya mengenal 2 data saja sedangkan data analog adalah
data yang tidak dapat diukur menggunakan dua data saja atau data
analog memproses lebih dari dua data.
3. PushButton, karena komponen ini adalah komponen yang dapat mem•
berikan atau mengelolah data pada mikrokontroler, dengan cara ditek•
an maka komponen ini akan megirimkan sinyal tertentu ke mikroko n•
troler, dan akan mengelolah data sesuai instruksi program.
1. LCD adalah suatu display dari bahan cairan kristal yang pengope•
rasiannya menggunakan sistem dot matriks. LCD banyak digunakan
sebagai display dari alat-alat elektronika seperti kalkulator, multime•
ter digital, jam digital dan sebagainya.
1. Data analog adalah sinyal data dalam bentuk gelombang yang yang
kontinyu, yang membawa informasi dengan mengubah karakteristik
gelombang.
2. ADC (Analog To Digital Converter) adalah perangkat elektronika yang
berfungsi untuk mengubah sinyal analog (sinyal kontinyu) menjadi
sinyal digital.
3. Komponen interface yang menggunakan data ADC pada umunya beru•
pa sensor, seperti, sensor suhu (LM35), sensor cahaya (LCD /Photodiode),
sensor gas, dan sensor-sensor lainnya.
172 Kunci Jawaban
3. Secara singkat kedua pin pada komunikasi serial USART berfungsi se-
bagai pin penenrima/receiver(RX) dan sebagai pin pengirim/transmitter(TX).
4. Menyalakan Lampu listrik rumah tanpa menggunakan kabel maupun
saklar dan dikontrol menggunakan smartphone, hanya dengan menek•
an subah tombol pada aplikasi smartphone akan langsung memberikan
sinyal pada relay yang sudah terkontrol menggunakan mikrokontroler.
1. Inter Integrated Circuit atau sering disebut I2C adalah standar komu•
nikasi serial dua arah menggunakan dua saluran yang didisain khusus
untuk mengirim maupun menerima data.
174 Kunci Jawaban
Real nyata
System Tersusun
Baud Rate jumalah atau banyak data yang dikirimkan dalam waktu yang
ditentukan pada komunikasi serial.
Biner Jenis bilangan yang memiliki dua rate atau dua keadaan yaout 1 dan
0.
175
176 Glosarium
Buku ini menyediakan daftar data seet mikrokontroler yang umum digunak•
an.
• ATmega8535
• ATmega8535 SMD
• ATmega8
• ATmega8 SMD
• ATmega16 / ATmega32
• ATmega16 SMD
• ArduinoUNO
• ArduinoNANO
• ArduinoMICRO
• ArduinoPROMINI
• ArduinoMEGA
• ArduinoDUE
177
178 Dat a Seet
ATmega8535
6 a
I-
(.)
o. . . zs 6
t s ... N 6
¥ O O O (.)
vi z z . . . O 0 0 C 0
0 3 < t 2
«t co) cN . . . o 0 O
< .<.. < <
o cN co)
co co Ill co co z O < < < <
0 0 0 0 a.. 0 > a 0 0 0
44 43 42 41 40 39 38 37 36 35 34
(MOSI) PB5 1 33 PA4 (ADC4 )
(MISO) PB6 2 32 PA5 (ADC 5)
(SCK) PB7 3 31 PA6 (ADC6 )
RESET 4 30 PA7 (ADC7 )
vcc 5 29 AREF
GND 6 28 GND
XTAL 2 7 27 AVCC
XTAL1 8 26 PC7 (TOSC2)
(RXD0) PD0 9 25 PC6 (TOSC1)
(TXD0 ) PD1 10 24 PC5 (TDI)
(INTO) PD2 11 23 PC4 (TDO)
12 13 14 15 16 17 18 19 20 21 22
0o) uo co o .(.). . cv
o<t z0 O
f O 0
o 0 0 0 O O O
> 0 a.. a
•-
0
.. 0 a a a
....
0 0
.. a ¢ ... a
cN ¢ ...
J
.
¥ vi
z (.) O O Q. 0 0 t t
I- ...
0 ... 0 (.) O 0 O 2z
180 Data Seet
ATmega8
J
O
<o
.=-LI o
0 G
~ 6 @
6
f 6 6 0 O O O O
uJ o 0 0 o
- --
z X X
t er r < < < <
cN « c co uo «t 0 cv
o0 0
0.
oa O
0
O
0.
O
0
(.)
0
O
0.
32 31 30 29 28 27 26 25
(INT1) PD3 1 24 PC1 (ADC 1)
vcc 6 19 ADC6
(XTAL 1/TOSC1) PB6 7 18 AVCC
----
0.
0
,...
t
c
z
0.
,...
z
0
,-
a
0.
<,... ~ 0
0
N'
a
,... (.) G
-
e < O
-
O O
0 -
0
G5 5
0
182 Data Seet
ATmega16
RESET A REF
vcc AG ND
GND AVCC
XTAL2 PCT (T0Cs2)
XTA L1 PC6 (T0Cs1)
(RXD) PD0 PC5 (TD1)
(TXD) PD1 PC4 (TD0)
(INTO) PD2 PC3 (T MS)
(INT1) PD3 PC2 (TCK)
(0€1B) PD4 PC1 (SDA)
(0C1A ) PD5 PCo (SCL )
(ICP1) PD6 PD7 (0c2)
L rt Wing s
Data Seet 183
sO a
f
o zs s 6 a 6
,- t ,-
~ 0 O O O
en z z
,- O 0 0 0 0
0 < 3 t ~ <o <,- < co<
«t co cN ,- o 0 z O cN
co
0
co
0
co
0
co0 c
a.. (!) > <Ca.. <
O 0 < <
a.. 0
44 43 42 41 40 39 38 37 36 35 34
(MOSI) PB5 1 33 PA4 (ADC4)
(MISO) PB6 2 PA5 (ADC5)
(SCK) PB7 3 PA6 (AOC6 )
RESET 4 PA7 (ADC7)
VCC 5 AREF
GNO 6 GND
XTAL 2 7 AVCC
XTAL 1 8 PC7 (TOSC2)
(RXOO) POO 9 PC6 (TOSC 1)
(TXDO) PD1 10 PC5 (TOI)
(INTO) PD2 11 23 PC4 (TOO)
12 13 14 15 16 1 7 18 19 20 21 22
co
0
t
0
Lo
0 •0 ,-..
0
a
O
O
o o
z Oa..
,-
O
0
cv
O
a..
co
O
0
... 0 0
... ...
0
> 0 .... 0
« a ¢ ,- cv :::? < ¥ %
f
z « ,- 0 (.) O o O z
-- (.)
9 9
O O
9 --
(/)
0 t t
184 Dat a Seet
Arduino UNO
2
8 %p d .
1 f 1
0 2 2
z
- tis.i
J
• i:
E
rz 2 a i
J
06
¥ 1±
~
e
{ 55 i
2> u
<1 og g
+L
c h ?
5I E
± IIEL:
c cc 0
z 4¥ {
< a
< (l)
aI #
88
«e= L
'S
'4s 1 z9v9uIv/zV 9WI¥
«u
ARR#AIR#sh#t a
««
82£VD3 W I
««
:4 8i
6
u
2
.:} t
8 l
z
I
2
2
t
I.
%
1:2
Data Seet 185
Arduino NANO
z
a
z
5I
g
cr -
<
;
#
6
E
186 Dat a Seet
Arduino MICRO
Ill·
0
z
~
ar
>
e .
8
"?' z;
2
cu
I·
i ll
#s
¢d»
I
Data Seet 187
0
z
2
c
cc
<t''
188 Dat a Seet
Arduino MEGA
Data Seet 189
Arduino DUE