0% menganggap dokumen ini bermanfaat (0 suara)
249 tayangan66 halaman

Modul Sistem Terbenam Rev. 02

Mikrokontroler Arduino Uno memungkinkan mahasiswa mempelajari dan membuat aplikasi interaktif menggunakan perangkat keras dan perangkat lunak terbuka. Arduino terdiri dari papan pengembangan berbasis mikrokontroler ATmega328P dan IDE yang memudahkan penulisan kode, pengunggahan ke perangkat, dan pengembangan prototipe fisik.

Diunggah oleh

Bagusti Muspratama
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
249 tayangan66 halaman

Modul Sistem Terbenam Rev. 02

Mikrokontroler Arduino Uno memungkinkan mahasiswa mempelajari dan membuat aplikasi interaktif menggunakan perangkat keras dan perangkat lunak terbuka. Arduino terdiri dari papan pengembangan berbasis mikrokontroler ATmega328P dan IDE yang memudahkan penulisan kode, pengunggahan ke perangkat, dan pengembangan prototipe fisik.

Diunggah oleh

Bagusti Muspratama
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
Anda di halaman 1/ 66

BAB I : MIKROKONTROLER ARDUINO UNO

Tujuan :
1. Mahasiswa mampu memahami board mikrokontroler Arduino
2. Mahasiswa mampu memprogram mikrokontroler Arduino
3. Mahasiswa mampu membuat aplikasi dengan mikrokontroler Arduino
Teori :
Arduino Uno R3 adalah papan pengembangan (development board) mikrokontroler yang
berbasis chip ATmega328P. Disebut sebagai papan pengembangan karena board ini
memang berfungsi sebagai arena prototyping sirkuit mikrokontroller. Dengan
menggunakan papan pengembangan, anda akan lebih mudah merangkai rangkaian
elektronika mikrokontroller dibanding jika anda memulai merakit ATMega328 dari awal
di breadboard.
Arduino Uno R3 dengan ATmega328P mempunyai 14 digital input/output (6 di
antaranya dapat digunakan untuk PWM output), 6 analog input, 16 Mhz crystal oscillator,
USB connection, power jack, ICSP header, dan reset button. Skema Arduino Uno R3
didasarkan pada blog diagram dari mikrokontroler jenis AVR ATmega328. Komponen
utama di dalam papan Arduino adalah sebuah mikrokontroler 8 bit dengan merek ATmega
yang dibuat oleh perusahaan Atmel Corporation. Skema Arduino Uno R3 dapat dilihat
pada gambar 1.2 dan untuk melihat inti dari pembentuk Arduino bisa dilihat skema dari
ATMega328 pada gambar 1.1

Gambar 1.1. Skema ATMega328

Gambar 1.2. Skema Arduino Uno R3


Physical computing
Untuk memahami Arduino, terlebih dahulu kita harus memahami terlebih dahulu apa yang
dimaksud dengan physical computing. Physical computing adalah membuat sebuah
sistem atau perangkat fisik dengan menggunakan software dan hardware yang sifatnya
interaktif yaitu dapat menerima rangsangan dari lingkungan dan merespon balik. Physical
computing adalah sebuah konsep untuk memahami hubungan yang manusiawi antara
lingkungan yang sifat alaminya adalah analog dengan dunia digital. Pada prakteknya
konsep ini diaplikasikan dalam desaindesain alat atau projek- projek yang menggunakan
sensor dan microcontroller untuk menerjemahkan input analog ke dalam sistem software
untuk mengontrol gerakan alat-alat elektro-mekanik seperti lampu, motor dan sebagainya.
Prototype
Pembuatan prototype merupakan kegiatan yang sangat penting di dalam proses physical
computing karena pada tahap inilah seorang perancang melakukan eksperimen dan uji
coba dari berbagai jenis komponen, ukuran, parameter, program komputer dan sebagainya
berulang-ulang kali sampai diperoleh kombinasi yang paling tepat. Dalam hal ini
perhitungan angka-angka dan rumus yang akurat bukanlah satu-satunya faktor yang
menjadi kunci sukses di dalam mendesain sebuah alat karena ada banyak faktor eksternal
yang turut berperan, sehingga proses mencoba dan menemukan/mengoreksi kesalahan
perlu melibatkan hal-hal yang sifatnya non-eksakta.
Pada masa lalu (dan masih terjadi hingga hari ini) bekerja dengan hardware berarti

membuat rangkaian setiap komponen elektronika(resistor, kapasitor, etc) disambungkan


secara fisik dengan kabel atau jalur tembaga yang disebut dengan istilah hard wired
sehingga untuk merubah rangkaian maka sambungan-sambungan itu harus diputuskan dan
disambung kembali. Dengan hadirnya teknologi digital dan microprocessor fungsi yang
sebelumnya dilakukan dengan hard wired digantikan dengan software. Dengan software
prototype lebih mudah diubah dibandingkan hardware, dengan beberapa penekanan
tombol kita dapat merubah logika alat secara radikal dan mencoba versi ke-dua, ke-tiga
dan seterusnya dengan cepat tanpa harus mengubah pengkabelan dari rangkaian.
Arduino

Gambar 1.3 Arduino Uno Rev.3


Arduino dikatakan sebagai sebuah platform dari physical computing yang bersifat open
source. Pertama-tama perlu dipahami bahwa kata platform di sini adalah sebuah pilihan
kata yang tepat. Arduino tidak hanya sekedar sebuah alat pengembangan, tetapi ia adalah
kombinasi dari hardware, bahasa pemrograman dan Integrated Development
Environment (IDE) yang canggih. IDE adalah sebuah software yang sangat berperan
untuk menulis program, meng- compile menjadi kode biner dan meng- upload ke dalam
memory microcontroller. IDE adalah sebuah software yang sangat berperan untuk menulis
program, meng- compile menjadi kode biner dan meng- upload ke dalam memory
microcontroller.
Arduino berevolusi menjadi sebuah platform karena ia menjadi pilihan dan acuan bagi
banyak praktisi karena bisa menyelesaikan pekerjaan dalam cara yang mudah baik secara
display dan konfigurasi. Salah satu yang membuat Arduino memikat hati banyak orang
adalah karena sifatnya yang open source, baik untuk hardware maupun software-nya.
Diagram rangkaian elektronik Arduino digratiskan kepada semua orang. Setiap bagian
dari arduino bisa bebas men-download seperti gambarnya, membeli komponenkomponennya, membuat PCB-nya dan merangkainya sendiri tanpa harus membayar
kepada para pembuat Arduino. Sama halnya dengan IDE Arduino yang bisa di-download
dan diinstal pada komputer secara gratis.

Gambar 1.4. IDE Arduino


Arduino dalam pengembangan prototipe akan besinggungan dengan
1. Software, dari IDE untuk menulis program, driver untuk koneksi dengan
komputer, contoh program dan library untuk pengembangan program.
2. Hardware, papan input/output (I/O).
1. Bagian Software Arduino
a. Download Software Arduino
Dapatkan versi terakhir dari halaman download Arduino.
Setelah download selesai, ekstrak file yang telah di-download tadi. Pastikan
anda tidak merubah struktur folder. Klik dua kali pada folder untuk
membukanya. Terdapat beberapa file dan sub-folder di dalamnya.
b. Hubungkan Board
Arduino Uno, Mega, Deumilanove dan Arduino Nano akan menarik sumber
daya dari port USB atau power supply eksternal.
Hubungkan board Arduino dengan komputer menggunakan kabel USB. LED
berwarna hijau (berlabel PWR) akan hidup.
c. Instalasi Drivers
Instalasi driver untuk Arduino Uno dengan Windows 7, Vista atau XP:

Hubungkan board anda dan tunggu Windows untuk memulai proses


instalasi driver. Setelah beberapa saat, proses ini akan gagal, walaupun
sudah melakukan yang terbaik.
Klik pada Start Menu dan buka Control Panel
Di dalam Control Panel, masuk ke menu System and Security.
Kemudian klik pada System. Setelah tampilan System muncul, buka
Device Manager.
Lihat pada bagian Ports (COM & LPT). Anda akan melihat sebuah port
terbuka dengan nama Arduino Uno (COMxx)
Klik kanan pada port Arduino Uno (COMxx) dan pilih opsi Update
Driver Software.
Kemudian, pilih opsi Browse my computer for Driver software.
Terakhir, masuk dan pilih file driver Uno, dengan nama
ArduinoUNO.inf, terletak di dalam folder Drivers pada Software
Arduino yang telah di-download tadi.
Windows akan meneruskan instalasi driver.
Instalasi driver untuk Arduino Duemilanove, Nano atau Diecimila dengan
Windows 7, Vista dan XP:
Ketika anda menghubungkan board, Windows seharusnya memulai proses
instalasi driver (ini apabila anda belum pernah menggunakan komputer tersebut
dengan board Arduino sebelumnya).
Pada Windows Vista, driver akan otomatis di-download dan diinstalasi.
Pada Windows XP, wizard Add New Hardware akan muncul:

Ketika ditanya Can Windows connect to Windows Update to search

for software? pilih No, not this time. Klik next.


Pilih Install from a list or specific location (Advanced) dan klik next.
Pastikan bahwa Search for the best driver in these location dicentang;
Seach removable media jangan dicentang; Include this location in the
search dicentang dan masuk ke direktori drivers/FTDI USB Drivers
pada folder software Arduino. (Versi terakhir dari driver ini dapat
ditemukan pada situs FTDI). Klik next.
Wizard akan mencari driver dan kemudian memberitahu bahwa sebuah
USB Serial Converter telah ditemukan. Klik finish.
Wizard hardware baru akan muncul kembali. Ulangi langkah yang sama
seperti sebelumnya dengan pilihan yang sama dan lokasi folder yang
sama. Kali ini sebuah USB Port Serial akan ditemukan.

Anda dapat memastikan apakah driver sudah ter-install dengan membuka


Windows Device Manager (di tab Hardware pada Control Panel System). Cari
USB Serial Port pada bagian Ports, itulah board Arduino.
d. Jalankan Aplikasi Arduino
Klik dua kali pada aplikasi Arduino (arduino.exe).
e. Buka contoh Blink

Buka contoh program LED Blink: File > Examples > 1.Basics > Blink.

Gambar 1.5. Membuka sample script dari Arduino


f. Pilih board anda
Anda perlu memilih opsi pada menu Tools > Board > Arduino Uno yang sesuai
dengan board Arduino yang dipakai.

Gambar 1.6. Memilih kesesuian board yang dipakai


g. Pilih serial port anda
Pilih port serial yang digunakan oleh board Arduino anda pada menu Tools >
Serial Port. Biasanya ini adalah COM3 atau yang lebih tinggi (COM1 dan
COM2 biasanya sudah direservasi untuk serial port hardware). Untuk mencari
tahu, anda dapat melepaskan koneksi ke board Arduino dan buka kembali menu
tadi; pilihan yang menghilang harusnya adalah board Arduino anda. Koneksikan
kembali board-nya dan pilih serial port yang sesuai.

Untuk pengguna Linux device arduino akan bisa dilihat dengan


mengguankan perintah
$dmesg | grep tty
sesaat ketika kabel DKU penghubung dari USB laptop/komputer ke
arduino di sambungkan. Biasa akan terdetect di /dev/ttyACM0.
h. Upload program
Nah, sekarang hanya tinggal klik tombol Upload pada software. Tunggu
beberapa saat anda dapat melihat led TX dan RX pada board berkelap-kelip.
Bila upload berhasil akan ada pesan Done uploading. yang muncul pada status
bar.

Gambar 1.7. Varian tombol eksekusi arduino


Beberapa saat setelah upload selesai, anda dapat melihat pin 13 (L) LED pada
board mulai berkelap-kelip (warna oranye). Jika benar, selamat! Anda sudah
berhasil menjalankan Arduino dan program-nya dengan sukses.

2. Bagian Hardware Arduino


Beberapa macam Arduino menggunakan tipe Atmega yang berbeda-beda tergantung dari
spesifikasinya, sebagai contoh Arduino Uno menggunakan ATmega328 sedangkan
Arduino Mega 2560 yang lebih canggih menggunakan ATmega2560.
Spesifikasi :
Bagian Arduino
Chip mikrokontroller
Tegangan operasi
Tegangan input (yang direkomendasikan,
via jack DC)
Tegangan input (limit, via jack DC)
Digital I/O pin
Analog Input pin
Arus DC per pin I/O
Arus DC pin 3.3V
Memori Flash
SRAM

Detail Info
ATmega328P
5V
7V - 12V
6V - 20V
14 buah, 6 diantaranya menyediakan
PWM
6 buah
20 mA
50 mA
32 KB, 0.5 KB telah digunakan untuk
bootloader
2 KB

EEPROM
Clock speed
Dimensi
Berat

1 KB
16 Mhz
68.6 mm x 53.4 mm
25 g

Proteksi
Development board Arduino Uno R3 telah dilengkapi dengan polyfuse yang dapat direset
untuk melindungi port USB komputer/laptop anda dari korsleting atau arus berlebih.
Meskipun kebanyakan komputer telah memiliki perlindungan port tersebut didalamnya
namun sikring pelindung pada Arduino Uno memberikan lapisan perlindungan tambahan
yang membuat anda bisa dengan tenang menghubungkan Arduino ke komputer anda. Jika
lebih dari 500mA ditarik pada port USB tersebut, sirkuit proteksi akan secara otomatis
memutuskan hubungan, dan akan menyambung kembali ketika batasan aman telah
kembali.
Power Supply
Board Arduino Uno dapat ditenagai dengan power yang diperoleh dari koneksi kabel
USB, atau via power supply eksternal. Pilihan power yang digunakan akan dilakukan
secara otomatis
External power supply dapat diperoleh dari adaptor AC-DC atau bahkan baterai, melalui
jack DC yang tersedia, atau menghubungkan langsung GND dan pin Vin yang ada di
board. Board dapat beroperasi dengan power dari external power supply yang memiliki
tegangan antara 6V hingga 20V. Namun ada beberapa hal yang harus anda perhatikan
dalam rentang tegangan ini. Jika diberi tegangan kurang dari 7V, pin 5V tidak akan
memberikan nilai murni 5V, yang mungkin akan membuat rangkaian bekerja dengan tidak
sempurna. Jika diberi tegangan lebih dari 12V, regulator tegangan bisa over heat yang
pada akhirnya bisa merusak pcb. Dengan demikian, tegangan yang di rekomendasikan
adalah 7V hingga 12V
Beberapa pin power pada Arduino Uno :
GND. Ini adalah ground atau negatif.
Vin. Ini adalah pin yang digunakan jika anda ingin memberikan power langsung
ke board Arduino dengan rentang tegangan yang disarankan 7V - 12V
Pin 5V. Ini adalah pin output dimana pada pin tersebut mengalir tegangan 5V
yang telah melalui regulator
3V3. Ini adalah pin output dimana pada pin tersebut disediakan tegangan 3.3V
yang telah melalui regulator
IOREF. Ini adalah pin yang menyediakan referensi tegangan mikrokontroller.
Biasanya digunakan pada board shield untuk memperoleh tegangan yang sesuai,
apakah 5V atau 3.3V
Memori
Chip ATmega328 pada Arduino Uno R3 memiliki memori 32 KB, dengan 0.5 KB dari
memori tersebut telah digunakan untuk bootloader. Jumlah SRAM 2 KB, dan EEPROM 1
KB, yang dapat di baca-tulis dengan menggunakan EEPROM library saat melakukan
pemrograman.

Input dan Output (I/O)


Seperti yang telah disebutkan sebelumnya, Arduino Uno memiliki 14 buah digital pin
yang dapat digunakan sebagai input atau output, sengan menggunakan fungsi pinMode(),
digitalWrite(), dan digital(Read). Pin-pin tersebut bekerja pada tegangan 5V, dan setiap
pin dapat menyediakan atau menerima arus 20mA, dan memiliki tahanan pull-up sekitar
20-50k ohm (secara default dalam posisi disconnect). Nilai maximum adalah 40mA, yang
sebisa mungkin dihindari untuk menghindari kerusakan chip mikrokontroller
Beberapa pin memiliki fungsi khusus :
Serial, terdiri dari 2 pin : pin 0 (RX) dan pin 1 (TX) yang digunakan untuk
menerima (RX) dan mengirim (TX) data serial.
External Interrups, yaitu pin 2 dan pin 3. Kedua pin tersebut dapat digunakan
untuk mengaktifkan interrups. Gunakan fungsi attachInterrupt()
PWM: Pin 3, 5, 6, 9, 10, dan 11 menyediakan output PWM 8-bit dengan
menggunakan fungsi analogWrite()
SPI : Pin 10 (SS), 11 (MOSI), 12 (MISO), dan 13 (SCK) mendukung komunikasi
SPI dengan menggunakan SPI Library
LED : Pin 13. Pada pin 13 terhubung built-in led yang dikendalikan oleh digital
pin no 13.
TWI : Pin A4 (SDA) dan pin A5 (SCL) yang mendukung komunikasi TWI
dengan menggunakan Wire Library
Arduino Uno memiliki 6 buah input analog, yang diberi tanda dengan A0, A1, A2, A3, A4,
A5. Masing-masing pin analog tersebut memiliki resolusi 10 bits (jadi bisa memiliki 1024
nilai). Secara default, pin-pin tersebut diukur dari ground ke 5V, namun bisa juga
menggunakan pin AREF dengan menggunakan fungsi analogReference(). Beberapa in
lainnya pada board ini adalah :
AREF. Sebagai referensi tegangan untuk input analog.
Reset. Hubungkan ke LOW untuk melakukan reset terhadap mikrokontroller.
Sama dengan penggunaan tombol reset yang tersedia.
Komunikasi
Arduino Uno R3 memiliki beberapa fasilitas untuk berkomunikasi dengan komputer,
berkomunikasi dengan Arduino lainnya, atau dengan mikrokontroller lain nya. Chip
Atmega328 menyediakan komunikasi serial UART TTL (5V) yang tersedia di pin 0 (RX)
dan pin 1 (TX). Chip ATmega16U2 yang terdapat pada board berfungsi menterjemahkan
bentuk komunikasi ini melalui USB dan akan tampil sebagai Virtual Port di komputer.
Firmware 16U2 menggunakan driver USB standar sehingga tidak membutuhkan driver
tambahan.
Pada Arduino Software (IDE) terdapat monitor serial yang memudahkan data textual
untuk dikirim menuju Arduino atau keluar dari Arduino. Led TX dan RX akan menyala
berkedip-kedip ketika ada data yang ditransmisikan melalui chip USB to Serial via kabel
USB ke komputer. Untuk menggunakan komunikasi serial dari digital pin, gunakan
SoftwareSerial library
Chip ATmega328 juga mendukung komunikasi I2C (TWI) dan SPI. Di dalam Arduino
Software (IDE) sudah termasuk Wire Library untuk memudahkan anda menggunakan bus

I2C. Untuk menggunakan komunikasi SPI, gunakan SPI library.


Reset Otomatis (software)
Biasanya, ketika anda melakukan pemrograman mikrokontroller, anda harus menekan
tombol reset sesaat sebelum melakukan upload program. Pada Arduino Uno, hal ini tidak
lagi merepotkan anda. Arduino Uno telah dilengkapi dengan auto reset yang dikendalikan
oleh software pada komputer yang terkoneksi. Salah satu jalur flow control (DTR) dari
ATmega16U pada Arduino Uno R3 terhubung dengan jalur reset pada ATmega328 melalui
sebuah kapasitor 100nF. Ketika jalur tersebut diberi nilai LOW, mikrokontroller akan di
reset. Dengan demikian proses upload akan jauh lebih mudah dan anda tidak harus
menekan tombol reset pada saat yang tepat seperti biasanya.
Bahasa Pemrograman Arduino
Bahasa pemrograman mikrokontroller Arduino, seperti bahasa pemrograman tingkat
menegah pada umumnya. Arduino pun sama memiliki alur algoritma yang mirip dan yang
beda adalah cara penulisan sintaknya.
Struktur dasar dari bahasa pemrograman arduino itu sederhana hanya terdiri dari dua
bagian.
void setup()
{
// Statement;
}
void loop()
{
// Statement;
}
Dimana setup( ) bagian untuk inisialisasi yang hanya dijalankan sekali di awal program
yang akan dijalankan berulang-ulang untuk selamanya.
Setup()
Fungsi setup() hanya di panggil satu kali ketika program pertama kali di jalankan. Ini
digunakan untuk pendefinisian mode pin atau memulai komunikasi serial. Fungsi setup()
harus di ikut sertakan dalam program walaupun tidak ada statement yang di jalankan.
void setup()
{
pinMode(13,OUTPUT);//
output
}

mengset

pin

13

sebagai

Loop ()
Setelah melakukan fungsi setup() maka secara langsung akan melakukan fungsi loop()
secara berurutan dan melakukan instruksi-instruksi yang ada dalam fungsi loop().
void loop()
{

digitalWrite(13, HIGH);
delay(1000);
digitalWrite(13, LOW);
delay(1000);
}
Function
Function (fungsi) adalah blok pemrograman yang mempunyai nama dan mempunyai
statement yang akan di eksekusi ketika function di panggil. Fungsi void setup() dan void
loop() telah di bahas di atas dan pembuatan fungsi yang lain akan di bahas selanjutnya.
Cara pendeklarasian function
type functionName(parameters)
{
// Statement;
}
Contoh:
int delayVal()
{
int v;
//Mendefinisikan variabel
v =analogRead(pot); //konversi 0-1023 ke 0-255
v/=4;
//Menjalankan
fungsi
aritmetik
return v;
//return nilai v
}

{ } curly braces
Curly brace mendefinisikan awal dan akhir dari sebuah blok fungsi. Apabila ketika
memprogram dan progremer lupa memberi curly brace tutup maka ketika di compile akan
terdapat laporan error.
; Semicolon
Semicolon harus di berikan pada setiap statement program yang kita buat ini merupakan
pembatas setiap statement program yang di buat.
/*...*/ blok comment
Semua statement yang di tulis dalam block comments tidak akan di eksekusi dan tidak
akan di compile sehingga tidak mempengaruhi besar program yang di buat untuk di
masukan dalam board arduino.
// Line Comments
Sama halnya dengan block comments, line coments pun sama hanya saja yang di jadikan
komen adalh perbaris.

Variable
Variable adalah sebuah penyimpan nilai yang dapat di gunakan dalam program.Variable
dapat di rubah sesuai dengan instruksi yang kita buat.Ketika mendeklarisikan variable
harus di ikut sertakan type variable serta nilai awal variable.
Type variableName
Contoh
Int inputVariable
//mendefinisikan
dengan nilai awal

= 0;
= 0;
sebuah
0

variable

bernama

inputVariable

inputVariable = analogRead(2);
// menyimpan nilai yang ada di analog pin 2 ke inputVariable
Variable scope
Sebuah variable dapat di deklarasikan pada awal program sebelum void setup(), secara
local di dalam sebuah function, dan terkadang di dalam sebuah block statement
pengulangan. Sebuah variable global hanya satu dan dapat di gunakan pada semua block
function dan statement di dalam program. Variable global di deklarasikan pada awal
program sebelum function setup(). Sebuah variable local di deklarasikan di setiap block
function atau di setiap block statement pengulangan dan hanya dapat di gunakan pada
block yang bersangkutan saja.
Contoh penggunaan:
int value; //valueadalah variable global dan dapat
di gunakan pada semua block function
void setup()
{
// no setup needed
}
void loop()
{
for (int i=0; i<20;)
// 'i' hanya dapat di gunakan dalam pengulangan
saja
{
i++;
}
float f; // 'f' sebagai variable local
}

Tipe Data
Byte
type byte dapat menyimpan 8-bit nilai angka bilangan asli tanapa koma. Byte memiliki
range 0 255.
Byte byteVariable = 180; // mendeklarasikan biteVariable sebagai type byte
Integer

Integer adalah tipe data yang utama untuk menyimpan nilai bilangan bulat tanpa
koma.Penyimpanan integer sebesar 16- bit dengan range 32.767 sampai -32.768.
Int
integerVariable
=
1600;//mendeklarasikan
integerVariable sebagai type integer
Long Integer
Perluasan ukuran untuk long integer, penyimpanan long integer sebesar 32-bit dengan
range 2.147.483.647 sampai - 2.147.483.648 Long longVariable = 500000; //
mendeklarasikan longVariable sebagai type long .
Float
Float adalah tipe data yang dapat menampung nilai decimal, float merupakan penyimpan
yang lebih besar dari integer dan dapat menyimpan sebesar 32-bit dengan range
3.4028235E+38 sampai -3.4028235E+38
Float
floatVariable
=
3.14;
//
floatVariable sebagai type float

mendeklarasikan

Array
Array adalah kumpulan nilai yang dapat di akses dengan index number, nilai yang
terdapat dalam array dapat di panggil
dengan cara menuliskan nama array dan index number. Array dengan index 0 merupakan
nilai pertama dari array.Array
perlu di deklarasikan dan kalau perlu di beri nilai sebelum di gunakan.
Int arraysName[] = {nilai0, nilai1, nilai2 . . . }
Contoh penggunaan array:
Int arraySaya[] = {2,4,6,8,10}
x = arraySaya[5]; // x sekarang sama dengan 10
Operator Aritmatika
Operator aritmatik terdiri dari penjumlahan, pengurangan, pengkalian, dan pembagian.
a
b
e
g

=
=
=
=

a
c
f
p

*
/

b
d
x
v

dalam menggunakan operan aritmatik harus hati-hati dalam menentukan tipe data yang
digunakan jangan sampai terjadi overflow range data.
Compound Assignments
Compound assignments merupakan kombinasi dari aritmatic dengan sebuah variable.Ini
biasanya dipakai pada pengulangan.
x++; // melakukan operasi x = x + 1
x--; // melakukan operasi x = x - 1
x+=y; // melakukan operasi x = x + y

x-=z; // melakukan operasi


x*=y; // melakukan operasi
x/=z; // melakukan operasi

x = x y
x = x * y
x = x / y

Comparison
Statement ini membadingkan dua variable dan apabila terpenuhi akan bernilai 1 atau true.
Statement ini banyak digunakan dalam operator bersyarat.
x
x
x
x
x
x

== y; // x sama dengan y
!= y; // x tidak sama dengan y
> y; // x lebih besar y
< y; // x lebih kecil y
>= y; // x lebih besar atau sama dengan y
<= y; // x lebih kecil atau sama dengan y

Logic Operator
operator logical digunakan untuk membandingkan 2 expresi dan mengembalikan nilai
balik benar atau salah tergantung dari operator yang di gunakan. Terdapat 3 operator
logical AND,OR, dan NOT, yang biasanya di gunakan pada if statement.
Contoh penggunaan:
a. Logical AND
If ( x> 0 && x < 5) // bernilai benar apabila kedua
operator pembanding terpenuhi
b. Logical OR
If ( x> 0 || y > 0)// bernilai benar apabila salah
satu dari operator pembanding
terpenuhi
c. Logical NOT
If ( !x > 0
operator salah

)//

benilai

benar

apabila

ekspresi

Konstanta
Arduino mempunyai beberapa variable yang sudah di kenal yang kita sebut konstanta.Ini
membuat memprogram lebih mudah untuk di baca.Konstanta di kelasifikasi berdasarkan
group.
True/False
Merupakan konstanta Boolean yang mendifinisikan logic level.False mendifinisikan 0 dan
True mendifinisikan 1.
If ( b == TRUE )
{
//doSomething
}

HIGH / LOW
Konstanta ini mendifinisikan aktifitas pin HIGH atau LOW dan di gunakan ketika
membaca dan menulis ke digital pin. HIGH di definisikan sebagai 1 sedangkan LOW
sebagai 0.
digitalWrite( 13, HIGH );
Input/Output
Konstanta ini digunakan dengan fungsi pinMode() untuk mendifinisikam mode pin digital,
sebagai input atau output
pinMode( 13, OUTPUT );
Flow Control
a. If
If Operator if menguji sebuah kondisi seperti nilai analog sudah berada di bawah nilai
yang kita kehendaki atau belum, apabila terpenuhi maka akan mengeksekusi baris
program yang ada dalam brackets kalau tidak terpenuhi maka akan mengabaikan baris
program yang ada dalam brackets.
If ( someVariable ?? value )
{
//DoSomething;
}
b. If...Else
Operator if...else mengtest sebuah kondisi apabila tidak sesuai dengan kondisi yang
pertama maka akan mengeksekusi baris
program yang ada di else.
If ( inputPin == HIGH )
{
//Laksanakan rencana A;
}
Else
{
//Laksanakan rencana B;
}
For
Operator for digunakan dalam blok pengulangan tertutup.
For ( initialization; condition; expression )
{
//doSomethig;
}
While
Operator while akan terus mengulang baris perintah yang ada dalam bracket sampai
ekspresi sebagai kondisi pengulangan benilai salah.
While ( someVariable ?? value )

{
//doSomething;
}
Do...While
Sama halnya dengan while() hanya saja pada operator Do...while tidak melakukan
pengecekan pada awal tapi di akhir, sehingga otomatis akan melakukan satu kali baris
perintah walaupun pada awalnya sudah terpenuhi.
Do
{
//doSomething;
}
While ( someVariable ?? value );
Digital I/O
Input / Output Digital pada breadboard arduino ada 14, pengalamatnya 0 - 13, ada saat
tertentu I/O 0 dan 1 tidak bisa di gunakan karena di pakai untuk komunikasi serial,
sehingga harus hati-hati dalam pengalokasian I/O.
PinMode(pin,Mode)
Digunakan dalam void setup() untuk mengkonfigurasi pin apakah sebagai Input atau
Output. Arduino digital pins secara default di konfigurasi sebagai input sehingga untuk
merubahnya harus menggunakan operator pinMode(pin, mode).
pinMode (pin, OUTPUT); // mengset pin sebagai output
digitalWrite(pin, HIGH); // pin sebagai source voltage
digitalRead(pin)
membaca nilai dari pin yang kita kehendaki dengan hasil HIGH atau LOW .
Value = digitalRead(pin);// mengset value sama dengan pin
digitalWrite(pin, value)
digunakan untuk mengset pin digital. Pin digital arduino mempunyai 14 ( 0 13 ).
digitalWrite ( pin, HIGH ); // set pin to HIGH
Analog I/O
Input / Ouput analog pada breadboard arduino ada 6 pengalamatnya 0 5
analogRead(pin) Membaca nilai pin analog yang memiliki resolusi 10-bit. Fungsi ini
hanya dapat bekerja pada analog pin (0-5). Hasil dari pembacaan berupa nilai integer
dengan range 0 sampai 1023.
Value = analogRead(pin);
dengan nilai analog pin
analogWrite(pin,value)
mengirimkan nilai analog pada pin analog.

//

mengset

value

sama

analogWrite(pin, value); // menulis ke pin analog


Time
a. delay(ms)
Menghentikan program untuk sesaat sesuai dengan yang di kehendaki, satuanya dalam
millisecond.
Delay(1000);// menunggu selama satu detik
b. millis()
Mengembalikan nilai dalam millisecond dihitung sejak arduino board menyala.
Penapungnya harus long integer.
Value = millis();// set value equal to millis()
Math
a. Min(x,y)
Membadingkan 2 variable dan akan mengembalikan nilai yang paling kecil.
value = min(value, 100);// set value sebagai nilai
yang paling kecil dari kedua nilai
b. max(x,y)
Max merupakan kebalikan dari min.
value = max(value, 100);//set value sebagai nilai
yang paling besar dari kedua nilai
Serial.begin(rate)
Statement ini di gunakan untuk mengaktifkan komunikasi serial dan mengset baudrate.
void setup()
{
Serial.begin(9600);//open
serial
port
and
set
baudrate 9600 bps
}
Serial.prinln(data)
Mengirimkan data ke serial port
Serial.println(100); // mengirimkan 100

BAB II : MANIPULASI LED


Tujuan :
1. Mahasiswa memahami rangkaian mikrokontroller untuk menghidupkan dan
mematikan LED.
2. Mahasiswa dapat memahami program Arduino untuk menghidupkan dan
mematikan LED.
3. Mahasiswa memahami struktur program Arduino, void setup dan void loop.
4. Mahasiswa memahami beberapa instruksi Arduino dasar pinMode dan
digitalWrite.
5. Mahasiswa memahami pembuatan instruksi waktu tunda, delay.
Perlengkapan :
1. Sebuah Komputer /Laptop
2. Satu set trainer mikrokontroler Arduino
3. An Arduino board connected to the computer via USB
4. breadboard dan kabel jumper
5. LED ( 3 mm)
6. Resistor antara 2201,000 ohm
Teori :
LED (Light Emitting Dioda) adalah dioda yang dapat memancarkan cahaya pada saat
mendapat arus bias maju (forward bias). LED (Light Emitting Dioda) dapat memancarkan
cahaya karena menggunakan dopping galium, arsenic dan phosporus. Jenis doping yang
berbeda menhasilkan cahaya dengan warna yang berbeda. LED (Light Emitting Dioda)
merupakann salah satu jenis dioda, sehingga hanya akan mengalirkan arus listrik satu arah
saja. LED akan memancarkan cahaya apabil diberikan tegangan listrik dengan konfigurasi
forward bias. Berbeda dengan dioda pada umumnya, kemampuan mengalirkan arus pada
LED (Light Emitting Dioda) cukup rendah yaitu maksimal 20 mA. Apabila LED (Light
Emitting Dioda) dialiri arus lebih besar dari 20 mA maka LED akan rusak, sehingga pada
rangkaian LED dipasang sebuah resistor sebgai pembatas arus. Simbol dan bentuk fisik
dari LED (Light Emitting Dioda) dapat dilihat pada gambar berikut. Simbol Dan Bentuk
Fisik LED.

Gambar 2.1. LED


Dari gambar diatas dapat kita ketahui bahwa LED memiliki kaki 2 buah seperti dengan
dioda yaitu kaki anoda dan kaki katoda. Pada gambar diatas kaki anoda memiliki ciri fisik

lebih panjang dari kaki katoda pada saat masih baru, kemudian kaki katoda pada LED
(Light Emitting Dioda) ditandai dengan bagian body LED yang di papas rata. Kaki anoda
dan kaki katoda pada LED (Light Emitting Dioda) disimbolkan seperti pada gambar
diatas. Pemasangan LED (Light Emitting Dioda) agar dapat menyala adalah dengan
memberikan tegangan bias maju yaitu dengan memberikan tegangan positif ke kaki anoda
dan tegangan negatif ke kaki katoda. Konsep pembatas arus pada dioda adalah dengan
memasangkan resistor secara seri pada salah satu kaki LED (Light Emitting Dioda).
Rangkaian dasar untuk menyalakan LED (Light Emitting Dioda) membutuhkan sumber
tegangan LED dan resistor sebgai pembatas arus seperti pada rangkaian berikut.

Gambar 2.2. Rangkaian Dasar LED


Ikuti langkah berikut untuk menghubungkan LED external dengan Arduino Uno :
1. Pasang resistor pada breadboard. Koneksikan dengan kabel jumper kaki belakang
resistor dengan digital pin pada Arduino.
2. Pasang LED pada breadboard. Koneksikan pin anode (+) LED pada kaki yang
tersedia pada resistor.
3. Koneksikan LED cathode (-) ke arduino GND dengan menggunakan kabel
jumper.

Gambar 2.3. Mockup rangkaian LED


Kode Program :
Berikut kode yang akan digunakan untuk membuat blink LED :
// Declare the LED pin
int LED = 2;
void setup() {
// Declare the pin for the LED as Output
pinMode(LED, OUTPUT);
}
void loop(){
// Here we will turn the LED ON and wait 200
milliseconds
digitalWrite(LED, HIGH);
delay(200);
// Here we will turn the LED OFF and wait 200
milliseconds
digitalWrite(LED, LOW);
delay(200);
}
Jika LED terkoneksi pada pin yang lain tinggal mengubah value dari variabel LED.
Cara kerja :
Jika pin kedua arduino diberi nilai HIGH, arduino akan memberikan nilai tegangan 5 V,
yang akan mengalir pada resistor ke LED sampai dengan GND. Jika tegangan yang
disyaratkan LED untuk menyala terpenuhi maka LED akan menyala. Resistor berguna
untuk mengendalikan jumlah arus yang masuk pada LED untuk menjaga agar LED aman
dan bahkan juga pin arduino yang terkoneksi dari terbakar.

Penejlasan Kode :
Kode program tersebut akan membuat LED hidup dan mati secara bergantian, dan akan
diberi waktu jeda dengan memanggil fungsi delay() setelah pengeksekusian.
Mendeklarasikan variabel LED dengan nilai 2:
int LED = 2;
Pada fungsi setup() kita set output arduino sesuai dengan nilai yang ada pada variabel
LED.
void setup() {
pinMode(LED, OUTPUT);
}
pada fungsi loop(), secara berkelanjutan menyalakan LED, tunggu 200 mili detik dan
matikan LED, tunggu 200 mili detik.
void loop(){
// LED ON and wait 200 miliseconds
digitalWrite(LED, HIGH);
delay(200);
// LED OFF and wait 200 miliseconds
digitalWrite(LED, LOW);
delay(200);
}
NEXT JOB : MULTI LED
Untuk membuat multi LED untuk dikendalikan secara bergantian.
Langkah :
1.
2.
3.
4.
5.
6.

Nyalakan computer dengan program Arduino !


Sambungkan Trainer mikrokontroler dengan computer menggunakan kabel USB !
Sambungkan kabel-kabel jumper sesuai dengan praktikum yang dilaksanakan !
Ketiklah program yang diatas pada software Arduino !
Lakukan verifikasi terhadap program, apakah terjadi error atau tidak !
Jika tidak terjadi error lanjutkan dengan mengupload program ke dalam
mikrokontroler !
7. Amati hasilnya apakah sudah sesuai dengan perintah instruktur atau belum, kalau
belum
8. lakukan editing program dan kembali ke langkah 5 !

Gambar 2.4. Multi LED

Berikut ini kode program untuk LED Bergeser


//Running LED
int ledPin1 = 2;
int ledPin2 = 3;
int ledPin3 = 4;
void setup() {
//Setting PIN Output
pinMode(ledPin1, OUTPUT);
pinMode(ledPin2, OUTPUT);
pinMode(ledPin3, OUTPUT);
}
void loop() {
digitalWrite(ledPin1, HIGH);
digitalWrite(ledPin2,pin LOW);
digitalWrite(ledPin3, LOW);
delay(1000);
digitalWrite(ledPin1, LOW);
digitalWrite(ledPin2, HIGH);
digitalWrite(ledPin3, LOW);
delay(1000);
digitalWrite(ledPin1, LOW);
digitalWrite(ledPin2, LOW);
digitalWrite(ledPin3, HIGH);
delay(1000);
}

Fading the external LED


Penggunaan LED dengan menggunakan 2 buah kondisi: On dan OFF. Tapi jika ingin
memanipulasi kecerahan kita harus menggunakan teknik lain, Pulse Width Modulation
(PWM) yang sudah secara default ada pada setiap arduino. Dengan teknik ini kita bisa
membuat LED menyala dengan skala 256.
Pada arduino pin yang mempunyai fungsi PWM berjumlah 6 buah pin yang berada pada
pin 3, 5, 6, 9, 10 dan 11.

Gambar 2.5. Menyalakan LED dengan PWM

Gambar 2.6. Mockup LED dengan PWM

Kode Program :
// Declare the LED pin with PWM
int LED = 3;
void setup() {
// Declare the pin for the LED as Output
pinMode(LED, OUTPUT);
}
void loop(){
// Here we will fade the LED from 0 to maximum, 255
for (int i = 0; i < 256; i++){
analogWrite(LED, i);
delay(5);
}
// Fade the LED from maximum to 0
for (int i = 255; i >= 0; i--){
analogWrite(LED, i);
delay(5);
}
}
Konsep PWM
Dengan membuat switching antara LOW dan HIGH dengan kecepatan tinggi, pergantian
tegangan akan nampak jelas pada diagram dibawah.

Gambar 2.7. Diagram cara kerja PWM


Pada kode program tersebut ada pemanggilan function analogWrite() yang berfungsi
sebagai pemberi sinyal analog pada pin PWM arduino. Nilai yang bisa diberikan antara 0255, yaitu 0 dari 0 volt dan 255 dari 5 volt atau 3.3 volt tergantung tegangan yang
digunakan.

...
// Here we will fade the LED from 0 to maximum, 255
for (int i = 0; i < 256; i++){
analogWrite(LED, i);
delay(5);
}
...
Kode diatas akan membuat perubahan tegangan yang dikirimkan pada pin PWM, dengan
merubah variabel dari nilai terendah(0) ke nilai maksimum(255). Sehingga efek yang
ditampilkan oleh LED akan dihasilkan cahaya yang semakin terang beriringan dengan
tegangan yang semakin tinggi.
...
// Here we will fade the LED from 0 to maximum, 255
for (int i = 255; i >= 0; i--){
analogWrite(LED, i);
delay(5);
}

Sebaliknya dengan menurukan variabel, akan mengakibatkan penurunan tegangan yang


dikirimkan ke pin PWM yang dipakai yang membuat LED akan semakin meredup.
Pada arduino uno jika diperhatikan pin PWM akan mempunyai tanda khusus seperti
berikut ~. Fungsi analogWrite() tidak akan bekerja jika digunakan untuk pin selain
PWM. Dengan menggunakan teknik PWM ini akan bisa dihasilkan 16 juta kombinasi
warna untuk 1 LED.

PERCOBAAN RGB LED


Perlengkapan :
1. Arduino and USB
2. Breadboard dan jumper wires
3. RGB LED
4. Resistors between 2201,000 ohm

Gambar 2.8. Rangkaian Skema LED RGB

Gambar 2.8. MockUp LED RGB


Kode program :
// Declare the PWM LED pins
int redLED = 9;
int greenLED = 10;

int blueLED = 11;


void setup() {
// Declare the pins for the LED as Output
pinMode(redLED, OUTPUT);
pinMode(greenLED, OUTPUT);
pinMode(blueLED, OUTPUT);
}
// A simple function to set the level for each color from 0
to 255
void setColor(int redValue, int greenValue, int blueValue){
analogWrite(redLED, 255 - redValue);
analogWrite(greenLED, 255 - greenValue);
analogWrite(blueLED, 255 - blueValue);
}
void loop(){
// Change a few colors
setColor(255, 0, 0); // Red Color
delay(500);
setColor(0, 255, 0); // Green Color
delay(500);
setColor(0, 0, 255); // Blue Color
delay(500);
setColor(255, 255, 0); // Yellow
delay(500);
setColor(0, 255, 255); // Cyan
delay(500);
setColor(255, 0, 255); // Magenta
delay(500);
setColor(255, 255, 255); // White
delay(500);
}
Penjelasan kode program :
// Declare the PWM LED pins
int redLED = 9;
int greenLED = 10;
int blueLED = 11;
Mendefinisikan program dalam menggunakan pin arduino, pin yang digunakan wajib
menggunakan pin yang PWM karena bersifat analog bukan digital.
void setup() {
// Declare the pins for the LED as Output
pinMode(redLED, OUTPUT);
pinMode(greenLED, OUTPUT);
pinMode(blueLED, OUTPUT);
}

Mendeklarasikan penggunaan output dengan mneggunakan pin yang sudah didefinisikan


pada variabel global sesuai dengan warna LED yang digunakan yang bertujuan untuk
output nantinya.
void setColor(int redValue, int greenValue, int blueValue){
analogWrite(redLED, 255 - redValue);
analogWrite(greenLED, 255 - greenValue);
analogWrite(blueLED, 255 - blueValue);
}
Mendefinisikan
pengkonfigurasian
warna
dengan
menggunakan
fungsi
analogWrite() pada pin yang sesuai warna LED. Karena jumlah maksimal dari nilai
yang diizinkan adalah 255, maka nilai masukkan dari fungsi untuk masing-masing warna
akan dikurangkan dengan nilai maksimal tersebut.
void setColor(int redValue, int greenValue, int blueValue){
...
}
jika terdefinisi
setColor(255, 0, 0); // Red Color
ini akan membuat perubahan warna, atau mengkonfigurasikan warna menjadi
warna_merah = 255 255
warna_merah = 0
sehingga
analogWrite(redLED, warna_merah);
atau bisa diartikan
analogWrite(9,0);
dengan memeberikan nilai 0, maka akan memberikan nilai maksimal pada warna RED.

BAB III : SEVEN SEGMEN


TUJUAN :
1. Mahasiswa memahami rangkaian interface mikrokontroller dengan 7 segmen
2. Mahasiswa dapat memahami program Arduino untuk menampilkan data ke 7
segment
3. Mahasiswa memahami beberapa instruksi Arduino dasar, array data dan bitRead.
PERALATAN :
1. Arduino board connected to the computer via USB
2. Breadboard dan kabel jumper
3. 7-segment
4. Resistors 2201,000 ohm
TEORI :
Seven segment merupakan segment-segment yang digunakan untuk menampilkan angkaangka atau huruf. Seven segment ini tersusun atas 7 buah LED yang membentuk
membentuk angka atau huruf dimana penyusunnya menggunakan label dari a sampai g
dan satu lagi untuk dot point (DP). Salah satu terminal LED dihubungkan menjadi satu
sebagai kaki common (biasanya pin-nya berada ditengah).
Pin 3 dan 8 = untuk mengaktifkan seven segment diberikan logika high (common anode)
dan logika low (common cathode). Jenis-jenis Seven Segment:

Gambar 3.1 Skema Common Anode dan Common Catode


1. Common Anoda
Semua anoda dari LED dalam seven segment disatukan secara parallel dan semua
itu dihubungkan ke VCC, dan kemudian LED dihubungkan melalui tahanan
pembatas arus keluar dari penggerak LED. Karena dihubungkan ke VCC, maka
COMMON ANODA ini berada pada kondisi AKTIF LOW (led akan

menyala/aktif bila diberi logika 0).


2. Common Katoda
Merupakan kebalikan dari Common Anoda. Disini semua katoda disatukan secara
parallel dan dihubungkan ke GROUND. Karena seluruh katoda dihubungkan ke
GROUND, maka COMMON KATODA ini berada pada kondisi AKTIF HIGH
(led akan menyala/aktif bila diberi logika 1).
Prinsip Kerja :
Prinsip kerja seven segment ialah input biner pada switch dikonversikan masuk ke dalam
decoder, baru kemudian decoder mengkonversi bilangan biner tersebut menjadi decimal,
yang nantinya akan ditampilkan pada seven segment.
Seven segment dapat menampilkan angka-angka desimal dan beberapa karakter tertentu
melalui kombinasi aktif atau tidaknya LED dalam seven segment. Untuk memudahkan
penggunaan seven segment, umumnya digunakan sebuah decoder( mengubah/
mengkoversi input bilangan biner menjadi decimal) atau seven segment driver yang akan
mengatur aktif tidaknya led-led dalam seven segment sesuai dengan nilai biner yang
diberikan.

Gambar 3.2 Skema kaki pin 7-segment


Dekoder BCD ke seven segment digunakan untuk menerima masukan BCD 4-bit dan
memberikan keluaran yang melewatkan arus melalui segmen untuk menampilkan angka
desimal. Jenis dekoder BCD ke seven segment ada dua macam yaitu dekoder yang
berfungsi untuk menyalakan seven segment mode common anoda dan dekoder yang
berfungsi untuk menyalakan seven segment mode common katoda.
Langkah Kerja :
1. Pasang 7-segment dalam breadboard
2. Jika menggunakan konfigurasi anode (+), hubungkan anoda (+) ke VCC di
arduino ( 5 v atau 3.3 v). Jika menggunakan konfigurasi katoda (-), hubungkan
katode dengan ground dari Arduino.
3. Hubungkan setiap kaki dari 7-segmen pada pin digital yang digunakan. Setiap pin
output digunakan resistor untuk mengamankan LED dari seven segmen.
Skema Rangkaian :

Gambar 3.3 Skema rangkaian 7-Segment


Dengan skema rangkaian diatas akan bisa dibuat rangkaian dengan menggunakan arduino
dan resistor seperti berikut :

Gambar 3.4 Mockup rangkaian 7-Segment


Kode Program :
Akan menampilkan 7-segment dengan tampilan dari 3 sampai 0 dan restart dari awal.
// Declare the pins for the Segment display
int pinUP = 2; //a Upper segment
int pinUPR = 3; //b Up-right segment
int pinDWR = 4; //c Down-right segment

int
int
int
int

pinDW = 5; //d Down segment


pinDWL = 6; //e Down-left segment
pinUPL = 7; //f Up-left segment
pinCT = 8; //g Center segment

void setup() {
// Declare the pins as Outputs
pinMode(pinUP, OUTPUT);
pinMode(pinUPR, OUTPUT);
pinMode(pinDWR, OUTPUT);
pinMode(pinDW, OUTPUT);
pinMode(pinDWL, OUTPUT);
pinMode(pinUPL, OUTPUT);
pinMode(pinCT, OUTPUT);
}
void writeNumber(int value){
// First we erase the previous value
digitalWrite(pinUP, HIGH);
digitalWrite(pinUPR, HIGH);
digitalWrite(pinDWR, HIGH);
digitalWrite(pinDW, HIGH);
digitalWrite(pinDWL, HIGH);
digitalWrite(pinUPL, HIGH);
digitalWrite(pinCT, HIGH);
// If we want to write 0
if (value == 0){
digitalWrite(pinUP, HIGH);
digitalWrite(pinUPR, HIGH);
digitalWrite(pinDWR, HIGH);
digitalWrite(pinDW, HIGH);
digitalWrite(pinDWL, HIGH);
digitalWrite(pinUPL, HIGH);
digitalWrite(pinCT, LOW);
}
// If we want to write 1
if (value == 1){
digitalWrite(pinUPR, LOW);
digitalWrite(pinUP, LOW);
digitalWrite(pinCT, LOW);
digitalWrite(pinDWR, LOW);
digitalWrite(pinDW, LOW);
}
// If we want to write 2
if (value == 2){
digitalWrite(pinUPL, LOW);
//digitalWrite(pinCT, LOW);
//digitalWrite(pin, LOW);

digitalWrite(pinDWR, LOW);
//digitalWrite(pinDW, LOW);
}
// If we want to write 3
if (value == 3){
//digitalWrite(pinUP, LOW);
digitalWrite(pinUPL, LOW);
//digitalWrite(pinCT, LOW);
digitalWrite(pinDWL, LOW);
//digitalWrite(pinDW, LOW);
}
}
void loop(){
// A resetting count-down
writeNumber(3);
delay(1000);
/* writeNumber(2);
delay(1000);
writeNumber(1);
delay(1000);
writeNumber(0);
delay(1000);*/
}
Berikut merupakan contoh dari konfigurasi common-anode, dengan asumsi untuk
konfigurasi katode akan berlaku kebalikan, jika dalam anode memiliki nilai LOW dalam
konfigurasi common-anode dirubah menjadi HIGH dan nilai HIGH jadi LOW dalam kode
programnya.
Penjelasan kode :
1. Mendeklarasikan pin untuk setiap kaki pada 7-segment
int
int
int
int
int
int
int

pinUP = 2; // Upper segment (a)


pinUPR = 3; // Up-right segment (b)
pinDWR = 4; // Down-right segment (c)
pinDW = 5; // Down segment (d)
pinDWL = 6; // Down-left segment (e)
pinUPL = 7; // Up-left segment (f)
pinCT = 8; // Center segment (g)

2. Mengkonfigurasikan pemakaian pin pada arduino sesui dengan nilai variabel yang
diberikan.
void setup() {
// Declare the pins as Outputs
pinMode(pinUP, OUTPUT);

pinMode(pinUPR, OUTPUT);
pinMode(pinDWR, OUTPUT);
pinMode(pinDW, OUTPUT);
pinMode(pinDWL, OUTPUT);
pinMode(pinUPL, OUTPUT);
pinMode(pinCT, OUTPUT);
}

3. Dengan memanggil fungsi writeNumber() ini kita bisa mematikan semua


LED yang semula dihidupkan pada tiap kaki-kaki 7-segmen dan memberikan nilai
pada kaki yang diinginkan sesuai dengan nilai inputan.
Sederhananya fungsi ini digunakan untuk mereset dan mengkonfigurasikan sesuai
dengan nilai angka yang diinginkan.
void writeNumber(int value){
// First we erase the previous value
digitalWrite(pinUP, HIGH);
digitalWrite(pinUPR, HIGH);
digitalWrite(pinDWR, HIGH);
digitalWrite(pinDW, HIGH);
digitalWrite(pinDWL, HIGH);
digitalWrite(pinUPL, HIGH);
digitalWrite(pinCT, HIGH);

if (value == 1){
digitalWrite(pinUPR, LOW);
digitalWrite(pinDWR, LOW);
}
...

4. Dalam fungsi loop() akan mengeksekusi fungsi write dengan parameter yang akan
digunakan untuk konfigurasi LED pada 7-segment.
void loop(){
writeNumber(2);
delay(1000);
writeNumber(1);
delay(1000);
writeNumber(0);
delay(1000);
}
Tampilan akan bertahan dengan memanggil fungsi delay() dengan parameter
1000 yang berarti 1000ms atau 1 detik.

Gambar 3.5 Konfigurasi karakter yang memungkinkan

MULTI-SEVEN SEGMENT
TUJUAN :
1. Mahasiswa memahami rangkaian interface mikrokontroller dengan 7 segmen
2. Mahasiswa dapat memahami program Arduino untuk menampilkan data ke 7
segment
3. Mahasiswa memahami beberapa instruksi Arduino dasar, array data dan bitRead.
PERALATAN :
1. Arduino board connected to the computer via USB
2. Breadboard dan kabel jumper
3. 4 x 7-segment
4. Resistors 2201,000 ohm
TEORI :
Percobaan kali ini akan menggunakan 7-segment seri 4 buah atau sering dituliskan 4 x 7segment. Penggunaan multi display ini sama aturannya dengan menggunakan single
display, yaitu seven segment akan menganut common anode da common cathode
tergantung pemberian daya pada konfigurasi pinnya. Untuk konfigurasi Pin untuk tiap
segment harus digunakan mode digit untuk mengatur pengaktifan tiap segment nya.
Dengan mengendalikan digit yang ditampilkan kita bisa kendalikan display meskipun nilai
sudah diberikan. Misal kita sudah definisikan nilai untuk segment ke-2 dengan nilai
desimal 5, tapi ketika kita tidak set segment ke-2 tersebut aktif maka tidak akan
ditampilkan nilai desimal 5 tersebut. Pada penggunaan multi segment hanya akan ada 1
digit yang aktif pada satu waktu, sehingga pengkonfigurasian untuk 4 digit membutuhkan
4 step pemindahan digit dan pemberian nilai.

Gambar 3.6 Rangkaian 4 x 7-segment


Pada komponen yang dijual dipasaran banyak varian yang harus kita lihat detail dari
komposisi komponen tersebut melalui datasheet yang biasanya sudah disediakan oleh
produsen pembuat komponen. Gambar 3.7 berikut merupakan komponen yang kita punyai
dalam lab, dan penggunaanya akan berbeda jika menggunakan komponen yang berbeda,
begitupula kode programnya.

Gambar 3.7 Komponen 4 x 7-segment dengan 8 pin


Untuk percobaan konfigurasikan pin arduino dan display seperti berikut dibawah :

Gambar 3.8 Konfigurasi posisi dan nilai pin


Konfigurasikan sesuai dengan tabel
A

10

11
(A)

7
(B)

4
(C)

2
(D)

1
(E)

10
(F)

5
(G)

3
(P)

12
(D1)

9
(D2)

A : Pin ArduinoUNO
B : Pin Display
note : Untuk tiap Digit diberikan resistor 1K Ohm
KODE PROGRAM

11

12

8
6
(D3) (D4)

Kode program berikut untuk common anode, yang akan menjalankan penambahan
desimal secara increment dengan menggunakan fungsi millis() yang build in di arduino
IDE.
int
int
int
int

digit1
digit2
digit3
digit4

=
=
=
=

int
int
int
int
int
int
int

segA
segB
segC
segD
segE
segF
segG

1;
2;
3;
4;
5;
6;
7;

=
=
=
=
=
=
=

9; //Display pin 12
10; //Display pin 9
11; //Display pin 8
12; //Display pin 6
//Display
//Display
//Display
//Display
//Display
//Display
//Display

void setup() {
pinMode(segA,
pinMode(segB,
pinMode(segC,
pinMode(segD,
pinMode(segE,
pinMode(segF,
pinMode(segG,

11
7
4
2
1
10
5

OUTPUT);
OUTPUT);
OUTPUT);
OUTPUT);
OUTPUT);
OUTPUT);
OUTPUT);

pinMode(digit1,
pinMode(digit2,
pinMode(digit3,
pinMode(digit4,
}

pin
pin
pin
pin
pin
pin
pin

OUTPUT);
OUTPUT);
OUTPUT);
OUTPUT);

pinMode(13, OUTPUT);

void loop() {
displayNumber(millis()/1000);
}
void displayNumber(int toDisplay) {
#define DISPLAY_BRIGHTNESS 1000
#define DIGIT_ON HIGH
#define DIGIT_OFF LOW
long beginTime = millis();
for(int digit = 4 ; digit > 0 ; digit--) {
//Turn on a digit for a short amount of time

switch(digit) {
case 1:
digitalWrite(digit1,
break;
case 2:
digitalWrite(digit2,
break;
case 3:
digitalWrite(digit3,
break;
case 4:
digitalWrite(digit4,
break;
}

DIGIT_ON);
DIGIT_ON);
DIGIT_ON);
DIGIT_ON);

//Turn on the right segments for this digit


lightNumber(toDisplay % 10);
toDisplay = toDisplay / 10;
delayMicroseconds(DISPLAY_BRIGHTNESS);
//Display digit for fraction of a second (1us to
5000us, 500 is pretty good)
//Turn off all segments
lightNumber(10);

//Turn off all digits


digitalWrite(digit1, DIGIT_OFF);
digitalWrite(digit2, DIGIT_OFF);
digitalWrite(digit3, DIGIT_OFF);
digitalWrite(digit4, DIGIT_OFF);

while( (millis() - beginTime) < 10) ;


//Wait for 20ms to pass before we paint the display
again
}
//Given a number, turns on those segments
//If number == 10, then turn off number
void lightNumber(int numberToDisplay) {
#define SEGMENT_ON LOW
#define SEGMENT_OFF HIGH
switch (numberToDisplay){
case 0:
digitalWrite(segA, SEGMENT_ON);
digitalWrite(segB, SEGMENT_ON);

digitalWrite(segC,
digitalWrite(segD,
digitalWrite(segE,
digitalWrite(segF,
digitalWrite(segG,
break;

SEGMENT_ON);
SEGMENT_ON);
SEGMENT_ON);
SEGMENT_ON);
SEGMENT_OFF);

case 1:
digitalWrite(segA,
digitalWrite(segB,
digitalWrite(segC,
digitalWrite(segD,
digitalWrite(segE,
digitalWrite(segF,
digitalWrite(segG,
break;

SEGMENT_OFF);
SEGMENT_ON);
SEGMENT_ON);
SEGMENT_OFF);
SEGMENT_OFF);
SEGMENT_OFF);
SEGMENT_OFF);

case 2:
digitalWrite(segA,
digitalWrite(segB,
digitalWrite(segC,
digitalWrite(segD,
digitalWrite(segE,
digitalWrite(segF,
digitalWrite(segG,
break;

SEGMENT_ON);
SEGMENT_ON);
SEGMENT_OFF);
SEGMENT_ON);
SEGMENT_ON);
SEGMENT_OFF);
SEGMENT_ON);

case 3:
digitalWrite(segA,
digitalWrite(segB,
digitalWrite(segC,
digitalWrite(segD,
digitalWrite(segE,
digitalWrite(segF,
digitalWrite(segG,
break;

SEGMENT_ON);
SEGMENT_ON);
SEGMENT_ON);
SEGMENT_ON);
SEGMENT_OFF);
SEGMENT_OFF);
SEGMENT_ON);

case 4:
digitalWrite(segA,
digitalWrite(segB,
digitalWrite(segC,
digitalWrite(segD,
digitalWrite(segE,
digitalWrite(segF,
digitalWrite(segG,
break;

SEGMENT_OFF);
SEGMENT_ON);
SEGMENT_ON);
SEGMENT_OFF);
SEGMENT_OFF);
SEGMENT_ON);
SEGMENT_ON);

case 5:
digitalWrite(segA, SEGMENT_ON);
digitalWrite(segB, SEGMENT_OFF);

digitalWrite(segC,
digitalWrite(segD,
digitalWrite(segE,
digitalWrite(segF,
digitalWrite(segG,
break;

SEGMENT_ON);
SEGMENT_ON);
SEGMENT_OFF);
SEGMENT_ON);
SEGMENT_ON);

case 6:
digitalWrite(segA,
digitalWrite(segB,
digitalWrite(segC,
digitalWrite(segD,
digitalWrite(segE,
digitalWrite(segF,
digitalWrite(segG,
break;

SEGMENT_ON);
SEGMENT_OFF);
SEGMENT_ON);
SEGMENT_ON);
SEGMENT_ON);
SEGMENT_ON);
SEGMENT_ON);

case 7:
digitalWrite(segA,
digitalWrite(segB,
digitalWrite(segC,
digitalWrite(segD,
digitalWrite(segE,
digitalWrite(segF,
digitalWrite(segG,
break;

SEGMENT_ON);
SEGMENT_ON);
SEGMENT_ON);
SEGMENT_OFF);
SEGMENT_OFF);
SEGMENT_OFF);
SEGMENT_OFF);

case 8:
digitalWrite(segA,
digitalWrite(segB,
digitalWrite(segC,
digitalWrite(segD,
digitalWrite(segE,
digitalWrite(segF,
digitalWrite(segG,
break;

SEGMENT_ON);
SEGMENT_ON);
SEGMENT_ON);
SEGMENT_ON);
SEGMENT_ON);
SEGMENT_ON);
SEGMENT_ON);

case 9:
digitalWrite(segA,
digitalWrite(segB,
digitalWrite(segC,
digitalWrite(segD,
digitalWrite(segE,
digitalWrite(segF,
digitalWrite(segG,
break;

SEGMENT_ON);
SEGMENT_ON);
SEGMENT_ON);
SEGMENT_ON);
SEGMENT_OFF);
SEGMENT_ON);
SEGMENT_ON);

case 10:
digitalWrite(segA, SEGMENT_OFF);
digitalWrite(segB, SEGMENT_OFF);

digitalWrite(segC,
digitalWrite(segD,
digitalWrite(segE,
digitalWrite(segF,
digitalWrite(segG,
break;
}

SEGMENT_OFF);
SEGMENT_OFF);
SEGMENT_OFF);
SEGMENT_OFF);
SEGMENT_OFF);

Penjelasan Kode Program :


1. Inisiasi variabel yang akan dijadikan pin output
int
int
int
int

digit1
digit2
digit3
digit4

=
=
=
=

int
int
int
int
int
int
int

segA
segB
segC
segD
segE
segF
segG

1;
2;
3;
4;
5;
6;
7;

=
=
=
=
=
=
=

9; //Display pin 12
10; //Display pin 9
11; //Display pin 8
12; //Display pin 6
//Display
//Display
//Display
//Display
//Display
//Display
//Display

pin
pin
pin
pin
pin
pin
pin

11
7
4
2
1
10
5

2. Meregistrasikan variabel pada pin arduino sebagai output


void setup() {
pinMode(segA,
pinMode(segB,
pinMode(segC,
pinMode(segD,
pinMode(segE,
pinMode(segF,
pinMode(segG,

OUTPUT);
OUTPUT);
OUTPUT);
OUTPUT);
OUTPUT);
OUTPUT);
OUTPUT);

pinMode(digit1,
pinMode(digit2,
pinMode(digit3,
pinMode(digit4,

OUTPUT);
OUTPUT);
OUTPUT);
OUTPUT);

}
3. Memulai loop() dengan memanggil fungsi millis() yang akan digunakan sebagai
timer dengan nilai perubahan per miliseconds.
void loop() {

displayNumber(millis()/1000);
}
Dengan script di dalam loop tersebut akan mengkonversi nilai hasil eksekusi fungsi
millis() dibagi 1000 sehingga dihasilkan 1, yang dimanfaatkan sebagai increment
desimal. Karena fungsi millis akan mengembalikan nilai dalam millisecond
dihitung sejak arduino board menyala. Penapungnya harus long integer.
Fungsi displayNumber() akan mengkonfigurasikan nilai sesuai dengan digit yang
harus dihidupkan sesuai dengan nilai desimal yang harus ditampilkan.
Dalam pencahayaan / brightness pada 7-segment
DISPLAY_BRIGHTNESS pada setiap segment nya.
#define DISPLAY_BRIGHTNESS

dengan

mendefinisikan

1000

Nilai yang dapat diberikan dari 1 sampai 5000 dengan status kenyamanan dan konsumsi
daya :
5000 blindingly bright (15.7mA current draw per digit)
2000 shockingly bright (11.4mA current draw per digit)
1000 pretty bright (5.9mA)
500 normal (3mA)
200 dim but readable (1.4mA)
50 dim but readable (0.56mA)
5 dim but readable (0.31mA)
1 dim but readable in dark (0.28mA)
LATIHAN :
Buat konfigurasi yang dibutuhkan untuk menampilkan kode program berikut dalam 4 x 7segment.
//segments
int a = 1;//a
int b = 2;//b
int c = 3;//c
int d = 4;//d
int e = 5;//e
int f = 6;//f
int g = 7;//g
int p = 8;//dot
//digits
int d4 = 9;
int d3 = 10;
int d2 = 11;
int d1 = 12;

//other
int del = 100;
int buttoncount = 0;
int loopcount = 0;
void setup()
{
pinMode(d1, OUTPUT);
pinMode(d2, OUTPUT);
pinMode(d3, OUTPUT);
pinMode(d4, OUTPUT);
pinMode(a, OUTPUT);
pinMode(b, OUTPUT);
pinMode(c, OUTPUT);
pinMode(d, OUTPUT);
pinMode(e, OUTPUT);
pinMode(f, OUTPUT);
pinMode(g, OUTPUT);
pinMode(p, OUTPUT);
digitalWrite(a, HIGH);
digitalWrite(b, HIGH);
digitalWrite(c, HIGH);
digitalWrite(d, HIGH);
digitalWrite(e, HIGH);
digitalWrite(f, HIGH);
digitalWrite(g, HIGH);
digitalWrite(p, HIGH);
}
void loop()
{
roulette(2);
delay(500);
zigzag(2);
delay(500);
circles(2);
delay(500);
flash();
delay(1000);
}
void pickDigit(int
{
digitalWrite(d1,
digitalWrite(d2,
digitalWrite(d3,
digitalWrite(d4,
switch(x)

x)
LOW);
LOW);
LOW);
LOW);

{
case 1:
digitalWrite(d1,
break;
case 2:
digitalWrite(d2,
break;
case 3:
digitalWrite(d3,
break;
default:
digitalWrite(d4,
break;
}

HIGH);
HIGH);
HIGH);
HIGH);

}
void clearLEDs()
{
digitalWrite(a,
digitalWrite(b,
digitalWrite(c,
digitalWrite(d,
digitalWrite(e,
digitalWrite(f,
digitalWrite(g,
digitalWrite(p,
}

HIGH);
HIGH);
HIGH);
HIGH);
HIGH);
HIGH);
HIGH);
HIGH);

void roulette(int x)
{
loopcount = 0;
while (loopcount < x)
{
clearLEDs();
digitalWrite(a, LOW);
//digitalWrite(p, LOW);
pickDigit(1);
delay(del);
pickDigit(2);
delay(del);
pickDigit(3);
delay(del);
pickDigit(4);
delay(del);
digitalWrite(a, HIGH);
digitalWrite(f, LOW);
delay(del);
digitalWrite(f, HIGH);
digitalWrite(e, LOW);
delay(del);

digitalWrite(e,
digitalWrite(d,
delay(del);
pickDigit(3);
delay(del);
pickDigit(2);
delay(del);
pickDigit(1);
delay(del);
digitalWrite(d,
digitalWrite(c,
delay(del);
digitalWrite(c,
digitalWrite(b,
delay(del);
digitalWrite(b,
//delay(del);
}

HIGH);
LOW);

HIGH);
LOW);
HIGH);
LOW);
HIGH);

loopcount++;

}
void zigzag(int x)
{
loopcount = 0;
while(loopcount <
{
digitalWrite(a,
pickDigit(1);
delay(del);
pickDigit(2);
delay(del);
pickDigit(3);
delay(del);
pickDigit(4);
delay(del);
digitalWrite(a,
digitalWrite(f,
delay(del);
digitalWrite(f,
digitalWrite(g,
delay(del);
pickDigit(3);
delay(del);
pickDigit(2);
delay(del);
pickDigit(1);
delay(del);
digitalWrite(g,
digitalWrite(c,

x)
LOW);

HIGH);
LOW);
HIGH);
LOW);

HIGH);
LOW);

delay(del);
digitalWrite(c,
digitalWrite(d,
delay(del);
pickDigit(2);
delay(del);
pickDigit(3);
delay(del);
pickDigit(4);
delay(del);
digitalWrite(d,
digitalWrite(e,
delay(del);
digitalWrite(e,
digitalWrite(g,
delay(del);
pickDigit(3);
delay(del);
pickDigit(2);
delay(del);
pickDigit(1);
delay(del);
digitalWrite(g,
digitalWrite(b,

HIGH);
LOW);

HIGH);
LOW);
HIGH);
LOW);

HIGH);
LOW);

delay(del);
clearLEDs();
loopcount++;
}

void circles(int x)
{
loopcount = 0;
while (loopcount < x)
{
digitalWrite(a, LOW);
digitalWrite(b, LOW);
digitalWrite(f, LOW);
digitalWrite(g, LOW);
pickDigit(1);
delay(250);
digitalWrite(a, HIGH);
digitalWrite(b, HIGH);
digitalWrite(f, HIGH);
digitalWrite(c, LOW);
digitalWrite(d, LOW);
digitalWrite(e, LOW);
pickDigit(2);
delay(250);

digitalWrite(a,
digitalWrite(b,
digitalWrite(f,
digitalWrite(c,
digitalWrite(d,
digitalWrite(e,
pickDigit(3);
delay(250);
digitalWrite(a,
digitalWrite(b,
digitalWrite(f,
digitalWrite(c,
digitalWrite(d,
digitalWrite(e,
pickDigit(4);
delay(250);
clearLEDs();
loopcount++;

LOW);
LOW);
LOW);
HIGH);
HIGH);
HIGH);
HIGH);
HIGH);
HIGH);
LOW);
LOW);
LOW);

}
//tampilan 0000 untuk semua segmen
void nyala()
{
digitalWrite(a, LOW);
digitalWrite(b, LOW);
digitalWrite(c, LOW);
digitalWrite(d, LOW);
digitalWrite(e, LOW);
digitalWrite(f, LOW);
digitalWrite(d1,
digitalWrite(d2,
digitalWrite(d3,
digitalWrite(d4,

HIGH);
HIGH);
HIGH);
HIGH);

}
void flash()
{
int i;
for(i=0;i<5;i++){
nyala();delay(250);
clearLEDs();delay(500);

}
}

nyala();
i++;

PUSH BUTTON
TUJUAN:
1. Mahasiswa memahami rangkaian mikrokontroller dengan interface ke saklar.
2. Mahasiswa dapat memahami program Arduino untuk mengambil data saklar dan
mengeluarkan data ke LED.
3. Mahasiswa memahami beberapa instruksi Arduino dasar, digitalRead, if, dan for.
PERALATAN
1. Sebuah Komputer /Laptop
2. Arduino board dan konektor dengan USB
3. Breadboard dan kabel jumper
4. Saklar push button
5. Resistor antara 1K100K ohm
TEORI
Sebuah lampu adalah perangkat sederhana dengan dua posisi, menghidupkan dan
mematikan. Ketika di dua kawat yang terhubung di dalam, yang memungkinkan arus
mengalir. Ketika off, dua kabel terputus dan berarti arus terputus.
Push Button adalah saklar tekan yang berfungsi untuk menghubungkan atau memisahkan
bagian bagian dari suatu instalasi listrik satu sama lain (suatu sistem saklar tekan push
button terdiri dari saklar tekan start. Pada dasarnya, terdapat 2 jenis Push-Button di
pasaran: Push-On dan Push- Off . Tetapi yang kita gunakan pada tutorial ini adalah yang
berjenis Push-On, yaitu komponen yang terdiri atas dua kutub yang saling terpisah / tidak
terhubung, dan sebuah tombol yang ketika ditekan akan menghubungkan kedua kutub
tersebut sehingga akan mengalirkan arus listrik dari satu sisi kutub ke sisi kutub
berikutnya.

Gambar Komponen Push Button sebagai saklar


Dengan 4 kaki tersebut, jika tombol ditekan otomatis semua pin yang ada pada kedua elips
merah tersebut akan terhubung keempat-empatnya.
Langkah yang harus dilakukan :
1. Hubungkan GND arduino dan 5 V pada lajur + dan pada breadboard
2. Pasang push button pada breadboard dan hubungkan salah satu terminal ke 5V
pada lajur breadboard dan yang lainnya ke digital pin arduino (misal pin 2)
3. Pasang resistor antara pin yang dipilih (pin 2) dan GND yang ada di breadboard,
ini yang disebut pull-down setup.

Gambar Skema rangkaian push-button

Gambar Mockup dari pengkabelan push-button


Kode Program
// Declare the pins for the Button and the LED
int buttonPin = 2;
int LED = 13;
void setup() {
// Define pin #2 as input
pinMode(buttonPin, INPUT);

// Define pin #13 as output, for the LED


pinMode(LED, OUTPUT);
}
void loop() {
// Read the value of the input. It can either be 1 or
0.
int buttonValue = digitalRead(buttonPin);
if (buttonValue == HIGH) {
// If button pushed, turn LED on
digitalWrite(LED,HIGH);
} else {
// Otherwise, turn the LED off
digitalWrite(LED, LOW);
}
}
Penjelasan Kode Program :
1. Mendefinisikan nilai yang diasumsikan pin yang akan digunakan
// Declare the pins for the Button and the LED
int buttonPin = 2;
int LED = 13;
2. Mengkonfigurasikan pin 2 menjadi bersifat sebagai input dan pin 13 sebagai
output
void setup() {
// Define pin #2 as input
pinMode(buttonPin, INPUT);
// Define pin #13 as output, for the LED
pinMode(LED, OUTPUT);
}
3. Dengan menggunakan fungsi digitalRead pada pin 2, maka jika pin 2 dalam
keadaan high atau 1 maka pin 13 high atau Led akan menyala, jika pin 2 keadaan
low atau 0 maka pin 13 bernilai low yang berarti led padam.
void loop() {
// Read the value of the input. It can either be 1 or
0.
int buttonValue = digitalRead(buttonPin);
if (buttonValue == HIGH) {
// If button pushed, turn LED on
digitalWrite(LED,HIGH);
} else {
// Otherwise, turn the LED off
digitalWrite(LED, LOW);
}
}

Tugas :
1. Buat auto increment dengan menggunakan gabungan dari push button dan multi
sevensegment, jika push button ditekan maka sevensegment akan menampilkan
angka increment.
2. Buat konfigurasi push button dengan Led, ketika push button ditekan akan
menyala sampai tombol ditekan kembali akan membuat led mati ( Debounce).

BAB IV LCD TEXT


TUJUAN:
1. Mahasiswa memahami rangkaian interface mikrokontroller dengan LCD Karakter
2 x 16
2. Mahasiswa dapat memahami program Arduino untuk menampilkan data ke LCD
Karakter 2 x 16
3. Mahasiswa memahami beberapa instruksi pada library header liquidcrystal
4. Mahasiswa memahami mencetak karakter pada posisi baris dan kolom tertentu
PERALATAN
1. Sebuah Komputer
2. Satu set trainer mikrokontroler
DASAR TEORI
Modul LCD Character dapat dengan mudah dihubungkan dengan mikrokontroller seperti
Arduino Uno R3. LCD yang akan kita praktikumkan ini mempunyai lebar display 2 baris
16 kolom atau biasa disebut sebagai LCD Character 2x16, dengan 16 pin konektor, yang
didifinisikan sebagai berikut:

Gambar 4.1 Komponen LCD 2 x 16


Display karakter pada LCD diatur oleh pin EN, RS dan RW:
1. Jalur EN dinamakan Enable. Jalur ini digunakan untuk memberitahu LCD
bahwa anda sedang mengirimkan sebuah data. Untuk mengirimkan data ke LCD,
maka melalui program EN harus dibuat logika low 0 dan set pada dua jalur
kontrol yang lain RS dan RW. Ketika dua jalur yang lain telah siap, set EN dengan
logika 1 dan tunggu untuk sejumlah waktu tertentu (sesuai dengan datasheet
dari LCD tersebut ) dan berikutnya set EN ke logika low 0 lagi.
2. Jalur RS adalah jalur Register Select. Ketika RS berlogika low 0, data akan
dianggap sebagai sebuah perintah atau instruksi khusus ( seperti clear screen,
posisi kursor dll ). Ketika RS berlogika high 1, data yang dikirim adalah data
text yang akan ditampilkan pada display LCD.
Sebagai contoh, untuk menampilkan huruf T pada layar LCD maka RS harus

diset logika high 1.


3. Jalur RW adalah jalur kontrol Read/ Write. Ketika RW berlogika low (0), maka
informasi pada bus data akan dituliskan pada layar LCD. Ketika RW berlogika
high 1, maka program akan melakukan pembacaan memori dari LCD.
Sedangkan pada aplikasi umum pin RW selalu diberi logika low 0.
Tabel 4.1. Pin LCD dan Fungsi

Pada percobaan dalam modul ini akan menggunakan modul Inter-Integrated Circuit

(I2C) sebagai perantara menangani perintah yang ada pada LCD. Sehingga posisi
I2C ini diantara LCD dan Arduino, dengan konsep menghemat pin yang digunakan
arduino untuk mengendalikan LCD. Pada umumnya LCD dikendalikan dengan
menggunakan 6 jalur yang ada pada LCD : RS, EN, D7, D6, D5, dan D4. Jika
diinginkan lebih simplekita bisa menggunakan LCD shield yang bisa langsung
integrated pada board. Tapi ketika kita ingin menggunakan yang lebih simple dari
segi ukuran I2C mungkin salah satu jawabannya.

Gambar 4.2 Modul I2C


Hitachi 16 2 LCD menggunakan HD44780 sangat murah dan tersedia secara luas, dan
merupakan bagian penting untuk setiap proyek yang menampilkan informasi.
Menggunakan LCD, data yang diinginkan dapat ditampilkan pada LCD melalui bus I2C.
Pada prinsipnya, modul tersebut dibangun menggunakan PCF8574 (dari NXP) yang
konsepnya adalah dua arah 8 bit I/O port expander yang menggunakan protokol I2C.
PCF8574 adalah silikon CMOS sirkuit sebagai pengendali I/O ekspansi (8-bit dua arah)
bagi sebagian besar keluarga mikrokontroler melalui dua jalur dua arah bus (I2C-bus).
Perhatikan bahwa kebanyakan modul dibuat dari varian PCF8574T (SO16 paket
PCF8574 dalam paket DIP16) dengan alamat default slave 0x27. Jika modul tertanam
chip PCF8574AT(bisa dilihat dibagian belakangcipI2C), maka alamat slave default akan
berubah ke 0x3F. Singkatnya, ransel Anda didasarkan pada PCF8574T dan koneksi alamat
(A0-A1-A2) tidak dijembatani dengan solder akan memiliki 0x27 alamat slave.

Gambar 4.3 Letak Koneksi Alamat Logic I2C


Berikut merupakan rangkaian yang bisa dijadikan referensi untuk menghubungkan
arduino dengan LCD melalui modul I2C.

Gambar 4.4 Rangkaian I2C ke LCD


Berikut merupakan komponen I2C yang terpasang pada LCD dengan Pin yang dimiliki
dan fungsi tiap masing Pin.

Gambar 4.5 Pin I2C


Keterangan Konfigurasi kabel-kabel jumper :
GND GND
VCC 5V
SDA - ANALOG Pin 4
SCL - ANALOG pin 5
Pada kebanyakan papan Arduino, SDA (data line) adalah dihubungkan pada input analog
pin 4, dan SCL (clock line) pada input analog pin 5. Pada Arduino Mega SDA adalah
digital pin 20 dan SCL adalah 21. Pada baru Arduino UNO (The "V3" pinout), pin SCL
dan SDA juga pada dua paling kiri baru pin atas.
CATATAN: The Blue Potentiometer (Foto) menyesuaikan Kontras. Jika Anda tidak
melihat karakter apapun, sesuaikan. Mulai searah jarum jam dan kembali ke tempat
karakter yang cerah dan background tidak memiliki kotak di belakang karakter.

Gambar 4.6 Konfigurasi Kabel Jumper


Untuk membuat program yang nantinya akan memanfaatkan I2C yang berkomunikasi
dengan LCD, maka dibutuhkan alamat yang tepat dari modul I2C. Alamat ini akan
berbeda-beda untuk tiap device tergantung pada IC yang dipakai oleh modul I2C.
Melihat alamat yang dipakai untuk modul I2C dapat menggunakan program scanner yang
nantinya menghasilkan alamat yang dipakai pada modul I2C yang digunakan saat
pengiriman perintah pada LCD.
Scan device I2C dengan program berikut :
#include<Wire.h>
voidsetup()
{
Wire.begin();
Serial.begin(9600);
while(!Serial);//Leonardo:waitforserialmonitor
Serial.println("\nI2CScanner");
}
voidloop()
{
byteerror,address;
intnDevices;
Serial.println("Scanning...");
nDevices=0;
for(address=1;address<127;address++)
{
//Thei2c_scannerusesthereturnvalueof
//theWrite.endTransmisstiontoseeif
//adevicedidacknowledgetotheaddress.
Wire.beginTransmission(address);
error=Wire.endTransmission();

if(error==0)
{
Serial.print("I2Cdevicefoundataddress0x");
if(address<16)
Serial.print("0");
Serial.print(address,HEX);
Serial.println("!");
nDevices++;
}
elseif(error==4)
{
Serial.print("Unknowerrorataddress0x");
if(address<16)
Serial.print("0");
Serial.println(address,HEX);
}
}
if(nDevices==0)
Serial.println("NoI2Cdevicesfound\n");
else
Serial.println("done\n");
delay(5000);//wait5secondsfornextscan
}

Hasil bisa dilihat dengan menggunakan menu Serial Monitor yang beradapada kanan atas
Arduino IDE.

Gambar 4.7 Hasil Eksekusi Scan I2C


Mencoba mengirimkan karakter :
/*(Importneededlibraries)*/
#include<Wire.h>//ComeswithArduinoIDE
//GettheLCDI2CLibraryhere:
//https://bitbucket.org/fmalpartida/newliquidcrystal/downloads
//MoveanyotherLCDlibrariestoanotherfolderordeletethem
//SeeLibrary"Docs"folderforpossiblecommandsetc.
#include<LiquidCrystal_I2C.h>
/*(DeclareConstants)*/
/*(Declareobjects)*/

//settheLCDaddressto0x27fora16chars2linedisplay
//AFEWuseaddress0x3F
//SetthepinsontheI2CchipusedforLCDconnections:
//addr,en,rw,rs,d4,d5,d6,d7,bl,blpol
LiquidCrystal_I2Clcd(0x3F,2,1,0,4,5,6,7,3,POSITIVE);//
SettheLCDI2Caddress
/*(DeclareVariables)*/
//NONE
voidsetup()/*(SETUP:RUNSONCE)*/
{
Serial.begin(9600);//Usedtotypeincharacters
lcd.begin(16,2);//initializethelcdfor16chars2lines,
turnonbacklight
//Quick3blinksofbacklight
for(inti=0;i<3;i++)
{
lcd.backlight();
delay(250);
lcd.noBacklight();
delay(250);
}
lcd.backlight();//finishwithbacklighton
//Writecharactersonthedisplay
//NOTE:CursorPosition:(CHAR,LINE)startat0
lcd.setCursor(0,0);//Startatcharacter4online0
lcd.print("Hello,world!");
delay(1000);
lcd.setCursor(0,1);
lcd.print("Hi,POLINES");
delay(8000);
//WaitandthentellusertheycanstarttheSerialMonitorand
typeincharactersto
//Display.(SetSerialMonitoroptionto"NoLineEnding")
lcd.clear();
lcd.setCursor(0,0);//Startatcharacter0online0
lcd.print("D3TIINFORMATIKA");
lcd.setCursor(0,1);
lcd.print("Typetodisplay");
}/*(endsetup)*/
voidloop()/*(LOOP:RUNSCONSTANTLY)*/
{
{
//whencharactersarriveovertheserialport...
if(Serial.available()){
//waitabitfortheentiremessagetoarrive
delay(100);

//clearthescreen
lcd.clear();
//readalltheavailablecharacters
while(Serial.available()>0){
//displayeachcharactertotheLCD
lcd.write(Serial.read());
}
}
}
}/*(endmainloop)*/
/*(THEEND)*/

Keterangan Kode Program :


1. Memanggil library, lokasi fisik library biasanya berada pada lokasi dimana
Arduino IDE diinstall. Untuk menambhakan library kita tinggal masukkan folder
library baru kitake folder library. Lokasi yangmemungkinkan untuk menyimpan
library lainnya adalah di samping tempat penyimpanan skecth.
Library bisa didownload di : https://bitbucket.org/fmalpartida/new
liquidcrystal/downloads
#include<Wire.h>//DefaultsudahadapadaArduinoIDE
#include<LiquidCrystal_I2C.h>//TambahanLibraryLCDdengan
I2C

2. Inisialisasi class yang ada pada header library yang nantinya object yang
dihasilkan dariproses inisialisasi digunakan untuk pemrograman selanjutnya.
LiquidCrystal_I2C lcd(0x3F, 2, 1, 0, 4, 5, 6, 7, 3,
POSITIVE);//SettheLCDI2Caddress
Konfigurasi pin I2C terhadap LCD
addr

en

rw

rs

d4

d5

d6

d7

bl

blpol

0x3F

POSITIVE

3. Konfigurasi untuk fungsi setup()


Inisialisasi penggunaan baudrate/kecepatan tranfer serial :
Serial.begin(9600);

Inisialisasi tipe LCD yang digunakan


lcd.begin(16,2);

Membuat efek flash blink/berkedip padalayar LCD sebanyak 3 kali


for(inti=0;i<3;i++)
{
lcd.backlight();
delay(250);
lcd.noBacklight();
delay(250);
}

Membuat LCD dengan tampilan lampu latar belakang menyala


lcd.backlight();//finishwithbacklighton

Menginstrusikan kursor pada posisi sesuai dengan parameter,dimulai dari 0


untuk baris pertama, dan increment 1 untuk baris berikutnya.
lcd.setCursor(0,0);

Mencetak pada LCD dengan karakter yang ada pada parameter


lcd.print("Hello,world!");

Memberikan delay() waktu tunda sebelummengeksekusi baris program


selanjutnya. Satuan dalam millisecond.
delay(1000);
lcd.setCursor(0,1);
lcd.print("HI!POLINES");
delay(8000);

Membersihkan layar LCD untuk semua baris


lcd.clear();

Mengarahkan kursor ke baris pertama


lcd.setCursor(0,0);//Startatcharacter0online0

Menuliskan karakter pada LCD pada posisi kursor


mereplace/mengganti karakter lama dengan karakter yang baru.

yang

berarti

lcd.print("D3TEKNIKINFORMATIKA");
lcd.setCursor(0,1);
lcd.print("POLINES");
}/*(endsetup)*/

4. Mengeksekusi rutin fungsi loop()


Jika serial port menerima masukkan yang akan dirubah menjadi karakter setiap

yang diterima serial akan ditampilkan pada LCD.


//whencharactersarriveovertheserialport...
if(Serial.available()){
//waitabitfortheentiremessagetoarrive
delay(100);
//clearthescreen
lcd.clear();
//readalltheavailablecharacters
while(Serial.available()>0){
//displayeachcharactertotheLCD
lcd.write(Serial.read());
}
}

LCD SHIELD ARDUINO


Cara lain untuk menggunakan LCD dengan cara menggunakan Shield untuk LCD yang
akan menambahkan board diatas arduino sesuai dengan konfigurasi pin yang ada pada
arduino. Dengan LCD Shield kita bisa menggunakan LCD sekaligus menghemat
pemanfaatan pin yang ada di arduino.
Jadi jika dibandingkan dengan pemanfaatan I2C pada bahasan sebelumnya, LCD shield
ini berbeda, pin LCD akan seolah-olah seperti tertancap secara langsung pada Arduino
tanpa menggunakan modul I2C.

Gambar 4.8 LCD Shield Arduino


Tombol keypad yang berada pada bagian bawah akan langsung terhubung dengan
AnalogInput Pin 0.
Detail Konfigurasi Pin LCD Shield :

Pin

Fungsi

Analog 0

Button (select, up, right, down and left)

Digital 4

DB4

Digital 5

DB5

Digital 6

DB6

Digital 7

DB7

Digital 8

RS (Data or Signal Display Selection)

Digital 9

Enable

Digital 10

Backlit Control

Gambar 4.9 Konfigurasi Pin LCD Shield


Berikut merupakan konfigurasi pemasangan LCD Shield pada Arduino :

Gambar 4.10 Pemasangan LCD Shield pada Arduino

Gambar 4.11 Konfigurasi pengkabelan LCD dan Potensiometer


Contoh Kode Program :
//SampleusingLiquidCrystallibrary
#include<LiquidCrystal.h>
//selectthepinsusedontheLCDpanel
LiquidCrystallcd(8,9,4,5,6,7);
//definesomevaluesusedbythepanelandbuttons
intlcd_key=0;
intadc_key_in=0;

#definebtnRIGHT0
#definebtnUP1
#definebtnDOWN2
#definebtnLEFT3
#definebtnSELECT4
#definebtnNONE5
//readthebuttons
intread_LCD_buttons()
{
adc_key_in = analogRead(0); // read the value from the
sensor
// my buttons when read are centered at these valies: 0, 144,
329,504,741
//weaddapprox50tothosevaluesandchecktoseeifweare
close
if(adc_key_in>1000)returnbtnNONE;//Wemakethisthe1st
optionforspeedreasonssinceitwillbethemostlikelyresult
//ForV1.1usthisthreshold
if(adc_key_in<50)returnbtnRIGHT;
if(adc_key_in<250)returnbtnUP;
if(adc_key_in<450)returnbtnDOWN;
if(adc_key_in<650)returnbtnLEFT;
if(adc_key_in<850)returnbtnSELECT;
returnbtnNONE;//whenallothersfail,returnthis...
}
voidsetup()
{
lcd.begin(16,2);//startthelibrary
lcd.setCursor(0,0);
lcd.print("Pushthebuttons");//printasimplemessage
}

voidloop()
{
lcd.setCursor(9,1); // move cursor to second line "1" and 9
spacesover
lcd.print(millis()/1000);//displaysecondselapsedsincepower
up
lcd.setCursor(0,1);//movetothebeginingofthesecondline
lcd_key=read_LCD_buttons();//readthebuttons
switch (lcd_key) // depending on which button was pushed, we
performanaction
{
casebtnRIGHT:
{
lcd.print("RIGHT");

break;
}
casebtnLEFT:
{
lcd.print("LEFT");
break;
}
casebtnUP:
{
lcd.print("UP");
break;
}
casebtnDOWN:
{
lcd.print("DOWN");
break;
}
casebtnSELECT:
{
lcd.print("SELECT");
break;
}
casebtnNONE:
{
lcd.print("NONE");
break;
}
}
}

Tugas :
1. Buat running text geser kekiri pada LCD dengan I2C dan LCD Shield
Karakter:[NIM][NAMA]D3TIPOLINES

2. Gunakan fungsi untuk meletakkan karakter pada barispertama dan kedua sehingga
posisi karakter yang ditampilkan berada ditengah. Jika karakter lebih dari 16 akan
digeser kekiri.
BarisPertama:[NIM]
BarisKedua:[NAMA]

3. Gunakan Arduino dengan LCD Shield. Manfaatkan keypad pada LCD Shield
untuk memasukkan password jika pasword benar akan tertampil Selamat
Datang dan Lampu Led Hijau akan menyala, jika inputan kombinasi salah Led
Merah menyala tampilan LCD Password Salah.

Anda mungkin juga menyukai