• Tidak ada hasil yang ditemukan

BAB I : TEORI MIKROKONTROLER ARDUINO UNO

N/A
N/A
Protected

Academic year: 2021

Membagikan "BAB I : TEORI MIKROKONTROLER ARDUINO UNO"

Copied!
117
0
0

Teks penuh

(1)

1 LABORATORIUM MIKROKONTROLER UNIVERSITAS NAROTAMA SURABAYA

BAB I : TEORI 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 Dasar

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.1. dibawah ini.

Gambar 1.1. Skema Arduino Uno R3

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

(2)

2 LABORATORIUM MIKROKONTROLER UNIVERSITAS NAROTAMA SURABAYA

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.

Pembuatan prototype atau prototyping adalah 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. Prototyping adalah gabungan antara akurasi perhitungan dan seni.

Proses prototyping bisa menjadi sebuah kegiatan yang menyenangkan atau menyebalkan, itu tergantung bagaimana kita melakukannya. Misalnya jika untuk mengganti sebuah komponen, merubah ukurannya atau merombak kerja sebuah prototype dibutuhkan usaha yang besar dan waktu yang lama, mungkin prototyping akan sangat melelahkan karena pekerjaan ini dapat dilakukan berulang-ulang sampai puluhan kali – bayangkan betapa frustasinya perancang yang harus melakukan itu. Idealnya sebuah prototype adalah sebuah sistem yang fleksibel dimana perancang bisa dengan mudah dan cepat melakukan perubahan-perubahan dan mencobanya lagi sehingga tenaga dan waktu tidak menjadi kendala berarti. Dengan demikian harus ada sebuah alat pengembangan yang membuat proses prototyping menjadi mudah.

Pada masa lalu (dan masih terjadi hingga hari ini) bekerja dengan hardware berarti membuat rangkaian menggunakan berbagai komponen elektronik seperti resistor, kapasitor, transistor dan sebagainya. Setiap komponen disambungkan secara fisik dengan kabel atau jalur tembaga yang disebut dengan istilah “hard wired” sehingga untuk merubah rangkaian maka sambungansambungan itu harus diputuskan dan disambung kembali. Dengan hadirnya teknologi digital dan microprocessor fungsi yang sebelumnya dilakukan dengan hired wired digantikan dengan program-program software. Ini adalah sebuah revolusi di dalam proses prototyping. Software 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 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. Ada banyak projek dan alat-alat dikembangkan oleh

(3)

3 LABORATORIUM MIKROKONTROLER UNIVERSITAS NAROTAMA SURABAYA

akademisi dan profesional dengan menggunakan Arduino, selain itu juga ada banyak modul-modul pendukung (sensor, tampilan, penggerak dan sebagainya) yang dibuat oleh pihak lain untuk bisa disambungkan dengan Arduino. Arduino berevolusi menjadi sebuah platform karena ia menjadi pilihan dan acuan bagi banyak praktisi. 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. Anda bisa bebas men-download gambarnya, membeli komponen-komponennya, 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. Kita patut berterima kasih kepada tim Arduino yang sangat dermawan membagi-bagikan kemewahan hasil kerja keras mereka kepada semua orang. Kita betul-betul kagum dengan desain hardware, bahasa pemrograman dan IDE Arduino yang berkualitas tinggi dan sangat berkelas. Arduino dikembangkan oleh sebuah tim yang beranggotakan orang-orang dari berbagai belahan dunia. Anggota inti dari tim ini adalah:

 Massimo Banzi Milano, Italy  David Cuartielles Malmoe, Sweden Tom Igoe New York, US

Gianluca Martino Torino, Italy  David A. Mellis Boston, MA, USA

Profil mengenai anggota tim tersebut dan kontribusinya bisa diakses pada situs web http://www.arduino.cc/playground/Main/People.

Saat ini komunitas Arduino berkembang dengan pesat dan dinamis di berbagai belahan dunia. Bermacam-macam kegiatan yang berkaitan dengan projek-projek Arduino bermunculan dimanamana, termasuk di Indonesia. Yang membuat Arduino dengan cepat diterima oleh orang-orang adalah karena: Harganya akan lebih murah dibandingkan dengan modul yang lain, mudah pengoperasiannya, library cukup banyak diinternet karena bersifat open source, dan koneksi dengan devais yang lain cukup mudah. Dibawah ini adalah modul Arduino Uno R3.

Gambar 1.2. Modul Arduino Tampak Depan dan Belakang Secara umum Arduino terdiri dari dua bagian, yaitu:

(4)

4 LABORATORIUM MIKROKONTROLER UNIVERSITAS NAROTAMA SURABAYA

1. Hardware _ papan input/output (I/O)

2. Software _ Software Arduino meliputi IDE untuk menulis program, driver untuk koneksi dengan komputer, contoh program dan library untuk pengembangan program.

Selanjutnya kita akan mengenal masing-masing bagian ini lebih jauh.

1. Hardware

Komponen utama di dalam papan Arduino adalah sebuah microcontroller 8 bit dengan merk ATmega yang dibuat oleh perusahaan Atmel Corporation. Berbagai papan 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.

Untuk memberikan gambaran mengenai apa saja yang terdapat di dalam sebuah microcontroller, pada gambar berikut ini diperlihatkan contoh diagram blok sederhana dari microcontroller ATmega328 (dipakai pada Arduino Uno).

Gambar 1.3. Arsitektur Arduino Uno R3

Spesifikasi Arduino Uno R3

Microcontroller

ATmega328

Operating Voltage

5V

Input Voltage (recommended)

7-12V

Input Voltage (limits)

6-20V

Digital I/O Pins

14 (of which 6 provide PWM output)

Analog Input Pins

6

DC Current per I/O Pin

40 mA

DC Current for 3.3V Pin

50 mA

(5)

5 LABORATORIUM MIKROKONTROLER UNIVERSITAS NAROTAMA SURABAYA

Flash Memory

32 KB (ATmega328) of which 0.5 KB used by bootloader

SRAM

2 KB (ATmega328)

EEPROM

1 KB (ATmega328)

Clock Speed

16 MHz

Length

68.6 mm

Width

53.4 mm

Weight

25 g

Blok-blok di atas dijelaskan sebagai berikut:

 Universal Asynchronous Receiver/Transmitter (UART) adalah antar muka yang digunakan untuk komunikasi serial seperti pada RS-232, RS-422 dan RS-485.

2KB RAM pada memory kerja bersifat volatile (hilang saat daya dimatikan), digunakan oleh variable-variabel di dalam program.

 32KB RAM flash memory bersifat non-volatile, digunakan untuk menyimpan program yang dimuat dari komputer. Selain program, flash memory juga menyimpan bootloader.

Bootloader adalah program inisiasi yang ukurannya kecil, dijalankan oleh CPU saat daya dihidupkan. Setelah bootloader selesai dijalankan, berikutnya program di dalam RAM akan dieksekusi.

1KB EEPROM bersifat non-volatile, digunakan untuk menyimpan data yang tidak boleh hilang saat daya dimatikan. Tidak digunakan pada papan Arduino.

 Central Processing Unit (CPU), bagian dari microcontroller untuk menjalankan setiap instruksi dari program.

Port input/output, pin-pin untuk menerima data (input) digital atau analog, dan mengeluarkan data (output) digital atau analog.

Setelah mengenal bagian-bagian utama dari microcontroller ATmega sebagai komponen utama, selanjutnya kita akan mengenal bagian-bagian dari papan Arduino itu sendiri.

(6)

6 LABORATORIUM MIKROKONTROLER UNIVERSITAS NAROTAMA SURABAYA

Gambar 1.4. Bagian-bagian Utama Arduino

14 pin input/output digital (0-13)

Berfungsi sebagai input atau output, dapat diatur oleh program. Khusus untuk 6 buah pin 3, 5, 6, 9, 10 dan 11, dapat juga berfungsi sebagai pin analog output dimana tegangan output-nya dapat diatur. Nilai sebuah pin output analog dapat diprogram antara 0 – 255, dimana hal itu mewakili nilai tegangan 0 – 5V.

USB

Berfungsi untuk:

Memuat program dari komputer ke dalam papan Komunikasi serial antara papan dan komputer Memberi daya listrik kepada papan

Sambungan SV1

Sambungan atau jumper untuk memilih sumber daya papan, apakah dari sumber eksternal atau menggunakan USB. Sambungan ini tidak diperlukan lagi pada papan Arduino versi terakhir karena pemilihan sumber daya eksternal atau USB dilakukan secara otomatis.

Q1 – Kristal (quartz crystal oscillator)

Jika microcontroller dianggap sebagai sebuah otak, maka kristal adalah jantung-nya karena komponen ini menghasilkan detak-detak yang dikirim kepada microcontroller agar melakukan sebuah operasi untuk setiap detak-nya. Kristal ini dipilih yang berdetak 16 juta kali per detik (16MHz).

Tombol Reset S1

Untuk me-reset papan sehingga program akan mulai lagi dari awal. Perhatikan bahwa tombol reset ini bukan untuk menghapus program atau mengosongkan microcontroller.

In-Circuit Serial Programming (ICSP)

Port ICSP memungkinkan pengguna untuk memprogram microcontroller secara langsung, tanpa melalui bootloader. Umumnya pengguna Arduino tidak melakukan ini sehingga ICSP tidak terlalu dipakai walaupun disediakan.

IC 1 – Microcontroller Atmega

(7)

7 LABORATORIUM MIKROKONTROLER UNIVERSITAS NAROTAMA SURABAYA

X1 – sumber daya eksternal

Jika hendak disuplai dengan sumber daya eksternal, papan Arduino dapat diberikan tegangan DC antara 9-12V.

6 pin input analog (0-5)

Pin ini sangat berguna untuk membaca tegangan yang dihasilkan oleh sensor analog, seperti sensor suhu. Program dapat membaca nilai sebuah pin input antara 0 – 1023, dimana hal itu mewakili nilai tegangan 0 – 5V.

2. Software

Sekalipun sebuah papan Arduino dapat bekerja dengan mendapat asupan daya dari sebuah komputer, namun hal itu tidak berarti ia dapat berkomunikasi dengan komputer tersebut. Untuk memastikan Arduino telah terpasang dengan benar dan dapat berkomuniasi dengan interaktif maka ia perlu diuji.

a. Jalankan IDE Arduino dengan menjalankan sebuah file bernama arduino.exe pada lokasi software Arduino.

Walaupun tampak seperti program Windows pada umumnya, namun sebetulnya program ini adalah sebuah program Java. Jika Anda menemukan sebuah pesan kesalahan kemungkinan besar pada komputer belum terinstal Java Runtime Environment (JRE) atau Java Development Kit (JDK). Untuk mendapatkan salah satu software tersebut, silakan men-download-nya dari situs web http://www.oracle.com.

(8)

8 LABORATORIUM MIKROKONTROLER UNIVERSITAS NAROTAMA SURABAYA

c. Jalankan menu File Examples 1.Basic Blink. Ini adalah program sederhana yang fungsinya adalah membuat lampu LED menyala berkedip-kedip seperti yang telah dijelaskan sebelumnya.

d. Pada toolbar klik tombol Upload untuk memuat sketch tersebut ke dalam papan Arduino. /*

Blink

Turns on an LED on for one second, then off for one second, repeatedly. This example code is in the public domain.

*/

// Pin 13 has an LED connected on most Arduino boards. // give it a name:

int led = 13;

// the setup routine runs once when you press reset: void setup() {

// initialize the digital pin as an output. pinMode(led, OUTPUT); }

// the loop routine runs over and over again forever: void loop() {

digitalWrite(led, HIGH); // turn the LED on (HIGH is the voltage level) delay(1000); // wait for a second

digitalWrite(led, LOW); // turn the LED off by making the voltage LOW delay(1000); // wait for a second

(9)

9 LABORATORIUM MIKROKONTROLER UNIVERSITAS NAROTAMA SURABAYA

e. Jika berhasil akan memberikan informasi sebagai berikut

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, sedangkan loop() untuk mengeksekusi bagian 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.

(10)

10 LABORATORIUM MIKROKONTROLER UNIVERSITAS NAROTAMA SURABAYA

{

pinMode(13,OUTPUT);// mengset ‘pin’ 13 sebagai output }

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); // nyalakan ‘pin’ 13 delay(1000); // pause selama 1 detik digitalWrite(13, LOW); // matikan ‘pin’ 13 delay(1000); // pause selama 1 detik }

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; // membuat variable ‘v’ bertipe integer v =analogRead(pot); // baca harga potentiometer

v/=4; // konversi 0-1023 ke 0-255 return v; // return nilai v

}

Pada contoh di atas fungsi tersebut memiliki nilai balik int (integer), karena kalau tidak menghendaki adanya nilai balik maka type function harus void.

{ } 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.

(11)

11 LABORATORIUM MIKROKONTROLER UNIVERSITAS NAROTAMA SURABAYA

/*…*/ 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 = 0;

Contoh

Int inputVariable = 0;//mendefinisikan sebuah variable bernama inputVariable dengan nilai awal 0

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 fungstion 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; //‘value’adalah 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 biteVariable = 180; // mendeklarasikan ‘biteVariable’ sebagai type byte

(12)

12 LABORATORIUM MIKROKONTROLER UNIVERSITAS NAROTAMA SURABAYA

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 32bit 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; // mendeklarasikan ‘floatVariable’ sebagai type float 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.

y = y + 3; x = x - 8; i = i * 5; r = r / 9;

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.

(13)

13 LABORATORIUM MIKROKONTROLER UNIVERSITAS NAROTAMA SURABAYA

x ++; // sama seperti x = x + 1 atau menaikan nilai x sebesar 1 x --; // sama seperti x = x - 1 atau mengurangi nilai x sebesar 1 x += y; // sama seperti x = x + y

x -= y; // sama seperti x = x – y x *= y; // sama seperti x = x * y x /= y; // sama seperti 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 == y; // x sama dengan y x != y; // x tidak sama dengan y x < y; // x leboh kecil dari y x > y; // x lebih besar dari y

x <= y; // x lebih kecil dari sama dengan y x >= y; // x lebih besar dari 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:

Logical AND

If ( x> 0 && x < 5) // bernilai benar apabila kedua operator pembanding terpenuhi Logical OR

If ( x> 0 || y > 0)// bernilai benar apabila salah satu dari operator pembanding terpenuhi

Logical NOT

If ( !x > 0 )// benilai benar apabila ekspresi operator salah 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.

(14)

14 LABORATORIUM MIKROKONTROLER UNIVERSITAS NAROTAMA SURABAYA

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 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; }

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.

(15)

15 LABORATORIUM MIKROKONTROLER UNIVERSITAS NAROTAMA SURABAYA

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); // mengset ‘value’ sama dengan nilai analog pin analogWrite(pin,value)

mengirimkan nilai analog pada pin analog.

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

delay(ms)

Menghentikan program untuk sesaat sesuai dengan yang di kehendaki, satuanya dalam millisecond. Delay(1000);// menunggu selama satu detik

(16)

16 LABORATORIUM MIKROKONTROLER UNIVERSITAS NAROTAMA SURABAYA

millis()

Mengembalikan nilai dalam millisecond dihitung sejak arduino board menyala. Penapungnya harus long integer. Value = millis();// set ‘value’ equal to millis()

Math 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

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

(17)

17 LABORATORIUM MIKROKONTROLER UNIVERSITAS NAROTAMA SURABAYA

BAB II : PERCOBAAN 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.

PERALATAN

1. Sebuah Komputer

2. Satu set trainer mikrokontroler

TEORI DASAR

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 diata dapat 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. Simbol 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

(18)

18 LABORATORIUM MIKROKONTROLER UNIVERSITAS NAROTAMA SURABAYA

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.

Rangkaian Dasar Menyalakan LED (Light Emitting Dioda)

Gambar 2.2. Rangkaian Dasar LED

Besarnya arus maksimum pada LED (Light Emitting Dioda) adalah 20 mA, sehingga nilai resistor harus ditentukan. Dimana besarnya nilai resistor berbanding lurus dengan besarnya tegangan sumber yang digunakan. Secara matematis besarnya nilai resistor pembatas arus LED (Light Emitting Dioda) dapat ditentukan menggunakan persamaan berikut.

Dimana :

R = resistor pembatas arus (Ohm)

Vs = tegangan sumber yang digunakan untuk mensupply tegangan ke LED (volt) 2 volt = tegangan LED (volt)

(19)

19 LABORATORIUM MIKROKONTROLER UNIVERSITAS NAROTAMA SURABAYA

Gambar 2.3. Rangkaian Modul LED

Percobaan 1.

Percobaan led berkdip dan led berjalan (running led) yang dihubungkan pada Input/0utput board Arduino diperlihatkan pada gambar 4 dan gambar 5. Led akan menyala bila dikirimkan data HIGH (‘1’) pada pin 10, karena anoda dari led mendapatkan level tegangan mendekati 5V sedangkan katodanya dihubungkan ke ground (0V).

Gambar 2.4. Rangkaian Percobaan LED Blink

Tuliskan program dibawah ini : //LED BERKEDIP intledPin = 10; void setup() { pinMode(ledPin, OUTPUT); } void loop() { digitalWrite(ledPin, HIGH); delay(1000); digitalWrite(ledPin, LOW); delay(1000); }

(20)

20 LABORATORIUM MIKROKONTROLER UNIVERSITAS NAROTAMA SURABAYA

Percobaan 2.

Untuk aplikasi menggeser LED diperlukan beberapa LED untuk dihubungkan dengan pin mikrokontroler. Rangkaian menggunakan common Katoda, sehingga untuk menyalakan LED membutuhkan nilai logika 1, sedangkan kalo ingin mematikan diberika nilai logika sebsar 0. Rangkailah rangkaian LED 4 bit seperti dibawah ini untuk mengaplikasikan LED bergeser dari kiri ke kanan atau dari kanan ke kiri.

Gambar 2.5. Rangkaian 4 Bit LED

Berikut ini program untuk LED Bergeser //Running LED int ledPin1 = 10; int ledPin2 = 11; int ledPin3= 12; int ledPin4 = 13; void setup() { pinMode(ledPin1, OUTPUT); pinMode(ledPin2, OUTPUT); pinMode(ledPin3, OUTPUT); pinMode(ledPin4, OUTPUT); } void loop() { digitalWrite(ledPin1, HIGH); digitalWrite(ledPin2 LOW); digitalWrite(ledPin3, LOW); digitalWrite(ledPin4, LOW); delay(1000); digitalWrite(ledPin1, LOW); digitalWrite(ledPin2, HIGH); digitalWrite(ledPin3, LOW); digitalWrite(ledPin4, LOW);

(21)

21 LABORATORIUM MIKROKONTROLER UNIVERSITAS NAROTAMA SURABAYA

delay(1000); digitalWrite(ledPin1, LOW); digitalWrite(ledPin2, LOW); digitalWrite(ledPin3, HIGH); digitalWrite(ledPin4, LOW); delay(1000); digitalWrite(ledPin1, LOW); digitalWrite(ledPin2, LOW); digitalWrite(ledPin3, LOW); digitalWrite(ledPin4, HIGH); delay(1000); }

LANGKAH-LANGKAH PERCOBAAN

1. Nyalakan computer dengan program Arduino !

2. Sambungkan Trainer mikrokontroler dengan computer menggunakan kabel USB ! 3. Sambungkan kabel-kabel jumper sesuai dengan praktikum yang dilaksanakan ! 4. Ketiklah program yang diatas pada software Arduino !

5. Lakukan verifikasi terhadap program, apakah terjadi error atau tidak !

6. Jika tidak terjadi error lanjutkan dengan mengupload program ke dalam mikrokontroler ! 7. Amati hasilnya apakah sudah sesuai dengan perintah instruktur atau belum, kalau belum

(22)

22 LABORATORIUM MIKROKONTROLER UNIVERSITAS NAROTAMA SURABAYA

BAB III : PERCOBAAN 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

2. Satu set trainer mikrokontroler

TEORI DASAR

Anda mungkin akrab dengan switch, salah satu jenis saklar yang Anda gunakan setiap hari adalah lampu. Sebuah lampu adalah perangkat sederhana dengan dua posisi, dan mematikan. Ketika di, dua kawat yang terhubung di dalam, yang memungkinkan arus mengalir. Ketika off, dua kabel yang terputus.

Gambar 3.1. Fungsi Saklar

Di sebelah kiri, saklar terbuka dan tidak ada arus mengalir. Di sebelah kanan, saklar ditutup, arus dan lampu menyala.

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 (Lihat gambar 3.2).

(23)

23 LABORATORIUM MIKROKONTROLER UNIVERSITAS NAROTAMA SURABAYA

Gambar 3.2. Simbol dan Komponen Push Button

Percobaan 3.

Percobaan untuk membaca masukan data digital dilakukan dengan menggunakan saklar push botton. Rangkaian percobaan diperlihatkan pada gambar

Gambar 3.3. Rangkaian Saklar dan LED Tuliskan program dibawah ini untuk menguji rangkaian diatas

const int ledPin = 13; const int inputPin = 5; void setup() { pinMode(ledPin, OUTPUT);

pinMode(inputPin, INPUT); }

void loop() {

int val = digitalRead(inputPin); if (val == HIGH) { digitalWrite(ledPin, LOW); } else { digitalWrite(ledPin, HIGH); } }

(24)

24 LABORATORIUM MIKROKONTROLER UNIVERSITAS NAROTAMA SURABAYA

Percobaan 4.

Rangkaialah 4 buah LED dan 4 buah saklar push button untuk aplikasi penekanan tombol dan menyalakan lampu LED maupun menggeser lampu LED. Mula-mula mikrokontroler membaca kondisi saklar kemudian memprosesnya untuk diteruskan ke pin output berupa LED sesuai dengan program yang diberikan.

Gambar 3.4. Saklar Push Button dan LED 4 bit Tuliskan program dibawah ini untuk menguji rangkaian diatas

unsigned int inputPin[] = {2,3,4,5}; unsigned int ledPin[] = {10,11,12,13}; void setup()

{

for(int indeks = 0; indeks < 4; indeks++) {

//declare LED as output

pinMode(ledPin[indeks], OUTPUT); pinMode(inputPin[indeks], INPUT); //mengaktif resistor Pull-Up

digitalWrite(inputPin[indeks],HIGH); }

}

void loop() {

for(int indeks = 0; indeks < 4; indeks++) {

// read input value

(25)

25 LABORATORIUM MIKROKONTROLER UNIVERSITAS NAROTAMA SURABAYA

if (val == LOW) // cek switch ditekan {

// switch ditekan LED on digitalWrite(ledPin[indeks], HIGH); } else { //LED off digitalWrite(ledPin[indeks], LOW); } } }

LANGKAH-LANGKAH PERCOBAAN

1. Nyalakan computer dengan program Arduino !

2. Sambungkan Trainer mikrokontroler dengan computer menggunakan kabel USB ! 3. Sambungkan kabel-kabel jumper sesuai dengan praktikum yang dilaksanakan ! 4. Ketiklah program yang diatas pada software Arduino !

5. Lakukan verifikasi terhadap program, apakah terjadi error atau tidak !

6. Jika tidak terjadi error lanjutkan dengan mengupload program ke dalam mikrokontroler ! 7. Amati hasilnya apakah sudah sesuai dengan perintah instruktur atau belum, kalau belum

(26)

26 LABORATORIUM MIKROKONTROLER UNIVERSITAS NAROTAMA SURABAYA

BAB IV : PERCOBAAN 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. Sebuah Komputer

2. Satu set trainer mikrokontroler

TEORI DASAR

Seven segment merupakan segment-segment yang digunakan untuk menampilkan angka-angka 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)

Gambar 4.1. Skematik Sebuah Seven Segment

Pin 3 dan 8 = untuk mengaktifkan seven segment diberikan logika high (common anode) dan logika low (common cathode). Jenis-jenis Seven Segment:

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).

(27)

27 LABORATORIUM MIKROKONTROLER UNIVERSITAS NAROTAMA SURABAYA

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).

Gambar 4.2. Bentuk Fisik Seven Segment CC dan CA 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.

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. Percobaan 5.

Buatlah rangkaian seperti dibawah ini untuk sebuah seven segment

(28)

28 LABORATORIUM MIKROKONTROLER UNIVERSITAS NAROTAMA SURABAYA

Ketik program berikut dikomputer kemudian lakukan upload pada mikrokontroler const byte numeral[10] = {

//ABCDEFG /dp B11111100, // 0 B01100000, // 1 B11011010, // 2 B11110010, // 3 B01100110, // 4 B10110110, // 5 B00111110, // 6 B11100000, // 7 B11111110, // 8 B11100110, // 9 };

// pins segment dp,G,F,E,D,C,B,A

const int segmentPins[8] = { 5,9,8,7,6,4,3,2}; void setup(){

for(int i=0; i < 8; i++){

pinMode(segmentPins[i], OUTPUT); } }

void loop(){

for(int i=0; i <= 10; i++){ showDigit(i);

delay(1000); }

delay(2000); }

void showDigit( int number){ boolean isBitSet;

for(int segment = 1; segment < 8; segment++){ if( number < 0 || number > 9){

isBitSet = 0; // turn off all segments } else{

// isBitSet will be true if given bit is 1 isBitSet = bitRead(numeral[number], segment);} isBitSet = !isBitSet; //

digitalWrite( segmentPins[segment], isBitSet); }

} Percobaan 6.

Untuk percobaan berikut ini hubungkan rangkaian seven segment 4 bit dengan pin mikrokontroler. Sambungkan C1 dengan dengan pin 11, C2 dengan pin 10, C3 dengan pin 9, dan C4 dengan pin 6, sedangkan datanya pada masing-masing segmen dihubungkan seperti dibawah ini :

Pin pada seven segmen = pin di Arduino segA = A1; //Display pin 14

segB = 3; //Display pin 16

segC = 4; //Display pin 13

segD = 5; //Display pin 3

segE = A0; //Display pin 5

segF = 7; //Display pin 11

(29)

29 LABORATORIUM MIKROKONTROLER UNIVERSITAS NAROTAMA SURABAYA

Gambar 4.4. Rangkaian Seven Segment 4 bit

Ketiklah program dibawah ini kemudian lakukan upload pada mikrokontroler :

int digit1 = 11; //PWM Display pin 1

int digit2 = 10; //PWM Display pin 2

int digit3 = 9; //PWM Display pin 6

int digit4 = 6; //PWM Display pin 8

int segA = A1; //Display pin 14

int segB = 3; //Display pin 16

int segC = 4; //Display pin 13

int segD = 5; //Display pin 3

int segE = A0; //Display pin 5

int segF = 7; //Display pin 11

int segG = 8; //Display pin 15

void setup() { pinMode(segA, OUTPUT); pinMode(segB, OUTPUT); pinMode(segC, OUTPUT); pinMode(segD, OUTPUT); pinMode(segE, OUTPUT); pinMode(segF, OUTPUT); pinMode(segG, OUTPUT); pinMode(digit1, OUTPUT); pinMode(digit2, OUTPUT); pinMode(digit3, OUTPUT); pinMode(digit4, OUTPUT); pinMode(13, OUTPUT); }

(30)

30 LABORATORIUM MIKROKONTROLER UNIVERSITAS NAROTAMA SURABAYA

void loop() {

displayNumber(millis()/1000); }

void displayNumber(int toDisplay) { #define DISPLAY_BRIGHTNESS 500 #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, DIGIT_ON); break; case 2: digitalWrite(digit2, DIGIT_ON); break; case 3: digitalWrite(digit3, DIGIT_ON); break; case 4: digitalWrite(digit4, DIGIT_ON); break; }

//Turn on the right segments for this digit

lightNumber(toDisplay % 10); 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

(31)

31 LABORATORIUM MIKROKONTROLER UNIVERSITAS NAROTAMA SURABAYA

switch (numberToDisplay){ case 0: digitalWrite(segA, SEGMENT_ON); digitalWrite(segB, SEGMENT_ON); digitalWrite(segC, SEGMENT_ON); digitalWrite(segD, SEGMENT_ON); digitalWrite(segE, SEGMENT_ON); digitalWrite(segF, SEGMENT_ON); digitalWrite(segG, SEGMENT_OFF); break; case 1: digitalWrite(segA, SEGMENT_OFF); digitalWrite(segB, SEGMENT_ON); digitalWrite(segC, SEGMENT_ON); digitalWrite(segD, SEGMENT_OFF); digitalWrite(segE, SEGMENT_OFF); digitalWrite(segF, SEGMENT_OFF); digitalWrite(segG, SEGMENT_OFF); break; case 2: digitalWrite(segA, SEGMENT_ON); digitalWrite(segB, SEGMENT_ON); digitalWrite(segC, SEGMENT_OFF); digitalWrite(segD, SEGMENT_ON); digitalWrite(segE, SEGMENT_ON); digitalWrite(segF, SEGMENT_OFF); digitalWrite(segG, SEGMENT_ON); break; case 3: digitalWrite(segA, SEGMENT_ON); digitalWrite(segB, SEGMENT_ON); digitalWrite(segC, SEGMENT_ON); digitalWrite(segD, SEGMENT_ON); digitalWrite(segE, SEGMENT_OFF); digitalWrite(segF, SEGMENT_OFF); digitalWrite(segG, SEGMENT_ON); break; case 4: digitalWrite(segA, SEGMENT_OFF); digitalWrite(segB, SEGMENT_ON); digitalWrite(segC, SEGMENT_ON); digitalWrite(segD, SEGMENT_OFF); digitalWrite(segE, SEGMENT_OFF); digitalWrite(segF, SEGMENT_ON); digitalWrite(segG, SEGMENT_ON); break; case 5: digitalWrite(segA, SEGMENT_ON); digitalWrite(segB, SEGMENT_OFF); digitalWrite(segC, SEGMENT_ON); digitalWrite(segD, SEGMENT_ON); digitalWrite(segE, SEGMENT_OFF); digitalWrite(segF, SEGMENT_ON); digitalWrite(segG, SEGMENT_ON); break;

(32)

32 LABORATORIUM MIKROKONTROLER UNIVERSITAS NAROTAMA SURABAYA

case 6: digitalWrite(segA, SEGMENT_ON); digitalWrite(segB, SEGMENT_OFF); digitalWrite(segC, SEGMENT_ON); digitalWrite(segD, SEGMENT_ON); digitalWrite(segE, SEGMENT_ON); digitalWrite(segF, SEGMENT_ON); digitalWrite(segG, SEGMENT_ON); break; case 7: digitalWrite(segA, SEGMENT_ON); digitalWrite(segB, SEGMENT_ON); digitalWrite(segC, SEGMENT_ON); digitalWrite(segD, SEGMENT_OFF); digitalWrite(segE, SEGMENT_OFF); digitalWrite(segF, SEGMENT_OFF); digitalWrite(segG, SEGMENT_OFF); break; case 8: digitalWrite(segA, SEGMENT_ON); digitalWrite(segB, SEGMENT_ON); digitalWrite(segC, SEGMENT_ON); digitalWrite(segD, SEGMENT_ON); digitalWrite(segE, SEGMENT_ON); digitalWrite(segF, SEGMENT_ON); digitalWrite(segG, SEGMENT_ON); break; case 9: digitalWrite(segA, SEGMENT_ON); digitalWrite(segB, SEGMENT_ON); digitalWrite(segC, SEGMENT_ON); digitalWrite(segD, SEGMENT_ON); digitalWrite(segE, SEGMENT_OFF); digitalWrite(segF, SEGMENT_ON); digitalWrite(segG, SEGMENT_ON); break; case 10: digitalWrite(segA, SEGMENT_OFF); digitalWrite(segB, SEGMENT_OFF); digitalWrite(segC, SEGMENT_OFF); digitalWrite(segD, SEGMENT_OFF); digitalWrite(segE, SEGMENT_OFF); digitalWrite(segF, SEGMENT_OFF); digitalWrite(segG, SEGMENT_OFF); break; } }

LANGKAH-LANGKAH PERCOBAAN

1. Nyalakan computer dengan program Arduino !

2. Sambungkan Trainer mikrokontroler dengan computer menggunakan kabel USB ! 3. Sambungkan kabel-kabel jumper sesuai dengan praktikum yang dilaksanakan ! 4. Ketiklah program yang diatas pada software Arduino !

(33)

33 LABORATORIUM MIKROKONTROLER UNIVERSITAS NAROTAMA SURABAYA

6. Jika tidak terjadi error lanjutkan dengan mengupload program ke dalam mikrokontroler ! 7. Amati hasilnya apakah sudah sesuai dengan perintah instruktur atau belum, kalau belum

(34)

34 LABORATORIUM MIKROKONTROLER UNIVERSITAS NAROTAMA SURABAYA

BAB V : PERCOBAAN 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 5.1. Modul LCD Karakter 2x16 Display karakter pada LCD diatur oleh pin EN, RS dan RW:

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.

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”.

(35)

35 LABORATORIUM MIKROKONTROLER UNIVERSITAS NAROTAMA SURABAYA

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 5.1. Pin LCD dan Fungsi

Pada akhirnya, bus data terdiri dari 4 atau 8 jalur ( bergantung pada mode operasi yang dipilih oleh user ). Pada kasus bus data 8 bit, jalur diacukan sebagai DB0 s/d DB7.

Beberapa perintah dasar yang harus dipahami adalah inisialisasi LCD Character,

Function Set

(36)

36 LABORATORIUM MIKROKONTROLER UNIVERSITAS NAROTAMA SURABAYA

CATATAN: X : Don’t care

DL: Mengatur lebar data

DL=1, Lebar data interface 8 bit ( DB7 s/d DB0) DL=0, Lebar data interface 4 bit ( DB7 s/d DB4)

Ketika menggunakan lebar data 4 bit, data harus dikirimkan dua kali N=1, Display dua baris

N=0, Display satu baris

Entry Mode Set

Mengatur increment/ decrement dan mode geser

Catatan:

I/D: Increment/ decrement dari alamat DDRAM dengan 1 ketika kode karakter dituliskan ke DDRAM. I/D = “0”, decrement

I/D= “1”, increment

S: Geser keseluruhan display kekanan dan kekiri S=1, geser kekiri atau kekanan bergantung pada I/D S=0, display tidak bergeser

Display On/ Off Cursor

Mengatur status display ON atau OFF, cursor ON/ OFF dan fungsi Cursor Blink

D : Mengatur display D = 1, Display is ON D = 0, Display is OFF

Pada kasus ini data display masih tetap berada di DDRAM, dan dapat ditampilkan kembali secara langsung dengan mengatur D=1.

(37)

37 LABORATORIUM MIKROKONTROLER UNIVERSITAS NAROTAMA SURABAYA

C : Menampilkan kursor C = 1, kursor ditampilkan C = 0, kursor tidak ditampilkan

B : Karakter ditunjukkan dengan kursor yang berkedip B=1, kursor blink

Clear Display

Perintah ini hapus layar

Geser Kursor dan Display

Geser posisi kursor atau display ke kanan atau kekiri tanpa menulis atau baca data display. Fungsi ini digunakan untuk koreksi atau pencarian display

Catatan : x = Dont care

Memori LCD

1. DDRAM ( Display Data RAM )

Memori DDRAM digunakan untuk menyimpan karakter yang akan ditampilkan. Semua teks yang kita tuliskan ke modul LCD adalah disimpan didalam memory ini, dan modul LCD secara berturutan membaca memory ini untuk menampilkan teks ke modul LCD itu sendiri.

(38)

38 LABORATORIUM MIKROKONTROLER UNIVERSITAS NAROTAMA SURABAYA

Pada peta memori tersebut, daerah yang berwarna kuning ( 00 s/d 0F dan 40 s/d 4F ) adalah display yang tampak. Sebagaimanan yang anda lihat, jumlahnya sebanyak 16 karakter per baris dengan dua baris. Angka pada setiap kotak adalah alamat memori yang bersesuaian dengan posisi dari layar. Demikianlah karakter pertama di sudut kiri atas adalah menempati alamat 00h. Posisi karakter berikutnya adalah alamat 01h dan seterusnya. Akan tetapi, karakter pertama dari baris 2 sebagaimana yang ditunjukkan pada peta memori adalah pada alamat 40h. Dimikianlah kita perlu untuk mengirim sebuah perintah ke LCD untuk mangatur letak posisi kursor pada baris dan kolom tertentu.

Instruksi Set Posisi Kursor adalah 80h. Untuk ini kita perlu menambahkan alamat lokasi dimana kita berharap untuk menempatkan kursor.Sebagai contoh, kita ingin menampilkan kata ”World” pada baris ke dua pada posisi kolom ke sepuluh. Sesuai peta memori, posisi karakter pada kolom 11 dari baris ke dua, mempunyai alamat 4Ah, sehingga sebelum kita tulis kata ”World” pada LCD, kita harus mengirim instruksi set posisi kursor, dan perintah untuk instruksi ini adalah 80h ditambah dengan alamat 80h+4Ah =0Cah. Sehingga dengan mengirim perintah Cah ke LCD, akan menempatkan kursor pada baris kedua dan kolom ke 11 dari DDRAM.

CGROM ( Character Generator ROM )

Sebuah peta karakter yang dapat ditampilkan, sesuai dengan lokasi dari masing-masing karakter.

(39)

39 LABORATORIUM MIKROKONTROLER UNIVERSITAS NAROTAMA SURABAYA

(40)

40 LABORATORIUM MIKROKONTROLER UNIVERSITAS NAROTAMA SURABAYA

Percobaan 7.

Hubungkan Pin LCD dengan pin Mikrokontroler seperti ditunjukkan pada gambar dibawah ini.

Gambar 5.2. Hubungan Pin LCD dan pin Mikrokontroler Arduino

Ketik Program dibawah ini dan lihat hasilnya pada LCD 2X16

#include <LiquidCrystal.h>

// initialize the library with the numbers of the interface pins LiquidCrystal lcd(8,9,4,5,6,7); void setup() { lcd.begin(16,2); lcd.setCursor(0,0); lcd.print("Hello World!"); lcd.setCursor(0,1); lcd.print("FasilkomNarotama"); } void loop() { }

Menampilkan angka dalam kisaran 0-9 dari samping yang berlawanan (di baris kiri atas). Selanjutnya, menampilkan nomor yang sama di baris bawah, tapi mulai dari kanan.

#include <LiquidCrystal.h>

// initialize the library with the numbers of the interface pins LiquidCrystal lcd(8,9,4,5,6,7);

void setup() {

// set up the LCD's number of columns and rows: lcd.begin(16,2);

}

void loop() {

(41)

41 LABORATORIUM MIKROKONTROLER UNIVERSITAS NAROTAMA SURABAYA

lcd.setCursor(0, 0); // print from 0 to 9:

for (int thisChar = 0; thisChar < 10; thisChar++) { lcd.print(thisChar);

delay(500); }

// set the cursor to (16,1): lcd.setCursor(16,1);

// set the display to automatically scroll: lcd.autoscroll();

// print from 0 to 9:

for (int thisChar = 0; thisChar < 10; thisChar++) { lcd.print(thisChar);

delay(500); }

// turn off automatic scrolling lcd.noAutoscroll();

// clear screen for the next loop: lcd.clear();

}

Ketik program dibawah ini untuk menampilkan “I ♥ Fasilkom”

#include <LiquidCrystal.h>

// initialize the library with the numbers of the interface pins LiquidCrystal lcd(8,9,4,5,6,7);

// make some custom characters: byte heart[8] = { 0b00000, 0b01010, 0b11111, 0b11111, 0b11111, 0b01110, 0b00100, 0b00000 }; byte smiley[8] = { 0b00000, 0b00000, 0b01010, 0b00000, 0b00000, 0b10001, 0b01110, 0b00000 };

(42)

42 LABORATORIUM MIKROKONTROLER UNIVERSITAS NAROTAMA SURABAYA

byte frownie[8] = { 0b00000, 0b00000, 0b01010, 0b00000, 0b00000, 0b00000, 0b01110, 0b10001 }; byte armsDown[8] = { 0b00100, 0b01010, 0b00100, 0b00100, 0b01110, 0b10101, 0b00100, 0b01010 }; byte armsUp[8] = { 0b00100, 0b01010, 0b00100, 0b10101, 0b01110, 0b00100, 0b00100, 0b01010 }; void setup() {

// create a new character lcd.createChar(1, heart); // create a new character lcd.createChar(2, smiley); // create a new character lcd.createChar(3, frownie); // create a new character lcd.createChar(4, armsDown); // create a new character lcd.createChar(5, armsUp);

// set up the lcd's number of columns and rows: lcd.begin(16, 2);

// Print a message to the lcd. lcd.print("I ");

(43)

43 LABORATORIUM MIKROKONTROLER UNIVERSITAS NAROTAMA SURABAYA

lcd.print(" Fasilkom "); lcd.write(2); } void loop() { lcd.setCursor(4, 1);

lcd.write(4); // draw the little man, arms down: lcd.setCursor(4, 1);

delay(400); // wait 400ms

lcd.write(5); // draw the little man, arms up: delay(400); // wait 400ms

}

Contoh sederhana untuk menampilkan symbol “hati”

#include <LiquidCrystal.h> LiquidCrystal lcd(8,9,4,5,6,7); byte heart[8] = { 0b00000, 0b01010, 0b11111, 0b11111, 0b11111, 0b01110, 0b00100, 0b00000 }; void setup() { lcd.createChar(1, heart); lcd.write(1); }

Teks muncul, program akan menunggu setengah detik, dan teks menghilang. Setelah itu, loop seluruh program.

(44)

44 LABORATORIUM MIKROKONTROLER UNIVERSITAS NAROTAMA SURABAYA

#include <LiquidCrystal.h> LiquidCrystal lcd(8,9,4,5,6,7);

void setup() {

lcd.begin(16, 2); // set up the LCD's number of columns and rows

lcd.setCursor(0,0); // First line lcd.print("Blinking");

lcd.setCursor(0,1); // Second line lcd.print(" sentence :)");

}

void loop() {

lcd.noDisplay(); // Turn OFF the display delay(500); // Wait 500 ms

lcd.display(); // Turn ON the display delay(500); // Wait 500 ms

}

Teks "Hello world!" Ditampilkan, yang dipindahkan antara tepi layar, dari kanan ke kiri.

#include <LiquidCrystal.h> LiquidCrystal lcd(8,9,4,5,6,7); void setup() { lcd.begin(16, 2); lcd.print("Hello, world!"); delay(1000); } void loop() {

// scroll 13 positions (string length) to the left // to move it offscreen left:

for (int positionCounter = 0; positionCounter < 13; positionCounter++) {

// scroll one position left: lcd.scrollDisplayLeft(); // wait a bit:

delay(150); }

// scroll 29 positions (string length + display length) to the right

// to move it offscreen right:

for (int positionCounter = 0; positionCounter < 29; positionCounter++) {

// scroll one position right: lcd.scrollDisplayRight();

(45)

45 LABORATORIUM MIKROKONTROLER UNIVERSITAS NAROTAMA SURABAYA

// wait a bit: delay(150); }

// scroll 16 positions (display length + string length) to the left

// to move it back to center:

for (int positionCounter = 0; positionCounter < 16; positionCounter++) {

// scroll one position left: lcd.scrollDisplayLeft(); // wait a bit:

delay(150); }

// delay at the end of the full loop: delay(1000);

}

LANGKAH-LANGKAH PERCOBAAN

1. Nyalakan computer dengan program Arduino !

2. Sambungkan Trainer mikrokontroler dengan computer menggunakan kabel USB ! 3. Sambungkan kabel-kabel jumper sesuai dengan praktikum yang dilaksanakan ! 4. Ketiklah program yang diatas pada software Arduino !

5. Lakukan verifikasi terhadap program, apakah terjadi error atau tidak !

6. Jika tidak terjadi error lanjutkan dengan mengupload program ke dalam mikrokontroler ! 7. Amati hasilnya apakah sudah sesuai dengan perintah instruktur atau belum, kalau belum

(46)

46 LABORATORIUM MIKROKONTROLER UNIVERSITAS NAROTAMA SURABAYA

BAB VI : PERCOBAAN KEYPAD

TUJUAN:

1. Mahasiswa memahami rangkaian interface keypad 4x4 dengan mikrokontroller 2. Mahasiswa memahami library Arduino untuk pengambilan data keypad

3. Mahasiswa memahami library Arduino untuk pengambilan data keypad dan mengeluarkan ke LCD Karakter

PERALATAN

1. Sebuah Komputer

2. Satu set trainer mikrokontroler

DASAR TEORI

Keypad sering digunakan sebagai suatu input pada beberapa peralatan yang berbasis mikroprosessor atau mikrokontroller. Keypad sesungguhnya terdiri dari sejumlah saklar, yang terhubung sebagai baris dan kolom dengan susuan seperti yang ditunjukkan pada gambar 6.1. Agar mikrokontroller dapat melakukan scan keypad, maka port mengeluarkan salah satu bit dari 4 bit yang terhubung pada kolom dengan logika low “0” dan selanjutnya membaca 4 bit pada baris untuk menguji jika ada tombol yang ditekan pada kolom tersebut. Sebagai konsekuensi, selama tidak ada tombol yang ditekan, maka mikrokontroller akan melihat sebagai logika high “1” pada setiap pin yang terhubung ke baris.

Gambar 6.1. Skema Keypad 4X4

Konstruksi matrix keypad 4×4 diatas cukup sederhana, yaitu terdiri dari 4 baris dan 4 kolom dengan keypad berupas saklar push buton yang diletakan disetiap persilangan kolom dan barisnya. Rangkaian matrix keypad diatas terdiri dari 16 saklar push buton dengan konfigurasi 4 baris dan 4 kolom. 8 line yang terdiri dari 4 baris dan 4 kolom tersebut dihubungkan dengan port mikrokontroler 8 bit. Sisi baris dari matrix keypad ditandai dengan nama Row1, Row2, Row3 dan Row4 kemudian sisi kolom ditandai

(47)

47 LABORATORIUM MIKROKONTROLER UNIVERSITAS NAROTAMA SURABAYA

dengan nama Col1, Col2, Col3 dan Col4. Sisi input atau output dari matrix keypad 4×4 ini tidak mengikat, dapat dikonfigurasikan kolom sebagi input dan baris sebagai output atau sebaliknya tergantung programernya.

Proses Scaning Matrix Keypad 4×4 Untuk Mikrokontroler Proses scaning untuk membaca penekanan tombol pada matrix keypad 4×4 untuk mikrokontroler diatas dilakukan secara bertahap kolom demi kolom dari kolom pertama sampai kolom ke 4 dan baris pertama hingga baris ke 4. Program untuk scaning matrix keypad 4×4 dapat bermacam-macam, tapi pada intinya sama. Misal kita asumsikan keyapad aktif LOW (semua line kolom dan baris dipasang resistor pull-up) dan dihubungkan ke port mikrokontrolr dengan jalur kolom adalah jalur input dan jalur baris adalah jalur output maka proses scaning matrix keypad 4×4 diatas dapat dituliskan sebagai berikut. Mengirimkan logika Low untuk kolom 1 (Col1) dan logika HIGH untuk kolom yang lain kemudian membaca data baris, misal tombol SW1 ditekan maka data baris pertama (Row1) akan LOW sehingga data baris yang dibaca adalah 0111, atau tombol yang ditekan tombol SW5 maka data pada baris ke 2 akan LOW sehingga data yang terbaca 1011, atau tombol SW9 yang ditekan sehingga data yang terbaca 1101, atau tombol SW13 yang ditekan maka data yang dibaca adalah 1110 dan atau tidak ada tombol pada kolom pertama yang di tekan maka data pembacaan baris akan 1111. Mengirimkan logika Low untuk kolom 2 (Col2) dan logika HIGH untuk kolom yang lain kemudian membaca data baris, misal tombol SW1 ditekan maka data baris pertama (Row1) akan LOW sehingga data baris yang dibaca adalah 0111, atau tombol yang ditekan tombol SW5 maka data pada baris ke 2 akan LOW sehingga data yang terbaca 1011, atau tombol SW9 yang ditekan sehingga data yang terbaca 1101, atau tombol SW13 yang ditekan maka data yang dibaca adalah 1110 dan atau tidak ada tombol pada kolom pertama yang di tekan maka data pembacaan baris akan 1111. Mengirimkan logika Low untuk kolom 3 (Col3) dan logika HIGH untuk kolom yang lain kemudian membaca data baris, misal tombol SW1 ditekan maka data baris pertama (Row1) akan LOW sehingga data baris yang dibaca adalah 0111, atau tombol yang ditekan tombol SW5 maka data pada baris ke 2 akan LOW sehingga data yang terbaca 1011, atau tombol SW9 yang ditekan sehingga data yang terbaca 1101, atau tombol SW13 yang ditekan maka data yang dibaca adalah 1110 dan atau tidak ada tombol pada kolom pertama yang di tekan maka data pembacaan baris akan 1111. Mengirimkan logika Low untuk kolom 4 (Col4) dan logika HIGH untuk kolom yang lain kemudian membaca data baris, misal tombol SW1 ditekan maka data baris pertama (Row1) akan LOW sehingga data baris yang dibaca adalah 0111, atau tombol yang ditekan tombol SW5 maka data pada baris ke 2 akan LOW sehingga data yang terbaca 1011, atau tombol SW9 yang ditekan sehingga data yang terbaca 1101, atau tombol SW13 yang ditekan maka data yang dibaca adalah 1110 dan atau tidak ada tombol pada kolom pertama yang di tekan maka data pembacaan baris akan 1111. Kemudian data pembacaan baris ini diolah sebagai

(48)

48 LABORATORIUM MIKROKONTROLER UNIVERSITAS NAROTAMA SURABAYA

pembacaan data penekanan tombol keypad. Sehingga tiap tombol pada matrix keypad 4×4 diatas dengan teknik scaning tersebut akan menghasilkan data penekanan tiap-tiap tombol sebagai berikut.

SW1 = 0111 0111 SW9 = 0111 1101 SW2 = 1011 0111 SW10 = 1011 1101 SW3 = 1101 0111 SW11 = 1101 1101 SW4 = 1110 0111 SW12 = 1110 1101 SW5 = 0111 1011 SW13 = 0111 1110 SW6 = 1011 1011 SW14 = 1011 1110 SW7 = 1101 1011 SW15 = 1101 1110 SW8 = 1110 1011 SW16 = 1110 1110

Data port mikrokontroler, misalkan pada SW2 = 1011 0111 tersebut terbagi dalam nible atas dan nible bawah dimana data nible atas (1011) merupakan data yang kita kirimkan sedangkan data nible bawah (0111) adalah data hasil pembacaan penekanan tombol keypad SW2 pada proses scaning matrix keypad 4×4 diatas.

Gambar 6.2. Interfacing Keypad 4X4 ke Mikrokontroler Percobaan 8

Untuk memahami prinsip kerja dari sebuah keypad dengan program Arduino dapat dicoba untuk program dibawah ini.

#include <Keypad.h>

const byte ROWS = 4; //four rows const byte COLS = 4; //four columns char keys[ROWS][COLS] = {

(49)

49 LABORATORIUM MIKROKONTROLER UNIVERSITAS NAROTAMA SURABAYA

{'4','5','6', 'B'}, {'7','8','9', 'C'}, {'*','0','#', 'D'} };

byte rowPins[ROWS] = {5, 4, 3, 2}; //connect to the row pinouts of the keypad byte colPins[COLS] = {9, 8, 7, 6}; //connect to the column pinouts of the keypad

Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );

void setup(){ Serial.begin(9600); }

void loop(){

char key = keypad.getKey();

if (key){

Serial.println(key); }

}

Untuk contoh program yang kedua dapat diketikkan program berikut ini. #include <Keypad.h>

const byte ROWS = 4; //four rows const byte COLS = 4; // four columns char keys[ROWS][COLS] = { {'1','2','3','A'}, {'4','5','6','B'}, {'7','8','9','C'}, {'*','0','#','D'} };

byte rowPins[ROWS] = {5, 4, 3, 2}; //connect to the row pinouts of the keypad byte colPins[COLS] = {9, 8, 7, 6}; //connect to the column pinouts of the keypad Keypad kpd = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS ); unsigned long loopCount = 0;

unsigned long timer_t = 0; void setup(){

(50)

50 LABORATORIUM MIKROKONTROLER UNIVERSITAS NAROTAMA SURABAYA

// Try playing with different debounceTime settings to see how it affects // the number of times per second your loop will run. The library prevents // setting it to anything below 1 millisecond.

kpd.setDebounceTime(10); // setDebounceTime(mS) }

void loop(){

char key = kpd.getKey();

// Report the number of times through the loop in 1 second. This will give // you a relative idea of just how much the debounceTime has changed the // speed of your code. If you set a high debounceTime your loopCount will // look good but your keypresses will start to feel sluggish.

if ((millis() - timer_t) > 1000) {

Serial.print("Your loop code ran "); Serial.print(loopCount);

Serial.println(" times over the last second"); loopCount = 0; timer_t = millis(); } loopCount++; if(key) Serial.println(key); }

Berikut ini contoh untuk multi key dari sebuah keypad #include <Keypad.h>

const byte ROWS = 4; //four rows const byte COLS = 4; //four columns char keys[ROWS][COLS] = { {'1','2','3','A'}, {'4','5','6','B'}, {'7','8','9','C'}, {'*','0','#','D'} };

byte rowPins[ROWS] = {5, 4, 3, 2}; //connect to the row pinouts of the kpd byte colPins[COLS] = {9, 8, 7, 6}; //connect to the column pinouts of the kpd Keypad kpd = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS ); unsigned long loopCount;

unsigned long startTime; String msg;

(51)

51 LABORATORIUM MIKROKONTROLER UNIVERSITAS NAROTAMA SURABAYA

void setup() { Serial.begin(9600); loopCount = 0; startTime = millis(); msg = ""; } void loop() { loopCount++; if ( (millis()-startTime)>5000 ) {

Serial.print("Average loops per second = "); Serial.println(loopCount/5);

startTime = millis(); loopCount = 0; }

// Fills kpd.key[ ] array with up-to 10 active keys. // Returns true if there are ANY active keys. if (kpd.getKeys())

{

for (int i=0; i<LIST_MAX; i++) // Scan the whole key list. {

if ( kpd.key[i].stateChanged ) // Only find keys that have changed state. {

switch (kpd.key[i].kstate) { // Report active key state : IDLE, PRESSED, HOLD, or RELEASED case PRESSED: msg = " PRESSED."; break; case HOLD: msg = " HOLD."; break; case RELEASED: msg = " RELEASED."; break; case IDLE: msg = " IDLE."; } Serial.print("Key "); Serial.print(kpd.key[i].kchar); Serial.println(msg); } } } } // End loop

LANGKAH-LANGKAH PERCOBAAN

(52)

52 LABORATORIUM MIKROKONTROLER UNIVERSITAS NAROTAMA SURABAYA

1. Nyalakan computer dengan program Arduino !

2. Sambungkan Trainer mikrokontroler dengan computer menggunakan kabel USB ! 3. Sambungkan kabel-kabel jumper sesuai dengan praktikum yang dilaksanakan ! 4. Ketiklah program yang diatas pada software Arduino !

5. Lakukan verifikasi terhadap program, apakah terjadi error atau tidak !

6. Jika tidak terjadi error lanjutkan dengan mengupload program ke dalam mikrokontroler ! 7. Amati hasilnya apakah sudah sesuai dengan perintah instruktur atau belum, kalau belum

Gambar

Gambar 1.1. Skema Arduino Uno R3
Gambar 1.3. Arsitektur Arduino Uno R3
Gambar 2.4. Rangkaian Percobaan LED Blink
Gambar 2.5. Rangkaian 4 Bit LED
+7

Referensi

Dokumen terkait

Belum digunakan SPM, Indikator Kinerja, Analisis Standar Belanja dan juga Standar Satuan Harga, dalam perencanaan anggaran belanja bantuan sosial di Kabupaten

Ada baiknya dipertimbangkan sekolah untuk membentuk Forum Teknologi Komunikasi dan Informasi atau sejensinya yang akan berfungsi menjadi wahana bagi para siswa dan guru

73 1500005324 Lina Fauziah PKM-GT Pendidikan Guru Sekolah Dasar Ardian Bakhtiar Rivai 74 1500005325 Umi Latifah PKM-GT Pendidikan Guru Sekolah Dasar Hengkang Bara Saputro 75

Berdasarkan uraian diatas dapat disimpulkan bahwa kemampuan berkomunikasi interpersonal pada pasangan suami istri mempunyai pengaruh yang cukup besar bagi

Penelitian ini juga dilakukan secara potong lintang dengan cara mewawancarai pecandu yang mengikuti program pertukaran jarum suntik dan tidak serta sejauh mana kesiapan

Menyatakan bahwa skripsi yang berjudul: “Analisis Faktor Pendukung Implementasi SIMDA dan Pengaruhnya Terhadap Kualitas Laporan Keuangan Pada SKPD ( Penelitian Pada SKPD Di

Neraca pembayaran adalah catatan dari semua transaksi ekonomi internasional yang meliputi perdagangan, keuangan dan moneter antara penduduk dalam negeri dengan penduduk

Dalam pemenuhan kebutuhan fasilitas kota itu walaupun masing- masing fasilitas mempunyai fungsi yang berbeda tetapi mengingat perkembangan kota Cilegon yang pesat sedangkan wilayah