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 2.
PEMROGRAMAN PWM......................................................................38
BAB 3. PENDAHULUAN
berorientasi
kontrol
pada
rangkaian
yang
membutuhkan
jumlah
Arduino
menjadi
sangat
populer
mendunia.
Arduino
dapat
1.2.SEJARAH 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 nontechnical dalam bidang kreatif seperti seniman, desainer dan arsitek.
Ketika
proyek
tersebut
selesai
kemudian
mereka
terus
berusaha
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
1.3.APLIKASI ARDUINO
Selain karena open source, kemampuannya yang tinggi, bentuknya yang
kecil, konsumsi daya yang rendah, dan harga yang murah membuat Arduino
banyak digunakan di dunia.
Contoh-contoh proyek:
Pengontrol motor
Mesin CNC
Peralatan medis
Pengontrol suhu
Monitoring energi
GPS tracking
Pengendali robot
Dan masih banyak lagi
1.4.PERKEMBANGAN ARDUINO
Karena kebutuhan yang tinggi terhadap sistem minimum mikrokontroler
yang standar dan dengan berbagai kemudahan fasilitasnya, maka para
pembuat Arduino terus melakukan pengembangan pada board Arduino. Mulai
dari port komunikasi yang diganti ke USB, dan juga penggunaan mikrokontroler
yang memiliki lebih banyak keunggulan seperti Flash, EEPROM, SRAM, I/O Pin,
ADC, UART dan PWM yang lebih tinggi.
Jenis-jenis arduino bermacam-macam di antaranya Severino, Diecimila,
Duemilanove, Uno, Nano, Mini, Fio, Lilypad, Pro, Pro mini, Mega, Mega2560,
Leonardo, Micro, Yun, Due, dan Tre. Berikut spesifikasi beberapa arduino yang
popular:
Arduino Uno
Spesifikasi
Arduino Due
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
Spesifikasi
Processor
CPU Speed
Analog I/O
Digital
IO/PWM
EEPROM
SRAM
FLASH
USB
UART
Arduino Leonardo
:
AT91SAM3X
8E
: 84 Mhz
: 12/2
: 54/12
:: 96
: 512
: 2 Micro
:4
Spesifikasi
Processor
CPU Speed
Analog I/O
Digital
IO/PWM
EEPROM
SRAM
FLASH
USB
UART
:
Atmega32u
4
: 16 Mhz
: 12/0
: 20/7
:1
: 2.5
: 32
: Micro
:1
Spesifikasi
Processor
CPU Speed
Analog I/O
Digital
IO/PWM
EEPROM
SRAM
FLASH
USB
UART
Arduino Mega ADK
:
ATmega256
0
: 16 Mhz
: 16/0
: 54/15
:4
:8
: 256
: Regular
:4
Spesifikasi
Processor
CPU Speed
Analog I/O
Digital
IO/PWM
EEPROM
SRAM
FLASH
USB
UART
:
ATmega256
0
: 16 Mhz
: 16/0
: 54/15
:4
:8
: 256
: Regular
4
Arduino Micro
:4
Spesifikasi
Processor
CPU Speed
Analog I/O
Digital
IO/PWM
EEPROM
SRAM
FLASH
USB
UART
Arduino Mini
:
Atmega32u
4
: 16 Mhz
: 12/0
: 20/7
:1
: 2.5
: 32
: Micro
:1
Spesifikasi
Processor
CPU Speed
Analog I/O
Digital
IO/PWM
EEPROM
SRAM
FLASH
USB
UART
:
Atmega328
: 16 Mhz
: 8/0
: 14/6
:1
:2
: 32
::-
Arduino Nano
Spesifikasi
Arduino Fio
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
Spesifikasi
Processor
CPU Speed
Analog I/O
Digital
IO/PWM
EEPROM
SRAM
FLASH
USB
UART
:
Atmega328
P
: 8 Mhz
: 8/0
: 14/6
:1
:2
: 32
: Mini
:1
5
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
Spesifikasi
Processor
CPU Speed
Analog I/O
Digital
IO/PWM
EEPROM
SRAM
FLASH
USB
UART
Arduino LilyPad
:
ATmega168
: 8 Mhz
: 6/0
: 14/6
: 0.512
:1
: 16
::1
Spesifikasi
Processor
CPU Speed
Analog I/O
Digital
IO/PWM
EEPROM
SRAM
FLASH
USB
UART
:
Atmega168
V
: 8 Mhz
: 6/0
: 14/6
: 0.512
:1
: 16
::-
1.5.PERTANYAAN
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.
Jenis Arduino yang sangat banyak dipakai saat ini adalah Arduino
7.
8.
9.
10.
11.
12.
13.
14.
15.
yang berbeda-beda. Namun pada dasarnya fungsi kaki yang ada pada IC
memiliki
persamaan.
ATmega328.
Berikut
gambar
bentuk
chip
mikrokontroler
AVR
17.
18.
19. Gambar 2.2. Konfigurasi Kaki Mikrokontroler AVR ATmega328 PDIP 28 pin
20.
Berikut adalah penjelasan fungsi tiap kaki yang ada pada seri
pinnya
dapat
menyediakan internal pull-up resistor (dapat diatur per bit). Selain itu
Port B juga dapat memiliki fungsi alternatif seperti berikut
24.
25.
Fungsi Alternatif
ort
Pin
26.
P 27.
ICP1
B0
capture pin
28.
P 29.
OC1A
B1
Width Modulation)
30.
P 31.
OC1B = sebagai keluaran PWM (Pulse
B2
33.
B3
36.
B4
Width Modulation)
32.
SS
= merupakan jalur komunikasi
SPI
P 34.
OC2
Width Modulation)
35.
MOSI = merupakan jalur komunikasi SPI
P 37.
MISO = merupakan jalur komunikasi SPI
38.
P 39.
B5
SPI
40.
P 41.
B6
43.
SCK
TOSC1
sebagai
sember
clock
B7
sember
clock
46.
D. Port C
47. Port C merupakan jalur data 6 bit yang dapat difungsikan sebaga I/O
digital.
48. Fungsi alternative PORTC antara lain sebagai berikut.
49.
50.
Fungsi Alternatif
ort
Pin
51.
P 52.
C0
53.
C1
55.
C2
57.
C3
59.
C4
61.
C5
ADC
dapat
kita
gunakan
untuk
65.
66.
67.
Fungsi Alternatif
ort
Pin
68.
P 69.
D0
70.
P 71.
D1
72.
P 73.
INT0 interupsi 0
D2
74.
P 75.
INT1 interupsi 1
D3
76.
P 77.
78.
D4
79.
P 80.
D5
81.
P 82.
D6
83.
P 84.
D7
85.
F. AVcc
86. Adalah kaki masukan tegangan bagi A/D converter. Kaki ini harus
secara eksternal terhubung ke Vcc melalui lowpass filter.
G. AREF
87. Adalah kaki masukan referensi bagi A/D Converter.
Untuk
2.3.MEMORY MAP
89.
Program-program
mikrokontroler
disimpan
dan
pada
data-data
pada
memori.
computer
maupun
Mikrokontroler
AVR
90.
91.
Pada gambar diatas dapat dilihat gambaran secara lengkap dari on-
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.
104.
15
108.
16
109.
17
110.
112.
113.
114.
18
115.
19
116.
20
2.6.PERTANYAAN
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
3.2.BAHASA 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 instruksiinstruksi 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.
//library optional
//opsional
//opsional
void setup() {
//pengaturan I/O
}
//program utama
void loop() {
// fungsi perulangan
[deklarasi variabel local]
3.4.TIPE DATA
Tipe-tipe data dalam pemrograman C adalah sebagai berikut.
void
: tipe data yang tidak mengembalikan nilai
boolean
: benar/salah atau true/false
char
: 1 byte (-128 s/d 127)
unsigned char : 1 byte (0 s/d 255)
byte
: 1 byte (0 s/d 255)
int
: 2 byte (-32768 s/d 32767)
unsigned int
: 2 byte (0 s/d 65535)
word
: 2 byte (0 s/d 65535)
long
: 4 byte (-2147483648 s/d 2147483647)
unsigned long : 4 byte (0 s/d 4294967295)
short
: 2 byte (-32768 s/d 32767)
float
: bilangan desimal
double
: 4 byte (-2147483648 s/d 2147483647)
string (char array)
: kumpulan data dengan tipe data char
String (objek) : gabungan 1/lebih karakter
array
: kumpulan data-data yang sama tipenya
3.5.BASIS ANGKA
Biner
Desimal
Hexadesimal
3.6.PENYIMPANAN 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];
Global
program.
Local
: variabel/konstanta yang hanya dapat diakses oleh fungsi
tempat dideklarasikannya.
AND
&&
OR : ||
AND : &
OR : |
ka
Bine
r
NOT
XOR : ^
Shift left : <<
:!
Sama dengan
Tidak sama dengan
Lebih besar
Lebih besar sama
dengan
Lebih kecil
Lebih
kecil
:
:
:
:
==
!=
>
>=
:<
sama : <=
dengan
3.9.OPERASI ARITMATIKA
Operator aritmatika bisa berupa +, -, *, /, %, +=, -=, *=, /=, ++, -
:
+=, -=, *=, nilai disebelah kiri operator di tambah/kurang/kali/bagi
/= :
%
:
++,
:
Contoh : a = 5*6+2/1/2-1 ; maka nilai a adalah 30
a*=5
; jika nilai awal a adalah 30, maka nilai a = 30 x 5 =
150
a+=3
33
a++ ; jika nilai awal a adalah 5, maka nilai a = 5 + 1 = 6
a - - ; jika nilai awal a adalah 5, maka nilai a = 5 1 = 4
3.10.
STATEMENT
3.11.
3.12.
CONDITIONAL STATEMENT
if else
if ( [persyaratan] ){ [statement1] ; [statement2] ; }
for
for ( [nilai awal] ; [persyaratan] ; [operasi nilai] ){ [statement1] ;
[statement2] ; }
while
while ( [persyaratan] ) { [statement1] ; [statement2] ; }
do while
do ( [statement1] ; [statement2] ; ) { [persyaratan] }
switch case
switch ( [nama variable] )
{ case nilai1 : [statement] ; break ;
case nilai2 : [statement] ; break ; }
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 =
j =
i++
j =
11 ;
23 ;
;
j*i-45 ;
Latihan 2
// Program Artimatika
const int p=30,q=40;
int i,j,k ;
i =
j =
i++
k =
10 ;
20 ;
;
i*p-q/j ;
Latihan 3
// Program dengan Looping
const faktor=3;
int i,angka=10;
for (i=0;i<3;i++) {
angka *= faktor ;
angka++;
}
Latihan 4
// Program Conditional Statement
int hasil=0x0B, faktor, sisa;
void evaluasi() {
switch (sisa) {
case 0 :
faktor=2 ;
break ;
case 1 :
faktor=1 ;
break ;
}
}
void setup() {
hasil *= 21 ;
if ((hasil>100) && (hasil<200))
{
hasil += 50 ;
}
else {
hasil -= 50;
}
sisa = hasil % 2;
evaluasi();
hasil += faktor;
}
6. Pilih Install
Keterangan:
1. Verify
buat
2. Upload
3. New
4. Open
5. Save
6. Name File
7. Serial Monitor
8. Tab Propertis
9. Lembar Kerja
10.Result
program
11.Serial Port yang Terkoneksi : menampilkan board arduino dan
port yg digunakan
Contoh Program :
int buttonPin = 12;
int ledPin = 13;
int var0=0;
void setup()
{
pinMode(buttonPin, INPUT);
pinMode(ledPin, OUTPUT);
}
void loop()
{
var0=digitalRead(buttonPin);
buttonPin ke dalam var0
digitalWrite(ledPin,var0);
dalam ledPin
}
4.4.KOMUNIKASI SERIAL
Arduino IDE menyediakan fungsi Serial Monitor, pengguna menjadi
dimudahkan untuk menggunakan komunikasi serial. Komunikasi serial pada
arduino memiliki beberapa fungsi diantaranya sebagai berikut.
Fungsi-fungsi yang tersedia untuk komunikasi serial arduino:
1. If(Serial)
: untuk memeriksa apakah Port sudah siap
2. Serial.available() : untuk memeriksa apakah data suda ada di buffer
penerima
3. Serial.begin()
data
4. Serial.end()
5.
6.
7.
8.
fungsi serial
Serial.find()
: mencari string dalam buffer data
Serial.findUntil() : mencari buffer data sampai syarat tertentu
Serial.flush()
: menunggu data terkirim semua
Serial.parsefloat()
: mengambil data float pertama dari data di
buffer serial
9. Serial.parseInt() : mengambil data integer pertama dari data di buffer
serial
10.Serial.peek()
: mengambil data berikutnya di buffer penerima
11.Serial.print()
: mengirim data ASCII
12.Serial.println() : mengirim data ASCII + CR,LF (kode enter)
13.Serial.read()
: membaca data yang diterima
14.Serial.readBytes()
: membaca data byte yang diterima
15.Serial.readBytesUntil() : membaca data byte yang diterima sampai
syarat tertentu
16.Serial.setTimeout()
transmisi data
17.Serial.write()
18.Serial.serialEvent()
interupsi serial.
Contoh Program:
char a;
void setup()
{
Serial.begin(9600);
serial
Serial.println("Halo Dunia");
}
void loop()
{
while(Serial.available()){
//cek ada data yg dikirim atau tidak
a=Serial.read();
//menyimpan data yg diterima ke variabel a
Serial.println(a);
//mencetak data variable a
}
4.5.PEMROGRAMAN 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 :
int buttonPin = 12;
int relayPin = 13;
int var0=0;
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);
dalam ledPin
}
4.6.MEMBUAT DELAY
Ada beberapa cara untuk membuat delya: looping, dan fungsi delay.
Contoh Program :
int ledPin = 13;
void setup()
{
pinMode(ledPin, 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 :
int ledPin = 13;
void setup()
{
pinMode(ledPin, OUTPUT);
}
void loop()
{
digitalWrite(ledPin,0);
delay(1000);
digitalWrite(ledPin,1);
}
// LED nyala
// delay selama 1 detik
// LED mati
4.7.PEMROGRAMAN LCD
Arduino menyediakan library untuk menggunakan perangkat LCD 16x2.
Beberapa fungsi LCD yang ada pada arduino :
LiquidCrystal
(RS,E,D4,D5,D6,D7)
lcd.begin(16,2);
lcd.print(halo, dunia!);
lcd(12,11,5,4,3,2);//
inisialisasi
port
yang
digunakan
lcd.setCursor(0,1);
LCD
lcd.clear();
lcd.write([karakter]);
Pengaturan hardware:
}
void loop() {
lcd.setCursor(0, 1);
LCD
}
4.8.PEMROGRAMAN 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 :
#include <LiquidCrystal.h>
LiquidCrystal lcd(13,12,11,10,9,8);
(RS,E,D4,D5,D6,D7)
int analogPin = A0;
int val = 0;
pembacaan analog
void setup()
{
lcd.begin(16,2);
}
void loop()
{
val = analogRead(analogPin);
ke variabel val
lcd.setCursor(0, 1);
LCD
lcd.print(val);
delay(1000);
lcd.clear();
4.9.PEMROGRAMAN KEYPAD
Berikut salah satu contoh pemrograman keypad.
Pengaturan hardware:
Contoh Program:
#include <LiquidCrystal.h> //memanggil Library lcd
#define c1 6 //mendefinisikan pin 6 Arduino untuk col1 keypad
#define c2 7 //mendefinisikan pin 7 Arduino untuk col2 keypad
#define c3 8 //mendefinisikan pin 8 Arduino untuk col3 keypad
#define r1 9 //mendefinisikan pin 9 Arduino untuk row1 keypad
#define r2 10 //mendefinisikan pin 10 Arduino untuk row2 keypad
#define r3 11 //mendefinisikan pin 11 Arduino untuk row3 keypad
#define r4 12 //mendefinisikan pin 12 Arduino untuk row4 keypad
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);
unsigned char key; //Variable untuk menyimpan karakter hasil penekanan
unsigned char tekan_keypad(){
key='-';
delay(10);
digitalWrite(r1,LOW);
delay(10);
if(digitalRead(c1)==LOW){key='1';}
if(digitalRead(c2)==LOW){key='2';}
if(digitalRead(c3)==LOW){key='3';}
digitalWrite(r1,HIGH);digitalWrite(r2,LOW);
delay(10);
if(digitalRead(c1)==LOW){key='4';}
if(digitalRead(c2)==LOW){key='5';}
if(digitalRead(c3)==LOW){key='6';}
digitalWrite(r2,HIGH);digitalWrite(r3,LOW);
delay(10);
if(digitalRead(c1)==LOW){key='7';}
if(digitalRead(c2)==LOW){key='8';}
if(digitalRead(c3)==LOW){key='9';}
digitalWrite(r3,HIGH);digitalWrite(r4,LOW);
delay(10);
if(digitalRead(c1)==LOW){key='*';}
if(digitalRead(c2)==LOW){key='0';}
if(digitalRead(c3)==LOW){key='#';}
digitalWrite(r4,HIGH);
delay(10);
return key;
}
void setup() {
// put your setup code here, to run once:
pinMode(c1,INPUT); //menjadikan col1 sebagai INPUT
pinMode(c2,INPUT); //menjadikan col2 sebagai INPUT
pinMode(c3,INPUT); //menjadikan col3 sebagai INPUT
pinMode(r1,OUTPUT); //Menjadikan row1 sebagai OUTPUT
pinMode(r2,OUTPUT); //Menjadikan row2 sebagai OUTPUT
pinMode(r3,OUTPUT); //Menjadikan row3 sebagai OUTPUT
pinMode(r4,OUTPUT); //Menjadikan row4 sebagai OUTPUT
//Memberi logika HIGH pada col1-col3 dan row1-row4
digitalWrite(c1,HIGH);
digitalWrite(c2,HIGH);
digitalWrite(c3,HIGH);
digitalWrite(r1,HIGH);
digitalWrite(r2,HIGH);
digitalWrite(r3,HIGH);
digitalWrite(r4,HIGH);
//Inisialisai LCD (16x2)
lcd.begin(16,2);
}
void loop() {
// put your main code here, to run repeatedly:
tekan_keypad();//Memanggil Function penekanan keypad
if(key!='-'){ //Jika isi key bukan '-'
lcd.write(key); //menampilkan hasil penekanan ke lcd
delay(200);
}
}
4.10.
PEMROGRAMAN PWM
Pulse Width Modulation (PWM). Pada Arduino UNO terdapat beberapa pin
yang support dengan fungsi PWM ini. Untuk memberikan nilai keluaran pin
PWM menggunakan analogWrite() dengan nilai 0-255, contoh analogWrite(255)
maksimum PWM yang digunakan, analogwrite(127) setengah kemampuan
PWM yang digunakan.
Pengaturan hardware:
Contoh Program:
int ledPin = ;
void setup()
{
pinMode(ledPin, OUTPUT); // pengaturan pin sebagai OUTPUT
}
void loop()
{
val = analogRead(analogPin); // membaca masukan pin
analogWrite(ledPin, val / 4);
// analogRead bernilail dari 0-1023,analogWrite bernilai 0-255
}