Anda di halaman 1dari 18

Andi Novianto

Informatika

SMK/MAK
Kelas X

Rumpun Bisnis
dan Manajemen,
Pariwisata, serta
Seni dan Ekonomi
Kreatif
Mikrokontroler

Mikrokontroler merupakan miniatur komputer dengan komponen memori, alat


pemroses, dan disk penyimpan data dalam proses pengolahan datanya. Berikut
akan dijelaskan mengenai proses kerja dan jenis-jenis mikrokontroler.

1. Bagian-bagian, Keuntungan, dan Jenis-jenis Mikrokontroler


Mikrokontroler berasal dari gabungan kata micro dan controller. Micro
mempunyai pengertian ukuran kecil, sedangkan controller merupakan alat yang
berfungsi sebagai pengontrol sebuah sistem. Dengan demikian, mikrokontroler
dapat didefinisikan sebagai alat pengontrol dengan ukuran kecil dan terintegrasi
layaknya sebuah sistem komputer dalam sebuah chip.
Generasi pertama mikrokontroler diluncurkan tahun 1974 oleh Texas
Instruments dengan seri TMS 1.000. TMS 1.000 adalah mikrokontroler 4 bit
yang dilengkapi dengan RAM dan ROM yang dikemas dalam sebuah chip.
Pada tahun 1976, Intel memperkenalkan mikrokontroler 8 bit seri Intel 8748.
Penggunaan teknologi chip (integrated circuit) pada mikrokontroler membuat alat
ini dikategorikan sebagai single chip microcomputer tipe embedded computer.
Mikrokontroler dikatakan sebagai minikomputer karena memiliki bagian penting
layaknya komputer seperti berikut.
a. Processor atau dikenal sebagai CPU (Central Proccessing Unit), bertugas untuk
mengerjakan setiap instruksi yang diberikan.
b. RAM atau Random Access Memory, berfungsi menyimpan memori selama
dialiri arus listrik. Data yang tersimpan dalam memori dapat diubah secara
berulang-ulang.
c. ROM atau Read Only Memory, berfungsi membaca nilai memori yang tersimpan.
d. Port I/O (input output), merupakan terminal yang dapat digunakan sebagai
jalur nilai yang dimasukkan pada mikrokontroler dan menghasilkan keluaran
dalam bentuk sinyal.
Meskipun bentuknya kecil, mikrokontroler mempunyai kelebihan dalam
hal pemrosesan data yang dapat bekerja layaknya komputer. Penggunaan
mikrokontroler dalam rangkaian elektronika memiliki beberapa keuntungan, antara
lain sebagai berikut.
a. Bentuknya yang kecil dan praktis memudahkan dalam perancangan dan
pemasangan pada rangkaian elektronika.
b. Kemudahan dalam mengubah fungsi dan alur logika program mikrokontroler.
c. Sistem rangkaian elektronika yang dibangun menjadi lebih efisien.
d. Tidak membutuhkan daya listrik yang besar.
e. Proses pencarian kerusakan atau gangguan fungsi rangkaian menjadi lebih
mudah.

Informatika Rumpun Bisnis dan Manajemen, Pariwisata, serta


2
Seni dan Ekonomi Kreatif untuk SMK/MAK Kelas X
Oleh karena itu, mikrokontroler sering diimplementasikan dalam rangkaian
elektronika yang dapat dikendalikan secara otomatis, seperti mesin cuci, remote
control, sensor kebakaran, pengatur lampu lalu lintas, dan rangkaian lampu kelap-
kelip.
Tabel Jenis mikrokontroler berdasarkan vendor.

No. Vendor Varian Seri Mikrokontroler


1 Atmel Atmel AT89, AT90, AT91, Atmel AVR32, MARC4, ATmega16,
dan ATmega328
2 Freescale ● Seri 8 bit, seperti 68HC05, 68HC08, dan 68HC11
Semiconductor ● Seri 16 bit, seperti 68HC12, 68HC16, dan DSP56800
● Seri 32 bit, seperti Freescale 683XX, MPC860, MPC500,
dan MPC 8240/8250
3 AMCC PPC 403GCX, PPC 405EP, PPC 405GP/CR, PPC 405 GPr, PPC
440GX, dan PPC 440EP/EPx/GRx
4 Fujitsu Tipe FR-V, tipe FR (32 bit), dan tipe F2MC (8/16 bit)
5 Intel ● Tipe 8 bit, seperti 8XC42, MSC48, 8061, 8XC251, dan MCS51
● Tipe 16 bit, seperti i960, 386EX, MCS96, MXS296, dan
80186/88
6 Philips LPC700, LPC900, dan LPC 2000
7 Texas
MSP430 dan TMS370
Instruments
8 Ubicom SX-54, S-48, IP2022, dan SX-28
9 Zilog Z86E2 dan Z8

Saat ini, terdapat dua arsitektur mikrokontroler yang tersedia di pasaran, yaitu
sebagai berikut,
a. CISC (Complex Instruction Set Computer)
Arsitektur CISC merupakan jenis arsitektur yang memiliki fitur yang lengkap
dan kompleks dalam memberikan set instruksi pada processor. Arsitektur ini
menggunakan bahasa tingkat rendah seperti Assembler. Kekurangan CISC
adalah performa yang kurang cepat karena penggunaan set instruksi yang
kompleks, tetapi lebih powerful dalam menangani proses. CISC merupakan
tipe multiclock yang menekankan penggunaan dan pemberian set instruksi
pada perangkat keras. Meskipun ukuran kapasitas program yang digunakan
kecil, tetapi kecepatan akses data yang rendah. Dalam CISC, instruksi LOAD
dan STORE merupakan dua set instruksi yang tidak terpisahkan.
b. RISC (Reduce Instruction Set Computer)
Arsitektur RISC mempunyai ragam set instruksi yang lebih
sederhana dibandingkan dengan CISC. Tipe ini sudah mendukung
penggunaan bahasa tingkat tinggi, seperti bahasa pemrograman C.

Bab 3 I Sistem Komputer 3


Oleh sebab itu, hasil kompilasi programnya memiliki ukuran kapasitas file
yang lebih besar dibandingkan CISC, tetapi memiliki performa yang lebih baik.
Di samping itu, RISC mengenal teknik pipeline, yang memungkinkan sebuah
perintah tunggal diberikan pada processor untuk mengerjakan beberapa
proses sekaligus.

2. Arsitektur ATmega328P
ATmega328P merupakan salah satu mikrokontroler keluaran ATMEL yang
menggunakan arsitektur RISC (Reduce Instruction Set Computer) dengan kelebihan
eksekusi data lebih baik dibandingkan dengan arsitektur CISC. Mikrokontroler
ATmega328 mempunyai spesifikasi sebagai berikut.
a. Berkinerja tinggi dengan kebutuhan tegangan yang kecil.
b. Mendukung 131 set instruksi dalam sebuah siklus clock ketika dieksekusi.
c. Memiliki 32 × 8 General Purpose Working Registers.
d. Mampu bekerja dengan speed 20 MIPS pada detak clock 20 MHz.
e. Menggunakan jenis EEPROM (Electrically Erasable Programmable Read Only
Memory) berkapasitas 1 KB dengan kelebihan masih dapat menyimpan data
meski tidak tersuplai arus listrik.
f. Tipe ATmega328P sering digunakan pada rangkaian Arduino Uno karena
dilengkapi flash memory sebesar 32 KB, dengan catatan 2 KB dari besar
memori tersebut digunakan sebagai area penyimpanan bootloader Arduino.
g. Mempunyai 28 pin input-output, dengan 6 di antaranya merupakan jenis pin
bertipe pulse width modulation output.
h. Dilengkapai memori bertipe SRAM dengan kapasitas 2 KB.
i. Memiliki interface master/slave SPI Serial.
j. 8 kanal berukuran 10 bit ADC dalam paket TQFP dan QFN/MLF.
k. 6 kanal berukuran 10 bit ADC dalam paket PDIP.
l. Dilengkapi fitur Power-on serta Reset and Programmable Brown-out Detection.
m. Bekerja pada tegangan 1,8 – 5,5 volt.
n. Mampu bertahan pada suhu antara –40 °C sampai 85 °C.

Informatika Rumpun Bisnis dan Manajemen, Pariwisata, serta


4
Seni dan Ekonomi Kreatif untuk SMK/MAK Kelas X
Berikut adalah blok diagram AVR mikrokontroler ATmega328P.
Data Bus 8-bit

Flash Program Status


Program Counter and Control
Memory
Interrupt
32 × 8
Unit
Instruction General
Register Purpose SPI
Registers Unit

Instruction Watchdog

Indirect Addressing
Decoder Timer
Direct Addressing

ALU Analog
Comparator
Control
Lines
I/O Module 1

Data
SRAM I/O Module 2

I/O Module n
EEPROM

I/O Lines

Sumber: atmel.com
Gambar Blok diagram ATmega328P.

Fungsi utama AVR Core CPU dalam mikrokontroler adalah memastikan


bahwa set instruksi yang diberikan padanya telah dieksekusi dengan benar. Oleh
karena itu, CPU harus dapat mengakses memori dengan cepat, melakukan proses
aritmetika, mengontrol periferal, dan menangani setiap instruksi yang diberikan.
Untuk meningkatkan kinerja dan memungkinkan eksekusi proses dilakukan
secara paralel, AVR menggunakan konsep arsitektur Harvard yang memisahkan
penggunaan alokasi memori dan bus untuk program dan data. Deretan set instruksi
yang tersimpan dalam program memori akan dieksekusi dalam sebuah perintah
tunggal dengan metode pipeline. Sistem paralel dalam CPU dapat dilihat ketika
sebuah instruksi sedang dikerjakan, instruksi berikutnya sudah di-load dari alokasi
program memori. Keseluruhan proses ini terjadi dalam setiap clock cycle.
Untuk mengerjakan proses ALU (Arithmetic Logic Unit), ATmega328P memiliki
32 General Purpose Register berukuran 8 bit yang bekerja dalam sebuah single
clock cycle. Karakteristik operasi ALU ini adalah dua jenis operan yang dihasilkan
dari register file setelah set instruksi tersebut berhasil dikerjakan. Hasil keluaran
dari proses tersebut akan disimpan kembali dalam register file. Adapun 6 dari 32
register tersebut dapat difungsikan sebagai 16 bit pengalamatan tak langsung

Bab 3 I Sistem Komputer 5


register pointer, sebagai alamat data space. Tujuannya adalah meningkatkan kinerja
pengaksesan address calculations. Salah satu alamat pointer dapat digunakan
sebagai rujukan untuk mencari lokasi flash dalam program memori.
Komponen ALU dalam processor mendukung operasi aritmetika dan logika
yang terjadi di antara register atau antara konstanta dan register, bahkan
mengizinkan terjadinya proses aritmetika pada sebuah register. Output dari
operasi aritmetika dapat dilihat pada status register yang memberikan informasi
tentang keluaran dari operasi tersebut. Pada umumnya, set instruksi AVR memiliki
format 16 bit. Setiap alamat program memori terdiri atas 16 bit sampai 32 bit
set instruksi. Pada bagian alokasi memori, program flash dibagi menjadi dua
bagian, yaitu boot program section dan application program section. Fungsi kedua
bagian tersebut adalah mengunci nilai bit sebagai proteksi data pada saat proses
write atau write/read data. Selama melakukan proses interupsi dan pemanggilan
modul subrutin, alamat program counter yang mengandung nilai output proses
akan disimpan dalam stack. Besar nilai stack akan dialokasikan dalam SRAM dan
selalu dibatasi ukurannya berdasarkan kapasitas SRAM.
Untuk menerima input atau mengirimkan output ke perangkat luar, ATmega328P
mempunyai 28 pin input-output sebagai interface antara mikrokontroler dengan
perangkat lain. Berikut konfigurasi 28 pin input-output yang terdapat pada
mikrokontroler ATmega328P.

(PCINT14/RESET)PC6 1 28 PC5(ADC5/SCL/PCINT13)
(PCINT15/RXD)PD0 2 27 PC4(ADC4/SDA/PCINT12)
(PCINT17/TXD)PD1 3 26 PC3(ADC3/PCINT11)
(PCINT18/INT0)PD2 4 25 PC2(ADC2/PCINT10)
(PCINT19/OC2B/INT1)PD3 5 24 PC1(ADC1/PCINT9)
(PCINT20/XCK/T0)PD4 6 23 PC0(ADC0/PCINT8)
VCC 7 22 GND
GND 8 21 AREF
(PCINT6/XTAL1/TOSC1)PB6 9 20 AVCC
(PCINT17/XTAL2/TOSC2)PB7 10 19 PB5(SCK/PCINT5)
(PCINT21/OC0B/T1)PD5 11 18 PB4(MISO/PCINT4)
(PCINT22/OC0A/AIN0)PD6 12 17 PB3(MOSI/OC2A/PCINT3)
(PCINT23/AIN1)PD7 13 16 PB2(SS/OC1B/PCINT2)
(PCINT0/CLKO/ICP1)PB0 14 15 PB1(OC1A/PCINT1)

Sumber: dokumen penerbit


Gambar Konfigurasi pin input-output mikrokontroler ATmega328P.

Fungsi setiap kelompok pin dalam mikrokontroler ATmega328P adalah sebagai


berikut.
• VCC, berfungsi sebagai pin input sumber tegangan.
• GND, merupakan singkatan Ground yang berfungsi sebagai pin grounding atau
massa (negatif).

Informatika Rumpun Bisnis dan Manajemen, Pariwisata, serta


6
Seni dan Ekonomi Kreatif untuk SMK/MAK Kelas X
• PORT B merupakan port input-output tipe 8 bit yang bekerja dua arah.
Fungsi port ini bergantung pada pilihan jenis clock. Contohnya, port PB 6
dapat digunakan sebagai masukan inverting oscillator amplifier dan masukan
internal clock operating circuit, sedangkan port PB7 dapat difungsikan sebagai
keluaran nilai balik oscilator.
Tabel Fungsi port B.

Nomor Port Fungsi


XTAL2 (Chip Clock Oscillator pin 2)
PB7 TOSC2 (Timer Oscillator pin 2)
PCINT7 (Pin Change Interrupt 7)
XTAL1 (Chip Clock Oscillator pin 1 atau External clock input)
PB6 TOSC1 (Timer Oscillator pin 1)
PCINT6 (Pin Change Interrupt 6)
SCK (SPI Bus Master Clock Input)
PB5
PCINT5 (Pin Change Interrupt 5)
MISO (SPI Bus Master Input/Slave Output)
PB4
PCINT4 (Pin Change Interrupt 4)
MOSI (SPI Bus Master Output/Slave Input)
PB3 OC2A (Timer/Counter 2 Output Compare Match A Output)
PCINT3 (Pin Change Interrupt 3)
SS (SPI Bus Master Slave select)
PB2 OC1B (Timer/Counter 1 Output Compare Match B Output)
PCINT2 (Pin Change Interrupt 2)
OC1A (Timer/Counter 1 Output Compare Match A Output)
PB1
PCINT1 (Pin Change Interrupt 1)
ICP1 (Timer/Counter1 Input Capture Input)
PB0 CLKO (Divided System Clock Output)
PCINT0 (Pin Change Interrupt 0)
Sumber: atmel.com
• PORT C (PC5:0) adalah port input-output berukuran 7 bit yang bekerja dua
arah. Port ini dapat digunakan sebagai ADC Input Channel dan 2-wire Serial
Bus Data Input/Output Line.
Tabel Fungsi port C.

Nomor Port Fungsi


RESET (Reset pin)
PC6
PCINT14 (Pin Change Interrupt 14)
ADC5 (ADC Input Channel 5)
PC5 SCL (2-wire Serial Bus Clock Line)
PCINT13 (Pin Change Interrupt 13)

Bab 3 I Sistem Komputer 7


Lanjutan Tabel
Nomor Port Fungsi
ADC4 (ADC Input Channel 4)
PC4 SDA (2-wire Serial Bus Data Input/Output Line)
PCINT12 (Pin Change Interrupt 12)
ADC3 (ADC Input Channel 3)
PC3
PCINT11 (Pin Change Interrupt 11)
ADC2 (ADC Input Channel 2)
PC2
PCINT10 (Pin Change Interrupt 10)
ADC1 (ADC Input Channel 1)
PC1
PCINT9 (Pin Change Interrupt 9)
ADC0 (ADC Input Channel 0)
PC0
PCINT8 (Pin Change Interrupt 8)
Sumber: atmel.com

• PORT C (PC6/RESET), PC6 digunakan sebagai pin I/O pada saat RSTDISBL
Fuse telah diatur dalam program. Namun jika tidak, PC6 difungsikan sebagai
port RESET.
• PORT D (PD7:0), merupakan port input-output 8 bit dua arah yang sering
digunakan untuk analog comparator, external interruption, dan USART
communication.

Tabel Fungsi port D.

Nomor Port Fungsi


AIN1 (Analog Comparator Negative Input)
PD7
PCINT23 (Pin Change Interrupt 23)
AIN0 (Analog Comparator Positive Input)
PD6 OC0A (Timer/Counter 0 Output Compare Match A Output)
PCINT22 (Pin Change Interrupt 22)
T1 (Timer/Counter 1 External Counter Input)
PD5 OC0B (Timer/Counter 0 Output Compare Match B Output)
PCINT21 (Pin Change Interrupt 21)
XCK (USART External Clock Input/Output)
PD4 T0 (Timer/Counter 0 External Counter Input)
PCINT20 (Pin Change Interrupt 20)
INT1 (External Interrupt 1 Input)
PD3 OC2B (Timer/Counter 2 Output Compare Match B Output)
PCINT19 (Pin Change Interrupt 19)
INT0 (External Interrupt 0 Input)
PD2
PCINT18 (Pin Change Interrupt 18)

Informatika Rumpun Bisnis dan Manajemen, Pariwisata, serta


8
Seni dan Ekonomi Kreatif untuk SMK/MAK Kelas X
Lanjutan Tabel
Nomor Port Fungsi
TXD (USART Output Pin)
PD1
PCINT17 (Pin Change Interrupt 17)
RXD (USART Input Pin)
PD0
PCINT16 (Pin Change Interrupt 16)
Sumber: atmel.com

• AVCC, merupakan pin sambungan sumber tegangan menuju A/D Converter,


port PC3:0, dan ADC7:6.
• AREF, merupakan pin input sumber tegangan referensi A/D Converter.
• ADC7::6 (TQFP and QFN/MLF Package Only), pada sistem paket TQFP and
QFN/MLF, port ini melayani input analog menuju A/D Converter.

3. Arduino
Arduino merupakan rangkaian elektronika yang berbasis mikrokontroler
ATmega328P keluaran Atmel. Jenis yang dipaparkan pada materi ini adalah Arduino
Uno R3 yang bersifat open source hardware, yang memungkinkan orang lain
mengembangkan sesuai kebutuhan mereka. Nama lain Arduino adalah development
board atau papan pengembangan mikrokontroler, yang memudahkan pengguna
dalam membangun rangkaian elektronika berbasis mikrokontroler dibandingkan
membangun rangkaian mulai dari awal. Spesifikasi hardware Arduino Uno R3
adalah sebagai berikut.
• Berbasis chip mikrokontroler ATmega328P.
• Beroperasi pada tegangan DC 5 V.
• Input tegangan DC adalah 7 V − 12 V.
• Terdiri atas 14 digital I/O pin, dengan 6 pin di antaranya merupakan sambungan
PWM.
• Memiliki 6 pin input analog.
• Besar arus setiap pin I/O adalah 20 mA.
• Besar arus DC pin pada tegangan 3,3 V adalah 50 mA.
• Kapasitas memori flash adalah 32 KB dengan 0,5 KB digunakan untuk
bootloader program.
• Kapasitas SRAM adalah 2 KB.
• Ukuran EEPROM adalah 1 KB.
• Mampu bekerja pada clock speed 16 MHz.
• Dijual di pasaran dengan dimensi 68,6 mm × 53,4 mm dengan berat 25 g.

Pada sistem power supply, Arduino mempunyai dua koneksi, yaitu melalui
USB (komputer) dan power supply. Jika menggunakan power supply, tegangan
yang digunakan merupakan tegangan DC (searah), yang berasal dari adaptor atau
baterai. Biasanya koneksi ini menggunakan jack adaptor yang dimasukkan pada

Bab 3 I Sistem Komputer 9


port input supply. Besar input tegangan berkisar 7 V sampai 12 V. Jika tegangan
yang diberikan kurang dari 7 V, rangkaian dalam board Arduino menjadi kurang
stabil. Begitu pula jika tegangan yang diinputkan lebih besar dari 12 V, Arduino
menjadi lebih cepat panas sehingga cepat rusak. Tegangan DC yang menggunakan
port adaptor, sering dipakai Arduino jika telah diprogram dan dipasang langsung
pada peranti elektronika. Sementara port USB, biasanya dipakai untuk koneksi ke
komputer pada saat melakukan pemrograman Arduino sebelum dirangkaikan ke
dalam sistem peralatan.
Bagian-bagian board Arduino dapat dilihat pada gambar berikut.
3) Tombol RESET 9) ICSP 6) AREF 5) Ground 4) Pin Digital

1) Port USB

2) Jack Adaptor
Tegangan DC

7) Pin Power 8) Pin Analog


Sumber: dokumen penerbit
Gambar Bagian-bagian board Arduino.

Keterangan:
1) Port USB, berguna untuk memberikan catu daya dari komputer ke Arduino,
ketika me-load atau memasukkan program ke mikrokontroler sebagai media
komunikasi secara serial antara board Arduino dengan komputer.
2) Jack adaptor Tegangan DC, berfungsi sebagai sambungan input sumber
tegangan DC berupa jack, biasanya dari adaptor ataupun baterai.
3) Tombol Reset, berguna untuk mereset board Arduino sehingga setiap data dan
program yang pernah di-load ke dalam board dan mikrokontroler akan dihapus
atau dikosongkan.

Informatika Rumpun Bisnis dan Manajemen, Pariwisata, serta


10
Seni dan Ekonomi Kreatif untuk SMK/MAK Kelas X
4) Pin digital, merupakan pin sebagai port input atau output yang penggunaannya
dapat dilakukan oleh program menggunakan fungsi digitalWrite(), digitalRead()
dan pinMode(). Arus yang mengalir pada setiap pin memiliki batas maksimal 40 mA
dengan nilai hambatan resistor pull-up 20 ohm hingga 50 ohm.
• Pin 0 (RX), dimanfaatkan untuk menerima serial data TTL atau Transisto-
transistor logic sedangkan pin 1 (TX) digunakan untuk mengirimkan data
TTL.
• Pin 2 dan 3, dapat digunakan melalui program menggunakan fungsi
attachInterrupt().
• Pin 3, 5, 6, 9, 10, dan 11, dapat digunakan sebagai output PWM 8 bit dan
dikonfigurasi menggunakan fungsi analogWrite().
• Pin 10 (SS), 11 (MOSI), 12 (MISO) dan 13 (SCK), digunakan untuk mendukung
proses komunikasi berbasis SPI.
• LED dekat pin 13, berfungsi menyalakan LED ketika pin bernilai high dan
memadamkannya ketika pin bernilai low.
5) Ground, sebagai sambungan ke ground tegangan.
6) AREF, digunakan sebagai pin referensi input tegangan analog yang dapat diatur
melalui fungsi program analogReference().
7) Pin Power
• Pin VIN, pada saat Arduino menggunakan sumber tegangan dari luar board,
pin ini dapat dimanfaatkan sebagai sumber tegangan peralatan yang akan
dikontrol.
• Pin 5V, merupakan keluaran tegangan maksimal 5 volt yang secara
otomatis diatur oleh regulator board Arduino.
• Ping 3v3 merupakan pin sumber tegangan sebesar 3,3 volt yang dikeluarkan
regulator board Arduino dengan nilai arus listrik maksimal 50 mA.
• GND merupakan pin untuk jalur sambungan grounding Arduino.
8) Pin Analog, terdiri atas enam pin dengan urutan A0 sampai A5. Deretan pin ini
sering digunakan untuk mendeteksi dan mengonversi setiap tegangan yang
dihasilkan oleh sensor analog. Contohnya, sensor suhu ruangan dengan nilai
input pin tersebut berkisar antara 0 hingga 1.023 yang merupakan referensi
perubahan tegangan antara 0 volt hingga 5 volt.
9) ICSP atau In-Circuit Serial Programming adalah deretan pin yang memberikan
fasilitas bagi user untuk melakukan pemrograman secara langsung pada
mikrokontroler tanpa melalui bootloader Arduino.

Bab 3 I Sistem Komputer 11


4. Pemrograman Mikrokontroler pada Arduino
Untuk melakukan pemrograman pada Arduino, Anda perlu memahami bahasa
pemrograman C. Struktur penulisan bahasa pemrograman C mempunyai bagian-
bagian sebagai berikut.
a. Header
Header merupakan bagian kode yang berisi deklarasi file header bahasa C.
File header adalah file library dengan ekstensi h (*.h), yang merujuk setiap
fungsi dan syntax yang akan digunakan dalam program C.
Contoh:
#include <iostream.h>

b. Deklarasi
Deklarasi berfungsi menetapkan daftar variabel ataupun konstanta yang
akan digunakan dalam badan program. Variabel adalah nama yang digunakan
untuk menyimpan sebuah nilai yang dapat diatur besarannya selama program
dieksekusi, sedangkan konstanta memiliki nilai yang tetap (konstan).
Contoh:
float tinggi;
int alas;

c. Komentar
Komentar merupakan tambahan baris penjelasan dalam kode bahasa C yang
bertujuan memberikan keterangan tentang penggunaan kode. Namun, bagian
ini tidak ikut dieksekusi oleh program. Komentar single line menggunakan
kode //, sedangkan komentar lebih dari satu baris menggunakan kode /*....*/.
Contoh kode bahasa pemrograman C adalah sebagai berikut.
1 /*program hitung luas persegi panjang*/
2 #include <stdio.h>
3
4 #include <conio.h>
5
6 void main() {
7 float luas;
8 int panjang, lebar;
9 printf(“nilai panjang =”);
10 scanf(“%d”, & panjang);
11 printf(“nilai lebar =”);
12 scanf(“%d”, & lebar);
13 luas = panjang * lebar;
14 printf(“luas persegi panjang adalah = %f”, luas);
15 }

Informatika Rumpun Bisnis dan Manajemen, Pariwisata, serta


12
Seni dan Ekonomi Kreatif untuk SMK/MAK Kelas X
Karena Arduino menggunakan bahasa pemrograman C, tata cara penggunaan
kode, penyusunan, dan penulisannya juga mengikuti prosedur standar penulisan
syntax bahasa C, yaitu sebagai berikut.
a. Struktur penulisan
Setiap penulisan kode program Arduino atau yang lebih dikenal dengan
nama sketch harus memiliki dua jenis fungsi, antara lain sebagai berikut.
1) void setup () {}
Pada bagian ini, kode program diletakkan di antara dua kurung
kurawal. Baris kode dalam kurung kurawal hanya dieksekusi sekali pada
saat Arduino mulai berjalan.
2) void loop () {}
Baris kode dalam bagian loop akan dieksekusi setelah program
menjalankan void setup (). Fungsi loop akan selalu dijalankan oleh
Arduino selama sumber tegangan masih tersambung.
b. Aturan penulisan
1) Komentar satu baris, menggunakan kode //.
2) Komentar lebih dari satu baris menggunakan kode /*......*/.
3) Badan program selalu diletakkan dalam kurung kurawal {....}.
4) Setiap akhir baris penulisan baris kode program selalu diakhiri dengan
tanda titik koma ( ; ).
c. Variabel
Variabel merupakan nama buatan yang diberikan untuk menyimpan nilai
secara sementara, nilai tersebut dapat berubah-ubah sesuai alur programnya.
d. Tipe data
Tipe data merupakan satuan besaran data yang dapat dideklarasikan pada
variabel.
Contoh:
1) byte, membutuhkan memori penyimpanan sebesar 8 bit atau 1 Byte
dengan nilai 0 – 255.
2) int (integer), membutuhkan memori penyimpanan sebesar 2 Byte dengan
kisaran desimal antara -32.768 hingga 32.767.
3) long, memerlukan 4 Byte memori dan mempunyai rentang nilai dari
-2.147.483.648 hingga 2.147.483.647.
4) boolean, merupakan tipe data yang hanya memiliki dua kemungkinan,
yaitu true dan false sehingga hanya membutuhkan 1 bit memori RAM.
5) float, digunakan untuk menampung data bertipe desimal (floating
point) sebesar 4 Byte dengan rentang nilai -3.4028235E+38 sampai
3.4028235E+38.

Bab 3 I Sistem Komputer 13


6) array, merupakan deretan nilai dalam sebuah variabel yang dapat diakses
berdasarkan indeksnya. Contoh deklarasi array adalah sebagai berikut.
int x[ ] = {1,2,3,4};
Y = x[1]

7) char, tipe data yang hanya mampu menyimpan sebuah karakter berdasarkan
kode ASCII, contohnya karakter “B” memiliki kode ASCII 66. Besar memori
yang dibutuhkan adalah 1 Byte.

e. Operasi aritmetika
Operasi aritmerika adalah operasi yang dilakukan pada data bertipe
numerik.
Tabel Operator aritmetika.

Operator Fungsi
+ Penjumlahan
- Pengurangan
* Perkalian
/ Pembagian
% Operator pembagian yang menghasilkan keluaran berupa sisa hasil
bagi, contohnya 10%3 akan menghasilkan nilai 1

f. Compound assignment
Compound assignment merupakan salah satu teknik kombinasi operator
aritmetika dengan variabel, yang sering diterapkan pada sistem perulangan.
Contoh:
z ++; // memiliki kesamaan operasi dengan z = z + 1
z --; // memiliki kesamaan operasi dengan z = z – 1
z -= a; // memiliki kesamaan operasi dengan z = z – a
z += a; // memiliki kesamaan operasi dengan z = z + a
z *= a; // memiliki kesamaan operasi dengan z = z * a
z /= a; // memiliki kesamaan operasi dengan z = z / a

g. Operasi perbandingan
Operasi perbandingan merupakan operasi yang dilakukan untuk
membandingkan sebuah logika atau beberapa logika yang keluarannya adalah
tipe data boolean.
Tabel Operator pembanding.

Operator Fungsi
== Sama dengan
!= Tidak sama dengan

Informatika Rumpun Bisnis dan Manajemen, Pariwisata, serta


14
Seni dan Ekonomi Kreatif untuk SMK/MAK Kelas X
Lanjutan Tabel
Operator Fungsi
< Lebih kecil dari
> Lebih besar dari
<= Lebih kecil sama dengan
>= Lebih besar sama dengan

h. Operasi logika
Operasi logika merupakan operasi yang dilakukan untuk membandingkan
dua atau lebih ekspresi yang menghasilkan keluaran bernilai true atau false.
Dalam bahasa C, dikenal tiga jenis operator logika, yaitu sebagai berikut.
Tabel Operator logika.

Operator Keterangan
&& Operator AND, akan bernilai true jika kedua operannya bernilai true.
|| Operator OR, akan bernilai true jika kedua operannya bernilai true.
! Operator NOT akan menghasilkan kebalikan dari nilai input-nya.

i. Operasi seleksi
Dalam pemrograman C, dikenal konsep operator seleksi menggunakan
if...then yang penggunaannya sama seperti bahasa pemrograman lainnya.
Operator seleksi ini dapat digunakan pada satu kondisi dan banyak kondisi.
1) Seleksi satu kondisi
Jika sebuah kondisi menghasilkan nilai true, baris kode program
yang berada di dalam kurung kurawal {…} akan dieksekusi. Namun, jika
bernilai false, akan diabaikan. Format penulisan seleksi if...then dengan
satu kondisi adalah sebagai berikut.
if (kondisi)
{
//baris kode program
}

2) Seleksi banyak kondisi


Jika kondisi 1 bernilai true, program akan mengeksekusi baris kode
program ke-1. Namun, jika bernilai false, seleksi akan dilanjutkan ke operasi
logika kondisi 2. Jika kondisi 2 bernilai true, program akan mengeksekusi
baris kode program ke-2. Akan tetapi, jika bernilai false, program akan
mengeksekusi baris kode program ke-n.

Bab 3 I Sistem Komputer 15


Format penulisan seleksi if...then...else dengan satu kondisi adalah
sebagai berikut.
if (kondisi1)
{
//baris kode program ke-1
}
else if (kondisi2)
{
//baris kode program ke-2
}
else
{
//baris kode program ke-n
}

j. Operasi perulangan
1) Perulangan dengan for
Perulangan dengan for dilakukan secara terbatas dengan nilai awalan
dan nilai maksimal pengulangan yang telah ditentukan. Format penulisan
struktur perulangan for adalah sebagai berikut.
for (inisialisasi; syarat perulangan; nilai peubah)
{
//baris kode program
}

Berikut adalah contoh program perulangan for dengan bahasa C.


for (i = 0; i <= 255; i++) {
analogWrite(PWMpin, i);
}

2) Perulangan dengan while


Perulangan dengan while akan terjadi selama ekspresi (kondisi) bernilai
true. Format penulisan perulangan while adalah sebagai berikut.
while (kondisi) {
//baris kode program;
}

3) Perulangan dengan do...while


Perulangan dengan do…while adalah perulangan yang akan terjadi
minimal satu kali, karena pada awal looping, program tidak memeriksa

Informatika Rumpun Bisnis dan Manajemen, Pariwisata, serta


16
Seni dan Ekonomi Kreatif untuk SMK/MAK Kelas X
nilai kondisi true atau false. Perulangan akan terus berlangsung selama
kondisi dalam while bernilai benar. Format penulisan perulangan do...while
adalah sebagai berikut.
do {
//baris kode program;
}
while (kondisi)

k. Input-Output
Untuk menerima input ataupun menampilkan output, terdapat beberapa
perintah yang dapat digunakan dalam bahasa C, yaitu sebagai berikut.
1) pinMode(no_pin,mode)
Perintah ini sering dipakai pada void setup() untuk menentukan
konfigurasi sebuah pin sebagai input atau sebagai output. Contoh
penulisannya adalah sebagai berikut.
pinMode(13, INPUT);

2) digitalRead(no_pin)
Perintah ini dapat digunakan untuk membaca nilai sebuah pin yang
dikonfigurasi sebagai penerima input. Jika bernilai high, tegangan yang
diperoleh adalah 5 volt. Namun, jika bernilai low, akan menjadi jalur
ground. Contoh penulisannya adalah sebagai berikut.
digitalRead(13);

3) digitalWrite(no_pin, nilai)
Perintah yang dapat diterapkan pada pin digital dari 0 – 13 dengan
nilai high atau low. Contoh penulisannya adalah sebagai berikut.
digitalWrite(13, HIGH);

4) analogRead(no_pin)
Perintah ini dapat digunakan untuk mengonfigurasi pin analog dari
A0 – A5 dengan output berupa angka 0 (refleksi tegangan 0 volt) hingga
angka 1.023 (tegangan 5 volt) Contoh penulisannya adalah sebagai berikut.
analogRead(A0); //artinya kode ini akan membaca nilai
sensor pada pin A0

5) analogWrite(no_pin, nilai)
Perintah ini digunakan untuk mengatur nilai pada pin analog. Contoh
penulisannya adalah sebagai berikut.

Bab 3 I Sistem Komputer 17


analogWrite(3, 100); //artinya pin 3 diberikan nilai
sebesar 100

6) delay(t)
Perintah ini berfungsi memberikan jeda waktu, biasanya digunakan
untuk menghentikan sementara program selama waktu tertentu (t) dalam
satuan milisekon. Contoh penulisannya adalah sebagai berikut.
delay(1000);

7) millis()
Perintah ini berfungsi mengembalikan nilai waktu dalam satuan
milisekon (1 detik = 1.000 ms) dalam sebuah variabel bertipe data long.
Contoh penulisannya adalah sebagai berikut.
x = millis();

8) max(a,b)
Perintah ini digunakan untuk membandingkan dua nilai data dalam
dua variabel a dan b dengan hasil keluarannya adalah nilai variabel yang
terbesar. Contoh penulisannya adalah sebagai berikut.
x = max(x, 10);

9) min(a,b)
Perintah ini digunakan untuk membandingkan dua nilai data dalam
dua variabel a dan b dengan hasil keluarannya adalah nilai variabel yang
paling kecil. Contoh penulisannya adalah sebagai berikut.
x = min(x, 10);

Informatika Rumpun Bisnis dan Manajemen, Pariwisata, serta


18
Seni dan Ekonomi Kreatif untuk SMK/MAK Kelas X

Anda mungkin juga menyukai