Modul Arduino Basic Rev Compress
Modul Arduino Basic Rev Compress
BAB 1. PENDAHULUAN....................................................................................... 1
1.1. APA ITU ARDUINO.................................................................................. 1
1.2. SEJARAH ARDUINO................................................................................. 1
1.3. APLIKASI ARDUINO................................................................................ 2
1.4. PERKEMBANGAN ARDUINO..................................................................3
1.5. PERTANYAAN........................................................................................... 6
BAB 2. ARSITEKTUR MIKROKONTROLER AVR.................................................7
2.1. OVERVIEW ARSITEKTUR MIKROKONTROLER AVR.............................7
2.2. PENJELASAN FUNGSI PIN......................................................................9
2.3. MEMORY MAP....................................................................................... 11
2.4. RANGKAIAN BOARD ARDUINO...........................................................14
2.5. PENJELASAN BOARD ARDUINO..........................................................15
2.6. PERTANYAAN......................................................................................... 17
BAB 3. DASAR PEMROGRAMAN ARDUINO.....................................................18
3.1. TAHAPAN PEMBUATAN PROGRAM......................................................18
3.2. BAHASA PEMROGRAMAN....................................................................18
3.3. STRUKTUR PENULISAN PROGRAM.....................................................19
3.4. TIPE DATA.............................................................................................. 19
3.5. BASIS ANGKA........................................................................................ 20
3.6. PENYIMPANAN DATA............................................................................20
3.7. OPERASI LOGIKA DAN BINER.............................................................20
3.8. OPERASI RELASIONAL (PERBANDINGAN).........................................20
3.9. OPERASI ARITMATIKA..........................................................................21
3.10. STATEMENT........................................................................................ 21
3.11. CONDITIONAL STATEMENT..............................................................21
3.12. FUNCTION.......................................................................................... 22
3.13. LATIHAN............................................................................................. 22
BAB 4. PEMROGRAMAN DENGAN ARDUINO IDE...........................................24
4.1. MEMBUAT PROGRAM...........................................................................24
4.2. COMPILE DAN DOWNLOAD KE CHIP..................................................27
4.3. PEMROGRAMAN AVR UNTUK PORT I/O.............................................28
4.4. KOMUNIKASI SERIAL........................................................................... 30
4.5. PEMROGRAMAN RELAY.......................................................................31
4.6. MEMBUAT DELAY.................................................................................. 32
4.7. PEMROGRAMAN LCD........................................................................... 33
4.8. PEMROGRAMAN ADC...........................................................................35
4.9. PEMROGRAMAN KEYPAD....................................................................36
4.10. PEMROGRAMAN PWM......................................................................38
BAB 2.
BAB 3. PENDAHULUAN
Ada baiknya sebelum membahas mengenai Arduino kita mengerti dulu apa
itu mikrokontroler. Mikrokontroler adalah single chip computer yang memiliki
kemampuan untuk diprogram dan digunakan untuk tugas-tugas berorientasi
kontrol. Dalam sebuah IC mikrokontroler telah terdapat ROM, RAM, EPROM,
serial maupun parallel interface, timer, interrupt controller, converter analog ke
digital, dan lainnya (tergantung feature yang melengkapi mikrokontroler
tersebut). Dari segi aplikasinya, mikrokontroler ditujukan untuk tugas-tugas
yang berorientasi kontrol pada rangkaian yang membutuhkan jumlah
komponen minimum dan biaya rendah (low cost).
Suatu mikrokontroler agar dapat diprogram dan bekerja sebagai pusat
kontrol memerlukan rangkaian elektronik yang dapat mendukungnya. Mulai
dari power supply, Osilator, konektor, ISP, dan Reset. Versi rangkaian paling
sederhana untuk membuat mikrokontroler bisa bekerja disebut sebagai sistem
minimum mikrokontroler.
Arduino merupakan sebuah bentuk sistem minimum mikrokontroler yang
bersifat open source hardware dengan komunitas pengguna yang luas di
seluruh dunia. Sifat open source hardware berarti semua informasi rangkaian
perangkat kerasnya dibuka dan setiap orang boleh menggunakan dan
mengembangkannya secara bebas. Konsep open source inilah yang kemudian
menjadikan Arduino menjadi sangat populer mendunia. Arduino dapat
dihubungkan dengan mudah ke berbagai jenis perangkat I/O seperti LED,
motor, sensor dan perangkat lainnya.
[Link] ARDUINO
Saat ini tim arduino terdiri dari Massimo Banzi, David Cuartielles, Gianluca
Martino, Dave Mellis dan Tom Igoe. Tujuan mereka adalah untuk menciptakan
sebuah Wiring Platform yang dapat diakses/digunakan oleh pengguna non-
technical dalam bidang kreatif seperti seniman, desainer dan arsitek.
1
besar diambil oleh Massimo Banzi dan rekan-rekannya untuk membuat proyek
ini menjadi open source. Mereka mempertimbangkan bahwa dengan keputusan
itu Arduino akan lebih cepat berkembang dan terus maju. Nama Arduino
diberikan oleh Massimo Banzi. Dia terinspirasi dari nama raja dari Ivrea yang
berkuasa pada tahun 1002 masehi bernama Raja Arduin.
Konsep dasar arduino pertama kali dibuat oleh Hernando Barragan pada
tahun 2004 untuk tesis master di Interaction Design Institute Ivera di Italia
dengan judul “Wiring: Prototyping Phisical Interaction Design” serta Casey Reas
dan Massimo Banzai sebagai dosen pembimbing. Pada tahun 2005, tim Arduino
dibentuk di Ivera Italia yang terdiri dari Massimo Banzi, David Cuartielles, Dave
Mellis, Gianluca Martino, Nicholas Zambetti. Casey Reas dibantu Ben Fry
mengembangkan pengolahan bahasa pemrograman secara visual yang diberi
nama processing software inilah yang menjadi cikal bakal Arduino IDE yaitu
perangkat lunak yang disediakan untuk memprogram Arduino. Software
tersebut menggunakan compiler gcc yang juga open source.
Arduino biasanya menggunakan IC mikrokontroler yang merupakan produk
dari Atmel. Bahasa pemrograman yang digunakan Arduino adalah bahasa C/C+
+ dengan penambahan library-library khusus Arduino. Bootloader juga
ditanamkan di chip mikrokontrolernya untuk membantu pengguna
memasukkan program melalui komunikasi serial USB.
[Link] ARDUINO
2
o Tidak memerlukan perangkat chip programmer karena didalamnya
sudah ada bootloader yang akan menangani upload program dari
komputer melalui komunikasi serial USB.
o Memiliki modul add-on yang siap pakai (dinamakan shield) yang
bisa dipasang pada board Arduino yang sudah dibuat oleh banyak
pihak, misalnya shield GPS, Ethernet, SD Card, dan sebagainya.
Dari Segi Software
o Bahasa pemrograman relatif mudah karena software Arduino IDE
sudah dilengkapi dengan kumpulan library yang cukup lengkap.
o Terdapat banyak contoh pemrograman di internet.
Komunitas pengguna yang luas untuk saling membantu dan bertukar
pikiran.
[Link] ARDUINO
Processor :
CPU Speed ATmega328
Analog I/O : 16 Mhz
Digital : 6/0
IO/PWM : 14/6
EEPROM : 1 KB
SRAM : 2 KB
FLASH : 32 KB
USB : Regular
UART :1
Arduino Due Spesifikasi
3
Processor :
CPU Speed AT91SAM3X
Analog I/O 8E
Digital : 84 Mhz
IO/PWM : 12/2
EEPROM : 54/12
SRAM :-
FLASH : 96
USB : 512
UART : 2 Micro
:4
Processor :
CPU Speed Atmega32u
Analog I/O 4
Digital : 16 Mhz
IO/PWM : 12/0
EEPROM : 20/7
SRAM :1
FLASH : 2.5
USB : 32
UART : Micro
:1
Arduino Mega 2560 Spesifikasi
Processor :
CPU Speed ATmega256
Analog I/O 0
Digital : 16 Mhz
IO/PWM : 16/0
EEPROM : 54/15
SRAM :4
FLASH :8
USB : 256
UART : Regular
:4
Arduino Mega ADK Spesifikasi
Processor :
CPU Speed ATmega256
Analog I/O 0
Digital : 16 Mhz
IO/PWM : 16/0
EEPROM : 54/15
SRAM :4
FLASH :8
USB : 256
UART : Regular
4
:4
Arduino Micro Spesifikasi
Processor :
CPU Speed Atmega32u
Analog I/O 4
Digital : 16 Mhz
IO/PWM : 12/0
EEPROM : 20/7
SRAM :1
FLASH : 2.5
USB : 32
UART : Micro
:1
Arduino Mini Spesifikasi
Processor :
CPU Speed Atmega328
Analog I/O : 16 Mhz
Digital : 8/0
IO/PWM : 14/6
EEPROM :1
SRAM :2
FLASH : 32
USB :-
UART :-
Processor :
CPU Speed Atmega168
Analog I/O : 16 Mhz
Digital : 8/0
IO/PWM : 14/6
EEPROM : 0.512
SRAM :1
FLASH : 16
USB : Mini-B
UART :1
Arduino Fio Spesifikasi
Processor :
CPU Speed Atmega328
Analog I/O P
Digital : 8 Mhz
IO/PWM : 8/0
EEPROM : 14/6
SRAM :1
FLASH :2
USB : 32
UART : Mini
:1
5
Arduino Pro (328) Spesifikasi
Processor :
CPU Speed Atmega328
Analog I/O : 16 Mhz
Digital : 6/0
IO/PWM : 14/6
EEPROM :1
SRAM :2
FLASH : 32
USB :-
UART :1
Arduino Pro Mini Spesifikasi
Processor :
CPU Speed ATmega168
Analog I/O : 8 Mhz
Digital : 6/0
IO/PWM : 14/6
EEPROM : 0.512
SRAM :1
FLASH : 16
USB :-
UART :1
Processor :
CPU Speed Atmega168
Analog I/O V
Digital : 8 Mhz
IO/PWM : 6/0
EEPROM : 14/6
SRAM : 0.512
FLASH :1
USB : 16
UART :-
:-
[Link]
1. Apa kelebihan dan kekurangan mikrokontroler dibandingkan
mikroprosesor komputer biasa?
2. Sebutkan keuntungan menggunakan Arduino dibandingkan dengan
board sistem minimum mikrokontroler yang lain?
3. Cari perbedaan-perbedaan yang ada antar jenis board Arduino.
BAB 4.
6
BAB 5. ARSITEKTUR MIKROKONTROLER AVR
4.
10.
11.
12.
13.
14.
15.
18.
19. Gambar 2.2. Konfigurasi Kaki Mikrokontroler AVR ATmega328 PDIP 28 pin
20. Berikut adalah penjelasan fungsi tiap kaki yang ada pada seri
mikrokontroler AVR ATmega328.
A. VCC
21. VCC adalah kaki masukan tegangan bagi Digital.
B. GND
22. GND adalah kaki ground.
C. Port B
23. Merupakan 8-bit directional port I/O. setiap pinnya dapat
menyediakan internal pull-up resistor (dapat diatur per bit). Selain itu
Port B juga dapat memiliki fungsi alternatif seperti berikut
[Link] MAP
Program Memory
92.ATmega328 memiliki 32 KBytes on-chip In system Programmable
Flash untuk menyimpan program. Karena semua instruksi panjangnya
16 bit atau 32 bit, maka memori program ini diorganisasikan dalam
16K x 16 bit. Yang perlu diperhatikan juga adalah bahwa beberapa
alamat awal dari memori program merupakan alamat vector interupsi.
93.
94.
95.
96.
97.
98.
99.
Data Memory
100. 32 General Purpose Working Register
101.
102.
103. Internal SRAM (Static Random Access Memory)
104. Internal SRAM ini memiliki ukuran 2KB. Dengan besarnya
ukuran SRAM yang dialokasikan maka diharapkan dapat meningkatkan
performa program.
105.
106. EEPROM (Electrically Erasable Programable Read Only
Memory)
107. Intenal memory ini memiliki ukuran 1 KB sebagai tempat
penyimpanan data permanen karena EEPROM tetap dapat menyimpan
data meskipun tidak ada catu daya.
[Link] BOARD ARDUINO
15
108. Skematik Board Arduino UNO
16
109. Gambar 2.3. Rangkaian Arduino UNO
17
110.
112.
113.
114.
18
115. Penjelasan fungsi tiap pin Arduino Mega.
19
116.
20
[Link]
1. Apa kelebihan arsitekur mikrokontroler AVR dibanding dengan arsitektur
yang lain?
2. Cari tahu seri mikrokontroler apakah yang ada di tiap jenis board
Arduino?
3. Apa perbedaan memori RAM, EEPROM dan Flash?
BAB 6.
21
BAB 7. DASAR PEMROGRAMAN ARDUINO
[Link] PEMROGRAMAN
Dalam pemrograman komputer dikenal dua jenis tingkatan bahasa, jenis
yang pertama adalah bahasa pemrograman tingkat tinggi (high level language)
dan jenis yang kedua adalah bahasa pemrograman tingkat rendah (low level
language). Bahasa pemrograman tingkat tinggi lebih berorientasi kepada
manusia yaitu bagaimana agar pernyataan-pernyataan yang dituliskan dalam
program mudah untuk manusia. Sedangkan bahasa tingkat rendah lebih
berorientasi ke mesin, yaitu bagaimana agar komputer dapat langsung
mengintepretasikan pernyataan-pernyataan program yang ditulis.
Untuk mengerjakan suatu tugas tertentu, program yang ditulis dalam
bahasa tingkat rendah relative lebih panjang dan lebih sulit dipahami, namun
kelebihannya adalah lebih efisien dan lebih cepat untuk dieksekusi oleh mesin.
Bahasa tingkat tinggi memerlukan compiler untuk mengkonversi instruksi-
instruksi ke dalam bahasa mesin.
Bahasa C adalah bahasa pemrograman yang tingkat keefektifannya
mendekati baha assembler. Object code yang dihasilkan bahasa C sangat kecil
dan dengan cepat dapat dieksekusi. Karena itulah pemrograman hardware
menggunakan bahasa C. Bahasa C dapat digunakan didalam sistem operasi
windows atau linux bisa juga menggunakan compiler lain. Bahasa C mudah
dipelajari karena pernyataannya yang subyektif tergantung kemampuan tiap
individu. Arduino menggunakan bahasa C yang ditambahkan library-librari
yang dimiliki oleh arduino sendiri.
}
//program utama
void loop() {
// fungsi perulangan
[deklarasi variabel local]
}
[Link] DATA
Tipe-tipe data dalam pemrograman C adalah sebagai berikut.
[Link] ANGKA
Biner : diawali dengan 0b, contoh : 0b11110011
Desimal : ditulis seperti biasa, contoh : 15, 5, 93
Hexadesimal : diawali dengan 0x, contoh : 0xFF, 0x5B, 0x0A
[Link] DATA
Variabel
Adalah memori penyimpanan data yang nilainya dapat diubah-ubah.
Deklarasi : [tipe data] [nama] = [nilai];
Konstanta
Adalah memori penyimpanan data yang nilainya tidak dapat diubah.
Deklarasi : const [tipe data] [nama] = [nilai];
[Link] ARITMATIKA
Operator aritmatika bisa berupa +, -, *, /, %, +=, -=, *=, /=, ++, --
3.10. STATEMENT
Adalah setiap operasi dalam pemrograman yang diakhiri dengan ; atau }.
Statement tidak akan dieksekusi bila diawali dengan tanda // untuk satu baris.
Lebih dari satu baris menggunakan pasangan /* [statement] */. Statement
yang tidak dieksekusi disebut juga comments/komentar.
3.12. FUNCTION
Adalah sub program yang dipanggil oleh program utama atau program
lainnya.
Penulisan :
[tipe data hasil] [nama fungsi] ( [tipe data input 1] , [tipe data input 2] )
{
[statement]
}
3.13. LATIHAN
Latihan 1
// Program Artimatika
int i,j ;
i = 11 ;
j = 23 ;
i++ ;
j = j*i-45 ;
Latihan 2
// Program Artimatika
const int p=30,q=40;
int i,j,k ;
i = 10 ;
j = 20 ;
i++ ;
k = i*p-q/j ;
for (i=0;i<3;i++) {
angka *= faktor ;
angka++;
}
Latihan 4
// Program Conditional Statement void setup() {
int hasil=0x0B, faktor, sisa; hasil *= 21 ;
void evaluasi() { if ((hasil>100) && (hasil<200))
switch (sisa) { {
case 0 : hasil += 50 ;
faktor=2 ; }
break ; else {
case 1 : hasil -= 50;
faktor=1 ; }
break ; sisa = hasil % 2;
} evaluasi();
} hasil += faktor;
}
[Link] PROGRAM
Berikut penjelasan mengenai cara istalasi dan penggunaan arduino IDE.
Untuk penggunaan arduino IDE juga dijelaskan fungsi-fungsi yang ada dalam
software tersebut.
6. Pilih Install
Contoh Program :
void setup()
{
pinMode(buttonPin, INPUT); // pengaturan digital Pin sebagai INPUT
pinMode(ledPin, OUTPUT); // pengaturan digital Pin sebagai Output
}
void loop()
{
var0=digitalRead(buttonPin); // menyimpan hasil pembacaan
buttonPin ke dalam var0
digitalWrite(ledPin,var0); // memberi logika 1/0 atau HIGH/LOW ke
dalam ledPin
}
[Link] SERIAL
Arduino IDE menyediakan fungsi Serial Monitor, pengguna menjadi
dimudahkan untuk menggunakan komunikasi serial. Komunikasi serial pada
arduino memiliki beberapa fungsi diantaranya sebagai berikut.
Contoh Program:
char a;
void setup()
{
[Link](9600); //perintah untuk memulai komunikasi
serial
[Link]("Halo Dunia"); //perintah untuk mengirim data
}
void loop()
{
while([Link]()){ //cek ada data yg dikirim atau tidak
a=[Link](); //menyimpan data yg diterima ke variabel a
[Link](a); //mencetak data variable a
}
}
[Link] RELAY
Cara kerja relay hampir sama dengan LED, relay akan bekerja atau berhenti
bila diberi kondisi HIGH/LOW atau 1/0.
Pengaturan Hardware:
Contoh Program :
void setup()
{
pinMode(buttonPin, INPUT); // pengaturan digital Pin sebagai INPUT
pinMode(relayPin, OUTPUT); // pengaturan digital Pin sebagai Output
}
void loop()
{
var0=digitalRead(buttonPin); // menyimpan hasil pembacaan
buttonPin ke dalam var0
digitalWrite(ledPin,var0); // memberi logika 1/0 atau HIGH/LOW ke
dalam ledPin
}
[Link] DELAY
Ada beberapa cara untuk membuat delya: looping, dan fungsi “delay”.
Perulangan (delay tidak akurat)
Menggunakan conditional statement for…to… atau while…
Contoh : for(int a=0;a<100;a++) //delay selama 100 kali perulangan
Fungsi “delay”
Menggunakan fungsi yang sudah termasuk dalam arduino.
Syntax: delay(ms);
Contoh : delay(1000) //delay selama 1000 milisecond atau 1 detik.
Contoh Program :
void setup()
{
pinMode(ledPin, OUTPUT); // pengaturan digital Pin sebagai Output
}
void loop()
{
digitalWrite(ledPin,0); // LED nyala
for(int time=0;time<100;time++){ // delay selama 100 perulangan
}
digitalWrite(ledPin,1); // LED mati
}
Contoh Program :
void setup()
{
pinMode(ledPin, OUTPUT); // pengaturan digital Pin sebagai Output
}
void loop()
{
digitalWrite(ledPin,0); // LED nyala
delay(1000); // delay selama 1 detik
digitalWrite(ledPin,1); // LED mati
}
[Link] LCD
Arduino menyediakan library untuk menggunakan perangkat LCD 16x2.
Beberapa fungsi LCD yang ada pada arduino :
Pengaturan hardware:
void loop() {
[Link](0, 1); // posisi display (kolom,baris) pada
LCD
}
[Link] ADC
ADC merupakan nilai analog yang diterima oleh pin analog arduino dan
diubah/diconvert menjadi digital. Untuk mendapatkan nilai ADC dari inputan
menggunakan analogRead()
Pengaturan hardware:
Contoh Program :
void setup()
{
[Link](16,2); // lcd yang digunakan 16x2
}
void loop()
{
val = analogRead(analogPin); // memasukkan pembacaan analog
ke variabel val
[Link](0, 1); // posisi display (kolom,baris) pada
LCD
[Link](val); // cetak val pada LCD
delay(1000); // delay 1 detik
[Link](); // bersihkan LCD
}
[Link] KEYPAD
Berikut salah satu contoh pemrograman keypad.
Pengaturan hardware:
Contoh Program:
LiquidCrystal lcd(0,1,2,3,4,5);
//Mendeklarasikan pin lcd (Rs=0;En=1;D1=2;D2=3;D3=4;D4=5 Rw+Gnd);
void loop() {
// put your main code here, to run repeatedly:
tekan_keypad();//Memanggil Function penekanan keypad
if(key!='-'){ //Jika isi key bukan '-'
[Link](key); //menampilkan hasil penekanan ke lcd
delay(200);
}
}
Pengaturan hardware:
Contoh Program:
}
void loop()
{
val = analogRead(analogPin); // membaca masukan pin
analogWrite(ledPin, val / 4);
// analogRead bernilail dari 0-1023,analogWrite bernilai 0-255
}