ARDUINO
TRAINING ARDUINO II
Latihan Pemrograman Arduino
Agus Supanto
085716068353
E-mail : bayu.ajin088@[Link]
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 | [Link]
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 | [Link]
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 | [Link]
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)
[Link]()
[Link] digunakan untuk menginisialisasi jumlah kolom dan jumlah baris
dari lcd.
Syntax : [Link]( [kolom],[baris] )
Contoh :
[Link](16,2)
//LCD dengan 16 Kolom dan 2 Baris
*) Ditulis di dalam void setup().
[Link]()
[Link] digunakan untuk menentukan posisi awal penulisan di lcd.
Syntax :
[Link]( [x],[y] )
[x]
= nomor Kolom
[y]
= nomor Baris
Contoh : [Link](2,1) //Penulisan dimulai dari Kolom 2 dan Baris 1
[Link]()
[Link] digunakan untuk menampilkan karakter (string) pada lcd.
Syntax :
[Link]([karakter/string])
Contoh :
[Link](TES LCD) //lcd akan menampilkan TES LCD
[Link]()
[Link] digunakan untuk membersihkan tampilan pada lcd.
Syntax :
[Link]()
[Link]()
[Link] digunakan untuk menampilkan satu karakter.
Syntax :
[Link]([char])
contoh : [Link](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 | [Link]
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 | [Link]
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 | [Link]
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 | [Link]
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 | [Link]
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 | [Link]
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 | [Link]
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
[Link]()
[Link] digunakan untuk menentukan nilai BaudRate.
Syntax :
[Link]( [nilai baudrate] )
Contoh :
[Link](9600) //Komunikasi Serial dengan baudrate
9600
*) Ditulis di dalam void setup().
[Link]()
[Link] digunakan untuk mengirimkan data string dari Arduino
ke PC atau perangkat lain dengan menggunakan jalur TX (PIN 1).
Syntax :
[Link]([data])
Contoh :
[Link](Latihan Serial)
[Link]()
[Link] hampir sama dengan [Link], tetapi dalam
pengiriman datanya [Link] menambahkan karakter Enter pada
setiap akhir data.
Syntax :
[Link]([data])
Contoh :
[Link](Latihan Serial)
Dasar Pemrogramman Serial
[Link]()
[Link] digunakan untuk mengirimkan data dalam bentuk biner,
satu byte data dalam setiap pengiriman.
[Link]
[Link] digunakan untuk mendapatkan jumlah karakter atau
byte yang telah diterima oleh serial port.
[Link]()
[Link] digunakan untuk membaca data yang
melalui jalur Rx (PIN 0).
Syntax : [tipe data][variable] = [Link]()
Contoh :
char Data = [Link]();
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 | [Link]
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 | [Link]
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