Anda di halaman 1dari 26

ARDUINO

TRAINING ARDUINO II
Latihan Pemrograman Arduino

Agus Supanto
085716068353
E-mail : bayu.ajin088@gmail.com

Latihan
Pemrograman
Arduino
1.

2.
3.
4.
5.
6.
7.

Led dan Button


LCD
Keypad
ADC
PWM
Serial
Seven Segment

Led dan Button


ARDUINO UNO

ARDUINO UNO R3

1121
ATMEGA328P-PU

PC0/ADC0
PC1/ADC1
PC2/ADC2
PC3/ADC3
PC4/ADC4/SDA
PC5/ADC5/SCL

PB5/SCK
PB4/MISO
~PB3/MOSI/OC2A
~ PB2/SS/OC1B
~ PB1/OC1A
PB0/ICP1/CLKO

DIGITAL (~PWM)

ANALOG IN

A0
A1
A2
A3
A4
A5

APK-TECH | techno-apk.blogspot.com

RESET

LED

AREF

PD7/AIN1
~ PD6/AIN0
PD5/T1
~
PD4/T0/XCK
~ PD3/INT1
PD2/INT0
TX PD1/TXD
RX PD0/RXD

13
12
11
10
9
8
7
6
5
4
3
2
1
0

R1
470

LED-RED

R2
10k

Dasar Pemrograman I/O

pinMode()
pinMode digunakan untuk mengkonfigurasi
INPUT/OUTPUT.
Syntax :
pinMode( [pin],[mode] )

[pin]
[mode]

PIN

secara

spesifik

sebagai

= nomor PIN
= INPUT atau OUTPUT

Contoh :

pinMode(13,OUTPUT)//PIN 13 berfungsi sebagai OUTPUT


pinMode(10,INPUT) //PIN 10 berfungsi sebagai INPUT
*) Ditulis di dalam void setup().

digitalWrite()
digitalWrite digunakan untuk memberikan nilai (logika) pada PIN.
Syntax :
digitalWrite( [pin],[logika] )

[pin]
[logika]

= nomor PIN
= HIGH atau LOW

Contoh :
digitalWrite(13, HIGH)//Memberi logika HIGH pada PIN 13

digitalRead()
digitalRead digunakan untuk membaca nilai ( HIGH atau LOW ) dari PIN.
Syntax :
digitalRead( [pin] )

[pin]

= nomor PIN

Program Nyala Led

ARDUINO UNO

ARDUINO UNO R3

1121
ATMEGA328P-PU

PC0/ADC0
PC1/ADC1
PC2/ADC2
PC3/ADC3
PC4/ADC4/SDA
PC5/ADC5/SCL

PB5/SCK
PB4/MISO
~PB3/MOSI/OC2A
~ PB2/SS/OC1B
~ PB1/OC1A
PB0/ICP1/CLKO

DIGITAL (~PWM)

ANALOG IN

A0
A1
A2
A3
A4
A5

APK-TECH | techno-apk.blogspot.com

RESET

LED

AREF

PD7/AIN1
~ PD6/AIN0
PD5/T1
~
PD4/T0/XCK
~ PD3/INT1
PD2/INT0
TX PD1/TXD
RX PD0/RXD

13
12
11
10
9
8
7
6
5
4
3
2
1
0

R1
470

LED-RED

R2
10k

Program Button

Jika Tombol ditekan maka Led akan Nyala

Pemrograman Delay

delay()
delay atau jeda digunakan untuk menghentikan program dalam jumlah
waktu tertentu / sesuai dengan nilai yang tertulis dalam
parameternya, dengan satuan waktu dalam milidetik.
Syntax :
delay( [value] )
[value]
= nilai parameter
Contoh :
delay(1000)//program akan berhenti selama 1000 milidetik

delayMicroseconds()
delayMicroseconds sama dengan delay hanya saja satuan waktunya
dalam mikrodetik.
Syntax :
delay( [value] )
[value]
= nilai parameter
Contoh :
delayMicroseconds(1000)//program akan berhenti selama 1000
mikrodetik

Program Blink

Led akan Nyala Mati setiap 1 detik

LCD 16x2
LCD 16X2

ARDUINO UNO

ARDUINO UNO R3

1121
ATMEGA328P-PU

PC0/ADC0
PC1/ADC1
PC2/ADC2
PC3/ADC3
PC4/ADC4/SDA
PC5/ADC5/SCL

PD7/AIN1
~ PD6/AIN0
PD5/T1
~
PD4/T0/XCK
~ PD3/INT1
PD2/INT0
TX PD1/TXD
RX PD0/RXD

7
6
5
4
3
2
1
0

D0
D1
D2
D3
D4
D5
D6
D7
7
8
9
10
11
12
13
14

RS
RW
E

VSS
VDD
VEE

13
12
11
10
9
8

4
5
6

PB5/SCK
PB4/MISO
~PB3/MOSI/OC2A
~ PB2/SS/OC1B
~ PB1/OC1A
PB0/ICP1/CLKO

1
2
3

AREF

DIGITAL (~PWM)

ANALOG IN

A0
A1
A2
A3
A4
A5

APK-TECH | techno-apk.blogspot.com

RESET

LM016L

Dasar Pemrograman LCD

#include <LiquidCrystal.h>// menginputkan library LiquidCrystal.h


LiquidCrystal lcd(5,4,3,2,1,0)//Rs,En,D4,D5,D6,D7(mendeklarasikan pin lcd)
lcd.begin()
lcd.begin digunakan untuk menginisialisasi jumlah kolom dan jumlah baris
dari lcd.
Syntax : lcd.begin( [kolom],[baris] )
Contoh :
lcd.begin(16,2)
//LCD dengan 16 Kolom dan 2 Baris
*) Ditulis di dalam void setup().
lcd.setCursor()
lcd.setCursor digunakan untuk menentukan posisi awal penulisan di lcd.
Syntax :
lcd.setCursor( [x],[y] )
[x]
= nomor Kolom
[y]
= nomor Baris
Contoh : lcd.setCursor(2,1) //Penulisan dimulai dari Kolom 2 dan Baris 1
lcd.Print()
lcd.print digunakan untuk menampilkan karakter (string) pada lcd.
Syntax :
lcd.print([karakter/string])
Contoh :
lcd.print(TES LCD) //lcd akan menampilkan TES LCD
lcd.clear()
lcd.clear digunakan untuk membersihkan tampilan pada lcd.
Syntax :
lcd.clear()
lcd.write()
lcd.write digunakan untuk menampilkan satu karakter.
Syntax :
lcd.write([char])
contoh : lcd.write(A)

Program LCD

LCD 16X2

ARDUINO UNO

ARDUINO UNO R3

1121
ATMEGA328P-PU

PC0/ADC0
PC1/ADC1
PC2/ADC2
PC3/ADC3
PC4/ADC4/SDA
PC5/ADC5/SCL

PD7/AIN1

~ PD6/AIN0
PD5/T1
~
PD4/T0/XCK
~ PD3/INT1
PD2/INT0
TX PD1/TXD
RX PD0/RXD

7
6
5
4
3
2
1
0

D0
D1
D2
D3
D4
D5
D6
D7
7
8
9
10
11
12
13
14

RS
RW
E

VSS
VDD
VEE

13
12
11
10
9
8

4
5
6

PB5/SCK
PB4/MISO
~PB3/MOSI/OC2A
~ PB2/SS/OC1B
~ PB1/OC1A
PB0/ICP1/CLKO

1
2
3

AREF

DIGITAL (~PWM)

ANALOG IN

A0
A1
A2
A3
A4
A5

APK-TECH | techno-apk.blogspot.com

RESET

LM016L

Keypad
ARDUINO UNO

LCD 16X2
LM016L

ARDUINO UNO R3

R1

R2

R3

R3

RS
RW
E

D0
D1
D2
D3
D4
D5
D6
D7
7
8
9
10
11
12
13
14

1
2
3

C2
C1

4
5
6

VSS
VDD
VEE

7
6
5
4
3
2
1
0

C3

PD4/T0/XCK
~ PD3/INT1
PD2/INT0
TX PD1/TXD
RX PD0/RXD

R4
R3
R2
R1
C3

C2

PD7/AIN1

~ PD6/AIN0
PD5/T1
~

13
12
11
10
9
8

C1

1121
ATMEGA328P-PU

PC0/ADC0
PC1/ADC1
PC2/ADC2
PC3/ADC3
PC4/ADC4/SDA
PC5/ADC5/SCL

PB5/SCK
PB4/MISO
~PB3/MOSI/OC2A
~ PB2/SS/OC1B
~ PB1/OC1A
PB0/ICP1/CLKO

DIGITAL (~PWM)

ANALOG IN

A0
A1
A2
A3
A4
A5

APK-TECH | techno-apk.blogspot.com

RESET

AREF

Pemrogramman Keypad

Pengetahuan Dasar yang Dibutuhkan


Pembuatan Variable
Pemrograman Input / Output
Pemrograman Delay
Pemrograman LCD
Alias (#define)
Function
Langkah-langkah Pembuatan Program Keypad
1. Membuat alias (#dafine) dari Pin-pin yang akan
digunakan
2. Membuat Function Penekanan Keypad
3. Menginisialisasi LCD dan Pin-pin yang digunakan
4. Membuat Program Utama

ADC

ARDUINO UNO

LCD 16X2
LM016L

PC0/ADC0
PC1/ADC1
PC2/ADC2
PC3/ADC3
PC4/ADC4/SDA
PC5/ADC5/SCL

ARDUINO UNO R3

1121
ATMEGA328P-PU

53%

ANALOG IN

1k

A0
A1
A2
A3
A4
A5

PD7/AIN1

~ PD6/AIN0
PD5/T1
~
PD4/T0/XCK
~ PD3/INT1
PD2/INT0
TX PD1/TXD
RX PD0/RXD

7
6
5
4
3
2
1
0

D0
D1
D2
D3
D4
D5
D6
D7
7
8
9
10
11
12
13
14

RS
RW
E
4
5
6

VSS
VDD
VEE

13
12
11
10
9
8

1
2
3

PB5/SCK
PB4/MISO
~PB3/MOSI/OC2A
~ PB2/SS/OC1B
~ PB1/OC1A
PB0/ICP1/CLKO

DIGITAL (~PWM)

RVARIABLE

APK-TECH | techno-apk.blogspot.com

RESET

AREF

Dasar Pemrograman ADC

analogRead()
analogRead digunakan untuk membaca nilai dari PIN analog.
Syntax :
analogRead( [pin] )
[pin]
= nomor PIN Analog
Contoh :
analogRead(A1) //Membaca nilai Analog pada PIN A1

Program ADC

ARDUINO UNO

LCD 16X2
LM016L

PC0/ADC0
PC1/ADC1
PC2/ADC2
PC3/ADC3
PC4/ADC4/SDA
PC5/ADC5/SCL

ARDUINO UNO R3

1121
ATMEGA328P-PU

52%

ANALOG IN

1k

A0
A1
A2
A3
A4
A5

DIGITAL (~PWM)

RVARIABLE

PD7/AIN1

~ PD6/AIN0
PD5/T1
~
PD4/T0/XCK
~ PD3/INT1
PD2/INT0
TX PD1/TXD
RX PD0/RXD

7
6
5
4
3
2
1
0

D0
D1
D2
D3
D4
D5
D6
D7
7
8
9
10
11
12
13
14

RS
RW
E
4
5
6

VSS
VDD
VEE

13
12
11
10
9
8

1
2
3

APK-TECH | techno-apk.blogspot.com

RESET

AREF
PB5/SCK
PB4/MISO
~PB3/MOSI/OC2A
~ PB2/SS/OC1B
~ PB1/OC1A
PB0/ICP1/CLKO

PWM
ARDUINO UNO

PC0/ADC0
PC1/ADC1
PC2/ADC2
PC3/ADC3
PC4/ADC4/SDA
PC5/ADC5/SCL

ARDUINO UNO R3

1121
ATMEGA328P-PU

40%

ANALOG IN

1k

A0
A1
A2
A3
A4
A5

PB5/SCK
PB4/MISO
PB3/MOSI/OC2A
~
~ PB2/SS/OC1B
~ PB1/OC1A
PB0/ICP1/CLKO

DIGITAL (~PWM)

RVARIABLE

APK-TECH | techno-apk.blogspot.com

RESET

AREF

PD7/AIN1

~ PD6/AIN0
~ PD5/T1
PD4/T0/XCK
~ PD3/INT1
PD2/INT0
TX PD1/TXD
RX PD0/RXD

13
12
11
10
9
8

R1
470

D?
LED-RED

7
6
5
4
3
2
1
0

Dasar Pemrograman PWM

analogWrite()
analogWrite digunakan untuk mengeluarkan sinyal analog PWM (Pada
Arduino UNO nilai sinyal PWM dari 0-255).
Syntax :
analogWrite( [pin],[nilai PWM] )
[pin]
= nomor PIN
[nilai PWM]
= besarnya PWM
Contoh :
analogWrite(3,255)//menghasilkan PWM 255 di PIN D3

Program PWM

ARDUINO UNO

PC0/ADC0
PC1/ADC1
PC2/ADC2
PC3/ADC3
PC4/ADC4/SDA
PC5/ADC5/SCL

ARDUINO UNO R3

1121
ATMEGA328P-PU

35%

ANALOG IN

1k

A0
A1
A2
A3
A4
A5

PB5/SCK
PB4/MISO
~PB3/MOSI/OC2A
~ PB2/SS/OC1B
~ PB1/OC1A
PB0/ICP1/CLKO

DIGITAL (~PWM)

RVARIABLE

APK-TECH | techno-apk.blogspot.com

Nyala Led
Berdasarkan
Nilai dari
Variable Resistor

RESET

AREF

PD7/AIN1
~ PD6/AIN0
PD5/T1
~
PD4/T0/XCK
~ PD3/INT1
PD2/INT0
TX PD1/TXD
RX PD0/RXD

13
12
11
10
9
8

R1
470

D?
LED-RED

7
6
5
4
3
2
1
0

Serial

ARDUINO UNO

ARDUINO UNO R3

1121
ATMEGA328P-PU

PC0/ADC0
PC1/ADC1
PC2/ADC2
PC3/ADC3
PC4/ADC4/SDA
PC5/ADC5/SCL

PB5/SCK
PB4/MISO
~PB3/MOSI/OC2A
~ PB2/SS/OC1B
~ PB1/OC1A
PB0/ICP1/CLKO

DIGITAL (~PWM)

ANALOG IN

A0
A1
A2
A3
A4
A5

APK-TECH | techno-apk.blogspot.com

RESET

AREF

PD7/AIN1
~ PD6/AIN0
PD5/T1
~
PD4/T0/XCK
~ PD3/INT1
PD2/INT0
TX PD1/TXD
RX PD0/RXD

13
12
11
10
9
8
7
6
5
4
3
2
1
0

RXD
TXD
RTS
CTS

Perangkat Lain (PC, ARduino, Shield, dll)

Dasar Pemrogramman Serial

Serial.begin()
Serial.begin digunakan untuk menentukan nilai BaudRate.
Syntax :
Serial.begin( [nilai baudrate] )
Contoh :
Serial.begin(9600) //Komunikasi Serial dengan baudrate
9600
*) Ditulis di dalam void setup().

Serial.print()
Serial.print digunakan untuk mengirimkan data string dari Arduino
ke PC atau perangkat lain dengan menggunakan jalur TX (PIN 1).
Syntax :
Serial.print([data])
Contoh :
Serial.print(Latihan Serial)

Serial.println()
Serial.println hampir sama dengan Serial.print, tetapi dalam
pengiriman datanya Serial.println menambahkan karakter Enter pada
setiap akhir data.
Syntax :
Serial.println([data])
Contoh :
Serial.println(Latihan Serial)

Dasar Pemrogramman Serial

Serial.write()
Serial.write digunakan untuk mengirimkan data dalam bentuk biner,
satu byte data dalam setiap pengiriman.

Serial.available
Serial.available digunakan untuk mendapatkan jumlah karakter atau
byte yang telah diterima oleh serial port.

Serial.read()
Serial.read digunakan untuk membaca data yang
melalui jalur Rx (PIN 0).
Syntax : [tipe data][variable] = Serial.read()
Contoh :
char Data = Serial.read();

masuk

ke

Arduino

Program Serial

7 SEGMENT
ARDUINO UNO

ARDUINO UNO R3

1121
ATMEGA328P-PU

PC0/ADC0
PC1/ADC1
PC2/ADC2
PC3/ADC3
PC4/ADC4/SDA
PC5/ADC5/SCL

PB5/SCK
PB4/MISO
~PB3/MOSI/OC2A
~ PB2/SS/OC1B
~ PB1/OC1A
PB0/ICP1/CLKO
DIGITAL (~PWM)

ANALOG IN

A0
A1
A2
A3
A4
A5

APK-TECH | techno-apk.blogspot.com

RESET

AREF

PD7/AIN1
~ PD6/AIN0
~ PD5/T1
PD4/T0/XCK
~ PD3/INT1
PD2/INT0
TX PD1/TXD
RX PD0/RXD

OUTA2
OUTB2
OUTC2
OUTD2
OUTE2
OUTF2
13
OUTG2
12
11
10
9
8
7
6
5
4
3
2
1
0

OUTA1
OUTB1
OUTC1
OUTD1
OUTE1
OUTF1
OUTG1

U2

IND2
INC2
INB2
INA2
IND1
INC1
INB1
INA1

INA2
INB2
INC2
IND2

INA1
INB1
INC1
IND1

7
1
2
6
4
5
3

A
B
C
D
BI/RBO
RBI
LT
U1

QA
QB
QC
QD
QE
QF
QG

7 74LS47
A
1
B
2
C
6
D
4
BI/RBO
5
RBI
3
LT

QA
QB
QC
QD
QE
QF
QG

74LS47

13
12
11
10
9
15
14
13
12
11
10
9
15
14

OUTA2
OUTB2
OUTC2
OUTD2
OUTE2
OUTF2
OUTG2
OUTA1
OUTB1
OUTC1
OUTD1
OUTE1
OUTF1
OUTG1

Program 7Segment I

ARDUINO UNO

ARDUINO UNO R3

1121
ATMEGA328P-PU

PC0/ADC0
PC1/ADC1
PC2/ADC2
PC3/ADC3
PC4/ADC4/SDA
PC5/ADC5/SCL

DIGITAL (~PWM)

ANALOG IN

A0
A1
A2
A3
A4
A5

APK-TECH | techno-apk.blogspot.com

RESET

AREF
PB5/SCK
PB4/MISO
~PB3/MOSI/OC2A
~ PB2/SS/OC1B
~ PB1/OC1A
PB0/ICP1/CLKO
PD7/AIN1

~ PD6/AIN0
PD5/T1
~
PD4/T0/XCK
~ PD3/INT1
PD2/INT0
TX PD1/TXD
RX PD0/RXD

OUTA2
OUTB2
OUTC2
OUTD2
OUTE2
OUTF2
13
OUTG2
12
11
10
9
8
7
6
5
4
3
2
1
0

OUTA1
OUTB1
OUTC1
OUTD1
OUTE1
OUTF1
OUTG1

U2

IND2
INC2
INB2
INA2
IND1
INC1
INB1
INA1

INA2
INB2
INC2
IND2

INA1
INB1
INC1
IND1

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

A
B
C
D
BI/RBO
RBI
LT
U1

QA
QB
QC
QD
QE
QF
QG

74LS47
A
B
C
D
BI/RBO
RBI
LT

QA
QB
QC
QD
QE
QF
QG

74LS47

13
12
11
10
9
15
14
13
12
11
10
9
15
14

OUTA2
OUTB2
OUTC2
OUTD2
OUTE2
OUTF2
OUTG2
OUTA1
OUTB1
OUTC1
OUTD1
OUTE1
OUTF1
OUTG1

Program 7Segment II