Lampiran Program Arduino Uno

32
1 1. Pengenalan Arduino 1.1 Sejarah Singkat Arduino bermula pada tahun 2005, sebagai sebuah project bagi para pelajar di Interaction Design Institute Ivrea di Ivrea, Italia. Pada saat itu para pelajar menggubakan BASIC Stamp yang cukup mahal bagi pelajar. Adalah Massimo Banzi, salah satu pendiri Arduino, yang sekaligus mengajar di Ivrea, mencoba menyelesaikan persoalan tersebut. Asal mula nama Arduino berasal dari nama sebuah bar yang ada di Ivrea, dimana para pendiri Arduino biasa berkumpul disana. Untuk hardware wiring awal dirancang oleh Hernando Barragan. Bersama dengan David Cuartielles, mulai memperkenalkan Arduino. 1.2 Tentang Arduino Arduino adalah pengendali mikro single-board yang bersifat open- source, diturunkan dari Wiring platform, dirancang untuk memudahkan penggunaan elektronik dalam berbagai bidang. Hardwarenya memiliki prosesor Atmel AVR dan softwarenya memiliki bahasa pemrograman sendiri. Saat ini Arduino sangat populer di seluruh dunia. Banyak pemula yang belajar mengenal robotika dan elektronika lewat Arduino karena mudah dipelajari. Tapi tidak hanya pemula, para hobbyist atau profesional pun ikut senang mengembangkan aplikasi elektronik menggunakan Arduino. Bahasa yang dipakai dalam Arduino bukan assembler yang relatif sulit, tetapi bahasa C yang disederhanakan dengan bantuan pustaka-pustaka (libraries) Arduino. Arduino juga menyederhanakan proses bekerja dengan mikrokontroler, sekaligus menawarkan berbagai macam kelebihan antara lain: * Murah – Papan (perangkat keras) Arduino biasanya dijual relatif murah (antara 125ribu hingga 400ribuan rupiah saja) dibandingkan dengan platform mikrokontroler pro lainnya. Jika ingin lebih murah lagi, tentu bisa dibuat sendiri dan itu sangat mungkin sekali karena semua sumber daya untuk membuat sendiri Arduino tersedia lengkap di website Arduino bahkan di website-website komunitas Arduino lainnya. Tidak hanya cocok untuk Windows, namun juga cocok bekerja di Linux. * Sederhana dan mudah pemrogramannya – Perlu diketahui bahwa lingkungan pemrograman di Arduino mudah digunakan untuk pemula, dan cukup fleksibel bagi mereka yang sudah tingkat lanjut. Untuk guru/dosen, Arduino berbasis pada lingkungan pemrograman Processing, Handbook Pelatihan Arduino 2015 by 2ndProElectronics dan Lab Elektronika Terapan D3 Teknik Elektro ITS

Transcript of Lampiran Program Arduino Uno

Page 1: Lampiran Program Arduino Uno

1

1. Pengenalan Arduino

1.1 Sejarah SingkatArduino bermula pada tahun 2005, sebagai sebuah project bagi para pelajar di Interaction Design Institute Ivrea di Ivrea, Italia. Pada saat itu para pelajar menggubakan BASIC Stamp yang cukup mahal bagi pelajar. Adalah Massimo Banzi, salah satu pendiri Arduino, yang sekaligus mengajar di Ivrea, mencoba menyelesaikan persoalan tersebut. Asal mula nama Arduino berasal dari nama sebuah bar yang ada di Ivrea, dimana para pendiri Arduino biasa berkumpul disana. Untuk hardware wiring awal dirancang oleh Hernando Barragan. Bersama dengan David Cuartielles, mulai memperkenalkan Arduino.

1.2 Tentang ArduinoArduino adalah pengendali mikro single-board yang bersifat open-source, diturunkan dari Wiring platform, dirancang untuk memudahkan penggunaan elektronik dalam berbagai bidang. Hardwarenya memiliki prosesor Atmel AVR dan softwarenya memiliki bahasa pemrograman sendiri. Saat ini Arduino sangat populer di seluruh dunia. Banyak pemula yang belajar mengenal robotika dan elektronika lewat Arduino karena mudah dipelajari. Tapi tidak hanya pemula, para hobbyist atau profesional pun ikut senang mengembangkan aplikasi elektronik menggunakan Arduino. Bahasa yang dipakai dalam Arduino bukan assembler yang relatif sulit, tetapi bahasa C yang disederhanakan dengan bantuan pustaka-pustaka (libraries) Arduino. Arduino juga menyederhanakan proses bekerja dengan mikrokontroler, sekaligus menawarkan berbagai macam kelebihan antara lain:* Murah – Papan (perangkat keras) Arduino biasanya dijual relatif murah (antara 125ribu hingga 400ribuan rupiah saja) dibandingkan dengan platform mikrokontroler pro lainnya. Jika ingin lebih murah lagi, tentu bisa dibuat sendiri dan itu sangat mungkin sekali karena semua sumber daya untuk membuat sendiri Arduino tersedia lengkap di website Arduino bahkan di website-website komunitas Arduino lainnya. Tidak hanya cocok untuk Windows, namun juga cocok bekerja di Linux.

* Sederhana dan mudah pemrogramannya – Perlu diketahui bahwa lingkungan pemrograman di Arduino mudah digunakan untuk pemula, dan cukup fleksibel bagi mereka yang sudah tingkat lanjut. Untuk guru/dosen, Arduino berbasis pada lingkungan pemrograman Processing, sehingga jika mahasiswa atau murid-murid terbiasa menggunakan Processing tentu saja akan mudah menggunakan Arduino.

* Perangkat lunaknya Open Source – Perangkat lunak Arduino IDE dipublikasikan sebagai Open Source, tersedia bagi para pemrogram berpengalaman untuk pengembangan lebih lanjut. Bahasanya bisa dikembangkan lebih lanjut melalui pustaka-pustaka C++ yang berbasis pada Bahasa C untuk AVR.

Handbook Pelatihan Arduino 2015 by 2ndProElectronics dan Lab Elektronika Terapan D3 Teknik Elektro ITS

Page 2: Lampiran Program Arduino Uno

2

* Perangkat kerasnya Open Source – Perangkat keras Arduino berbasis mikrokontroler ATMEGA8, ATMEGA168, ATMEGA328 dan ATMEGA1280 (yang terbaru ATMEGA2560). Dengan demikian siapa saja bisa membuatnya (dan kemudian bisa menjualnya) perangkat keras Arduino ini, apalagi bootloader tersedia langsung dari perangkat lunak Arduino IDE-nya. Bisa juga menggunakan breadoard untuk membuat perangkat Arduino beserta periferal-periferal lain yang dibutuhkan.

1.3 Feature KelebihanArduino dapat digunakan untuk mengembangkan suatu sistem interaktif, yang menerima input dari bermacam switch atau sensor, dan mengendalikan bermacam hal semisal lampu, motor, dan output lainnya. Ada berbagai macam jenis microcontroller dan platform yang tersedia untuk keperluan komputasi fisik. Arduino dirancang secara sederhana dan mudah dipelajari, dikembangkan untuk keperluan project tugas sekolah, kuliah, ataupun tugas akhir. Adapun kelebihan yang coba ditawarkan Arduino antara lain. Relatif murah

Bersifat cross-platform dapat dijalankan di berbagai operating system seperti Windows, Macintosh OSX, dan Linux

Sederhana, dengan programming environment turunan dari bahasa pemrograman C yang mudah dimengerti

Baik hardware maupun software bersifat open source

2. Bahasa Pemrograman dan Struktur PemrogramanArduino menggunakan pemrograman dengan bahasa C. Berikut ini adalah sedikit penjelasan yang ditujukan kepada anda yang hanya mempunyai sedikit pengalaman pemrograman dan membutuhkan penjelasan singkat mengenai karakter bahasa C dan software Arduino. Untuk penjelasan yang lebih mendalam, web Arduino.cc adalah sumber yang lengkap.

2.1 Struktur

Setiap program Arduino (biasa disebut sketch) mempunyai dua buah fungsi yang harus ada.

void setup( ) {   } o Semua kode didalam kurung kurawal akan dijalankan hanya satu kali ketika

program Arduino dijalankan untuk pertama kalinya. void loop( ) {   }

o Fungsi ini akan dijalankan setelah setup (fungsi void setup) selesai. Setelah dijalankan satu kali fungsi ini akan dijalankan lagi, dan lagi secara terus menerus sampai catu daya (power) dilepaskan.

Handbook Pelatihan Arduino 2015 by 2ndProElectronics dan Lab Elektronika Terapan D3 Teknik Elektro ITS

Page 3: Lampiran Program Arduino Uno

3

Syntax

Berikut ini adalah elemen bahasa C yang dibutuhkan untuk format penulisan.

//(komentar satu baris) o Kadang diperlukan untuk memberi catatan pada diri sendiri apa arti dari kode-

kode yang dituliskan. Cukup menuliskan dua buah garis miring dan apapun yang kita ketikkan dibelakangnya akan diabaikan oleh program.

/*   */(komentar banyak baris) o Jika anda punya banyak catatan, maka hal itu dapat dituliskan pada beberapa baris

sebagai komentar. Semua hal yang terletak di antara dua simbol tersebut akan diabaikan oleh program.

{   }(kurung kurawal) o Digunakan untuk mendefinisikan kapan blok program mulai dan berakhir

(digunakan juga pada fungsi dan pengulangan). ;(titk koma)

o Setiap baris kode harus diakhiri dengan tanda titik koma (jika ada titik koma yang hilang maka program tidak akan bisa dijalankan).

Variabel

Sebuah program secara garis besar dapat didefinisikan sebagai instruksi untuk memindahkan angka dengan cara yang cerdas. Variabel inilah yang digunakan untuk memindahkannya.

int (integer) o Digunakan untuk menyimpan angka dalam 2 byte (16 bit). Tidak mempunyai

angka desimal dan menyimpan nilai dari -32,768 dan 32,767. long (long)

o Digunakan ketika integer tidak mencukupi lagi. Memakai 4 byte (32 bit) dari memori (RAM) dan mempunyai rentang dari -2,147,483,648 dan 2,147,483,647.

boolean (boolean) o Variabel sederhana yang digunakan untuk menyimpan nilai TRUE (benar) atau

FALSE (salah). Sangat berguna karena hanya menggunakan 1 bit  dari RAM. float (float)

o Digunakan untuk angka desimal (floating point). Memakai 4 byte (32 bit) dari RAM dan mempunyai rentang dari -3.4028235E+38 dan 3.4028235E+38.

char (character) o Menyimpan 1 karakter menggunakan kode ASCII (misalnya ‘A’ = 65). Hanya

memakai 1 byte (8 bit) dari RAM.

Handbook Pelatihan Arduino 2015 by 2ndProElectronics dan Lab Elektronika Terapan D3 Teknik Elektro ITS

Page 4: Lampiran Program Arduino Uno

4

2.2 Operator Matematika

Operator yang digunakan untuk memanipulasi angka (bekerja seperti matematika yang sederhana).

= o Membuat sesuatu menjadi sama dengan nilai yang lain (misalnya: x = 10 * 2, x

sekarang sama dengan 20). %

o Menghasilkan sisa dari hasil pembagian suatu angka dengan angka yang lain (misalnya: 12 % 10, ini akan menghasilkan angka 2).

+ o Penjumlahan

- o Pengurangan

* o Perkalian

/ o Pembagian

2.3 Operator Pembanding

Digunakan untuk membandingkan nilai logika.

== o Sama dengan (misalnya: 12 == 10 adalah FALSE (salah) atau 12 == 12 adalah

TRUE (benar)) !=

o Tidak sama dengan (misalnya: 12 != 10 adalah TRUE (benar) atau 12 != 12 adalah FALSE (salah))

< o Lebih kecil dari (misalnya: 12 < 10 adalah FALSE (salah) atau 12 < 12 adalah

FALSE (salah) atau 12 < 14 adalah TRUE (benar)) >

o Lebih besar dari (misalnya: 12 > 10 adalah TRUE (benar) atau 12 > 12 adalah FALSE (salah) atau 12 > 14 adalah FALSE (salah))

2.4 Struktur Pengaturan

Program sangat tergantung pada pengaturan apa yang akan dijalankan berikutnya, berikut ini adalah elemen dasar pengaturan (banyak lagi yang lain dan bisa dicari di internet).

1. if..else, dengan format seperti berikut ini:

if (kondisi) { }

Handbook Pelatihan Arduino 2015 by 2ndProElectronics dan Lab Elektronika Terapan D3 Teknik Elektro ITS

Page 5: Lampiran Program Arduino Uno

5

else if (kondisi) { }

else { }

Dengan struktur seperti diatas program akan menjalankan kode yang ada di dalam kurung kurawal jika kondisinya TRUE, dan jika tidak (FALSE) maka akan diperiksa apakah kondisi pada else if dan jika kondisinya FALSE maka kode pada else yang akan dijalankan.

2. for, dengan format seperti berikut ini:

for (int i = 0; i < #pengulangan; i++) { }

Digunakan bila anda ingin melakukan pengulangan kode di dalam kurung kurawal beberapa kali, ganti #pengulangan dengan jumlah pengulangan yang diinginkan. Melakukan penghitungan ke atas dengan i++ atau ke bawah dengan i–.

2.5 Digital

1. pinMode(pin, mode)

Digunakan untuk menetapkan mode dari suatu pin, pin adalah nomor pin yang akan digunakan dari 0-19 (pin analog 0-5 adalah 14-19). Mode yang bisa digunakan adalah INPUT atau OUTPUT.

2. digitalWrite(pin, value)

Ketika sebuah pin ditetapkan sebagai OUTPUT, pin tersebut dapat dijadikan HIGH (ditarik menjadi 5 volts) atau LOW (diturunkan menjadi ground).

3. digitalRead(pin)

Ketika sebuah pin ditetapkan sebagai INPUT maka anda dapat menggunakan kode ini untuk mendapatkan nilai pin tersebut apakah HIGH (ditarik menjadi 5 volts) atau LOW (diturunkan menjadi ground).

2.6 Analog

Arduino adalah mesin digital tetapi mempunyai kemampuan untuk beroperasi di dalam alam analog (menggunakan trik). Berikut ini cara untuk menghadapi hal yang bukan digital.

1. analogWrite(pin, value)

Beberapa pin pada Arduino mendukung PWM (pulse width modulation) yaitu pin 3, 5, 6, 9, 10, 11. Ini dapat merubah pin hidup (on)atau mati (off) dengan sangat cepat sehingga membuatnya dapat berfungsi layaknya keluaran analog. Value (nilai) pada format kode tersebut adalah angka antara 0 ( 0% duty cycle ~ 0V) dan 255 (100% duty cycle ~ 5V).

Handbook Pelatihan Arduino 2015 by 2ndProElectronics dan Lab Elektronika Terapan D3 Teknik Elektro ITS

Page 6: Lampiran Program Arduino Uno

6

2. analogRead(pin)

Ketika pin analog ditetapkan sebagai INPUT anda dapat membaca keluaran voltase-nya. Keluarannya berupa angka antara 0 (untuk 0 volts) dan 1024 (untuk 5 volts).

Contoh Program Sederhana:void setup() { pinMode(13, OUTPUT); // initialize digital pin 13 as an output.}

// the loop function runs over and over again forevervoid loop() { digitalWrite(13, HIGH); // turn the LED on (HIGH is the voltage level) delay(1000); // wait for a second digitalWrite(13, LOW); // turn the LED off by making the voltage LOW delay(1000); // wait for a second}

3. Fungsi Pin dan GUI aplikasi Arduino

Handbook Pelatihan Arduino 2015 by 2ndProElectronics dan Lab Elektronika Terapan D3 Teknik Elektro ITS

a b

c

d e

f

g

h

Page 7: Lampiran Program Arduino Uno

7

a. Tombol ResetTombol ini berfungsi untuk mengeksekusi program menjadi nilai awal kembali . nilai interrupt dari reset adal paling pertama sehingga jika tombol ini ditekan program yang berjalan akan kembali pada saat mikro kembali dijalankan.

b. PIN Digital(PWM)Pin ini memungkinkan Anda untuk menghubungkan hardware eksternal untuk Arduino Anda. Pin ini merupakan kunci untuk memperluas kemampuan komputasi dari Arduino ke dunia nyata . Cukup pasang perangkat Anda dan sensor ke dalam soket yang sesuai dengan masing-masing pin ini dan Anda baik untuk pergi .

c. PORT USBSebuah antarmuka USB yang mudah . Chip di papan colokan langsung ke port USB Anda dan register pada komputer Anda sebagai port serial virtual. Hal ini memungkinkan Anda untuk berinteraksi dengan itu melalui itu adalah perangkat serial . Manfaat dari setup ini adalah bahwa komunikasi serial adalah sangat mudah ( dan waktu - diuji ) protokol , dan USB membuat menghubungkannya ke komputer modern benar-benar nyaman .

d. External Power SocketManajemen daya yang sangat nyaman dan pengaturan tegangan built -in . Anda dapat menghubungkan sumber daya eksternal hingga 12v dan akan mengatur untuk kedua 5V dan 3.3V . Hal ini juga dapat diaktifkan langsung dari port USB tanpa daya eksternal .

e. POWER PORT

f. Chip Atmega328

g. Analog Port

h. ICSP PortKonektor ICSP untuk melewati port USB dan interfacing Arduino langsung sebagai perangkat serial . Port ini perlu kembali bootload chip jika merusak dan tidak bisa lagi berbicara dengan komputer Anda .

Handbook Pelatihan Arduino 2015 by 2ndProElectronics dan Lab Elektronika Terapan D3 Teknik Elektro ITS

Page 8: Lampiran Program Arduino Uno

8

4. Arduino IDESebelum Anda dapat mulai melakukan sesuatu dengan Arduino , Anda perlu men-download dan menginstal Arduino IDE ( integrated development environment ) . Dari titik ini kita akan mengacu pada Arduino IDE sebagai Arduino Programmer .

Arduino Programmer didasarkan pada IDE Pengolahan dan menggunakan variasi dari ++ bahasa pemrograman C.

5. RTCRTC (Real time clock) adalah jam elektronik  berupa chip yang dapat menghitung waktu (mulai

detik hingga tahun) dengan akurat dan menjaga/menyimpan data waktu tersebut secara real time.

Karena jam tersebut bekerja real time, maka setelah proses hitung waktu dilakukan output datanya

langsung disimpan atau dikirim ke device  lain melalui sistem antarmuka.

Chip RTC sering dijumpai pada motherboard PC (biasanya terletak dekat chip BIOS). Semua

komputer menggunakan RTC karena berfungsi menyimpan informasi jam terkini dari komputer

yang bersangkutan. RTC dilengkapi dengan baterai sebagai pensuplai daya pada chip, sehingga jam

akan tetap up-to-date walaupun komputer dimatikan. RTC dinilai cukup akurat sebagai pewaktu

(timer) karena menggunakan osilator kristal.

Banyak contoh chip RTC yang ada di pasaran (pasar genteng, dll) seperti DS12C887, DS1307,

DS1302, DS3234.

Handbook Pelatihan Arduino 2015 by 2ndProElectronics dan Lab Elektronika Terapan D3 Teknik Elektro ITS

Page 9: Lampiran Program Arduino Uno

9

                             

                DS1307

Salah satu chip RTC yang mudah digunakan adalah DS1307. Pin out chip seperti gambar di bawah.

DS1307 memiliki akurasi (kadaluarsa) hingga tahun 2100. lihat datasheet. Sistem RTC DS1307

memerlukan baterai eksternal 3 volt yang terhubung ke pin Vbat dan ground. Pin X1 dan X2

dihubungkan dengan kristal osilator 32,768 KHz. Sedangkan pin SCL, SDA, dan SQW/OUT dipull-up

dengan resistor (nilainya 1k s.d 10k) ke vcc. Skema lengkapnya:

Handbook Pelatihan Arduino 2015 by 2ndProElectronics dan Lab Elektronika Terapan D3 Teknik Elektro ITS

Page 10: Lampiran Program Arduino Uno

10

6. LCDLcd (Liquid Crystal Display) adalah suatu jenis media tampilan yang menggunakan kristal

cair sebagai penampil utama. LCD sudah digunakan di berbagai bidang misalnya dalam alat-alat elektronik seperti televisi, kalkulator ataupun layar komputer. Kini LCD mendominasi jenis tampilan untuk komputer meja maupun notebook karena membutuhkan daya listrik yang rendah, bentuknya tipis, mengeluarkan sedikit panas, dan memiliki resolusi tinggi. Pada LCD berwarna semacam monitor, terdapat banyak sekali titik cahaya (piksel) yang terdiri dari satu buah kristal cair sebagai sebuah titik cahaya. Walau disebut sebagai titik cahaya, kristal cair ini tidak memancarkan cahaya sendiri. Sumber cahaya di dalam sebuah perangkat LCD adalah lampu

Handbook Pelatihan Arduino 2015 by 2ndProElectronics dan Lab Elektronika Terapan D3 Teknik Elektro ITS

Page 11: Lampiran Program Arduino Uno

11

neon berwarna putih di bagian belakang susunan kristal cair.Titik cahaya yang jumlahnya puluhan ribu bahkan jutaan inilah yang membentuk tampilan citra. Kutub kristal cair yang dilewati arus listrik akan berubah karena pengaruh polarisasi medan magnetik yang timbul dan oleh karenanya akan hanya membiarkan beberapa warna diteruskan sedangkan warna lainnya tersaring.

Untuk membuat Project sederhana LCD 16x2 di Arduino anda dapat menggunakan wiring berikut ini:

Dan dengan listing Program berikut ini:/*  LiquidCrystal Library - Hello World     The circuit: * LCD RS pin to digital pin 12 * LCD Enable pin to digital pin 11 * LCD D4 pin to digital pin 5 * LCD D5 pin to digital pin 4 * LCD D6 pin to digital pin 3 * LCD D7 pin to digital pin 2 * LCD R/W pin to ground // include the library code:#include <LiquidCrystal.h>

Handbook Pelatihan Arduino 2015 by 2ndProElectronics dan Lab Elektronika Terapan D3 Teknik Elektro ITS

Page 12: Lampiran Program Arduino Uno

12

// initialize the library with the numbers of the interface pinsLiquidCrystal lcd(12, 11, 5, 4, 3, 2);

void setup() {  // set up the LCD's number of columns and rows:   lcd.begin(16, 2);  // Print a message to the LCD.  lcd.print("hello, world!");}

void loop() {  // set the cursor to column 0, line 1  // (note: line 1 is the second row, since counting begins with 0):  lcd.setCursor(0, 1);  // print the number of seconds since reset:  lcd.print(millis()/1000);}

7. ADC

Microcontroller memiliki kemampuan untuk menerima, mengolah, dan memberikan output signal digital. Sebagai contoh bila microcontroller dengan catu daya 5 volt, microcontroller tersebut dapat mengenali tegangan sebesar 0 volt sebagai signal digital low, atau tegangan 5 volt sebagai signal digital high. Sedangkan untuk mengenali nilai tegangan antara 0 volt hingga 5 volt, diperlukan feature khusus, yakni Analog to Digital Converter. Analog-to-Digital Converter atau biasa disebut ADC, memungkinkan microcontroller untuk mengenali suatu nilai analog melalui suatu pendekatan digital. Saat ini banyak microcontroller, termasuk Arduino telah dilengkapi dengan feature AD yang terintegrasi.

Handbook Pelatihan Arduino 2015 by 2ndProElectronics dan Lab Elektronika Terapan D3 Teknik Elektro ITS

Page 13: Lampiran Program Arduino Uno

13

Tapi tidak semua pin Arduino dapat digunakan untuk mengolah signal analog. Pada board Arduino Uno, terdapat enam pin analog, yakni mulai dari A0 hingga A5. Huruf A pada awal nama pin Arduino menandakan pin tersebut dapat digunakan untuk mengolah signal analog. Seberapa tepat nilai signal analog yang dipetakan secara digital, ditentukan oleh seberapa besar resolusi ADC. Semakin besar resolusi ADC, maka semakin mendekati nilai analog dari signal tersebut. Untuk resolusi ADC pada board Arduino Uno ialah 10 bit, yang berarti mampu memetakan hingga 1024 discrete analog level. Beberapa jenis microcontroller lain memiliki resolusi 8 bit, 256 discrete analog level, bahkan ada yang memiliki resolusi 16 bit, 65536 discrete analog level.

7.1 Kaitan Nilai ADC dengan Tegangan

nilai ADC terukur ialah nilai ADC maximum dikalikan tegangan terbaca, kemudian dibagi dengan nilai tegangan sumber. Nilai ADC tergantung dengan tegangan yang menjadi catu daya sistem microcontroller. Untuk board Arduino biasa menggunakan sumber tegangan 5 volt. Berikut adalah cara mencari nilai ADC, dengan menerapkan persamaan yang ada dan tegangan terbaca sebesar 2,12 volt pada board Arduino Uno.

Board Arduino Uno memiliki resolusi 10 bit, dengan nilai terbesar 1023

Tegangan sumber 5 volt dan tegangan terbaca ialah 2,12 volt

Nilai ADC terukur ialah nilai ADC maximum dikalikan tegangan terbaca, kemudian dibagi dengan nilai tegangan sumber

Sehingga diperoleh nilai ADC sebesar 434

Dengan demikian diperoleh nilai ADC sebesar 434 dari tegangan terukur 2,12 volt. Untuk setiap unit ADC tersebut memiliki perbandingan tegangan sebesar 4,9 mV.Selain dipengaruhi oleh besarnya nilai resolusi ADC, tepat tidaknya pengukuran nilai ADC juga dipengaruhi oleh clock speed ADC tersebut. Untuk board Arduino Uno sendiri clock speed ADC maximum yang disarankan ialah 200 kHz. Nilai clock speed 200 kHz tersebut berdasarkan spesifikasi internal DAC (Digital to Analog Converter) pada rangkaian pengubahnya. Meski demikian, penggunaan clock speed pada 1 MHz mesalnya, tidak mengurangi kualitas resolusi ADC tersebut. 

7.2 Sketch Membaca ADC

Tutorial sederhana untuk belajar membaca nilai ADC dapat dilakukan dengan menggunakan potentiometer. Potentiometer bekerja dengan prinsip pembagi tegangan, dimana terdapat kaki untuk sumber tegangan dihubungkan ke Vcc 5 volt Arduino, ground dihubungkan ke ground Arduino, dan data tegangan dihubungkan ke pin analog A3 Arduino.

Handbook Pelatihan Arduino 2015 by 2ndProElectronics dan Lab Elektronika Terapan D3 Teknik Elektro ITS

Page 14: Lampiran Program Arduino Uno

14

Berikut ini adalah sedikit tutorial source code (sketch) untuk membaca nilai ADC pada board Arduino Uno dan menampilkannya melalui jalur serial, dan dapat diamati menggunakan Serial Monitor yang ada pada Arduino IDE.

/*Program membaca nilai ADCdengan serialLoki Lang*/

int analogPin = A3;int lang = 0;

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

void loop(){  lang = analogRead(analogPin);  delay(100);  Serial.println(lang);}

Handbook Pelatihan Arduino 2015 by 2ndProElectronics dan Lab Elektronika Terapan D3 Teknik Elektro ITS

Page 15: Lampiran Program Arduino Uno

15

Berikut ini adalah penjelasan untuk source code (sketch) program tersebut.

Untuk pin analog yang digunakan ialah A3, yang terhubung dengan data analog dari potentiometer

Untuk variable lang dengan (jenis data integer) digunakan untuk menyimpan nilai pembacaan ADC sebelum ditampilkan, dan diberikan nilai awal 0

Proses inisialisasi setup dengan menentukan baud rate yang digunakan untuk jalur serial, yakni 9600

Untuk program utama berisi function analogRead() yang digunakan untuk membaca nilai ADC pada analogPin, yakni pin Arduino A3

Pemberian delay() ditujukan agar pembacaan nilai ADC stabil

Baris program selanjutnya untuk menampilkan data nilai ADC pada serial monitor

Setelah programnya selesai ditulis , sekarang upload dan putar potensiometernya. Saya menampilkan hasil dengan hyperterminal seperti dibawah ini:

Handbook Pelatihan Arduino 2015 by 2ndProElectronics dan Lab Elektronika Terapan D3 Teknik Elektro ITS

Page 16: Lampiran Program Arduino Uno

16

8. PWM ( Pulse Widht Modulation )

Pulse Width Modulation (PWM) merupakan suatu teknik untuk mendapatkan hasil output analog dengan pendekatan secara digital. Teknik PWM ini mengendalikan lebar pulsa berdasarkan modulator. Meski bapat diterapkan dalam penyandian informasi komunikasi, penerapan utamanya lebih pada kendali daya perangkat listrik, semisal motor. Kendali digital digunakan untuk membentuk sebuah gelombang kotak (square wave), sebuah gelombang signal untuk switch antara kondisi on dengan off. Pola kondisi on dan off tersebut merepresentasikan suatu nilai full on pada Arduino (5 volt) dan kondisi off (0 volt) dengan mengubah perbandingan ratio antara waktu kondisi on dengan kondisi off dalam satu periode. Durasi waktu on disebut dengan istilah lebar pulsa, pulse width. Untuk mendapatkan suatu variasi hasil output nilai analog, dapat dilakukan dengan mengubah lebar pulsa tersebut. Perbandingan antara waktu signal on dengan waktu satu periode disebut dengan duty cycle.

9. Duty Cycle

Duty cycle dapat diartikan sebagai perbandingan antara waktu signal on dengan waktu keseluruhan untuk satu periode. Besarnya nilai duty cycle dinyatakan dalam percent. Nilai duty cycle dapat bervariasi mulai dari 0% tidak ada signal on, hingga 100% tidak ada signal off, atau selalu dalam kondisi signal on. Sebagai contoh duty cycle 60% dengan durasi 1000 ms. Maka waktu saat signal on ialah 60% dari 1000 ms, yakni 600 ms. Sedangkan untuk waktu signal off ialah selisih antara durasi keseluruhan dengan waktu signal on, yakni 400 ms.

9.1 Implementasi

Dengan melakukan pengulangan pola duty cycle tersebut terus-menerus secara cepat pada sebuah LED, dapat digunakan untuk mengatur nyala terangnya. Pengulangan pola duty cycle tersebut seolah-olah membuat LED menyala dengan nilai tegangan yang tetap (steady) antara 0 volt hingga 5 volt. Padahal sebenarnya terjadi kondisi perubahan signal on-off secara cepat. Bila digunakan pada motor DC, semakin besar nilai PWM maka semakin cepat laju putaran motor DC tersebut, dan demikian sebaliknya. Nilai rata-rata tegangan dan juga arus yang diberikan ke rangkaian beban dikendalikan melalui duty cycle tersebut. Semakin besar duty cycle (semakin lama waktu signal on) maka semakin besar nilai daya yang diberikan ke rangkaian beban. Penerapan PWM dalam Arduino Uno dapat dilakukan dengan menggunakan analogWrite() dengan nilai antara 0 hingga 255, resolusi ADC 8 bit. Dimana analogWrite(255) memiliki nilai duty cycle 100% atau selalu menyala, analogWrite(127) memiliki nilai duty cycle 50%, dan lain sebagainya. Untuk pin pada board Arduino Uno yang dapat digunakan menghasilkan output PWM ialah pin 3, 5, 6, 9, 10, dan 11.

Handbook Pelatihan Arduino 2015 by 2ndProElectronics dan Lab Elektronika Terapan D3 Teknik Elektro ITS

Page 17: Lampiran Program Arduino Uno

17

LampiranProject 1int led = 13,waktu=1000; // mendeklarasikan pin 13 sebagai variable LED dan memberi nilai tunda pada variable waktu.void setup() { // Setup FunctionpinMode(led, OUTPUT);// menginisialisasi led sebagai Output}void loop() { // Loop Function digitalWrite(led, HIGH); // memberi nilai HIGH atau 5v pada pin LED delay(waktu); // menunggu waktu tunda yang telah diset digitalWrite(led, LOW); delay(waktu); }

Project 2.avoid setup() {pinMode(0, OUTPUT);pinMode(1, OUTPUT);pinMode(2, OUTPUT);pinMode(3, OUTPUT);}void loop() {digitalWrite(0, HIGH); delay(2000);digitalWrite(1, HIGH); delay(2000);digitalWrite(2, HIGH); delay(2000);digitalWrite(3, HIGH); delay(2000);digitalWrite(0, LOW);digitalWrite(1, LOW);digitalWrite(2, LOW);digitalWrite(3, LOW);delay(2000);}

Project 2.bvoid setup() {pinMode(0, OUTPUT);pinMode(1, OUTPUT);pinMode(2, OUTPUT);pinMode(3, OUTPUT);}void loop() { for (int Pin = 0; Pin < 4; Pin++) { digitalWrite(Pin, HIGH);delay(500);}for (int Pin = 0; Pin < 4; Pin++) { digitalWrite(Pin, LOW); }delay(2000);}

Handbook Pelatihan Arduino 2015 by 2ndProElectronics dan Lab Elektronika Terapan D3 Teknik Elektro ITS

Page 18: Lampiran Program Arduino Uno

18

Project 3void setup() {pinMode(0, OUTPUT);digitalWrite(0, LOW);pinMode(1, OUTPUT);digitalWrite(1, LOW);pinMode(2, OUTPUT);digitalWrite(2, LOW);pinMode(3, OUTPUT);digitalWrite(3, LOW);pinMode(A1, INPUT);pinMode(A2, INPUT);pinMode(A3, INPUT);pinMode(A4, INPUT);}void loop() {if (digitalRead(A4)==LOW){digitalWrite(3, HIGH);}else{digitalWrite(3, LOW);}if (digitalRead(A3)==LOW){digitalWrite(2, HIGH);

}else{digitalWrite(2, LOW);}if (digitalRead(A2)==LOW){digitalWrite(1, HIGH);}else{digitalWrite(1, LOW);}if (digitalRead(A1)==LOW){digitalWrite(0, HIGH);}else{digitalWrite(0, LOW);}}

Project 4const int analogInPin = A0; //Mendeklarasikan PIN A0 Sebagai Variabel analogPIN int sensorValue = 0,waktu=2; //Mendeklarasikan nilai sensor dan variable waktu tundavoid setup() { //Function SetupSerial.begin(9600); //Inisialisasi Fungsi Komunikasi Serial dengan Nilai Baud Rate = 9600}void loop() { //Function LoopSensorValue =analogRead(analogInPin); //Memberi nilai Sensor sama dengan nilai Analog dari PINSerial.print("sensor = " ); //Mencetak kata “sensor=” pada layar monitor serial Serial.println(sensorValue); //Mencetak nilai sensor pada layar monitor serial lalu membuat line barudelay(waktu); //Memberi waktu tunda sebelum fungsi loop kembali di awal}

Project 5int ledPin = 3; //Mendeklarasikan PIN 3 Sebagai Variabel LedPin void setup() { }void loop() {for (int fadeValue = 0 ; fadeValue <= 255; fadeValue += 5) {analogWrite(ledPin, fadeValue);

delay(30); }for (int fadeValue = 255 ; fadeValue >= 0; fadeValue -= 5) {analogWrite(ledPin, fadeValue);delay(30); }}

Handbook Pelatihan Arduino 2015 by 2ndProElectronics dan Lab Elektronika Terapan D3 Teknik Elektro ITS

Page 19: Lampiran Program Arduino Uno

19

Project 6#include <LiquidCrystal.h>LiquidCrystal lcd(9, 8, 7, 6, 5, 3); // initialize the library with the numbers of the interface pinsvoid setup() { lcd.clear(); lcd.begin(16, 2); // set up the LCD's number of columns and rows: lcd.print("hello, world!"); // Print a message to the LCD. delay(3000);}void loop() {lcd.clear(); lcd.setCursor(0,0);lcd.print(" Selamat Datang "); delay(3000);}

Project 7#include <LiquidCrystal.h> // initialize the library with the numbers of the interface pinsLiquidCrystal lcd(9, 8, 7, 6, 5, 3);byte senyum[8] = { 0b00000, 0b00000, 0b11011, 0b11011, 0b00100, 0b00100, 0b10001, 0b01110,};

void setup() { lcd.clear(); lcd.begin(16, 2); lcd.createChar(2, senyum); lcd.setCursor(0,1);lcd.print("hello, world!"); delay(3000);}void loop() {lcd.clear(); lcd.setCursor(0,0);lcd.print(" Selamat Datang "); lcd.setCursor(0,1);lcd.write(2); delay(3000);}

Handbook Pelatihan Arduino 2015 by 2ndProElectronics dan Lab Elektronika Terapan D3 Teknik Elektro ITS

Page 20: Lampiran Program Arduino Uno

20

Project 8#include <Wire.h>const int DS1307 = 0x68; // Address of DS1307 see data sheetsconst char* days[] ={"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};const char* months[] ={"January", "February", "March", "April", "May", "June", "July", "August","September", "October", "November", "December"};byte second = 0;minute = 0;hour = 0;weekday = 0;monthday = 0;month = 0;year = 0;void setup() { Wire.begin(); Serial.begin(9600); delay(2000); // This delay allows the MCU to read the current date and time. Serial.print("The current date and time is: ");printTime(); Serial.println("Please change to newline ending the settings on the lower right of the Serial Monitor"); Serial.println("Would you like to set the date and time now? Y/N"); while (!Serial.available()) delay(10); if (Serial.read() == 'y' || Serial.read() == 'Y') // This set of functions allows the user to change the date and time { Serial.read(); setTime(); Serial.print("The current date and time is now: "); printTime(); } Serial.println("Thank you.");}// Continuous function for converting bytes to decimals and vice versavoid loop() {

}byte decToBcd(byte val) { return ((val/10*16) + (val%10));}byte bcdToDec(byte val) { return ((val/16*10) + (val%16));}// This set of codes is allows input of datavoid setTime() { Serial.print("Please enter the current year, 00-99. - "); year = readByte(); Serial.println(year); Serial.print("Please enter the current month, 1-12. - "); month = readByte(); Serial.println(months[month-1]); Serial.print("Please enter the current day of the month, 1-31. - "); monthday = readByte(); Serial.println(monthday); Serial.println("Please enter the current day of the week, 1-7."); Serial.print("1 Sun | 2 Mon | 3 Tues | 4 Weds | 5 Thu | 6 Fri | 7 Sat - "); weekday = readByte(); Serial.println(days[weekday-1]); Serial.print("Please enter the current hour in 24hr format, 0-23. - "); hour = readByte(); Serial.println(hour); Serial.print("Please enter the current minute, 0-59. - "); minute = readByte(); Serial.println(minute); second = 0; Serial.println("The data has been entered."); // The following codes transmits the data to the RTC Wire.beginTransmission(DS1307); Wire.write(byte(0)); Wire.write(decToBcd(second)); Wire.write(decToBcd(minute)); Wire.write(decToBcd(hour)); Wire.write(decToBcd(weekday));

Handbook Pelatihan Arduino 2015 by 2ndProElectronics dan Lab Elektronika Terapan D3 Teknik Elektro ITS

Page 21: Lampiran Program Arduino Uno

21

Wire.write(decToBcd(monthday)); Wire.write(decToBcd(month)); Wire.write(decToBcd(year)); Wire.write(byte(0)); Wire.endTransmission(); // Ends transmission of data}byte readByte() { while (!Serial.available()) delay(10); byte reading = 0; byte incomingByte = Serial.read(); while (incomingByte != '\n') { if (incomingByte >= '0' && incomingByte <= '9') reading = reading * 10 + (incomingByte - '0'); else; incomingByte = Serial.read(); } Serial.flush(); return reading;}void printTime() { char buffer[3]; const char* AMPM = 0; readTime(); Serial.print(days[weekday-1]); Serial.print(" "); Serial.print(months[month-1]); Serial.print(" ");

Serial.print(monthday); Serial.print(", 20"); Serial.print(year); Serial.print(" "); if (hour > 12) { hour -= 12; AMPM = " PM"; } else AMPM = " AM"; Serial.print(hour); Serial.print(":"); sprintf(buffer, "%02d", minute); Serial.print(buffer); Serial.println(AMPM);}void readTime() { Wire.beginTransmission(DS1307); Wire.write(byte(0)); Wire.endTransmission(); Wire.requestFrom(DS1307, 7); second = bcdToDec(Wire.read()); minute = bcdToDec(Wire.read()); hour = bcdToDec(Wire.read()); weekday = bcdToDec(Wire.read()); monthday = bcdToDec(Wire.read()); month = bcdToDec(Wire.read()); year = bcdToDec(Wire.read());}

Handbook Pelatihan Arduino 2015 by 2ndProElectronics dan Lab Elektronika Terapan D3 Teknik Elektro ITS

Page 22: Lampiran Program Arduino Uno

22

Project 9#include <Wire.h>#include <RealTimeClockDS1307.h>#include <LiquidCrystal.h>LiquidCrystal lcd(9, 8, 7, 6, 5, 3);#define Display_Clock_Every_N_Seconds 10 #define Display_ShortHelp_Every_N_Seconds 60String tz;int hours = 0,minutes = 0,seconds = 0,dates = 0,months = 0,years = 0,ap = 0;void setup() { Serial.begin(9600); lcd.begin(16,2); pinMode(A3, OUTPUT);digitalWrite(A3, HIGH); pinMode(A2, OUTPUT);digitalWrite(A2, LOW);}void loop() { RTC.readClock(); if(ap == 1){ tz = "PM"; } else{ tz ="AM"; }

lcd.home(); hours = RTC.getHours();minutes = RTC.getMinutes();seconds = RTC.getSeconds();ap = RTC.isPM();dates = RTC.getDate();months = RTC.getMonth();years = RTC.getYear(); lcd.print(hours);lcd.print(":"); lcd.print(minutes);lcd.print(":"); lcd.print(seconds); lcd.print(" ");lcd.print(tz); lcd.setCursor(0, 1);lcd.print(dates);lcd.print(":");lcd.print(months);lcd.print(":");lcd.print(years); delay(250);lcd.clear(); lcd.home(); lcd.print(hours);lcd.print(" ");lcd.print(minutes);lcd.print(" ");lcd.print(seconds);lcd.print(" ");lcd.print(tz); lcd.setCursor(0, 1);lcd.print(dates);lcd.print(" ");lcd.print(months);lcd.print(" ");lcd.print(years); delay(250); lcd.clear();}

Handbook Pelatihan Arduino 2015 by 2ndProElectronics dan Lab Elektronika Terapan D3 Teknik Elektro ITS

Page 23: Lampiran Program Arduino Uno

23

Jawaban Test Problem(buat asisten)

TEST PROBLEM1.int i=0,statuse=0;

void setup() { pinMode(0, OUTPUT);digitalWrite(0, LOW);pinMode(1, OUTPUT);digitalWrite(1, LOW);pinMode(2, OUTPUT);digitalWrite(2, LOW);pinMode(3, OUTPUT);digitalWrite(3, LOW);pinMode(A1, INPUT);pinMode(A4, INPUT);}void led(){digitalWrite(i,HIGH); delay(50);digitalWrite(i,LOW);i = i + 1;if (i>=4){

i=0;}}void loop() {if (digitalRead(A1)==LOW){statuse=1;}if (digitalRead(A4)==LOW){statuse=0;}if(statuse==1){led();}}

2.int i=0,waktu;

void setup() { waktu =70; pinMode(0, OUTPUT);digitalWrite(0, LOW);pinMode(1, OUTPUT);digitalWrite(1, LOW);pinMode(2, OUTPUT);digitalWrite(2, LOW);pinMode(3, OUTPUT);digitalWrite(3, LOW);pinMode(A1, INPUT);pinMode(A4, INPUT);}

void loop() {digitalWrite(i,HIGH); delay(waktu);

digitalWrite(i,LOW);i = i + 1;if (digitalRead(A1)==LOW){waktu=waktu+10;}if (digitalRead(A4)==LOW){waktu=waktu-10;}if (i>=4){i=0;}}

3.int nilai=0;

void setup() { pinMode(0, OUTPUT);digitalWrite(0, LOW);pinMode(1, OUTPUT);digitalWrite(1, LOW);pinMode(2, OUTPUT);digitalWrite(2, LOW);pinMode(3, OUTPUT);digitalWrite(3, LOW);pinMode(A1, INPUT);pinMode(A4, INPUT);}

void loop() { for (int thisPin = 0; thisPin < nilai; thisPin++) { // turn the pin on: digitalWrite(thisPin, HIGH); delay(1); // turn the pin off:

digitalWrite(thisPin, LOW); }

if (digitalRead(A4)==LOW){nilai=nilai-1;delay(100);} if (digitalRead(A1)==LOW){nilai=nilai+1;delay(100);}

}

Handbook Pelatihan Arduino 2015 by 2ndProElectronics dan Lab Elektronika Terapan D3 Teknik Elektro ITS

Page 24: Lampiran Program Arduino Uno

24

TEST PROBLEM 2const int analogInPin = A0; //Mendeklarasikan PIN A0 Sebagai Variabel analogPIN long int sensorValue=0,waktu=2,volt=0; //Mendeklarasikan nilai sensor dan variable waktu tundavoid setup() { //Function SetupSerial.begin(9600); //Inisialisasi Fungsi Komunikasi Serial dengan Nilai Baud Rate = 9600pinMode(3, OUTPUT);digitalWrite(3, LOW);}

void loop() { //Function LoopsensorValue =analogRead(analogInPin);//Memberi nilai Sensor sama dengan nilai Analog dari PINSerial.print("sensor = " ); //Mencetak kata “sensor=” pada layar monitor serial volt=((sensorValue*100)/1023)*5;Serial.println(volt); //Mencetak nilai sensor pada layar monitor serial lalu membuat line barudelay(waktu); //Memberi waktu tunda sebelum fungsi loop kembali di awalif (volt>=450){digitalWrite(3,HIGH);delay(600-volt);digitalWrite(3, LOW);}}

TEST PROBLEM 3int ledPin = 3,analogInPin=A0; //Mendeklarasikan PIN 3 Sebagai Variabel LedPin int sensorValue,nilai;void setup() { }

void loop() {sensorValue =analogRead(analogInPin);nilai=sensorValue/4;analogWrite(ledPin, nilai);}

Handbook Pelatihan Arduino 2015 by 2ndProElectronics dan Lab Elektronika Terapan D3 Teknik Elektro ITS

Page 25: Lampiran Program Arduino Uno

25

TEST PROBLEM 41.#include <LiquidCrystal.h> // initialize the library with the numbers of the interface pinsLiquidCrystal lcd(9, 8, 7, 6, 5, 3);

byte senyum[8] = { 0b11011, 0b11011, 0b00000, 0b00100, 0b00100, 0b00000, 0b10001, 0b01110,};byte datar[8] = { 0b11011, 0b11011, 0b00000, 0b00100, 0b00100, 0b00000, 0b11111, 0b00000,};

byte tawa[8] = { 0b11011, 0b11011, 0b00000, 0b00100, 0b00100, 0b00000, 0b11111, 0b01110,};

void setup() { lcd.clear(); lcd.begin(16, 2); // set up the LCD's number of columns and rows: lcd.createChar(2, senyum); lcd.createChar(3, datar); lcd.createChar(4, tawa); lcd.setCursor(0,1);lcd.print("hello, world!"); // Print a message to the LCD. pinMode(A1, INPUT);pinMode(A2, INPUT);pinMode(A3, INPUT); delay(3000);}

void loop() {lcd.clear(); lcd.setCursor(0,0);lcd.print(" Selamat Datang "); if (digitalRead(A1)==LOW){lcd.setCursor(0,1);lcd.write(2); }if (digitalRead(A2)==LOW){lcd.setCursor(0,1);lcd.write(3); }if (digitalRead(A3)==LOW){lcd.setCursor(0,1);lcd.write(4);

Handbook Pelatihan Arduino 2015 by 2ndProElectronics dan Lab Elektronika Terapan D3 Teknik Elektro ITS

Page 26: Lampiran Program Arduino Uno

26

}delay(500);}

Handbook Pelatihan Arduino 2015 by 2ndProElectronics dan Lab Elektronika Terapan D3 Teknik Elektro ITS