0% menganggap dokumen ini bermanfaat (0 suara)
779 tayangan120 halaman

Panduan Trainer Kit Arduino

Dokumen tersebut memberikan penjelasan singkat tentang Arduino, termasuk beberapa tipe Arduino, pengertian Arduino, cara pemrograman Arduino, dan contoh aplikasi yang dapat dibuat menggunakan Arduino.

Diunggah oleh

Viki Aleks
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai DOCX, PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
779 tayangan120 halaman

Panduan Trainer Kit Arduino

Dokumen tersebut memberikan penjelasan singkat tentang Arduino, termasuk beberapa tipe Arduino, pengertian Arduino, cara pemrograman Arduino, dan contoh aplikasi yang dapat dibuat menggunakan Arduino.

Diunggah oleh

Viki Aleks
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai DOCX, PDF, TXT atau baca online di Scribd
Anda di halaman 1/ 120

“TRAINER KIT ARDUINO”

www.inkubator-teknologi.com
“TRAINER KIT ARDUINO”

Daftar Isi
PENGERTIAN SINGKAT ARDUINO........................................................................................1
Beberapa Tipe Arduino........................................................................................................1
Arduino UNO........................................................................................................................1
PEMROGRAMAN ARDUINO.................................................................................................3
Struktur dasar......................................................................................................................3
Ekspresi Bilangan.................................................................................................................4
Kontrol Program..................................................................................................................4
Operator Aritmatika............................................................................................................8
Variabel................................................................................................................................9
Tipe Data..............................................................................................................................10
PIN INPUT – OUTPUT...........................................................................................................11
PERSIAPAN HARDWARE DAN SOFTWARE...........................................................................11
DIGITAL OUTPUT..................................................................................................................15
SEVEN SEGMENT..................................................................................................................21
LCD DISPLAY.........................................................................................................................26
DIGITAL INPUT.....................................................................................................................30
PULSE WIDTH MODULATION (PWM)..................................................................................34
KOMUNIKASI SERIAL............................................................................................................36
ANALOG INPUT (ADC)..........................................................................................................40
EEPROM...............................................................................................................................42
Jam Digital display 7 segment 6 digit..................................................................................45
Kalender digital tampilan LCD.............................................................................................48
Jam Alarm............................................................................................................................57
Stop watch tampilan LCD.....................................................................................................60
Kunci Elektrik dengan Password..........................................................................................63
Mengukur jarak dg sensor ultrasonic..................................................................................73
Penghitung jumlah barang..................................................................................................74
Kontrol Motor DC................................................................................................................76
Kontrol Motor Servo............................................................................................................77
Kontrol Motor Stepper........................................................................................................77
Mengontrol kecepatan motor DC dengan potensio meter.................................................78

www.inkubator-
“TRAINER KIT ARDUINO”
Mengontrol kecepatan motor Servo dengan potensio meter............................................80
Kontrol Suhu Otomatis........................................................................................................81
Membaca Remot Kontrol....................................................................................................83
Kontrol Peralatan dengan Remot........................................................................................85
Kontrol 4 lampu via android................................................................................................91
Kontrol motor dengan Bluetooth........................................................................................95
Monitoring Suhu Via Komputer (Grafik).............................................................................96
Monitoring Suhu Lm35 via Android.....................................................................................98
IoT Kontrol Relay Melalui Internet......................................................................................100
Kalender Digital Animasi Dot Matrix...................................................................................105
Kontrol 4 Relay dg SMS........................................................................................................108

www.inkubator-
“TRAINER KIT

PENGERTIAN SINGKAT ARDUINO

Arduino ini merupakan board mikrokontroler yang berbasis pada mikrokontroler tipe ATmega.

Gambar Board Arduino Mega

Terus apa bedanya dengan board mikrokontroler pada umumnya, seperti minimum system ? Jika
minimum system bisa diprogram dengan bahasa pemrograman apa saja (C, assembly, basic) maka
Arduino diprogram dengan bahasa khusus, dengan struktur sama dengan bahasa C. Dengan bahasa
tersebut maka pemrograman menjadi lebih mudah, inilah kelebihan arduino jika dibanding dengan
minimum system.

Beberapa Tipe Arduino

Arduino diproduksi di Italia (ada juga yang made in China). Sudah banyak varian dari Arduino yang ada di
pasaran. Berikut beberapa diantaranya :

Tipe Arduino Mikrokontroler Pin I/O Memori


32K Byte Flash PEROM, 1 K Byte
Nano ATmega328 14 pin
SRAM, 512 Byte EEPROM
32K Byte Flash PEROM, 2 K Byte
Duemilanove ATmega328 14 pin
SRAM, 1 K Byte EEPROM
256 K Byte Flash PEROM, 8K Byte
Mega 2560 ATmega2560 54 pin
SRAM, 4 K Byte EEPROM
32K Byte Flash PEROM, 2 K Byte
UNO ATmega328 14 pin
SRAM, 1 K Byte EEPROM

www.inkubator- Page
“TRAINER KIT

ARDUINO MEGA 2560

Arduino tipe MEGA2560 berbasis ATmega2560 dengan spesifikasi hardware Arduino MEGA2560:
 Microcontroller : ATmega2560
 Tegangan operasi :5V
 Tegangan Input : 7 – 12V
 Digital I/O : 54 pin
 PWM : 15 channel
 Analog Input : 16 channel
 Memory : 256KB Flash PEROM (8 KB digunakan oleh
bootloader), 8KB SRAM dan 4KB EEPROM
 Frekuensi Clock : 16 MHz

Koneksi Pin Input


USB ke Output
komputer (0, 1 dst)

ATmega2560

Jack P. Supply Analog Input


External Pin A0, A1 dst

Gambar Board Arduino Mega2560

Power Supply.

Ada 2 pilihan sumber tegangan yang dapat dipakai, dari port USB atau dari power supply
eksternal dan sumber tegangan tersebut dipilih secara otomatis. Cukup menghubungkan port
USB di komputer/laptop dengan Arduino maka secara otomatis power supply bersumber dari
port USB. Untuk sumber tegangan eksteranal (non-USB) Anda cukup menghubungkan dengan
jack DC. Tegangan yang direkomendasikan adalah 7 sampai 12 V.

Input – Output.

Terdapat 54 pin digital input – output. Secara umum berfungsi sebagai Pin input – output biasa,
namun ada beberapa pin yang mempunyai fungsi alternative seperti 15 di antaranya dapat
digunakan sebagai output PWM, 16 input analog, 4 UART (port serial).

www.inkubator- Page
“TRAINER KIT

Analog Input.

Terdapat 16 pin analog input, yang berfungsi untuk membaca sinyal masukan analog seperti
sensor analog. Pin analog input juga dapat digunakan untuk keperluan digital I/O.

PEMROGRAMAN ARDUINO
Tidak serumit bahasa pemrograman C untuk ATmega seperti Codevison-AVR, pemrograman Arduino
menjadi lebih mudah.

Mekanisme pemrogramannya sama dengan memprogram mikrokontroler, mulai dari menulis program
kemudian mengeksekusi (compile) selanjutnya proses upload yaitu mengisikan program kedalam memori
program Arduino.

Tulis kode program


Verify Upload
(Compile)

Struktur dasar

Sebuah program Arduino minimal terdiri dari 2 bagian :

Inisialisasi.

Inisialisasi merupakan proses mengatur hardware seperti pin I/O, PWM, serial dan peripheral
lain. Struktur ini ditulis diawal program.

Sebagai contoh pin I/O mempunyai beberapa fungsi : digital input, digital output, serial komunikasi dan
PWM. Sebuah pin hanya dapat berfungsi untuk 1 tujuan, jadi jika kita hendak menggunakan pin tersebut
sebagai digital output maka harus diinisialisasi terlebih dahulu sebagai pin output.

Inisialisasi menggunakan struktur setup(). Sebagai contoh :

void setup()
{
Serial.begin(9600);
pinMode(buttonPin, INPUT);
}

Program utama.

Setiap program utama berbeda antara satu program dengan program yang lain. Struktur yang
digunakan adalah loop(). Sebagai contoh :

void loop()

www.inkubator- Page
“TRAINER KIT

Harap diperhatikan bahwa bahasa pemrograman Arduino (sebagaimana bahasa C) termasuk


case sensitive, artinya huruf besar dengan huruf kecil akan dianggap berbeda.

Komentar
Komentar digunakan untuk memberi keterangan pada program yang dibuat, sifatnya tidak wajib dan
tidak akan berpengaruh pada jalannya program karena tidak ikut dieksekusi. Komentar dapat dibuat
untuk 1 baris maupun lebih dari 1 baris, berikut ini caranya :
//komentar untuk 1 baris diawali dengan 2 garis miring.

/*komentar untuk lebih dari 1 baris diawali dengan tanda garis miring +
asterisk atau bintang (/*) Serta diakhiri dengan tanda asterisk + garis
miring */

Ekspresi Bilangan
Dalam pemrograman Arduino, bilangan dapat diekspresikan dalam beberapa format.
 Desimal
Ditulis biasa tanpa tambahan apapun. Contoh : 234.
 Oktal
Ditulis dengan awalan angka ‘0’ (nol) didepan. Contoh : 0631.
 Biner
Penulisan diawali dengan huruf ‘B’. Contoh : B11100011.
 Heksadesimal
Diawali dengan ‘0x’ . Contoh : 0x8C.

Kontrol Program
Sebuah program yang kita buat membutuhkan suatu kontrol, misalnya pengujian kondisi, melompat pada
perintah yang lain dan sebagainya.
Pengujian Kondisi.
if
Digunakan untuk menguji kondisi, jika kondisi tersebut benar maka perintah didalam if akan dikerjakan.
if (kondisi)
{
Pernyataan/perintah;
}
Contoh :
if(x>7)
{
x=x+1;
}

if – else

www.inkubator- Page
“TRAINER KIT

Hampir sama dengan if, hanya saja ada 2 pilihan pernyataan/perintah. Jika kondisi benar maka perintah
didalam blok if yang dikerjakan, jika kondisi salah maka pernyataan di dalam else yang dikerjakan.
if (kondisi)
{
Pernyataan/perintah 1:
}
else
{
Pernyataan/perintah 2;
}
Contoh :
if (x>7)
{
x=x+1;
}
else
{
x=x+2;
}

if – else if

Untuk pengujian dengan banyak kondisi maka digunakan if – else if.

if (kondisi 1)
{
Pernyataan/perintah 1;
}
else if (kondisi 2)
{
Pernyataan/perintah 2;
}
else if (kondisi ke-n)
{
Pernyataan/perintah ke-n;
}
Contoh :
if(tombol=='1'){
Serial.println("Angka 1");
}
else if(tombol =='2'){
Serial.println("Angka 2");
}
else if(tombol =='3'){
Serial.println("Angka 3");
}

switch case

Seperti pernyataan if, digunakan untuk memilih kondisi yang sesuai untuk kemudian mengerjakan
perintahnya. Bedanya adalah kondisi yang diuji berupa nilai sebuah veriabel.

switch (variabel)//variabel yang diuji nilainya


{
case 1: //pernyataan/perintah 1

www.inkubator- Page
“TRAINER KIT

break;
case 2: //pernyataan/perintah 2
break;
case n: //pernyataan/perintah n
break;
default : //pernyataan/perintah
}
Jika variabel bernilai ‘1’ maka pernyataan 1 yang dikerjakan. Break berfungsi untuk mengakhiri
pernyataan/perintah pada setiap case. Default berfungsi jika semua nilai dalam case tidak ada yang sama
dengan variabel.

Contoh :

switch (j)
{
case 1: digitalWrite(ledPin1, HIGH); break;
case 2: digitalWrite(ledPin2, HIGH); break;
case 3: digitalWrite(ledPin3, HIGH); break;
default: digitalWrite(ledPin4, LOW); break;
}

Perulangan.

while

Untuk membuat perulangan yang tidak terbatas selama kondisi di dalam while benar.

while(kondisi)
{
//pernyataan/perintah
}
Contoh :
while(j<100)
{
J++;
}

do ... while.

Hampir sama dengan while, untuk do – while pernyataan/perintah dikerjakan terlebih dahulu baru
melihat kondisi didalam ekspresi while, jika benar maka pernyataan/perintah akan diulangi lagi.

do
{
//pernyataan/perintah
}
while (kondisi);
Contoh :
do
{ J+
+;
}
while (j<1000);

www.inkubator- Page
“TRAINER KIT

for

Digunakan untuk perulangan yang terbatas, misalnya mengulang perintah sebanyak 10 kali.

for(inisialisasi; kondisi; step)


{
//pernyataan atau perintah
}
Inisialisasi : nilai awal variabel untuk proses perulangan.
Kondisi : kondisi yang menentukan proses perulangan, jika benar perulangan dikerjakan.
Step : tahap perulangan, biasanya dalam bentuk penambahan.
Contoh :

for (x=0; x<100; x++)


{
Serial.println(x);
}
Kontrol program yang lain.

goto.
Untuk melompat/menuju perintah yang telah diberi label.
Goto label;
Contoh :
while(1)
{
digitalWrite(ledPin1, HIGH);
delay(1000);
digitalWrite(ledPin1, LOW);
delay(1000);
if (digitalRead(inPin)==LOW)
{goto keluar;}
}
keluar:

return
Digunakan untuk memberikan nilai balik dari sebuah fungsi.
Contoh :
int checkSensor(){
if (analogRead(0) > 400) {
return 1;
else{
return 0;
}
}

www.inkubator- Page
“TRAINER KIT

continue
Untuk melewatkan perulangan yang tersisa dari struktur looping (do, for atau while).
Contoh :

for (x = 0; x < 255; x ++)


{
if (x > 40 && x < 120){
continue;
}
digitalWrite(PWMpin, x);
delay(50);
}

break
Perintah ‘keluar’ dari pernyataan perulangan do, for atau while. Juga digunakan untuk mengakhiri
pernyataan dalam switch – case .

Operator Aritmatika.

Operator Keterangan
= Pemberian nilai
+ Operasi penjumlahan
- Operasi pengurangan
* Operasi perkalian
/ Operasi pembagian
% Operasi sisa pembagian
Operator Perbandingan.
Operator Keterangan
== Operator persamaan. Jika kedua nilai yang dibandingkan
sama hasilnya ‘true’.
!= Pertidaksamaan. Jika kedua nilai yang dibandingkan tidak
sama hasilnya ‘true’
> Lebih besar.
< Lebih kecil.
>= Lebih besar atau sama dengan.
<= Lebih kecil atau sama dengan.
Operator Boolean.

Operator Keterangan
&& AND
|| OR
! NOT
Operator Bitwise.

Operator Keterangan

www.inkubator- Page
“TRAINER KIT

<< Geser kiri


>> Geser kanan
& AND
| OR
^ XOR
~ NOT
Operator Penaikan dan Penurunan.

Operator Keterangan Contoh Arti


++ Penaikan 1 / increment n++ n= n+1
-- Penurunan 1 / decrement n-- n= n-1

Variabel
Dalam pembuatan program aplikasi Arduino, sering kita memerlukan tempat atau wadah untuk
menampung atau menyimpan suatu data, tempat atau wadah tersebut adalah variabel.
Nama variabel sebenarnya bebas, boleh 1 huruf abjad seperti ‘i’ (tanpa petik), dapat juga sebuah kata
misalnya ‘hasil’. Yang jelas tidak boleh mengandung spasi, maksimal 32 karakter dan tidak boleh
menggunakan istilah baku yang sudah dipakai dalam bahasa C.
Sebelum dipakai, variabel terlebih dahulu dideklarasikan dengan cara :
[Tipe data] [nama variabel]
Contoh :
Int bilangan_1;
Atau bisa juga langsung diberi nilai
[tipe data] [nama variabel][ = ][nilai]
Contoh :

int bilangan_1=20;//variabel bilangan tipe integer dengan nilai awal 20

Tipe Data

Setiap variabel yang dibuat harus mempunyai tipe data yang menunjukkan kemampuan variabel tersebut
menampung data.

Tipe Data Lebar Data Jangkauan


char 1 byte -128 s/d 127
unsigned char 1 byte 0 s/d 255
byte 1 byte 0 s/d 255
word 2 byte 0 s/d 65535
int 2 byte -32768 s/d 32767
unsigned int 2 byte 0 s/d 65535
long 4 byte -2147438648 s/d 2147438647
unsigned long 4 byte 0 s/d 4294967295
float 4 byte - 3.4028235E+38 s/d3.4028235E+38

www.inkubator- Page
“TRAINER KIT

PIN INPUT – OUTPUT

Pada board Arduino UNO terdapat 13 pin I/O, dari namanya kita tahu bahwa fungsinya dapat
sebagai pin input (masukan) maupun pin output (keluaran).
Inisialisasi Fungsi Pin I/O
Sebuah pin pada saat yang sama hanya mempunyai satu fungsi, sebagai input saja atau output
saja, untuk itu harus ditentukan dulu fungsinya, yaitu ketika inisialisasi (setup()), dengan
cara:
pinMode(pin, mode);
 pin : nomor pin yang akan dikonfigurasi (nomor pin pada board Arduino UNO, 0 – 13 atau
A0 – A5).
 mode : INPUT atau OUTPUT.
Sebagai contoh jika pin no 2 akan dibuat sebagai pin output, maka :
pinMode(2, OUTPUT);
Contoh yang lain pin no 4 dibuat sebagai input :
pinMode(4, INPUT);
Perhatikan penulisan huruf, besar kecilnya sangat berpengaruh.
Menulis Data Digital di Pin Output
Setelah membuat pin sebagai digital output dengan fungsi pinMode(pin,OUTPUT) selanjutnya
untuk menulis atau mengeluarkan data digital dengan perintah :
digitalWrite(pin, value);

 pin : nomor pin digital output.


 value : HIGH atau 1 (5 volt) atau LOW atau 0 (0 volt/ground).
Sebagai contoh, pin 3 sebagai pin digital output akan diberi logika 1 :
pinMode(3, OUTPUT);
digitalWrite(3, HIGH);
Atau dapat juga ditulis dengan cara lain, yaitu :
digitalWrite(3, 1);
Membaca Data Digital di Pin Input
Jika sebuah pin dibuat sebagai pin input, maka kita masih harus menentukan tipe inputnya :
floating atau pullup. Jika kita pilih pullup maka resistor pullup internal (pada setiap pin) akan
aktif. Caranya adalah :
digitalWrite(pin, value);

 pin : nomor pin yang diset sebagai pin input.


 value : HIGH atau 1 (pullup aktif) atau LOW atau 0 (floating).
Contoh pin no 4 akan dibuat sebagai pin input dengan pullup :
pinMode(4,INPUT);

www.inkubator- Page
“TRAINER KIT

digitalWrite(4,HIGH);
Setelah diset sebagai pin input, fungsi pembacaan data digitalnya adalah :
Var=digitalRead(pin);
Misalnya akan dibaca pin no 4, hasil pembacaan disimpan dalan variabel baca :
baca=digitalRead(4);

PERSIAPAN HARDWARE DAN SOFTWARE

Kebutuhan Hardware

Semua hardware sudah tersedia pada paket pembelajaran Trainer Kit Arduino.

 1 board Trainer Kit Arduino


 Kabel USB printer
 Kabel koneksi

Power supply sudah diperoleh melalui jalur tegangan dari port USB (komputer).

Hardware Trainer Kit Arduino.

ARDUINO
DOT MATRIX
UNO
8X32

POWER
7 SEGMENT 6
SUPPLY
DIGIT

LCD DISPLAY MODEM


2X16 SIM800L

BUZZER 4 RELAY

SENSOR BLUETOOTH
ULTRASONIC HC-05

TRAFFIC LIGHT ESP8266


SIMULATOR
KEYPAD
SENSOR4X4
INFRARED
POTENSIOSENSORRTC8 TOMBOL8 LEDMOTORMOTORMOTOR METERLM35DS1307PUSH ONDCSERVOSTEPPER

www.inkubator- Page
“TRAINER KIT

Instalasi driver

 Buka file di dalam folder 2. Instalasi Arduino Lengkap


 buka folder DRIVER ARUINO dg IC driver CH340
 Jalankan file SETUP.EXE
 klik install.

Tunggu sampai driver terinstal.


 Colokkan Arduino MEGA2560 ke port USB computer/laptop. Jika sudah berhasil maka
akan tampil di Device Manager.
 Buka Device Manager

www.inkubator- Page
“TRAINER KIT

 Arduino MEGA2560 ada di COM5. Ingat nomor com-nya ini nanti kita seting juga di
Arduino IDE pada com 5 (Nomor COM menyesuaikan dengan COM
computer/laptop Anda).
 Board Arduino siap digunakan.

Instalasi Software Compiler

Software yang digunakan untuk membuat program berbasis board Arduino sifatnya free, dan instalasinya
juga sangat gampang. Masih menggunakan OS Windows, silahkan explore folder arduino-1.6.11 (untuk
versi terbaru bisa download di http://arduino.cc/en/Main/Software). Klik 2 kali (klik kanan terus open)
file Arduino.exe.

www.inkubator- Page
“TRAINER KIT

Klik 2 kali

Untuk penggunaannya kita akan sering memakai toolbar, keterangan tombol toolbar terlihat pada
gambar berikut.

Upload Open

Verify New Save

Gambar tersebut adalah tampilan software Arduino yang nantinya akan kita pakai untuk membuat
program dan mengisikannya (upload) ke memori Arduino. Sekarang kita pelajari sebentar fungsi tombol
pada toolbar.
 Verify.
Berfungsi untuk mengeksekusi (proses compile) program.
 New.
Membuat lembar kerja baru.
 Open.
Membuka file yang pernah dibuat & disimpan.
 Save.
Menyimpan program, secara otomatis akan berekstensi *.ino.
 Upload.
Berfungsi untuk mentransfer program yang telah dieksekusi ke dalam memori Arduino, dalam
beberapa software disebut dengan istilah program, ada juga yang menyebut dengan istilah
download.

Setelah kita pahami Arduino ini, baik secara hardware maupun software sekarang saatnya kita mencoba
ilmunya. Kita mulai dari yang paling dasar & sederhana, digital output.

www.inkubator- Page
“TRAINER KIT

DIGITAL OUTPUT

Aplikasi digital output memanfaatkan pin I/O yang difungsikan sebagai pin output. Praktek kita yang
pertama ini belum memakai hardware tambahan.
Pada board Arduino terdapat sebuah LED berwarna kuning (built-in, LED SMD jadi agak kecil bentuknya),
yang terhubung ke pin 13.

LED
PIN 13

Perhatikan rangkaian LED-nya, jika pada pin 13 terdapat tegangan 5 volt (HIGH) maka terdapat perbedaan
tegangan antara kaki anoda (5 volt) dengan kaki katoda (0 volt, ground) sehingga akan mengalir arus dan
LED nyala (ON). Tegangan 0 volt (LOW) akan membuat LED padam (off).

Baik, sekarang buka program Arduino.exe, kemudian tulis program 1. Silahkan sesuaikan setingan
software Arduino dengan board Arduino anda, dalam hal ini kita memakai Arduino UNO. Klik Tools 
Board  Arduino Uno.

Sesuaikan juga nomor port serial (USB to Serial).

www.inkubator- Page
“TRAINER KIT

Jika Anda belum tahu nomornya dapat dilihat dengan cara : klik kanan My Computer, kemudian pilih
Properties. Pada tab Hardware pilih Device Manager. Lihat pada kelompok Ports (COM & LPT).

Latihan 1: Menghidupkan LED di pin 13 board Arduino


Ketik program dibawah ini:
//Program 1 : menghidupkan LED di pin 13 board Arduino
void setup() {
pinMode(13, OUTPUT);
}
void loop() {
digitalWrite(13, HIGH);
}

www.inkubator- Page
“TRAINER KIT

2. Verify 3. Upload 1. Save

Setelah selesai, simpan (Save) dan beri nama, misalnya ‘program1’ (tanpa tanda petik).
Secara otomatis terbentuk folder dengan nama ‘program1’. Didalamya terdapat file dengan
nama ‘program1.ino’. Compile atau klik toolbar Verify.

Tunggu sampai proses compiling selesai.

Jika ada error silahkan perbaiki dulu, perhatikan penulisannya, karena pemrograman juga
tentang ketelitian. Selanjutnya upload program ke board Arduino, klik Upload.

www.inkubator- Page
“TRAINER KIT

Tunggu sampai proses upload selesai.

Jalannya program :
Lihat hasilnya pada LED (L). LED akan nyala.

Tugas 1:

Buat program LED pada pin 13 padam.


Latihan 2 : LED berkedip.

Buat lembar kerja baru, File  New (ctrl+N).

//Program 2 : LED berkedip


void setup() {
pinMode(13, OUTPUT);
}
void loop() {
digitalWrite(13, HIGH);
delay(1000);
digitalWrite(13, LOW);
delay(1000);
}

Jalannya program :
LED (L) berkedip. Satu detik nyala kemudian satu detik berikutnya padam.

Tugas 2:

Buat program LED pada pin 13 menyala selama 100mS dan padam selama 1500mS.

www.inkubator- Page
“TRAINER KIT

Latihan 3 : Kontrol 8 LED.

Hubungkan pin Arduino dengan digital output 8 LED (CN19).

Pin Arduino Pin LED (CN19) Pin Arduino Pin LED (CN19)
2 1 7 6
3 2 8 7
4 3 9 8
5 4 GND 9
6 5
Seperti pada gambar.

// Program 3 : kontrol 8 LED


void setup() {
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
}
void loop() {
digitalWrite(2, 0);
digitalWrite(3, 1);
digitalWrite(4, 0);
digitalWrite(5, 1);
digitalWrite(6, 0);
digitalWrite(7, 1);
digitalWrite(8, 0);
digitalWrite(9, 1);
}

Jalannya program :
LED 1, 3, 5, 7 padam. LED 2, 4, 6, 8 nyala.

www.inkubator- Page
“TRAINER KIT

Tugas 3:

Buat program LED 1, 2, 3, 4 menyala dan LED 4, 5, 6, 7 padam.

Latihan 4 : LED berjalan.

// Program 4 : LED Berjalan


void setup() {
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
}
void loop() {
digitalWrite(2, HIGH);
delay(1000);
digitalWrite(2, LOW);
digitalWrite(3, HIGH);
delay(1000);
digitalWrite(3, LOW);
digitalWrite(4, HIGH);
delay(1000);
digitalWrite(4, LOW);
digitalWrite(5, HIGH);
delay(1000);
digitalWrite(5, LOW);
digitalWrite(6, HIGH);
delay(1000);
digitalWrite(6, LOW);
digitalWrite(7, HIGH);
delay(1000);
digitalWrite(7, LOW);
digitalWrite(8, HIGH);
delay(1000);
digitalWrite(8, LOW);
digitalWrite(9, HIGH);
delay(1000);
digitalWrite(9, LOW);
}

Jalannya program :
LED akan menyala berurutan, mulai dari LED ke-1 sampai dengan LED ke-8.

www.inkubator- Page
“TRAINER KIT

Tugas 4:
Traffic Light Controller
Perhatikan skematik traffic light mengatur traffic
berikut, light tersebut.
kemudian buatlah program untuk

CN6 KONEKSI CN7 KONEKSI CN8 KONEKSI CN9 KONEKSI


1 LED H2 1 LED H2 1 LED H2 1 LED H2
2 LED K2 2 LED K2 2 LED K2 2 LED K2
3 LED M2 3 LED M2 3 LED M2 3 LED M2
4 GND

Langkah pemrograman:
Buat flowchart
Koneksikan LED dengan pin Arduino
Buat program step per step

SEVEN SEGMENT DISPLAY

f b

e c

d h

Seven segment tersusun dari rangkaian LED yang membentuk angka 8. Konfigurasi ‘nyala –
padam’ LED akan menampilkan angka tertentu, dari 0 sd 9. Contoh: Jika yang menyala LED pada
segmen a, b, c, d dan g maka akan tampil angka 3 :

www.inkubator- Page
“TRAINER KIT

a
Perhatikan lagi gambar rangkaian LED. Jika pada common catoda (COM)
b diberi ground (GND) maka untuk menyalakan LED pada masing – masing
segmen cukup memberi logika ‘1’ (HIGH) dan logika ‘0’ (LOW) untuk
g
mematikannya.
c

d Untuk konfigurasi secara lengkap sebagai berikut :

Angka h g f e d c b a
0 0 0 1 1 1 1 1 1
a
1 0 0 0 0 0 1 1 0
f b
2 0 1 0 1 1 0 1 1
3 0 1 0 0 1 1 1 1
g 4 0 1 1 0 0 1 1 0
5 0 1 1 0 1 1 0 1
e c 6 0 1 1 1 1 1 0 1
7 0 0 0 0 0 1 1 1
d h
8 0 1 1 1 1 1 1 1
9 0 1 1 0 1 1 1 1

Transistor yang terhubung ke masing – masing common catoda berfungsi sebagai ‘switch’. Jika
pada kaki basis transistor diberi logika ‘1’ (pin 10=’1’) maka transistor bekerja seperti ‘switch
ON’. Sebaliknya, jika diberi logika ‘0’ (pin 10=’0’) maka transistor bekerja seperti ‘switch OFF’.

Hubungkan pin Arduino dengan konektor CN1 dan CN2.

Pin Arduino CN1 Pin Arduino CN2


2 1 10 1
3 2 11 2
4 3 12 3
5 4 13 4
6 5 A0 5
7 6 A1 6
8 7 +5V 7
9 8

www.inkubator- Page
“TRAINER KIT

Latihan 5: Menampilkan angka 3 pada digit 1


//----- Program 5 : Menapilkan angka 3 pada digit 1
void setup() {
pinMode(2, OUTPUT); pinMode(3, OUTPUT);
pinMode(4, OUTPUT); pinMode(5, OUTPUT);
pinMode(6, OUTPUT); pinMode(7, OUTPUT);
pinMode(8, OUTPUT); pinMode(9, OUTPUT);
pinMode(10, OUTPUT); pinMode(11, OUTPUT);
pinMode(12, OUTPUT); pinMode(13, OUTPUT);
pinMode(A0, OUTPUT); pinMode(A1, OUTPUT);
}

void loop() {
digitalWrite(10,0);
digitalWrite(11,1);
digitalWrite(12,1);
digitalWrite(13,1);
digitalWrite(A0,1);
digitalWrite(A1,1);

digitalWrite(2,0);
digitalWrite(3,0);
digitalWrite(4,0);
digitalWrite(5,0);
digitalWrite(6,1);
digitalWrite(7,1);
digitalWrite(8,0);
digitalWrite(9,1);
}
Jalannya program :

Akan tampil angka 3 pada seven segment digit ke-1.

Tugas 5:
Latihan 6: Menampilkan angka 012345
Buat program menampilkan angka 2 pada digit 4.
//----- Program 6 : tampilan angka „012345‟
void setup() {
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);

www.inkubator- Page
“TRAINER KIT

pinMode(8, OUTPUT);
pinMode(9, OUTPUT);

pinMode(10, OUTPUT);
pinMode(11, OUTPUT);
pinMode(12, OUTPUT);
pinMode(13, OUTPUT);
pinMode(A0, OUTPUT);
pinMode(A1, OUTPUT);
}
void loop() {
//---tampilan angka 0
digitalWrite(10,0);
digitalWrite(11,1);
digitalWrite(12,1);
digitalWrite(13,1);
digitalWrite(A0,1);
digitalWrite(A1,1);

digitalWrite(2,0);
digitalWrite(3,0);
digitalWrite(4,0);
digitalWrite(5,0);
digitalWrite(6,0);
digitalWrite(7,0);
digitalWrite(8,1);
digitalWrite(9,1);
delay(3);

//---tampilan angka 1
digitalWrite(10,1);
digitalWrite(11,0);
digitalWrite(12,1);
digitalWrite(13,1);
digitalWrite(A0,1);
digitalWrite(A1,1);

digitalWrite(2,1);
digitalWrite(3,0);
digitalWrite(4,0);
digitalWrite(5,1);
digitalWrite(6,1);
digitalWrite(7,1);
digitalWrite(8,1);
digitalWrite(9,1);
delay(3);

//---tampilan angka 2
digitalWrite(10,1);
digitalWrite(11,1);
digitalWrite(12,0);
digitalWrite(13,1);
digitalWrite(A0,1);
digitalWrite(A1,1);

digitalWrite(2,0);
digitalWrite(3,0);

www.inkubator- Page
“TRAINER KIT

digitalWrite(4,1);
digitalWrite(5,0);
digitalWrite(6,0);
digitalWrite(7,1);
digitalWrite(8,0);
digitalWrite(9,1);
delay(3);

//---tampilan angka 3
digitalWrite(10,1);
digitalWrite(11,1);
digitalWrite(12,1);
digitalWrite(13,0);
digitalWrite(A0,1);
digitalWrite(A1,1);

digitalWrite(2,0);
digitalWrite(3,0);
digitalWrite(4,0);
digitalWrite(5,0);
digitalWrite(6,1);
digitalWrite(7,1);
digitalWrite(8,0);
digitalWrite(9,1);
delay(3);

//---tampilan angka 4
digitalWrite(10,1);
digitalWrite(11,1);
digitalWrite(12,1);
digitalWrite(13,1);
digitalWrite(A0,0);
digitalWrite(A1,1);

digitalWrite(2,1);
digitalWrite(3,0);
digitalWrite(4,0);
digitalWrite(5,1);
digitalWrite(6,1);
digitalWrite(7,0);
digitalWrite(8,0);
digitalWrite(9,1);
delay(3);

//---tampilan angka 5
digitalWrite(10,1);
digitalWrite(11,1);
digitalWrite(12,1);
digitalWrite(13,1);
digitalWrite(A0,1);
digitalWrite(A1,0);

digitalWrite(2,0);
digitalWrite(3,1);
digitalWrite(4,0);
digitalWrite(5,0);
digitalWrite(6,1);

www.inkubator- Page
“TRAINER KIT

digitalWrite(7,0);
digitalWrite(8,0);
digitalWrite(9,1);
delay(3);
}
Jalannya Program :

Pada ke-6 digit tampil angka ‘012345’.

Tugas 6:

Buat program menampilkan angka ‘6789Ab’.


LCD DISPLAY 2X16

LCD ini terdiri dari 2 baris dan 16 kolom, sehingga maksimal menampilkan 32 karakter.
Kolom 1 (x=0)
Nomor pin Kolom 16 (x=15)

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

Y Baris 1 (y=0)

Baris 2 (y=1)

Sumbu x dan y digunakan untuk menentukan posisi kursor pada pemrograman nantinya,
menggunakan perintah setCursor(x, y). Sumbu x merupakan posisi kolom sedangkan sumbu y
merupakan posisi baris.
Keterangan pin hardware LCD 2x16 sebagai berikut :
No pin Nama Keterangan
1 GND Ground
2 VCC + 5V
3 VEE Contrast

www.inkubator- Page
“TRAINER KIT

4 RS Control
5 RW Control
6 E Control
7 -14 D0 – D7 Data bit 0 – 7
15 A Anoda (back light)
16 K Katoda (back light)

Pin nomor 3 (VEE) berfungsi mengatur kontras LCD, dapat langsung dihubungkan dengan ground
(kontras maksimal) atau dihubungkan dengan potensiometer (VR) sehingga kontras dapat diatur
melalui potensiometer.
Pin RW (Read/Write) dapat langsung dihubungkan dengan ground (proses write). DB0 – DB7
jalur data, pada Arduino dapat meggunakan 8 jalur data atau 4 jalur data (DB4 – DB7).
Interfacing LCD dengan Arduino.
Tidak terlalu rumit sebenarnya untuk menghubungkan LCD dengan Arduino, yang perlu
diperhatikan adalah koneksi antara jalur control (RS dan E) dan jalur data (D4, D5, D6 dan D7),
hal ini untuk kepentingan pemrograman nantinya. Yang lebih membuat gampang lagi adalah
koneksi antara LCD dengan board Arduino adalah bebas, tidak harus urut.

Pemrograman LCD pada Arduino:


1. Tulis library LCD di bagian awal program:
#include <LiquidCrystal.h>
2. konfigurasi/seting koneksi pin LCD dengan Arduino:
LiquidCrystal lcd(RS, enable, d4, d5, d6, d7);
RS nomor pin Arduino yang terhubung ke RS
(LCD)
enable nomor pin Arduino yang terhubung ke E (LCD)
d4 nomor pin Arduino yang terhubung ke d4 (LCD)
d5 nomor pin Arduino yang terhubung ke d5 (LCD)
d6 nomor pin Arduino yang terhubung ke d6 (LCD)
d7 nomor pin Arduino yang terhubung ke d7 (LCD)
Contohnya, pin RS terhubung ke pin 2, enable  pin 3, d4  pin 4, d5  pin 5, d6  pin 6
dan d7  pin 7. Maka di tulis :
LiquidCrystal lcd(2, 3, 4, 5, 6, 7);
www.inkubator- Page
“TRAINER KIT

3. Konfigurasi berikutnya adalah berkaitan dengan ukuran LCD.


lcd.begin (cols, rows);
cols jumlah kolom dari LCD
rows jumlah baris LCD.
Ukuran LCD yang digunakan 2x16, maka ditulis:
lcd.begin (16, 2);

Perintah pada LCD:


1. Perintah menulis pada LCD:
lcd.print(string/tulisan yang akan ditampilkan);
Contoh, kita akan menulis “ARDUINO UNO”, maka cukup kasih perintah :
lcd.print (“ARDUINO UNO”);

Untuk karakter/string diapit tanda petik dua “ “.


2. Perintah menulis pada lokasi kursor atau lokasi dimana tulisan akan mulai ditampilkan:
lcd.setCursor(col, row);
col posisi pada kolom
keberapa row posisi pada baris
keberapa
3. Perintah untuk menghapus tampilan LCD.
lcd.clear();
4. Perintah Menggeser tampilan LCD ke kiri sejauh satu kolom.
lcd.scrollDisplayLeft();
5. Perintah Menggeser tampilan LCD ke kanan sejauh satu kolom.
lcd.scrollDisplayRight();
6. Perintah tampilan kursor berkedip.
lcd.blink();
7. Perintah agar kursor tidak berkedip
lcd.noBlink();

Sambung CN3 dengan Arduino di kaki 2 s/d 7. CN4 dengan power supply.

Pin Arduino CN3 Pin Arduino CN3 Power Supply CN4


2 1 (RS) 5 4 (D5) +5V 1
3 2 ( E) 6 5 (D6) GND 2
4 3 (D4) 7 6 (D7)

Latihan 7: Menampilkan tulisan pada LCD

www.inkubator- Page
“TRAINER KIT
//Program 7: Menampilkan tulisan pada LCD

www.inkubator- Page
“TRAINER KIT

#include <LiquidCrystal.h>
LiquidCrystal lcd(2, 3, 4, 5, 6, 7);
void setup() {
lcd.begin(16, 2);
lcd.print("Arduino UNO");
lcd.setCursor(0, 1);
lcd.print("Coba LCD 2x16");
}
void loop() {
}
Jalannya program :
Pada LCD baris 1 tampil tulisan “Arduino UNO” dan baris 2 “Coba LCD 2x16”.

Tugas 7:
Latihan 8 : mencoba perintah yang lain
Buat program
//Program 8: tulisan
mencoba“*Belajar*”
perintahpada baris
yang 1 kolom
lain4 dan “Arduino UNO” pada baris 2 kolom 3.
#include <LiquidCrystal.h>
LiquidCrystal lcd(2, 3, 4, 5, 6, 7);
void setup() {
lcd.begin(16, 2);
lcd.print("Arduino UNO");
lcd.setCursor(0, 1);
lcd.print("Coba LCD 2x16");
delay(2000);
lcd.clear();
delay(2000);
lcd.print("Coba Geser Kiri");
delay(2000);
lcd.scrollDisplayLeft();
delay(2000);
lcd.scrollDisplayLeft();
}
void loop() {
}

Jalannya program :

www.inkubator- Page
“TRAINER KIT

Pertama tampil tulisan “Arduino UNO”, pada baris kedua “Coba LCD 2x16”. Dua detik kemudian
tulisan terhapus. Setelah 2 detik muncul tulisan “Coba Geser Kiri”. Tampilan LCD kemudian geser
kekiri sebanyak 2 kali dengan jeda 2 detik.

Tugas 8: DIGITAL INPUT


Buat program tulisan “Display LCD Geser ke Kiri” berjalan/bergeser ke kiri terus menerus pada
Arduino membaca sinyal digital melalui pin yang ditentukan. Ada 2 tahap untuk membuat
baris 1.
sebuah pin menjadi pin digital input yaitu:

1. Tentukan nomor pin-nya :


pinMode(pin, INPUT)
pin : nomor pin Arduino (0 – 13 atau A0 – A5)

2. Pilih input floating atau pullup.


 Jika pullup maka :
writeDigital(pin,1) atau writeDigital(pin,HIGH);
 Jika floating maka :
writeDigital(pin,0) atau writeDigital(pin,LOW);

Pullup berarti resistor pullup (di dalam mikrokontroler) aktif.

R pull-up (internal)
pin x

Misal, pin 2 dihubungkan dengan saklar/switch. Ketika SW pada posisi OFF (Open) maka
logika pada pin 2 = 1. Karena di-pullup oleh resistor yang terhubung ke Vcc.

SW=off
R pull-up (internal)
pin 2
pin 2 = 1

Sedangkan apabila SW = ‘ON’ (Closed) maka logika pada pin 2=0, karena terhubung ke
ground.

www.inkubator- Page
“TRAINER KIT

SW=ON
R pull-up (internal)
pin 2 pin 2 = 0

Non pullup (floating) berarti resistor pullup tidak aktif, misal dihubungkan dengan Saklar.

SW=off

pin x
pin 2
pin 2 = ?

Ketika saklar dalam posisi terbuka maka logikanya BUKAN ‘1’, melainkan floating.
Logika yang dibaca tidak jelas terkadang terbaca HIGH terkadang LOW.

Perintah membaca data digital masuk dengan perintah digitalRead():

var=digitalRead(pin);
 var adalah variabel, nilainya tergantung logika input. Bernilai ‘1’ (HIGH) atau ‘0’ (LOW).
 pin adalah nomor pin Arduino yang dibaca inputannya.

Latihan 9: Membaca 8 Tombol

Hubungkan CN19 dan CN20 dengan pin Arduino.

Pin Arduino CN19 Pin Arduino CN20


2 1 10 1
3 2 11 2
4 3 12 3
5 4 13 4
6 5 A0 5
7 6 A1 6
8 7 A2 7
9 8 A3 8
GND 9 GND 9

Skematik koneksi :

www.inkubator- Page
“TRAINER KIT

//Program 9: Membaca 8 tombol


byte tombol;

void setup()
{
//======= PIN 2 S/D 9 SEBAGAI DIGITAL INPUT
pinMode(10,INPUT); pinMode(11,INPUT);
pinMode(12,INPUT); pinMode(13,INPUT);
pinMode(A0,INPUT); pinMode(A1,INPUT);
pinMode(A2,INPUT); pinMode(A3,INPUT);
//======= PULL UP AKTIF
digitalWrite(10,HIGH); digitalWrite(11,HIGH);
digitalWrite(12,HIGH); digitalWrite(13,HIGH);
digitalWrite(A0,HIGH); digitalWrite(A1,HIGH);
digitalWrite(A2,HIGH); digitalWrite(A3,HIGH);

pinMode(2,OUTPUT); pinMode(3,OUTPUT);
pinMode(4,OUTPUT); pinMode(5,OUTPUT);
pinMode(6,OUTPUT); pinMode(7,OUTPUT);
pinMode(8,OUTPUT); pinMode(9,OUTPUT);
}

void loop()
{
tombol=digitalRead(10);
if (tombol==LOW) digitalWrite(2,1);
else digitalWrite(2,0);
tombol=digitalRead(11);
if (tombol==LOW) digitalWrite(3,1);
else digitalWrite(3,0);
tombol=digitalRead(12);
if (tombol==LOW) digitalWrite(4,1);
else digitalWrite(4,0);

www.inkubator- Page
“TRAINER KIT

tombol=digitalRead(13);
if (tombol==LOW) digitalWrite(5,1);
else digitalWrite(5,0);
tombol=digitalRead(A0);
if (tombol==LOW) digitalWrite(6,1);
else digitalWrite(6,0);
tombol=digitalRead(A1);
if (tombol==LOW) digitalWrite(7,1);
else digitalWrite(7,0);
tombol=digitalRead(A2);
if (tombol==LOW) digitalWrite(8,1);
else digitalWrite(8,0);
tombol=digitalRead(A3);
if (tombol==LOW) digitalWrite(9,1);
else digitalWrite(9,0);
}

Jalannya program :
Led akan nyala sesuai dengan tombol yang ditekan. Coba tekan tombol 1 (press and hold), LED 1 akan
nyala. Kalau dilepas LED akan padam lagi.

Tugas 9:
Keypad 4x4
Buat program kontrol 8 LED. Jika tombol 1 ditekan pertama kali maka LED 1 menyala, jika
Membaca keypad 4x4 hasilnya ditampilkan pada LCD.
tombol 1 ditekan yang kedua kali maka LED padam. Begitu juga untuk tombol yang lain.
Koneksi hardware:

Pin Arduino CN 17 Pin Arduino CN 18


8 1 A0 1
9 2 A1 2
10 3 A2 3
11 4 A3 4

//Program 10: Keypad 4X4


#include <Keypad.h>
#include <LiquidCrystal.h>
LiquidCrystal lcd(2,3,4,5,6,7);//(RS,E,D4,D5,D6,D7),
const byte ROWS=4;
const byte COLS=4;
char keys[ROWS][COLS]={
{'1','2','3','A'},
{'4','5','6','B'},

www.inkubator- Page
“TRAINER KIT

{'7','8','9','C'},
{'*','0','#','D'}
};
byte rowPins[ROWS]={A0,A1,A2,A3};
byte colPins[COLS]={8,9,10,11};

Keypad keypad = Keypad(makeKeymap(keys),rowPins, colPins, ROWS, COLS);

void setup()
{
lcd.begin(16,2);
lcd.print("Test Keypad 4x4");
lcd.setCursor(0,1);
lcd.print("Keypad:");
}
void loop(){
char key=keypad.getKey();
if(key != NO_KEY){
lcd.setCursor(7,1);
lcd.print(key);
}
}
Jalannya Program:

Tekan sembarang tombol pada keypad, hasil penekanan tombol ditampilkan pada LCD.

Tugas 10:
PULSE WIDTH MODULATION (PWM)
ApaBuat program
itu PWM keypad,
? Coba jika tombol
perhatikan keypad
gambar ditekan
yang 3x maka LCD3menampilkan
memperlihatkan ke-3
sinyal dengan angka yang
frekuensi
tersebut,
sama pada
(periode penekanan
sama), ke-4 tidak
yang berbeda menambah
adalah angka. Sedangkan
lebar pulsanya untuk menghapus angka
(pulse width).
tekan tombol pagar ‘#’ terlebih dahulu.

a.

b.

c.

Ya itulah PWM, kita dapat mengatur lebar pulsanya yang jika diterapkan pada pengendalian
motor dc misalnya, lebar pulsa berkorelasi dengan kecepatan putar motor. Enam pin Arduino
yang dapat dipakai untuk PWM adalah pin 3, 5, 6, 9, 10 dan 11.

www.inkubator- Page
“TRAINER KIT

Pemrograman PWM pada Arduino sangat mudah, tinggal kita tentukan nomor pin dan nilai PWM
dengan format:
analogWrite(pin, value);
 pin : nomor pin (3, 5, 6, 9, 10, 11).
 value : nilai PWM (0 – 255).
Latihan 11: PWM pada pin 9
//Program 11: PWM pada pin 9
void setup()
{
pinMode(9,OUTPUT);
analogWrite(9, 128);
}
void loop()
{
}

Jalannya program :
Untuk melihat bentuk pulsanya kita gunakan oscilloscope. Colokkan probe oscilloscope ke pin no
9. Ground oscilloscope ke ground Arduino. Tapi jika tidak punya Anda buat simulasinya
menggunakan proteus hubungkan arduinonya seperti skematik dibawah ini:

Pulsa akan terlihat seperti pada gambar dibawah ini:

1 ms 1 ms

Tugas 11:

Latihan 12: Dimmer


Buat keluaran PWMLED
pada ke 6 pin PWM. Pin 3 = 25, Pin 5 = 50, Pin 6 = 75, Pin 9 = 100, Pin 10 =
125 dan Pin 11 = 150.
Dimer LED yaitu mengatur terang redupnya sebuah LED. Hubungkan LED 1 dengan Pin 9 Arduino.

www.inkubator- Page
“TRAINER KIT

Pin ArduinoCN19
91
GND9

//Program 12: Dimmer LED


byte brightness,i;
void setup()
{
pinMode(9,OUTPUT);
}
void loop()
{
brightness=0; for(i=0;i<20;i+
+){
brightness++;
analogWrite(9, brightness);
delay(400);
}
}
Jalannya program :
Led pada awalnya padam, kemudian menjadi nyala redup kemudian semakin terang terus
sampai terang maksimal kemudian kembali padam, demikian berulang terus menerus.

Tugas 12:

Buat program 2 dimer dengan PWM KOMUNIKASI


Pin 9 dan Pin 10. SERIAL
Dimer 1 menyala dari redup (PWM=0) ke
terang (PWM=255) sedangkan dimer 2 menyala dari terang (PWM=255) ke redup (PWM=0)
Pada babdelay
dengan – bab awal kita telah menggunakan pin I/O sebagai port paralel, sebagai contoh
20mS.
aplikasi seven segment dimana data pada masing – masing pin dikirim secara bersamaan,
paralel. Interfacing dengan LCD demikian juga, menggunakan komunikasi secara paralel. Cukup
banyak jalur atau pin yang dibutuhkan, untuk LCD misalnya, minimal membutuhkan 6 pin. Sistem
komunikasi serial cukup 2 pin yang diperlukan ditambah 1 jalur ground, sehingga sangat
menghemat pin. Semua peralatan/device yang mempunyai port serial RS232 dapat
berkomunikasi dengan Arduino. Mikrokontroler tipe lain (contoh : ATmega8535, PIC1684),
Arduino mega, inverter, komputer/laptop bahkan Hand Phone (HP) yang mempunyai port serial
semua dapat berkomunikasi secara serial dengan Arduino UNO. Pada aplikasi berikutnya yaitu
komunikasi serial antara Arduino UNO dengan komputer/laptop.

www.inkubator- Page
“TRAINER KIT

Secara hardware, 2 pin khusus untuk komunikasi serial ada pada pin 0 (RX) dan pin 1 (TX). Pin 0
(RX) adalah pin untuk menerima data serial (receiver) sedangkan pin 1 (TX) untuk pengiriman
data serial (transmitter). Inilah sebabnya pin 0 dan 1 selalu dikosongkan. Tidak dipakai. Karena
dipakai untuk komunikasi serial waktu proses Upload. Kedua pin tersebut nantinya masih perlu
converter logika RS232 jika akan dihubungkan dengan port serial pada komputer (com serial).

Karena laptop sekarang sudah tidak memiliki port serial maka proses komunikasi antara Arduino
dengan laptop menggunakan konektor USB. Konektor USB pada Arduino selain biasa dipakai
untuk upload program dapat juga digunakan untuk komunikasi serial. Jadi tinggal colokkan kabel
USB ke komputer seperti pada proses upload, tidak perlu lagi membuat konverter logika RS232.

Latihan 13: komunikasi serial 1 arah


//program 13: komunikasi serial 1 arah
void setup()
{
Serial.begin(9600);
Serial.print("Coba ");
Serial.print("Komunikasi...");
Serial.println("USB 2 Serial");
Serial.println("Arduino UNO");
}
void loop()
{
}

Setelah anda simpan kemudian verify dan upload, silahkan buka program serial monitor pada
software Arduino. Klik Tools  Serial Monitor.

Jalannya program :

Reset pada hardware (tekan tombol RESET), maka pada serial monitor akan tampil tulisan “Coba
Komunikasi… USB 2 Serial” pada baris selanjutnya “Arduino UNO”.

www.inkubator- Page
“TRAINER KIT

Pastikan 9600 baud

Tugas 13:

Latihan
Buat14 : Kontrol
program LED
kirim dengan
serial PC sama dengan program 12, baudrate 115200.
isi tulisan
Program berikutnya komunikasi serial 2 arah, Arduino akan mengirim dan menerima data
komputer. Display LED, hubungannya sebagai berikut.
Pin Arduino Pin LED (CN19) Pin Arduino Pin LED (CN19)
2 1 7 6
3 2 8 7
4 3 9 8
5 4 GND 9
6 5

//Program 14 : kontrol LED via PC


byte in_serial,str;
void setup()
{
pinMode(2,OUTPUT); pinMode(3,OUTPUT);
pinMode(4,OUTPUT); pinMode(5,OUTPUT);
pinMode(6,OUTPUT); pinMode(7,OUTPUT);
pinMode(8,OUTPUT); pinMode(9,OUTPUT);
Serial.begin(9600);
Serial.println("Kontrol LED via PC");
}
void loop()
{
in_serial=Serial.read();
switch(in_serial){
case '1': //LED 1 ON
digitalWrite(2,1); digitalWrite(3,0);
digitalWrite(4,0); digitalWrite(5,0);
digitalWrite(6,0); digitalWrite(7,0);
digitalWrite(8,0); digitalWrite(9,0);
Serial.println("LED 1 ON"); break;
case '2': //LED 2 ON
digitalWrite(2,0); digitalWrite(3,1);

www.inkubator- Page
“TRAINER KIT

digitalWrite(4,0); digitalWrite(5,0);
digitalWrite(6,0); digitalWrite(7,0);
digitalWrite(8,0); digitalWrite(9,0);
Serial.println("LED 2 ON"); break;
case '3': //LED 3 ON
digitalWrite(2,0); digitalWrite(3,0);
digitalWrite(4,1); digitalWrite(5,0);
digitalWrite(6,0); digitalWrite(7,0);
digitalWrite(8,0); digitalWrite(9,0);
Serial.println("LED 3 ON"); break;
case '4': //LED 4 ON
digitalWrite(2,0); digitalWrite(3,0);
digitalWrite(4,0); digitalWrite(5,1);
digitalWrite(6,0); digitalWrite(7,0);
digitalWrite(8,0); digitalWrite(9,0);
Serial.println("LED 4 ON"); break;
case '5': //LED 5 ON
digitalWrite(2,0); digitalWrite(3,0);
digitalWrite(4,0); digitalWrite(5,0);
digitalWrite(6,1); digitalWrite(7,0);
digitalWrite(8,0); digitalWrite(9,0);
Serial.println("LED 5 ON"); break;
case '6': //LED 6 ON
digitalWrite(2,0); digitalWrite(3,0);
digitalWrite(4,0); digitalWrite(5,0);
digitalWrite(6,0); digitalWrite(7,1);
digitalWrite(8,0); digitalWrite(9,0);
Serial.println("LED 6 ON"); break;
case '7': //LED 7 ON
digitalWrite(2,0); digitalWrite(3,0);
digitalWrite(4,0); digitalWrite(5,0);
digitalWrite(6,0); digitalWrite(7,0);
digitalWrite(8,1); digitalWrite(9,0);
Serial.println("LED 7 ON"); break;
case '8': //LED 8 ON
digitalWrite(2,0); digitalWrite(3,0);
digitalWrite(4,0); digitalWrite(5,0);
digitalWrite(6,0); digitalWrite(7,0);
digitalWrite(8,0); digitalWrite(9,1);
Serial.println("LED 8 ON"); break;
}
}

Jalannya program :
Setelah anda Upload, buka Serial Monitor, ingat kabel USB tetap terhubung ke komputer/laptop.
Pada Serial Monitor akan tampil seperti pada gambar berikut.

www.inkubator- Page
“TRAINER KIT

Arahkan kursor Trus klik


kesini. Ketik angka 1 Send

Perhatikan juga bahwa semua LED dalam keadaan padam. Arahkan kursor pada kolom paling
atas, sebelah kiri tombol Send, kemudian ketik angka 1 terus klik tombol Send. Led 1 akan nyala
dan pada Serial Monitor tampil LED 1 ON. Cobalah untuk angka lain kemudian klik tombol Send.
start Inisialisasi

Kirim data serial

Baca data serial


yang masuk

Ya Led 1 = on Kirim ke serial : “LED 1 ON”


Data= ‘1’ ?

Tidak
Ya Led 2 = on Kirim ke serial : “LED 2 ON”
Data= ‘2’ ?

Tidak

Ya Led 8 = on Kirim ke serial : “LED 8 ON”


Data= ‘8’ ?

Tidak

Tugas 14:
ANALOG INPUT (ADC)
Buat program kirim serial dengan 8 tombol. Jika tombol 1 di tekan maka Arduino mengirim data
serial berupa tulisan “Tombol 1 ditekan” begitu juga untuk tombol yang lain. Tombol terhubung
dengan Pin 10 s/d 13 dan Pin A0 s/d A3.

www.inkubator- Page
“TRAINER KIT

Pada bab terdahulu kita sudah mencoba program pembacaan tombol. Semuanya termasuk
digital input, Arduino membaca kondisi logika pada pin digital input. Hasil yang diperoleh hanya
dua kemungkinan : HIGH (1) atau LOW (0). Analog input membaca sinyal masukan berupa
tegangan analog. Analog Input biasa diistilahkan dengan ADC (Analog to Digital Converter), maka
ADC internal Arduino inilah yang melakukan tugas pembacaan sinyal analog tersebut. Terdapat 6
pin masukan analog, yaitu A0 s/d A5, jadi pin 2 (D2) misalnya, tidak bisa dipakai untuk membaca
sinyal analog.
Perintah pembacaan data analog:
var = analogRead(pin);

 var adalah variabel untuk menyimpan hasil pembacaan sinyal analog, bertipe integer
(int).
 pin merupakan nomor pin analog, berisi 0 s/d 5.

Resolusi ADC adalah 10 bit, artinya nilai terkecilnya 0 (tegangan masukan 0 volt) dan terbesar
1023 (tegangan masukan 5 volt). Tegangan masukan pada masing – masing pin analog input
maksimal 5 volt. Nilai 1 bit dari hasil pembacaan ADC dapat kita hitung sebagai berikut :
5𝑉
1 𝑏i𝑡 = = 4,89 𝑚𝑉
1023
Artinya jika hasil pembacaan ADC misalnya 560, maka tegangan analog yang dibaca adalah 560 x
4,89 mV =2738 mV. Nilai 4,89 biasanya dibulatkan menjadi 5 mV.

Latihan 15: Membaca analog input A0

Data analog didapat dari output potensiometer, potensiometer dibuat menjadi rangkaian
voltage devider. Koneksikan CN12 dengan Arduino seperti table dibawah ini:

Pin Arduino CN12


A0 1
+5V 2
GND 3

Hasil pembacaannya ditampilkan pada LCD dengan koneksi sebagai berikut:


Pin Arduino CN3 Pin Arduino CN3
2 1 (RS) 5 4 (D5)
3 2 (E) 6 5 (D6)
4 3 (D4) 7 6 (D7)

//Program 15: membaca analog input A0


#include <LiquidCrystal.h>
LiquidCrystal lcd(2, 3, 4, 5, 6, 7);

www.inkubator- Page
“TRAINER KIT

int adc0;
void setup()
{
lcd.begin(16, 2);
lcd.print("ADC Channel 0");
lcd.setCursor(0, 1);
lcd.print("ADC0=");
}

void loop()
{
adc0 = analogRead(0);
lcd.setCursor(5,1);
lcd.print(adc0);
lcd.print(" ");
delay(1000);
}

Jalannya program :
Pada LCD akan tampil “ADC Channel 0”. Baris kedua LCD : “ADC0=0”. Putarlah potensio, maka
nilai ADC0 akan berubah sesuai dengan putaran potensiometer. Nilai maksimal 1023, dan
minimal 0.

Tugas 15:

Buat program thermometer digital menggunakan sensor suhu LM35. Ada 3 kaki yaitu Vcc (5V), Gnd dan Out. Output
Konversi data analog (ADC) menjadi tegangan input (mV) (Vin = ADC*5mV)
Konversi tegangan tersebut menjadi suhu(0C) (Suhu = Vin/10)
Setelah dapat hasilnya kemudian ditampilkan pada LCD Koneksi hardwarenya sebagi berikut:

Pin Arduino CN13 Pin Arduino CN3 Pin Arduino CN3


A0 1 2 1 (RS) 5 4 (D5)
+5V 2 3 2 (E) 6 5 (D6)
GND 3 4 3 (D4) 7 6 (D7)

www.inkubator- Page
“TRAINER KIT

EEPROM

Ketika anda membuat sebuah variabel dan kemudian memberi nilai ke variabel tersebut maka
anda telah menyimpan sebuah data ke dalam memori. Ketika power Arduino dimatikan data
akan hilang karena disimpan dalam SRAM (Static Random Access Memory). Tetapi jika disimpan
ke dalam EEPROM (Electrical Erasable Programmable Read Only Memory) maka data akan tetap
tersimpan.
Biasanya dipakai pada sistem data logger. Contoh alat untuk merekam perubahan temperatur
pada sebuah tempat. Kapasitas EEPROM pada Arduino UNO sebesar 1 KB, artinya alamatnya
mulai dari 0 sampai 1023. Satu alamat EEPROM mampu menampung data 1 byte (maksimal
255). Nilai awal EEPROM sebelum diisi data adalah 0xFF atau 255, berbeda dengan SRAM yang
mempunyai nilai awal 0.

Pemrograman EEPROM hanya berhubungan dengan dua hal : menulis(write) data ke EEPROM
dan membaca(read) data di EEPROM. Telah tersedia library untuk mengakses EEPROM. Library
ini cukup kita tulis di awal program.

#include <EEPROM.h>

Untuk membaca data kita cukup menentukan alamat EEPROM yang akan dibaca (0 s/d 1023)
dengan perintah :

value = EEPROM.read(address);

 value : variabel untuk menyimpan data EEPROM.


 address : alamat EEPROM.

Sebagai contoh akan dibaca data EEPROM pada alamat 15, maka perintahnya :

val=EEPROM.read(15);

Sedangkan untuk menulis data ke EEPROM kita tentukan alamatnya serta nilai datanya. Perintah
dalam library EEPROM Arduino :

EEPROM.write(address, value);

 address : alamat EEPROM (0 s/d 1023).


 value : nilai data yang akan disimpan ke EEPROM.

Jika kita akan menyimpan data 35 ke alamat 2 maka perintahnya :

EEPROM.write(2, 35);

Program 16: Membaca data EEPROM


Tidak memerlukan tambahan komponen, cukup Arduino saja, karena EEPROM sudah ada di
dalamnya. Untuk tampilan menggunakan Serial Monitor.

www.inkubator- Page
“TRAINER KIT

Pada program ini akan membaca semua data di EEPROM mulai dari alamat 0 sampai dengan
1023. Hasilnya dikirim ke serial dan ditampilkan pada Serial Monitor.

//Program 16: Membaca data EEPROM


#include <EEPROM.h>
int address;
byte value;
void setup()
{
Serial.begin(9600);
}
void loop()
{
value = EEPROM.read(address);
Serial.print(address);
Serial.print(" : ");
Serial.println(value, DEC);
address++;
if (address == 1023)
while(1);
delay(1500);
}
Jalannya program :

Buka Serial Monitor(Tools  Serial Monitor), maka akan tampil secara berurutan alamat dan isi
data EEPROM dari alamat 0 sampai dengan 1023.

Tugas 16:

Buat program
Program baca alamat
17: Menulis 10,EEPROM
data ke 20, 750 dan 1000 hasilnya ditamplikan pada serial monitor.
//Program 17: Menulis data ke EEPROM
#include <EEPROM.h>
int address,value = 0;
void setup()
{
Serial.begin(9600);

www.inkubator- Page
“TRAINER KIT

EEPROM.write(1, 125);
EEPROM.write(2, 239);
EEPROM.write(3, 5);
EEPROM.write(4, 42);
EEPROM.write(5, 250);
for(address=1;address<6;address++)
{
value = EEPROM.read(address);
Serial.print(address);
Serial.print(" : ");
Serial.println(value, DEC);
delay(1000);
}
}
void loop()
{
}
Jalannya program :

Hampir sama dengan program 15, hanya saja nilai EEPROM bukan 255 semua karena sudah diisi
dengan data baru.

Intinya, EEPROM digunakan untuk menyimpan data yang sifatnya semi permanen.

Tugas 17:

Buat program tulis pada alamat 10 dengan data 100, alamat 20 datanya 31, alamat 750 datanya 50
Jam Digital display 7 segment 6 digit
dan datanya 1000 datanya 127. Hasilnya ditamplikan pada serial monitor.
Arduino membaca data RTC (Real Time Clock) data yang diperoleh berupa jam, menit, detik, hari
ke-, tanggal, bulan dan tahun.
Pada project kali ini kita membuat jam digital dengan tampilan seven segment 6 digit. RTC yang
digunakan DS1307 sebagai sumber clock-nya.

Latihan 18: Jam Digital display 7 segment 6 digit:

www.inkubator- Page
“TRAINER KIT

Kebutuhan Hardware :
 Modul Jam Digital display 7 segment 6 digit
 Modul RTC DS1307
 Modul Arduino UNO
 Koneksi Arduino UNO dengan 7 segment:
Pin ARDUINO CN 1 Pin ARDUINO CN 2
2 1 9 1
3 2 10 2
4 3 11 3
5 4 12 4
6 5 13 5
7 6 A0 6
8 7 +5V 7

 Koneksi RTC:
CN 14 Pin ARDUINO
1 21/SCL
2 22/SDA
3 +5V
4 GND

//Program 18: Jam Digital display 7 segment 6 digit


#include <LiquidCrystal.h>
#include <Wire.h>
#define DS1307_ADDRESS 0x68
byte zero = 0x00;

byte nilai,i;
byte second ,minute,hour, weekDay;
byte monthDay,month,year;

byte seven_seg_digits[10][7] = { { 0,0,0,0,0,0,1 }, // = 0


{ 1,0,0,1,1,1,1 }, // = 1
{ 0,0,1,0,0,1,0 }, // = 2
{ 0,0,0,0,1,1,0 }, // = 3
{ 1,0,0,1,1,0,0 }, // = 4
{ 0,1,0,0,1,0,0 }, // = 5
{ 0,1,0,0,0,0,0 }, // = 6
{ 0,0,0,1,1,1,1 }, // = 7
{ 0,0,0,0,0,0,0 }, // = 8
{ 0,0,0,0,1,0,0 } // = 9
};

void setup()
{
pinMode(2, OUTPUT); //a
pinMode(3, OUTPUT);//b
pinMode(4, OUTPUT);//c
pinMode(5, OUTPUT);//d
pinMode(6, OUTPUT);//e

www.inkubator- Page
“TRAINER KIT

pinMode(7, OUTPUT);//f
pinMode(8, OUTPUT);//g
pinMode(9, OUTPUT);//dig 1
pinMode(10, OUTPUT);//dig 2
pinMode(11, OUTPUT);//dig 3
pinMode(12, OUTPUT);//dig 4
pinMode(13, OUTPUT);//dig 5
pinMode(A0, OUTPUT);//dig 6
Wire.begin();
/*---------seting jam
second = 5; //0-59
minute = 36; //0-59
hour = 11; //0-23
setingRTC();
*/
}
void loop(){
bacaRTC();
digitalWrite(9,LOW);
digitalWrite(10,HIGH);
digitalWrite(11,HIGH);
digitalWrite(12,HIGH);
digitalWrite(13,HIGH);
digitalWrite(A0,HIGH);
sevenSegWrite(hour/10);
delay(3);
digitalWrite(9,HIGH);
digitalWrite(10,LOW);
digitalWrite(11,HIGH);
digitalWrite(12,HIGH);
digitalWrite(13,HIGH);
digitalWrite(A0,HIGH);
sevenSegWrite(hour%10);
delay(3);
digitalWrite(9,HIGH);
digitalWrite(10,HIGH);
digitalWrite(11,LOW);
digitalWrite(12,HIGH);
digitalWrite(13,HIGH);
digitalWrite(A0,HIGH);
sevenSegWrite(minute/10);
delay(3);
digitalWrite(9,HIGH);
digitalWrite(10,HIGH);
digitalWrite(11,HIGH);
digitalWrite(12,LOW);
digitalWrite(13,HIGH);
digitalWrite(A0,HIGH);
sevenSegWrite(minute%10);
delay(3);
digitalWrite(9,HIGH);
digitalWrite(10,HIGH);
digitalWrite(11,HIGH);
digitalWrite(12,HIGH);
digitalWrite(13,LOW);
digitalWrite(A0,HIGH);
sevenSegWrite(second/10);

www.inkubator- Page
“TRAINER KIT

delay(3);
digitalWrite(9,HIGH);
digitalWrite(10,HIGH);
digitalWrite(11,HIGH);
digitalWrite(12,HIGH);
digitalWrite(13,HIGH);
digitalWrite(A0,LOW);
sevenSegWrite(second%10);
delay(3);
}

void sevenSegWrite(byte segment) {


byte pin = 2;
for (byte segCount = 0; segCount < 7; ++segCount) {
digitalWrite(pin, seven_seg_digits[segment][segCount]);
++pin;
}
}

byte decToBcd(byte val){


return ( (val/10*16) + (val%10) );
}

byte bcdToDec(byte val) {


return ( (val/16*10) + (val%16) );
}

void bacaRTC(){
Wire.beginTransmission(DS1307_ADDRESS);
Wire.write(zero);
Wire.endTransmission();
Wire.requestFrom(DS1307_ADDRESS, 7);
second = bcdToDec(Wire.read());
minute = bcdToDec(Wire.read());
hour = bcdToDec(Wire.read() & 0b111111);
weekDay = bcdToDec(Wire.read());
monthDay = bcdToDec(Wire.read());
month = bcdToDec(Wire.read());
year = bcdToDec(Wire.read());
}

void setingRTC(){
Wire.beginTransmission(DS1307_ADDRESS);
Wire.write(zero); //stop RTC
Wire.write(decToBcd(second));
Wire.write(decToBcd(minute));
Wire.write(decToBcd(hour));
Wire.write(zero); //start
Wire.endTransmission();
}

Jalannya Alat :
Seven segment langsung menampilkan jam sesuai setingan RTC (Untuk merubah/seting waktu
ada pada pembahasan program):

www.inkubator- Page
“TRAINER KIT

1 32 45 5

Kalender digital tampilan LCD


Arduino membaca data RTC (Real Time Clock) data yang diperoleh berupa jam, menit, detik, hari
ke-, tanggal, bulan dan tahun. Hasil pembacaan data RTC kemudian ditampilkan pada LCD 2x16.
LCD menampilkan jam , hari dan tanggal. Disamping menapilkan display tersebut jam dapat
diseting dengan 4 tombol yaitu tombol Next, Back, Up dan Down.

Kebutuhan Hardware :
 Modul LCD 2x16
 Modul RTC DS1307
 4 Tombol push ON
 Modul Arduino
UNO Koneksi Arduino UNO:
Pin ARDUINO CN3
2 1
3 2
4 3
5 4
6 5
7 6

Koneksi RTC:
Pin ARDUINO CN 14
21/SCL 1
20/SDA 2
+5V 3
GND 4

Koneksi Tombol:
Pin ARDUINO CN 20
8 1
9 2
10 3
11 4
GND 9

Latihan 19 : Kalender digital tampilan LCD

/***************************

www.inkubator- Page
“TRAINER KIT

PROYEK 19: Kalender digital tampilan LCD


****************************/
#include <LiquidCrystal.h>
#include "Wire.h"
#define DS1307_ADDRESS 0x68
byte zero = 0x00;
LiquidCrystal lcd(2, 3, 4, 5, 6, 7);

int menu;
byte second ,minute,hour, weekDay;
byte monthDay,month,year;

boolean up=false;
boolean down=false;

void setup(){
pinMode(8,INPUT);
pinMode(9,INPUT);
pinMode(10,INPUT);
pinMode(11,INPUT);
digitalWrite(8,HIGH);
digitalWrite(9,HIGH);
digitalWrite(10,HIGH);
digitalWrite(11,HIGH);
Wire.begin();
lcd.begin(16, 2);
lcd.setCursor(0,0);
lcd.print("Kalender digital");
delay(2000);
lcd.clear();
}

void loop(){
bacaRTC();
lcdDisplay();
cekTombol();
delay(1000);
}

byte decToBcd(byte val){


return ( (val/10*16) + (val%10) );
}

byte bcdToDec(byte val) {


return ( (val/16*10) + (val%16) );
}

void bacaRTC(){
Wire.beginTransmission(DS1307_ADDRESS);
Wire.write(zero);
Wire.endTransmission();
Wire.requestFrom(DS1307_ADDRESS, 7);
second = bcdToDec(Wire.read());
minute = bcdToDec(Wire.read());
hour = bcdToDec(Wire.read() & 0b111111);
weekDay = bcdToDec(Wire.read());
monthDay = bcdToDec(Wire.read());

www.inkubator- Page
“TRAINER KIT

month = bcdToDec(Wire.read());
year = bcdToDec(Wire.read());
}

void cekTombol(){
if (digitalRead(8)==0){
lcd.clear();
lcd.print("Seting RTC");
delay(2000);
menu++;
lcd.clear();
lcdDisplay();
lcd.blink();
do{
// next
if (digitalRead(8)==0){
delay(300);
menu++;
}
// back
else if (digitalRead(9)==0){
delay(300);
if (menu > 1){
menu--;
}
}
// up
else if(digitalRead(10)==0){
delay(200);
up=true;
}

// down
else if(digitalRead(11)==0){
delay(200);
down=true;
}
// edit data jam
if (menu==1){
if (up==true && hour < 24){
hour++;
lcdDisplay();
}
else if (down==true && hour>0){
hour--;
lcdDisplay();
}
up=false;
down=false;
if (hour<10){
lcd.setCursor(5,0);
}
else {
lcd.setCursor(6,0);
}
}

www.inkubator- Page
“TRAINER KIT

// edit data menit


else if (menu==2){
if (up==true && minute < 59){
minute++;
lcdDisplay();
}
else if (down==true && minute>0){
minute--;
lcdDisplay();
}
up=false;
down=false;

if (hour<10 && minute<10){


lcd.setCursor(7,0);
}
else if (hour<10 && minute>9){
lcd.setCursor(8,0);
}
else if (hour>9 && minute<10){
lcd.setCursor(8,0);
}
else if (hour>9 && minute>9){
lcd.setCursor(9,0);
}
}

// edit data detik


else if (menu==3){
if (up==true && second < 59){
second++;
lcdDisplay();
}
else if (down==true && second>0){
second--;
lcdDisplay();
}
up=false;
down=false;

if (hour<10 && minute<10 && second<10){


lcd.setCursor(9,0);
}
else if (hour<10 && minute<10 && second>9){
lcd.setCursor(10,0);
}
else if (hour<10 && minute>9 && second<10){
lcd.setCursor(10,0);
}
else if (hour>9 && minute<10 && second<10){
lcd.setCursor(10,0);
}
else if (hour<10 && minute>9 && second>9){
lcd.setCursor(11,0);
}
else if (hour>9 && minute>9 && second<10){
lcd.setCursor(11,0);

www.inkubator- Page
“TRAINER KIT

}
else if (hour>9 && minute<10 && second>9){
lcd.setCursor(11,0);
}
else if (hour>9 && minute>9 && second>9){
lcd.setCursor(12,0);
}
}

// edit data hari


else if (menu==4){
if (up==true && weekDay < 6){
weekDay++;
lcdDisplay();
}
else if (down==true && weekDay>0){
weekDay--;
lcdDisplay();
}
up=false;
down=false;
lcd.setCursor(0,1);
}

// edit data tanggal


else if (menu==5){
if (up==true && monthDay < 31){
monthDay++;
lcdDisplay();
}
else if (down==true && monthDay>1){
monthDay--;
lcdDisplay();
}
up=false;
down=false;
if (monthDay<10){
lcd.setCursor(5,1);
}
else {
lcd.setCursor(6,1);
}
}

// edit data bulan


else if (menu==6){
if (up==true && month < 12){
month++;
lcdDisplay();
}
else if (down==true && month>1){
month--;
lcdDisplay();
}
up=false;
down=false;

www.inkubator- Page
“TRAINER KIT

if (monthDay<10 && month<10){


lcd.setCursor(7,1);
}
else if (monthDay<10 && month>9){
lcd.setCursor(8,1);
}
else if (monthDay>9 && month<10){
lcd.setCursor(8,1);
}
else if (monthDay>9 && month>9){
lcd.setCursor(9,1);
}
}

// edit data tahun


else if (menu==7){
if (up==true && year < 99){
year++;
lcdDisplay();
}
else if (down==true && year>0){
year--;
lcdDisplay();
}
up=false;
down=false;

if (monthDay<10 && month<10 && year<10){


lcd.setCursor(11,1);
}
else if (monthDay<10 && month<10 && year>9){
lcd.setCursor(12,1);
}
else if (monthDay<10 && month>9 && year<10){
lcd.setCursor(12,1);
}
else if (monthDay>9 && month<10 && year<10){
lcd.setCursor(12,1);
}
else if (monthDay<10 && month>9 && year>9){
lcd.setCursor(13,1);
}
else if (monthDay>9 && month>9 && year<10){
lcd.setCursor(13,1);
}
else if (monthDay>9 && month<10 && year>9){
lcd.setCursor(13,1);
}
else if (monthDay>9 && month>9 && year>9){
lcd.setCursor(14,1);
}
}

// simpan data RTC


if (menu==8)setingRTC();
}
while(menu < 8);

www.inkubator- Page
“TRAINER KIT

lcd.clear();
lcd.noBlink();
lcd.print("Seting RTC OK!");
delay(1000);
lcd.clear();
menu=0;
}
}

void lcdDisplay(){
lcd.setCursor(0,0);
lcd.print("Jam:");
lcd.setCursor(5,0);
lcd.print(hour);
lcd.print(":");
lcd.print(minute);
lcd.print(":");
lcd.print(second);
lcd.print(" ");

lcd.setCursor(0,1);
hari();
lcd.setCursor(5,1);
lcd.print(monthDay);
lcd.print("/");
lcd.print(month);
lcd.print("/20");
lcd.print(year);
lcd.print(" ");
}

void hari(){
if (weekDay==0){
lcd.print("Ming, ");
}
else if (weekDay==1){
lcd.print("Sen,");
}
else if (weekDay==2){
lcd.print("Sel,");
}
else if (weekDay==3){
lcd.print("Rab,");
}
else if (weekDay==4){
lcd.print("Kam,");
}
else if (weekDay==5){
lcd.print("Jum,");
}
else if (weekDay==6){
lcd.print("Sab,");
}
}

void setingRTC(){
Wire.beginTransmission(DS1307_ADDRESS);

www.inkubator- Page
“TRAINER KIT

Wire.write(zero); //stop RTC


Wire.write(decToBcd(second));
Wire.write(decToBcd(minute));
Wire.write(decToBcd(hour));
Wire.write(decToBcd(weekDay));
Wire.write(decToBcd(monthDay));
Wire.write(decToBcd(month));
Wire.write(decToBcd(year));
Wire.write(zero); //start
Wire.endTransmission();
}

Jalannya Alat :
1. Tampilan pertama pada LCD :
2. Setelah 2 detik tampil menjadi tampilan normal yaitu menampilkan jam, hari dan tanggal:
Kalender digital
Jam: 12:30:51
Sen, 10/5/2016
3. Selanjutnya jika ingin merubah/seting jam/tanggal, tekan tombol Next (tombol 1) sehingga
tampil Seting RTC selama 2 detik:
4. Kemudian menampilkan kursor berkedip pada jam:
Seting RTC
Jam: 13:30:51
Sen, 10/5/2016
5. Tekan tombol UP (Tombol 3) untuk menambah jam, sedangkan untuk mengurangi tekan
tombol Down (Tombol 4).
6. Jika sudah sesuai tekan tombol Next, selanjutnya seting menit prosesnya sama dengan seting
jam.
7. Jika sudah seting menit tekan tombol Next lagi untuk seting detik, dan seterusnya.
8. Apabila ada setingan yang salah Anda bisa mengulangi dengan menekan tombol Back
(Tombol 2).
9. Setelah semua di seting tekan tombol Next untuk menyimpan data tersebut, sehingga LCd
menampilkan “Seting RTC OK!”:

Seting RTC OK!

www.inkubator- Page
“TRAINER KIT

10. Tampilan LCD kembali ke tampilan Normal.

www.inkubator- Page
“TRAINER KIT

Jam Alarm

Membuat Alarm jam sendiri dengan Arduino. Dengan display 7 Segment.

Latihan 20: Membuat Jam Alarm

Koneksi hardware:

Pin Arduino CN 1 Pin Arduino CN 2 Pin Arduino CN 14


2 1 9 1 21/SCL 1
3 2 10 2 20/SDA 2
4 3 11 3 +5V 3
5 4 12 4 GND 4
6 5 13 5
7 6 A0 6
8 7 +5V 7

/***************************
Program 20: Jam Alarm
****************************/
#include <Wire.h>
#define DS1307_ADDRESS 0x68
byte zero = 0x00;

byte nilai, i, alarm, jeda;


byte second ,minute, hour, weekDay;
byte minuteAlarm, hourAlarm;
byte monthDay, month, year;

byte seven_seg_digits[10][7] = { { 0,0,0,0,0,0,1 }, // = 0


{ 1,0,0,1,1,1,1 }, // = 1
{ 0,0,1,0,0,1,0 }, // = 2
{ 0,0,0,0,1,1,0 }, // = 3
{ 1,0,0,1,1,0,0 }, // = 4
{ 0,1,0,0,1,0,0 }, // = 5
{ 0,1,0,0,0,0,0 }, // = 6
{ 0,0,0,1,1,1,1 }, // = 7
{ 0,0,0,0,0,0,0 }, // = 8
{ 0,0,0,0,1,0,0 } // = 9
};

void setup()
{
pinMode(2, OUTPUT); //a
pinMode(3, OUTPUT);//b
pinMode(4, OUTPUT);//c
pinMode(5, OUTPUT);//d
pinMode(6, OUTPUT);//e
pinMode(7, OUTPUT);//f
pinMode(8, OUTPUT);//g

www.inkubator- Page
“TRAINER KIT

pinMode(9, OUTPUT);//dig 1
pinMode(10, OUTPUT);//dig 2
pinMode(11, OUTPUT);//dig 3
pinMode(12, OUTPUT);//dig 4
pinMode(13, OUTPUT);//dig 5
pinMode(A0, OUTPUT);//dig 6

pinMode(A1, OUTPUT);//Alarm

Wire.begin();
/*---------seting jam
second = 5; //0-59
minute = 36; //0-59
hour = 11; //0-23
setingRTC();
*/

//=========seting Alarm
hourAlarm=12; minuteAlarm=0;

}
void loop(){
bacaRTC();
if(hour==hourAlarm && minute==minuteAlarm){
alarm=1;
}
else{
alarm=0;
}

if (alarm==1){
jeda++;
if (jeda<50)digitalWrite(A1, HIGH);
else if (jeda<100)digitalWrite(A1, LOW);
else jeda=0;
}

digitalWrite(9,LOW);
digitalWrite(10,HIGH);
digitalWrite(11,HIGH);
digitalWrite(12,HIGH);
digitalWrite(13,HIGH);
digitalWrite(A0,HIGH);
sevenSegWrite(hour/10);
delay(3);
digitalWrite(9,HIGH);
digitalWrite(10,LOW);
digitalWrite(11,HIGH);
digitalWrite(12,HIGH);
digitalWrite(13,HIGH);
digitalWrite(A0,HIGH);

www.inkubator- Page
“TRAINER KIT

sevenSegWrite(hour%10);
delay(3);
digitalWrite(9,HIGH);
digitalWrite(10,HIGH);
digitalWrite(11,LOW);
digitalWrite(12,HIGH);
digitalWrite(13,HIGH);
digitalWrite(A0,HIGH);
sevenSegWrite(minute/10);
delay(3);
digitalWrite(9,HIGH);
digitalWrite(10,HIGH);
digitalWrite(11,HIGH);
digitalWrite(12,LOW);
digitalWrite(13,HIGH);
digitalWrite(A0,HIGH);
sevenSegWrite(minute%10);
delay(3);
digitalWrite(9,HIGH);
digitalWrite(10,HIGH);
digitalWrite(11,HIGH);
digitalWrite(12,HIGH);
digitalWrite(13,LOW);
digitalWrite(A0,HIGH);
sevenSegWrite(second/10);
delay(3);
digitalWrite(9,HIGH);
digitalWrite(10,HIGH);
digitalWrite(11,HIGH);
digitalWrite(12,HIGH);
digitalWrite(13,HIGH);
digitalWrite(A0,LOW);
sevenSegWrite(second%10);
delay(3);
}

void sevenSegWrite(byte segment) {


byte pin = 2;
for (byte segCount = 0; segCount < 7; ++segCount) {
digitalWrite(pin, seven_seg_digits[segment][segCount]);
++pin;
}
}

byte decToBcd(byte val){


return ( (val/10*16) + (val%10) );
}

byte bcdToDec(byte val) {


return ( (val/16*10) + (val%16) );
}

www.inkubator- Page
“TRAINER KIT

void bacaRTC(){
Wire.beginTransmission(DS1307_ADDRESS);
Wire.write(zero);
Wire.endTransmission();
Wire.requestFrom(DS1307_ADDRESS, 7);
second = bcdToDec(Wire.read());
minute = bcdToDec(Wire.read());
hour = bcdToDec(Wire.read() & 0b111111);
weekDay = bcdToDec(Wire.read());
monthDay = bcdToDec(Wire.read());
month = bcdToDec(Wire.read());
year = bcdToDec(Wire.read());
}

void setingRTC(){
Wire.beginTransmission(DS1307_ADDRESS);
Wire.write(zero); //stop RTC
Wire.write(decToBcd(second));
Wire.write(decToBcd(minute));
Wire.write(decToBcd(hour));
Wire.write(zero); //start
Wire.endTransmission();
}
Jalannya Program:

Alarm akan berbunyi sesuai dengan seting alarm yang telah ditentukan. Alarm dapat di ganti
dengan merubah program dibawah ini:

Stop watch tampilan LCD


Seperti stop watch pada umumnya yaitu menghitung waktu penekanan awal (start) sampai
penekanan akhir (stop) dengan jeda waktu mili detik.
Tombol START digunakan untuk memulai perhitungan waktu. Tombol STOP untuk menghentikan
penghitungan waktu. Tombol RESET untuk meng-nol-kan kembali nilai stop watch. Sedangkan
LCD sebagai penampil hasil perhitungan stopwatch.

Latihan 21: Stop watch tampilan LCD


Kebutuhan Hardware :
 Modul LCD 2X16
 2 Tombol push ON
 Modul Arduino
UNO Koneksi Arduino UNO:
Pin ARDUINO CN 3 Pin ARDUINO CN 20

www.inkubator- Page
“TRAINER KIT

2 1 A0 1
3 2 A1 2
4 3 GND 9
5 4
6 5
7 6

//Program 21: Stop watch tampilan LCD


#include <LiquidCrystal.h>
LiquidCrystal lcd(2, 3, 4, 5, 6, 7);
unsigned long mulai, selesai, dataStopWatch;
int i=0;
int fPaus = 0;
long lastButton = 0;
long delayAntiBouncing = 50;
long dataPaus = 0;

void setup(){
pinMode(A0,INPUT);
pinMode(A1,INPUT);
digitalWrite(A0,1);
digitalWrite(A1,1);
lcd.begin(16, 2);

lcd.setCursor(0, 0);
lcd.print(" Arduino");
lcd.setCursor(0, 1);
lcd.print(" StopWatch");
delay(2000);
lcd.clear();
lcd.print(" Tekan Tombol");
lcd.setCursor(0, 1);
lcd.print(" Start / Stop");
}

void loop(){
if (digitalRead(A0)==0){
if ((millis() - lastButton) > delayAntiBouncing){
if (i==0){
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Start Timer");
mulai = millis();
fPaus = 0;
}
else if (i==1){
lcd.setCursor(0, 0);
lcd.print("Stop Timer ");

www.inkubator- Page
“TRAINER KIT

dataPaus = dataStopWatch;
fPaus = 1;
}
i =!i;
}
lastButton = millis();
}
else if (digitalRead(A1)==0 && fPaus == 1){
dataStopWatch = 0;
dataPaus = 0;
lcd.clear();
lcd.print("Reset Stopwatch");
lcd.setCursor(0, 1);
lcd.print("0:0:0.0");
delay(2000);
lcd.clear();
lcd.print(" Tekan Tombol");
lcd.setCursor(0, 1);
lcd.print(" Start / Stop");
}

if (i==1){
selesai = millis();
float jam, menit, detik, miliDetik;
unsigned long over;

// MATH time!!!
dataStopWatch = selesai - mulai;
dataStopWatch = dataPaus + dataStopWatch;

jam = int(dataStopWatch / 3600000);


over = dataStopWatch % 3600000;
menit = int(over / 60000);
over = over % 60000;
detik = int(over / 1000);
miliDetik = over % 1000;

lcd.setCursor(0, 1);
lcd.print(jam, 0);
lcd.print(":");
lcd.print(menit, 0);
lcd.print(":");
lcd.print(detik, 0);
lcd.print(".");
if (jam < 10){
lcd.print(miliDetik, 0);
lcd.print(" ");
}
}

www.inkubator- Page
“TRAINER KIT

Jalannya Alat :
1. Tampilan pertama pada LCD :
2. Setelah 2 detik menapilkan tulisan berikutnya:
Arduino
TekanStopWatc
Tombol
Start / Stop
3. Tekan tombol Start/Stop, sehingga stopwatch menghitung waktu:
4. Tekan tombol Start/Stop lagi, sehingga stopwatch berhenti menghitung:
Start Timer
0:0:1.850
Stop
Timer
5. Untuk melanjutkan perhitungan stopwatch tekan tombol Start/Stop lagi.
6. Jika ingin me-Reset ulang waktu stopwatch maka kondisikan stopwatch pada posisi STOP
lalu tekan tombol RESET, mak akan tampil sebagai berikut:

Reset
Stopwatch
Kunci Elektrik dengan Password
Arduino UNO sebagai alat kunci elektronik dengan pengaman berupa password yang diinput
melalui keypad. Alat ini terdiri dari Arduino UNO sebagai sistem pemroses & pengendali utama
dari sistem. Keypad dipakai untuk input data kode password untuk menentukan apakah
password benar sehingga kunci terbuka atau password salah sehingga kunci tertutup. Dipakai
juga untuk mengganti password lama dengan password baru. LCD digunakan untuk display atau
tampilan ketika entri password maupun menu ganti password. Relay sebagai aktuator yang akan
mengontrol langsung solenoid. Karena pada trainerkit arduino ini tidak disediakan solenoid maka
program hanya mengontrol sampai ON/OFF relay saja.

Latihan 22: Kunci Elektrik dengan


Password Kebutuhan Hardware :
 Keypad 4x4

www.inkubator- Page
“TRAINER KIT

 Modul LCD 2x16


 Modul Relay 5Vdc
 Solenoid
 Buzzer
 Modul Arduino UNO
Koneksi Arduino UNO dengan LCD:
Pin ARDUINO CN 3
2 1
3 2
4 3
5 4
6 5
7 6

Koneksi Keypad 4x4:


Pin Ardunio CN 17
10 1
11 2
12 3
13 4

Pin Arduino CN 18
A0 1
A1 2
A2 3
A3 4

Koneksi Relay :
Pin ARDUINO CN 24
8 1
+5V 5
GND 6

Koneksi Buzzer:
Pin ARDUINO CN 10
9 1
GND 2

/***************************
Program 22: Kunci Elektrik dengan Password
****************************/

www.inkubator- Page
“TRAINER KIT

#include <Keypad.h>
#include <LiquidCrystal.h>
#include <EEPROM.h>

unsigned char key,menu,urut;


unsigned char pw1,pw2,pw3,pw4,pw5,pw6,i;
unsigned char pw_kpd1,pw_kpd2,pw_kpd3,pw_kpd4,pw_kpd5,pw_kpd6;
unsigned char cek,cnt;
unsigned char fkpd;
char pw[7],pw_kpd[7];
char s,t;

//----------------------------INISIALISASI KONEKSI LCD 2X16


LiquidCrystal lcd(2, 3, 4, 5, 6, 7);
//----------------------------INISIALISASI KONEKSI KEYPAD 4X4
const byte ROWS=4;
const byte COLS=4;
char keys[ROWS][COLS]={
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};
byte rowPins[ROWS]={A0,A1,A2,A3};
byte colPins[COLS]={10,11,12,13};
Keypad keypad = Keypad(makeKeymap(keys),rowPins, colPins, ROWS, COLS);

void setup()
{
pinMode(8,OUTPUT);
pinMode(9,OUTPUT);
digitalWrite(8,0);
digitalWrite(9,0);

lcd.begin(16, 2);
lcd.print(" Kunci Elektrik");
lcd.setCursor(0,1);
lcd.print("Dengan Password");
delay(2000);
// cek alamat 0
cek=EEPROM.read(0);
if(cek==0xFF){
cek=1;
EEPROM.write(0,'1');
pw1='1'; EEPROM.write(1,'1');
pw2='1'; EEPROM.write(2,'1');
pw3='1'; EEPROM.write(3,'1');
pw4='1'; EEPROM.write(4,'1');
pw5='1'; EEPROM.write(5,'1');

www.inkubator- Page
“TRAINER KIT

pw6='1'; EEPROM.write(6,'1');
}
else{
pw1=EEPROM.read(1);
pw2=EEPROM.read(2);
pw3=EEPROM.read(3);
pw4=EEPROM.read(4);
pw5=EEPROM.read(5);
pw6=EEPROM.read(6);
}
fkpd=0;
delay(200);
}

void loop()
{
// display time
digitalWrite(8,1);
lcd.clear();
lcd.print("Silakan kunci...");
lcd.setCursor(0,1);
lcd.print("Tekan #");
fkpd=2;
goKeypad();
lcd.clear();
lcd.print("Pintu Terkunci");
delay(3000);
pass:
lcd.clear();
lcd.print("Masukan Password");
lcd.setCursor(0,1);
fkpd=1;
menu=0;
goKeypad();
if(menu==4) goto pass;
}
// keypad
void goKeypad(){
do{
key=keypad.getKey();
if(key != NO_KEY){

if(key=='*' && fkpd==1){


lcd.clear();
lcd.print("Ganti Password");
lcd.setCursor(0,1);
lcd.print("PW lama=");
menu=1;
delay(300);

www.inkubator- Page
“TRAINER KIT

else if(key=='#' && fkpd==2){


fkpd=0;
digitalWrite(8,0);
delay(250);
}

else if ((key=='C')&&(fkpd == 1)){ //C


if(menu==3){
lcd.clear();
lcd.print("PW baru:");
menu=2;
for(t=0;t<6;t++)pw_kpd[t]=' ';
cnt=0;
}
else if(menu==2){
menu=4;
fkpd=0;
for(t=0;t<6;t++)pw_kpd[t]=' ';
cnt=0;
}
else if((menu==1)||(menu==0)){
menu=4;
fkpd=0; for(t=0;t<6;t+
+)pw_kpd[t]=' '; cnt=0;
}
delay(250);
}

else if (key=='D'&& menu==3){


lcd.clear();
lcd.print("Simpan PW Baru..");
EEPROM.write(1,pw_kpd[0]);
EEPROM.write(2,pw_kpd[1]);
EEPROM.write(3,pw_kpd[2]);
EEPROM.write(4,pw_kpd[3]);
EEPROM.write(5,pw_kpd[4]);
EEPROM.write(6,pw_kpd[5]);
EEPROM.write(0,1);
pw1 = pw_kpd[0];
pw2 = pw_kpd[1];
pw3 = pw_kpd[2];
pw4 = pw_kpd[3];
pw5 = pw_kpd[4];
pw6 = pw_kpd[5];

www.inkubator- Page
“TRAINER KIT

fkpd = 0; for(t=0;t<6;t+
+)pw_kpd[t]=' '; delay(3000);
menu = 4;
}

else if(menu<2 && fkpd==1 && key!='A' && key!='B'


&& key!='C' && key!='D' && key!='*' && key!='#'){
cek_password();
}
else if(menu==2 && fkpd==1&& key!='A' && key!='B'
&& key!='C' && key!='D' && key!='*' && key!='#'){
entri_password();
}
}
}
while(fkpd);
}

void cek_password(){
pw_kpd[cnt]=key;
cnt++;
lcd.print('*');
// lcd.print(char(key));
if((cnt==6)&&(menu==0)){
delay(500);

if((pw1==pw_kpd[0])&&(pw2==pw_kpd[1])&&(pw3==pw_kpd[2])&&(pw4==pw_kpd[3
])&&(pw5==pw_kpd[4])&&(pw6==pw_kpd[5])){
lcd.clear();
lcd.print("Password Benar");
lcd.setCursor(0,1);
lcd.print("Silakan Masuk");
digitalWrite(8,1);
digitalWrite(9,1);
delay(200);
digitalWrite(9,0);
delay(200);
digitalWrite(9,1);
delay(200);
digitalWrite(9,0);
cnt=0;
fkpd=0;
s=0;
for(t=0;t<6;t++)pw_kpd[t]=' ';
delay(3000);
}
else {

www.inkubator- Page
“TRAINER KIT

lcd.clear();
lcd.print("Password Salah");
s++;
if(s < 3){
digitalWrite(9,1);
delay(2000);
digitalWrite(9,0);
lcd.clear();
lcd.print("Masukan Password");
lcd.setCursor(0,1);
cnt=0;
for(t=0;t<6;t++)
pw_kpd[t]=' ';
}
else if (s==3){
lcd.clear();
lcd.print("Anda 3x Salah");
lcd.setCursor(0,1);
lcd.print("Tunggu 5 Menit");
for(i=0;i<75;i++){
digitalWrite(9,1);
delay(2000);
digitalWrite(9,0);
delay(2000);
}
lcd.clear();
lcd.print("Masukan Password");
lcd.setCursor(0,1);
cnt=0;
s=0;
for(t=0;t<6;t++)pw_kpd[t]=' ';
}
}
}
else if((cnt==6)&&(menu==1)){

if((pw1==pw_kpd[0])&&(pw2==pw_kpd[1])&&(pw3==pw_kpd[2])&&(pw4==pw_kpd[3
])&&(pw5==pw_kpd[4])&&(pw6==pw_kpd[5])){
lcd.clear();
lcd.print("Password Benar");
lcd.setCursor(0,1);
delay(2000);
lcd.clear();
lcd.print("PW baru:");
cnt=0;
menu=2;
s=0;
for(t=0;t<6;t++)pw_kpd[t]=' ';
}

www.inkubator- Page
“TRAINER KIT

else {
s++;
if(s < 3){
lcd.clear();
lcd.print("Password Salah");
cnt=0;
delay(2000);
lcd.clear();
lcd.print("Ganti Password");
lcd.setCursor(0,1);
lcd.print("PW lama=");
for(t=0;t<6;t++)pw_kpd[t]=' ';
}
else if (s==3){
lcd.clear();
lcd.print("Anda 3x Salah");
lcd.setCursor(0,1);
lcd.print("Tunggu 5 Menit");
for(i=0;i<75;i++){
digitalWrite(9,1);
delay(2000);
digitalWrite(9,0);
delay(2000);
}
lcd.clear();
lcd.print("Ganti Password");
lcd.setCursor(0,1);
lcd.print("PW lama=");
cnt=0;
s=0;
for(t=0;t<6;t++)pw_kpd[t]=' ';
}
}
}
}

void entri_password(){
lcd.print(char(key));
pw_kpd[cnt]=key; cnt+
+;
if(cnt==6){
lcd.setCursor(0,1);
lcd.print("D=save,C=cancel");
menu=3;
cnt=0;

}
}

www.inkubator- Page
“TRAINER KIT

Jalannya Alat :
1. Tampilan pertama pada LCD :
2. Setelah 2 detik berikutnya akan tampil perintah untuk mengunci (selenoid aktif) :
Kunci Elektrik
Dengan
SilakanPassword
kunci..
Tekan #
3. Tekan tombol pagar ( # ) untuk menguncinya.
4. Selanjutnya masuk pada kondisi pintu terkunci. Untuk membukanya diperlukan password
Pintu
yaitu berupa kombinasi 6 digit angka Terkunci
yang di-entri melalui keypad :

Masukan Password

5. Untuk nilai password awal, kode passwordnya adalah “111111” (angka 1 enam kali). Tekan
angka “1” sejumlah 6x, display di :
6. Jika password benar maka akan tampil :
Masukan Password
******
Password Benar
Silakan Masuk
7. Buzzer juga akan berbunyi : “beep – beep” , kemudian relay aktif dan selenoid akan terbuka.
8. Jika password salah :
Buzzer akan berbunyi : “beeep.........” kemudian anda diminta memasukkan password lagi :
Password Salah
Masukan Password

9. Kesempatan memasukkan password adalah 3x. Jika sudah 3x salah terus maka harus
menunggu 5 menit untuk dapat entri password lagi :

www.inkubator- Page
“TRAINER KIT

Anda 3x
Salah Tunggu
10. Untuk mengganti password , pastikan alat dalam kondisi terkunci, kondisi ketika kita akan
entri password untuk membuka kunci, atau tampilan dalam kondisi seperti ini.
11. Kalau akan membuka kunci kan kita tinggal entri passwordnya, lain halnya untuk mengganti
Masukan Password
password , tekan tombol bintang (asterisk) *.
Ganti
Password PW
12. Selanjutnya, masukkan password lama. Jika alat belum pernah diganti passwordnya, maka
password awal adalah : “ 111111 “ (angka 1 enam kali).
13. Jika password benar maka akan tampil :
Ganti
Password
Password PW
Benar

14. Sekitar 2 detik kemudian akan tampil permintaan mengisi password yang baru :
15. Masukkan password baru yang dikehendaki. Berupa kombinasi angka 6 digit.
PW baru :
Misalnya (contoh saja ya..) : “234567”

PW baru : 234567

16. Kemudian muncul pilihan untuk simpan password atau cancel. Tekan “D” jika akan
menyimpan (mengganti password) atau “C” jika cancel.

17. Tekan “D” untuk menyimpan password baru.


PW baru :
234567 D=save,

www.inkubator- Page
“TRAINER KIT

Simpan PW Baru..

18. Selanjutnya akan kembali ke kondisi normal (kunci tertutup).


19. Untuk membuka kunci sekarang memakai password yang baru.
Masukan Password

Mengukur jarak dg sensor ultrasonic


Arduino UNO mengukur jarak dengan sensor ultrasonik. Kita akan membuat alat pengukur jarak
tanpa menggunakan penggaris. Cukup arahkan sensor ke jarak yang akan kita ukur. Sensor
Ultrasonik HC-SR04 sebagai sensor jarak dan LCD 2x16 sebagai display hasil pembacaan sensor.
Latihan 23: Mengukur jarak dg sensor
ultrasonic Kebutuhan Hardware :
 Modul Sensor Ultrasonik HC-SR04
 Modul LCD 2x16
 Modul Arduino UNO
Koneksi Arduino UNO dengan LCD:
Pin ARDUINO CN 3
2 1
3 2
4 3
5 4
6 5
7 6
Koneksi Sensor Ultrasonic:
Pin ARDUINO CN 5
8 1
9 2
+5V 3
GND 4

/***************************
Program 23: Mengukur jarak dg sensor ultrasonic
****************************/
#define ECHOPIN 9
#define TRIGPIN 8
#include <LiquidCrystal.h>
LiquidCrystal lcd(2,3,4,5,6,7);

www.inkubator- Page
“TRAINER KIT

unsigned int jarak, timer;

void setup(){
lcd.begin(16, 2);
lcd.print(" ULTRASONIC");
lcd.setCursor(0, 1);
lcd.print(" RANGE METER");
delay(2000);
lcd.clear();
lcd.print("Range=");
pinMode(ECHOPIN, INPUT);
pinMode(TRIGPIN, OUTPUT);
}
void loop(){
digitalWrite(TRIGPIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIGPIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIGPIN, LOW);
timer = pulseIn(ECHOPIN, HIGH);
jarak= timer/58;

lcd.setCursor(6, 0);
lcd.print(jarak);
lcd.print(" cm ");
delay(1000);
}

Jalannya Alat :
LCD menapilkan hasil pengukuran ultrasonik:
Berikutnya Anda bisa beri penghalang didepan sensor ultrasonik (media pantul) sebagai jarak
yang diukur. Range=50 cm

Penghitung jumlah barang


Menghitung barang memanfaatkan sensor ultrasonik.

Latihan 24: Penghitung jumlah barang

Koneksi hardware:

www.inkubator- Page
“TRAINER KIT

Pin Arduino CN5 Pin Arduino CN3


8 1 2 1
9 2 3 2
+5V 3 4 3
GND 4 5 4
6 5
7 6

//Program 24: Penghitung jumlah barang


const int ECHO = 9;
const int TRIG = 8;

#include <LiquidCrystal.h>
LiquidCrystal lcd(2,3,4,5,6,7);

//-------deklarasi variabel
unsigned int jarak, k, timer;
unsigned int masuk;

void ukur_jarak(){
digitalWrite(TRIG, LOW);
delayMicroseconds(2);
digitalWrite(TRIG, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG, LOW);
timer = pulseIn(ECHO, HIGH);
jarak = timer/58;
}

void setup()
{
lcd.begin(16, 2);
lcd.print(" PENGHITUNG ");
lcd.setCursor(0, 1);
lcd.print(" JUMLAH BARANG");
delay(2000);

lcd.clear();
lcd.print("Jumlah:");

pinMode(ECHO, INPUT);
pinMode(TRIG, OUTPUT);
}

void loop()
{
ukur_jarak();
if (jarak <= 70){
do
ukur_jarak();
while (jarak < 70);
masuk++;
lcd.setCursor(7 , 0);
lcd.print(masuk);

www.inkubator- Page
“TRAINER KIT

delay(1000);
}
jarak = 200;
delay(100);
}

Kontrol Motor DC
// Program 20: Kontrol Putaran Motor DC
void setup(){
pinMode(8,OUTPUT);
pinMode(9,OUTPUT);
pinMode(10,OUTPUT);
//---PENENTU ARAH PUTARAN
digitalWrite(8,HIGH);
digitalWrite(9,LOW);
}

void loop(){
//=============== motor ON
digitalWrite(10,HIGH);
delay(5000);

//=============== motor OFF


digitalWrite(10,LOW);
delay(5000);
}
Jalannya Program:

Barang akan dihitung pada saat berada didepan sensor ultrasonik dengan ketentuan jarak
minimal 70cm.

Kontrol Motor DC
Mengontrol motor DC menggunakan Arduino dengan driver L293.

Koneksi hardware:

Pin CN21 Setiap menggunakan aplikasi


Arduino 8 Motor DC, Servo & Stepper
9 1 teganganpowermotor
10 2 diambilkan dari adaptor,
GND 3
hubungkan konektor power
4
DC dengan Adaptor.

// Program 25: Kontrol Putaran Motor DC


void setup(){
pinMode(8,OUTPUT);
pinMode(9,OUTPUT);
pinMode(10,OUTPUT);
//---PENENTU ARAH PUTARAN
digitalWrite(8,HIGH);
digitalWrite(9,LOW);

www.inkubator- Page
“TRAINER KIT

void loop(){
//=============== motor ON
digitalWrite(10,HIGH);
delay(5000);

//=============== motor OFF


digitalWrite(10,LOW);
delay(5000);
}
Penjelasan Program:

Motor akan berputar searah jarum jam selama 5 detik, dan akan berhenti selama 5 detik.

Kontrol Motor Servo


Kontrol motor servo menggunakan PWM dari pin Arduino.

Koneksi Hardware:

Pin Arduino CN22


10 1
GND 2

// Program 26: Kontrol Motor Servo


#include <Servo.h>

Servo myservo;

void setup(){
//servo pada pin 10
myservo.attach(10);
}

void loop(){
myservo.write(45);
delay(1000);
myservo.write(90);
delay(1000);
}
Jalannya Program:

Motor Servo akan berputar sesuai dengan nilai PWM.

Kontrol Motor Stepper


Kontrol putaran motor stepper menggunakan 4 jalur data. Dengan koneksi sebagai berikut:

Pin Arduino CN22

www.inkubator- Page
“TRAINER KIT

2 1
3 2
4 3
5 4
GND 5

// Program 27: Kontrol Motor Stepper


void setup(){
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
}

void loop(){
digitalWrite(2, HIGH);
digitalWrite(3, LOW);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
delay(5);
digitalWrite(2, LOW);
digitalWrite(3, HIGH);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
delay(5);
digitalWrite(2, LOW);
digitalWrite(3, LOW);
digitalWrite(4, HIGH);
digitalWrite(5, LOW);
delay(5);
digitalWrite(2, LOW);
digitalWrite(3, LOW);
digitalWrite(4, LOW);
digitalWrite(5, HIGH);
delay(5);
}

Penjelasan Program:

Motor stepper berputar searah jarum jam dengan kecepatan 5 mS/step.

Mengontrol kecepatan motor DC dengan potensio meter


Arduino UNO digunakan untuk mengontrol kecepatan motor DC dengan menggunakan potensio
meter. Potensio meter masuk pada pin A0 sebagai input data analog dan hasil pembacaanya
digunakan sebagi kontrol output PWM pada pin 9. Nilai PWM juga ditampilkan pada LCD.

www.inkubator- Page
“TRAINER KIT

Kebutuhan Hardware :
 Potensio meter 50K
 Motor DC
 Driver motor DC menggunakan L293
 LCD 2x16
 Modul Arduino UNO
Koneksi Arduino UNO dengan LCD:
Pin ARDUINO CN 3
2 1
3 2
4 3
5 4
6 5
7 6

Koneksi Potensiometer:
Pin ARDUINO CN 12
A0 1
+5V 2
GND 3

Koneksi Arduino:
Pin Arduino CN 21
8 1
9 2
10 3
GND 4

/***************************
Program 28: Mengontrol kecepatan motor DC dengan potensio meter
****************************/
#include <LiquidCrystal.h>
LiquidCrystal lcd(2, 3, 4, 5, 6, 7);

void setup(){
pinMode(9,OUTPUT);
lcd.begin(16, 2);
lcd.setCursor(0,0);
lcd.print("Kontrol Motor DC");
lcd.setCursor(0,1);
lcd.print("dg Potensio (A0)");
delay(3000);
lcd.clear();
}

www.inkubator- Page
“TRAINER KIT

void loop(){
int val = analogRead(A0);
byte pwm = map(val, 0, 1023, 0, 255);
analogWrite(9,pwm);
lcd.setCursor(0,0);
lcd.print("PWM:");
lcd.print(pwm);
lcd.print(" ");
delay(100);
}

Jalannya Alat :
Tampilan normal pada LCD, menampilkan nilai PWM yang dikeluarkan:
Putar putar potensio meter. Jika semakin kecil PWM maka putaran motor DC semakin cepat, dan
PWM:117
sebaliknya saat nilai PWM semakin besar maka putaran motor DC semakin melambat.

Mengontrol kecepatan motor Servo dengan potensio meter


Tidak jauh berbeda dari program kontrol kecepatan motor DC dengan potensio meter kali ini
mengontrol sudut putaran pada motor servo menggunakan potensiometer.
Arduino UNO membaca data analog dari perubahan tegangan output potensio meter, hasil dari
pembacaan data digunakan untuk menentukan nilai PWM yang terhubung dengan input motor
servo sehingga motor servo berputar sesuai dengan nilai PWMnya.

Kebutuhan Hardware :
 Potensio meter 50K
 Motor Servo
 Modul Arduino UNO

Koneksi Motor Servo :


CN 27 Pin Arduino
1 10
2 GND

Koneksi Potensio meter :


CN 12 Pin Arduino
1 A1

www.inkubator- Page
“TRAINER KIT

2 +5V
3 GND

/***************************
Program 29: Mengontrol kecepatan motor Servo dengan potensio meter
****************************/
#include <Servo.h>

Servo myservo;

void setup(){
//servo pada pin 10
myservo.attach(10);
}

void loop(){
//potensio meter pin A1
int val = analogRead(A1);
val = map(val, 0, 1023, 0, 180);
myservo.write(val);
}
Jalannya Alat :
Langsung saja putar potensio meter sehingga motor servo berputar sesuai dengan nilai PWM
yang dikeluarkan.

Kontrol Suhu Otomatis


Atau biasa disebut Thermostat yaitu alat yang digunakan untuk mempertahankan suhu sesuai dengan
setpoint yang telah ditentukan. Suhu dibaca oleh sensor LM35 dan hasilnya ditampilkan pada LCD.
Pemanas menggunakan Heater yang di kontrol ON/OFF-nya menggunakan relay yang terhubung dengan
kaki output Arduino. Jika suhu dibawah nilai setpoint maka heater dinyalakan sebaliknya jika suhu lebih
besar dari nilai setpoint maka heater dimatikan Karena dalam paket trainer kit Arduino tidak ada heater
maka kontrolnya hanya berhenti pada kontrol ON/OFF relay. Buat koneksi seperti dibawah ini:

Pin Arduino CN 3 Pin Arduino CN 13 Pin Arduino CN 24


2 1 A0 1 8 1
3 2 +5V 2 +5V 5
4 3 GND 3 GND 6
5 4
6 5
7 6

/***************************
Program 30: Thermostat
****************************/
#include <LiquidCrystal.h>
LiquidCrystal lcd(2, 3, 4, 5, 6, 7);

www.inkubator- Page
“TRAINER KIT

byte derajat[8] = {
0b01100,
0b10010,
0b10010,
0b01100,
0b00000,
0b00000,
0b00000,
0b00000
};

int adc,T,setPoint;
byte setSP, f_awal;

void setup(){
pinMode(8,OUTPUT);
lcd.createChar(1, derajat);
lcd.begin(16, 2);
lcd.print(" Thermostat ");
lcd.setCursor(0, 1);
lcd.print("ARDUINO dg LM35");
delay(2000);
lcd.clear();
setPoint=40;
}

void loop(){
lcd.setCursor(0,0);
lcd.print("SP=");
lcd.print(setPoint);
lcd.write(1);
lcd.print("C ");

adc = analogRead(0);
T=(adc*5)/10;
lcd.setCursor(8, 0);
lcd.print("T=");
lcd.print(T);
lcd.write(1);
lcd.print("C ");

if(T<(setPoint-1) || f_awal==0){
lcd.setCursor(0,1);
lcd.print("Heater ON ");
digitalWrite(8,HIGH);
f_awal=1;
}
else if(T>=setPoint){
lcd.setCursor(0,1);
lcd.print("Heater OFF");
digitalWrite(8,LOW);
}
delay(100);
}

www.inkubator- Page
“TRAINER KIT

Jalannya Program:
Relay akan ON jika suhu dibawah setpoint. Dan akan OFF jika diatas set point. Panaskan sensor
sampai mencapai setpoint sehingga relay OFF.
Untuk merubah nilai setpoint ganti pada bagian “setPoint=40”. Nilai 40 adalah nilai setpoint yang
telah ditentukan sebelumnya.

Membaca Remot Kontrol


Membaca data remot IR (infra red) dengan menggunakan sensor remot TV jenis sensor yang
kami gunakan TSOP1738 bisa juga dengan tipe lain. Hasil pembacaan dati ditampilkan pada LCD.

Kebutuhan Hardware :
 Remot HX1838 NEC
 Sensor TV (TSOP1738)
 LCD 2x16
 Modul Arduino UNO
Koneksi Arduino UNO dengan LCD:
Pin ARDUINO CN 3
2 1
3 2
4 3
5 4
6 5
7 6

Koneksi Sensor:
Pin Arduino CN 11
8 1
+5V 2
GND 3

www.inkubator- Page
“TRAINER KIT

//Program 31: Baca data Remot


#include <IRremote.h>
#include <LiquidCrystal.h>
LiquidCrystal lcd(2, 3, 4, 5, 6, 7);

int IR_PIN = 8;
IRrecv irrecv(IR_PIN);
decode_results results;

void setup(){
lcd.begin(16, 2);
irrecv.enableIRIn();
lcd.setCursor(0,0);
lcd.print("Baca Data Remot");
lcd.setCursor(0,1);
lcd.print("Data:");
}

void loop(){
if (irrecv.decode(&results)) {
irrecv.resume();
if(results.value != 0xFFFFFFFF){
lcd.setCursor(5,1);
lcd.print(results.value,HEX);
lcd.print(" ");
}
}
}

Jalannya Alat :
1. Tampilan normal pada LCD:
2. Selanjutnya tekan tombol pada remot, misal tombol Power ditekan maka pada LCD
menampilkan: Baca Data Remot
Data:
Baca Data
Remot

Hasil pembacaan data remot A:


Tombol Kode Hexa
1 FFA25D
2 FF629D
3 FFE21D
4 FF22DD
5 FF02FD
6 FFC23D
7 FFE01F

www.inkubator- Page
“TRAINER KIT

8 FFA857
9 FF906F
0 FF9867
* FF6897
# FFB04F
UP FF18E7
DOWN FF4AB5
PREV FF10EF
NEXT FF5AA5
OK FF38C7

Hasil pembacaan data remot B:


Tombol Kode Hexa
UP FF629D
DOWN FFA857
PREV FF22DD
NEXT FFC23D
OK FF02FD
1 FF6897
2 FF9867
3 FFB04F
4 FF30CF
5 FF18E7
6 FF7A85
7 FF10EF
8 FF38C7
9 FF5AA5
0 FF4AB5
* FF42BD
# FF52AD

Kontrol Peralatan dengan Remot


Mengontrol peralatan listrik menggunakan remot kontrol dan relay sebagai aktuator yang akan
mengontrol langsung peralatan listrik yang dikendalikan ‘ON – OFF’ nya. Tombol 1 s/d 4 untuk
menghidupkan Relay1 s/d 4, sedangkan tombol 5 s/d 8 untuk mematikan Relay 1 s/d 4. LCD
digunakan untuk menampilkan data tombol yang ditekan.

Kebutuhan Hardware :
 Remot HX1838 NEC
 Sensor TV (TSOP1738)
 LCD 2x16
 4 Relay +5V
 Modul Arduino Mega

www.inkubator- Page
“TRAINER KIT

Koneksi Arduino UNO dengan LCD:


Pin ARDUINO CN 3
2 1
3 2
4 3
5 4
6 5
7 6

Koneksi Sensor:
Pin ARDUINO CN 11
8 1
+5V 2
GND 3

Koneksi Relay:
Pin ARDUINO CN 24
9 1
10 2
11 3
12 4
+5V 5
GND 6

Sebelum menggunakan modul Remote ini, perhatikan kode yang ada di Remote.
• Kode A : memakai Source Code A
• Kode B : memakai Source Code B
Hal ini menyesuaikan ketersedian remote yang ada dipasaran.

Source Code A
//Program 32: Kontrol Peralatan dengan Remot
#include <IRremote.h>
#include <LiquidCrystal.h>
LiquidCrystal lcd(2, 3, 4, 5, 6, 7);

int IR_PIN = 8;

int Rl1 = 9;
int Rl2 = 10;
int Rl3 = 11;
int Rl4 = 12;

IRrecv irrecv(IR_PIN);
decode_results results;

www.inkubator- Page
“TRAINER KIT

void setup(){
for(char i=9; i<13; i++){
pinMode(i, OUTPUT);
digitalWrite(i, LOW);
}
lcd.begin(16, 2);
lcd.print(" Kontrol Alat");
lcd.setCursor(0, 1);
lcd.print("dg Remot Kontrol");
delay(2000);
irrecv.enableIRIn();
}

void loop(){
lcd.setCursor(0, 1);
lcd.print("Tekan Tb 1 s/d 8");
if (irrecv.decode(&results)){
irrecv.resume();
if(results.value != 0xFFFFFFFF){
lcd.setCursor(0,1);
switch(results.value){
case 0XFFA25D: lcd.print("Relay 1 ON ");
digitalWrite(Rl1, HIGH);break;
case 0XFF629D: lcd.print("Relay 2 ON ");
digitalWrite(Rl2, HIGH);break;
case 0XFFE21D: lcd.print("Relay 3 ON ");
digitalWrite(Rl3, HIGH);break;
case 0xFF22DD: lcd.print("Relay 4 ON ");
digitalWrite(Rl4, HIGH);break;
case 0xFF02FD: lcd.print("Relay 1 OFF ");
digitalWrite(Rl1, LOW);break;
case 0xFFC23D: lcd.print("Relay 2 OFF ");
digitalWrite(Rl2, LOW);break;
case 0xFFE01F: lcd.print("Relay 3 OFF ");
digitalWrite(Rl3, LOW);break;
case 0xFFA857: lcd.print("Relay 4 OFF ");
digitalWrite(Rl4, LOW);break;
case 0xFF906F: lcd.print("Relay All ON ");
digitalWrite(Rl1, HIGH);
digitalWrite(Rl2, HIGH);
digitalWrite(Rl3, HIGH);
digitalWrite(Rl4, HIGH);break;
case 0xFF9867: lcd.print("Relay All OFF ");
digitalWrite(Rl1, LOW);
digitalWrite(Rl2, LOW);
digitalWrite(Rl3, LOW);
digitalWrite(Rl4, LOW);break;
}
delay(2000);
}
}
}

www.inkubator- Page
“TRAINER KIT

Source Code B
//Program 32: Kontrol Peralatan dengan Remot
#include <IRremote.h>
#include <LiquidCrystal.h>
LiquidCrystal lcd(2, 3, 4, 5, 6, 7);

int IR_PIN = 8;

int Rl1 = 9;
int Rl2 = 10;
int Rl3 = 11;
int Rl4 = 12;

IRrecv irrecv(IR_PIN);
decode_results results;

void setup(){
for(char i=9; i<13; i++){
pinMode(i, OUTPUT);
digitalWrite(i, LOW);
}
lcd.begin(16, 2);
lcd.print(" Kontrol Alat");
lcd.setCursor(0, 1);
lcd.print("dg Remot Kontrol");
delay(2000);
irrecv.enableIRIn();
}

void loop(){
lcd.setCursor(0, 1);
lcd.print("Tekan Tb 1 s/d 8");
if (irrecv.decode(&results)){
irrecv.resume();
if(results.value != 0xFFFFFFFF){
lcd.setCursor(0,1);
switch(results.value){
case 0xFF6897: lcd.print("Relay 1 ON ");
digitalWrite(Rl1, HIGH);break;
case 0xFF9867: lcd.print("Relay 2 ON ");
digitalWrite(Rl2, HIGH);break;
case 0xFFB04F: lcd.print("Relay 3 ON ");
digitalWrite(Rl3, HIGH);break;
case 0xFF30CF: lcd.print("Relay 4 ON ");
digitalWrite(Rl4, HIGH);break;
case 0xFF18E7: lcd.print("Relay 1 OFF ");
digitalWrite(Rl1, LOW);break;
case 0xFF7A85: lcd.print("Relay 2 OFF ");
digitalWrite(Rl2, LOW);break;
case 0xFF10EF: lcd.print("Relay 3 OFF ");
digitalWrite(Rl3, LOW);break;
case 0xFF38C7: lcd.print("Relay 4 OFF ");
digitalWrite(Rl4, LOW);break;
case 0xFF5AA5: lcd.print("Relay All ON ");
digitalWrite(Rl1, HIGH);
digitalWrite(Rl2, HIGH);

www.inkubator- Page
“TRAINER KIT

digitalWrite(Rl3, HIGH);
digitalWrite(Rl4, HIGH);break;
case 0xFF4AB5: lcd.print("Relay All OFF ");
digitalWrite(Rl1, LOW);
digitalWrite(Rl2, LOW);
digitalWrite(Rl3, LOW);
digitalWrite(Rl4, LOW);break;
}
delay(2000);
}
}
}

Jalannya Alat :
1. Tombol yang digunakan:

Tombol Kontrol
0 Semua Relay ON
1 Relay 1 ON
2 Relay 2 ON
3 Relay 3 ON
4 Relay 4 ON
5 Relay 1 OFF
6 Relay 2 OFF
7 Relay 3 OFF
8 Relay 4 OFF
9 Semua Relay OFF

2. Selanjutnya tekan tombol pada remot, misal tombol 1 ditekan maka relay 1 ON dan pada
LCD menampilkan:
3. Penekanan tombol berikutnya akan direspon setelah 2 detik dan LCD kembali pada tampilan
Kontrol Alat
normal.
Relay 1 ON

www.inkubator- Page
“TRAINER KIT

Kontrol 4 lampu via android


Arduino sebagai pengontrol ON/OFF relay dengan Android via Bluetooth. Ada banyak teknik
kontrol secara wireless, salah satunya dengan Bluetooth. Perangkat bluetooth ini mudah
dijumpai pada perangkat handphone masa kini (smartphone). Hampir semua HP berbasis
Android memilikinya.
Sistem komunikasi bluetooth pada HP Android dapat kita manfaatkan untuk sistem “remote
control”. Sedangkan Arduino sebagai pengolah sinyal kontrolnya dan Relay sebagai alat yang
dikontrol.

Kebutuhan Hardware :
 Modul Bluetooth HC-05
 4 Relay +5V
 Modul Arduino MEGA
Koneksi Module Bluetooth:
CN 26 Pin ARDUINO
1 PIN 19/RX1
2 PIN 18/TX1
3 +5V
4 GND

Koneksi Relay:
CN 24 Pin ARDUINO
1 Pin 2
2 Pin 3
3 Pin 4
4 Pin 5
5 +5V
6 GND

//Program 33: Kontrol Relay dengan Bluetooth


byte in_serial,str;
void setup(){
pinMode(2,OUTPUT);
pinMode(3,OUTPUT);
pinMode(4,OUTPUT);
pinMode(5,OUTPUT);
delay(1000);
Serial1.begin(9600);
}

void loop(){
str=Serial1.read();

www.inkubator- Page
“TRAINER KIT

switch(str){
case 'A': //RELAY 1 ON
digitalWrite(2,1);break;
case 'a': //RELAY 1 OFF
digitalWrite(2,0);break;
case 'B': //RELAY 2 ON
digitalWrite(3,1);break;
case 'b': //RELAY 2 OFF
digitalWrite(3,0);break;
case 'C': //RELAY 3 ON
digitalWrite(4,1);break;
case 'c': //RELAY 3 OFF
digitalWrite(4,0);break;
case 'D': //RELAY 4 ON
digitalWrite(5,1);break;
case 'd': //RELAY 4 OFF
digitalWrite(5,0);break;
}
}

Jalannya Alat :
1. Pastikan aplikasi “Bluetooth SPP Pro” sudah Anda instal, jika belum instal dulu aplikasinya
Anda bisa copy filenya di CD atau Anda juga bisa instal lewat Play store.
2. Buka/jalankan aplikasi “Bluetooth SPP Pro” di Android.

3. Selanjutnya proses koneksi bluetooth.


4. Setelah terdeteksi perangkat HC-05/Null, sentuh/klik pada tulisan tersebut, sehingga muncul
tombol “Pair”. Klik “Pair”.

Klik disini

5. Masukkan PIN untuk penyandingan bluetooth, bisa Anda isi dengan “0000” atau “1234”.
Kemudian klik Done kemudian Oke.

www.inkubator- Page
“TRAINER KIT

6. Pilih Connect sehingga muncul pemilihan mode komunikasi.

Pilih Connect

7. Selanjutnya pilih Keyboard mode.


Pilih Keyboard Mode

8. Kemudian seting Keyboard, klik pada menu pojok pilih Buttons set.

Menu
setting
Pilih Button
set

9. Ganti nama tombol ClickMe dengan perintah ON/OFF relay seperti tabel dibawah ini:
Tombol BTN Name BTN Down Tombol BTN Name BTN Down
1 Relay 1 ON A 5 Relay 1 OFF a
2 Relay 2 ON B 6 Relay 2 OFF b
3 Relay 3 ON C 7 Relay 3 OFF c
4 Relay 4 ON D 8 Relay 4 OFF d

www.inkubator- Page
“TRAINER KIT

Tombol 1 Tombol 5

Tombol 2 Tombol 6

Tombol 3 Tombol 7

Tombol 4 Tombol 8

10. Klik pada button ClickMe, ganti pada kolom BTN Name dengan angka Relay 1 ON dan BTN
Down diisi dengan huruf A kemudian klik OK. Begitu juga dengan tombol yang lain
disesuaikan dengan tabel.

11. Jika sudah selesai semua kemudian Anda pilih menu seting kemudian pilih Button set
complete.

12. Ok, coba kita jalankan. Tekan tombol “Relay 1 ON”


13. Perhatikan relay 1 aktif, indikator LED pada relay 1 juga nyala.
14. Coba untuk mematikan relay 1. Tekan tombol “Relay 1 OFF”. Perhatikan relay 1 OFF,
indikator LED 1 mati.
15. Silahkan coba untuk relay yang lain.
16. Jika akan dipakai untuk mengontrol peralatan seperti lampu AC, maka kita tinggal membuat
rangkaian sederhana antara lampu AC, sumber tegangan AC serta relay.

www.inkubator- Page
“TRAINER KIT

Kontrol Motor Servo dengan Bluetooth


Aplikasi Android dapat di download dari playstore “Arduino Bluetooth Servo Motor”.

Koneksi Arduino:

Pin ARDUINO CN 26 Pin Arduino CN 27


19/RX1 1 10 1
18/TX1 2 GND 2
+5V 3
GND 4

//Program 34: Kontrol Servo dengan Bluetooth


#include <Servo.h>
Servo myservo;
String inString="";
String degreStr="";
char str,f;
int i,j, degre;

void setup(){
Serial1.begin(9600);
myservo.attach(10);
}

void loop(){
if(Serial1.available()>0){
getHC();
i=inString.indexOf(',');
j=inString.length ();
i=i+1;
degreStr=inString.substring(i,j);
degre=degreStr.toInt();
myservo.write(degre);
}
}

void getHC(){
f=1;
inString="";
while(f){
if(Serial1.available()>0){
str=Serial1.read();
switch (str){
case '\r': break;
case '\n':f=0; break;
default:inString+=(char)str;
}
}
}}
Jalannya program:

Buka aplikasi “Arduino Bluetooth Servo Motor” kemudian Koneksikan pilih “CONNECT
BLUETOOTH” pilih HC-05.

www.inkubator- Page
“TRAINER KIT

Untuk mengontrol motor Servo silahkan putar gambar knop. Selain itu bisa juga di geser bar atas
tombol. Atau juga bisa dengan menekan tombol derajat.

Monitoring Suhu Via Komputer (Grafik)


Arduino membaca temperature dengan sensor suhu dan hasilnya ditampilkan ke LCD 2x16 serta
komputer berupa data dan grafik. Tipe sensor yang dipakai adalah LM35 dengan range
pembacaan suhu 00C – 1000C. Di komputer dibuat program untuk menampilkan hasil pembacaan
sensor yang berupa tabel dan grafik. Program di komputer dibuat dengan Delphi (Delphi 7) data
dikirim secara serial menggunakan konektor USB pada Arduino. LCD dipakai untuk menampilkan
proses sehingga lebih mudah untuk memonitor apakah alat jalan/tidak.
Kebutuhan Hardware :
 Sensor LM35
 Modul LCD 2x16
 Modul Arduino
 Komputer / laptop

www.inkubator- Page
“TRAINER KIT

Koneksi Arduino dengan LCD:


Pin ARDUINO CN 3
2 1
3 2
4 3
5 4
6 5
7 6

Koneksi Sensor LM35:


Pin ARDUINO CN 13
A0 1
+5V 2
GND 3

//Program 35 : Digital thermometer


#include <LiquidCrystal.h>
LiquidCrystal lcd(2, 3, 4, 5, 6, 7);
int adc0,temp;
void setup()
{
Serial.begin(9600);
lcd.begin(16, 2);
lcd.print("Dig Thermometer");
lcd.setCursor(0, 1);
lcd.print("Temp=");
}
void loop()
{
adc0 = analogRead(0);
temp=(adc0*5)/10;
lcd.setCursor(5,1);
lcd.print(temp);
lcd.print(" Celcius");
Serial.print(temp);
Serial.print('#');
delay(1000);
}
Jalannya Program:
Pada Arduino tampil:

www.inkubator- Page
“TRAINER KIT

Masuk Delphi.

Klik Setup, Settings Port sesuai dengan nomor port Arduino. Baud Rate 9600. Klik OK.
Klik Start, maka system mulai berjalan.

MONITORING SUHU LM35 VIA ANDROID


Membaca nilai temperatur dengan sensor LM35 kemudian hasilnya ditampilkan dalam sebuah
aplikasi Android melalui koneksi Bluetooth.

Kebutuhan Hardware :

 Arduino UNO Board

www.inkubator- Page
“TRAINER KIT

 Modul sensor LM35


 Modul Bluetooth HC-05
Koneksi Arduino UNO dengan sensor suhu LM35 :

Pin ARDUINO CN 13
A0 1
+5V 2
GND 3

Koneksi Arduino dengan modul Bluetooth HC-05 :

Pin ARDUINO CN 26
19/RX1 1
18/TX1 2
+5V 3
GND 4

//Program 36: MONITORING SUHU LM35 VIA ANDROID


int LM35,adc0;
int outputpin= A0;
//
void setup() {
Serial.begin(9600);
Serial1.begin(9600);
}

void loop() {
int analogValue = analogRead(outputpin);
float millivolts = (analogValue/1024.0) * 5000;
float celsius = millivolts/10;
Serial.print("Suhu LM35=");
Serial.println(celsius);
Serial1.print(celsius);
delay(1000);
}

Jalannya Alat :
Selanjutnya kita siapkan aplikasi untuk Monitoring suhu di Android. Dari Play Store cari “Arduino
Bluetooth LM35” atau anda copy aplikasi APK di CD : 6. Aplikasi Android\Monitoring Suhu via
Android/LM35_2.0.apk kemudian Instal.

Setelah di-install kemudian buka aplikasi “Arduino Bluetooth LM35”. Aktifkan device Bluetooth
di HP Android anda. Berikutnya koneksikan dengan modul Bluetooth HC-05 dengan cara klik
bagian logo Bluetooth.

www.inkubator- Page
“TRAINER KIT

Klik
disini

Berikutnya pilih device Bluetooth HC-05 dan tunggu sampai terkoneksi.

Pilih HC-05

Jika sudah terkoneksi maka akan tampil nilai temperature yang dibaca sensor suhu LM35 yang
ada di Arduino.

Connected

Suhu

IoT KONTROL RELAY MELALUI INTERNET


Kontrol peralatan listrik di rumah kita sekarang dapat dikendalikan melalui internet. Lampu
rumah misalnya, dimanapun posisi kita asalkan terhubung dengan jaringan internet kita dapat
mengontrolnya.

www.inkubator- Page
“TRAINER KIT

Kontrol relay melalui internet ini berbasis Arduino dan modul WiFi ESP8266 dengan tambahan
modul relay 4 channel.

Kebutuhan Hardware :

 Arduino MEGA Board


 Modul WiFi ESP8266
 Modul relay 4 cahnnel
 Hotspot (jaringan WiFi)

Koneksi Arduino MEGA dengan modul ESP8266-12F :

Pin ARDUINO CN 25
18/TX 1
19/RX 2
+3,3V 3
GND 4
Koneksi Arduino MEGA dengan modul relay 4 channel :

Pin ARDUINO CN 24
4 1
5 2
6 3
7 4
+5V 5
GND 6
Selanjutnya siapkan jaringan WiFi (Hotspot), catat nama SSID (nama hotspot-nya beserta
passwordnya). Dalam contoh ini nama WiFi-nya “TokotronikWiFi” dan passwordnya
“inkubatek”. Dua variable tadi akan kita pakai di pemrograman Arduino-nya.

Power supply untuk modul WiFi ESP8266 sebesar 3,3 Volt, dapat anda langsung hubungkan
dengan pin 3,3V yang ada di board Arduino UNO atau lebih baik lagi (saran saya) pakai regulator
terpisah dari Arduino, yang penting pastikan tegangannya 3,3 Volt.

+3,3V

Sekarang kita buat programnya, jangan lupa untuk mengganti nama SSID dan passwordnya,
sesuaikan dengan hotspot anda.

www.inkubator- Page
“TRAINER KIT

Ganti Ganti
Nama SSID Passwordny

/*****************************************
* Program 37: Kontrol Relay via Internet
*****************************************/
#define DEBUG true

//TX (ESP) -- PIN 19 (ARDUINO RX)


//RX (ESP) -- PIN 18 (ARDUINO TX)
void setup()
{
Serial.begin(9600);
Serial1.begin(9600);
pinMode(4,OUTPUT);
digitalWrite(4,HIGH);
pinMode(5,OUTPUT);
digitalWrite(5,HIGH);
pinMode(6,OUTPUT);
digitalWrite(6,HIGH);
pinMode(7,OUTPUT);
digitalWrite(7,HIGH);
sendData("AT+RST\r\n",2000,DEBUG);
sendData("AT+CWMODE=1\r\n",1000,DEBUG);
//ganti nama SSID dan password sesuai dengan SSID dan password
Hotspot anda :
sendData("AT+CWJAP=\"TokotronikWiFi\",\"inkubatek\"\r\n", 2000,
DEBUG);
while(!Serial1.find("OK")) {
}
sendData("AT+CIFSR\r\n",1000,DEBUG); sendData("AT+CIPMUX=1\r\
n",1000,DEBUG); sendData("AT+CIPSERVER=1,80\r\n",1000,DEBUG);
}

void loop()
{
if(Serial1.available())
{
//Serial.write(Serial1.read());
if(Serial1.find("+IPD,"))
{

www.inkubator- Page
“TRAINER KIT

delay(1000);
int connectionId = Serial1.read()-48;
Serial1.find("pin=");
int pinNumber = (Serial1.read()-48);
Serial.print(pinNumber);
digitalWrite(pinNumber, !digitalRead(pinNumber));

String closeCommand = "AT+CIPCLOSE=";


closeCommand+=connectionId;
closeCommand+="\r\n";
sendData(closeCommand,1000,DEBUG);
}
}
}

String sendData(String command, const int timeout, boolean debug)


{
String response = "";
Serial1.print(command);
long int time = millis();
while( (time+timeout) > millis())
{
while(Serial1.available())
{
char c = Serial1.read(); // read the next character.
response+=c;
}
}
if(debug)
{
Serial.print(response);
}
return response;
}

Jalannya Alat :
Setelah program di Upload ke Arduino, selanjutnya buka Serial Monitor di Arduino IDE ( Tools
Serial Monitor) kemudian seting baudrate 9600. Akan tampil informasi tentang koneksi WiFi
dan juga nomor IP-nya :

www.inkubator- Page
“TRAINER KIT

Jika belum muncul, coba reset lagi sistemnya/Arduino-nya.

Selanjutnya pada folder proyek Kontrol Relay via Internet silakan buka (edit pakai program editor
semacam Notepad dll) file “Kontrol Relay Internet.html” .

Kemudian perhatikan di bagian bawah code html tadi ada angka/IP, sesuiakan dengan IP yang
ada peroleh di Serial Monitor tadi.

Kalau sudah , kemudian simpan (Save).

Pastikan juga di dalam folder tadi terdapat file “jquery.js”.

Selanjutnya jalankan file “Kontrol Relay Internet.html” tadi di browser anda.

www.inkubator- Page
“TRAINER KIT

Klik Relay 1 maka Relay 1 akan “ON”, klik lagi tombol Relay 1 maka Relay 1 di modul relay akan
“OFF”, jadi sifatnya adalah toggle. Silakan dicoba di tombol lain untuk mengontrol relay 2, 3 dan
4.

KALENDER DIGITAL ANIMASI DOT MATRIX


Sistem Kerja Alat:
Membuat kalender digital dengan modul LED dot matrix 32x8 dan RTC (Real Time Clock) DS1307.
Tampilan berupa tanggal/bulan/tahun dan waktu jam : menit.

Kebutuhan Hardware :
 Arduino Mega Board
 Modul LED Dot Matrix ukuran 32x8 dengan driver MAX7219
 Modul RTC DS1307
Koneksi Arduino UNO dengan modul LED Dot Matrix 32x8 :
Pin ARDUINO Pin modul LED Dot Matrix
52 CLK
53 CS
51 DIN
GND GND
+5V VCC

Pin koneksi modul dot matrix

Koneksi Arduino UNO dengan modul RTC DS1307 :


Pin ARDUINO CN 14
SCL / 21 1
SDA / 20 2
+5V 3

www.inkubator- Page
“TRAINER KIT

GND 4

Source Code/Sketch :
/*************************************
* Program : Kalender Digital Animasi Dot Matrix
* www.inkubator-teknologi.com
* www.tokotronik.com
* ***********************************/
#include <MD_MAX72xx.h>
#include <SPI.h>
#include <Wire.h>
#include <DS1307.h>

#define DS1307_ADDRESS 0x68


byte zero = 0x00;

#define MAX_DEVICES 4
#define DATA_PIN 51 // or MOSI
#define CLK_PIN 52 // or SCK
#define CS_PIN 53 // or SS

// SPI hardware interface


MD_MAX72XX mx = MD_MAX72XX(CS_PIN, MAX_DEVICES);
#define CHAR_SPACING 1 // pixels between characters
#define BUF_SIZE 75
#define UNIT_DELAY 25
#define SCROLL_DELAY (4 * UNIT_DELAY)

static boolean bRestart = true;


uint32_t prevTimeAnim = 0;
char str[30];

//==============================
bool scrollText(bool bInit, char *pmsg)
// Callback function for data that is required for scrolling into the
display
{
static char curMessage[BUF_SIZE];
static char *p = curMessage;
static uint8_t state = 0;
static uint8_t curLen, showLen;
static uint8_t cBuf[8];
uint8_t colData;

// are we initializing?
if (bInit)
{
resetMatrix();
strcpy(curMessage, pmsg);
state = 0;
p = curMessage;
bInit = false;
}

// Is it time to scroll the text?

www.inkubator- Page
“TRAINER KIT

if (millis()-prevTimeAnim < SCROLL_DELAY)


return(bInit);

// scroll the display


mx.transform(MD_MAX72XX::TSL); // scroll along
prevTimeAnim = millis(); // starting point for next time

// now run the finite state machine to control what we do


switch (state)
{
case 0: // Load the next character from the font table
showLen = mx.getChar(*p++, sizeof(cBuf)/sizeof(cBuf[0]), cBuf);
curLen = 0;
state = 1;
case 1: // display the next part of the character
colData = cBuf[curLen++];
mx.setColumn(0, colData);
if (curLen == showLen)
{
showLen = ((*p != '\0') ? CHAR_SPACING : mx.getColumnCount()-
1);
curLen = 0;
state = 2;
}
break;

case 2: // display inter-character spacing (blank column) or scroll


off the display
mx.setColumn(0, 0);
if (++curLen == showLen)
{
state = 0;
bInit = (*p == '\0');
}
break;
default:
state = 0;
}
return(bInit);
}
//==============

byte decToBcd(byte val){


return ( (val/10*16) + (val%10) );
}

byte bcdToDec(byte val) {


return ( (val/16*10) + (val%16) );
}

void setup()
{
mx.begin();
delay(1000);
/****************************** seting RTC
byte second = 50; // detik
byte minute = 30; // menit

www.inkubator- Page
“TRAINER KIT

byte hour = 12; // jam


byte weekDay = 5; // hari ke-
byte monthDay = 10; // tanggal
byte month = 5; // bulan
byte year = 18; // tahun

Wire.beginTransmission(DS1307_ADDRESS);
Wire.write(zero); //stop RTC
Wire.write(decToBcd(second));
Wire.write(decToBcd(minute));
Wire.write(decToBcd(hour));
Wire.write(decToBcd(weekDay));
Wire.write(decToBcd(monthDay));
Wire.write(decToBcd(month));
Wire.write(decToBcd(year));
Wire.write(zero); //start
Wire.endTransmission();
*******************************/
}

void loop()
{
// baca jam, menit, tanggal
char h(RTC.get(DS1307_HR,true));
char m(RTC.get(DS1307_MIN,false));
char d(RTC.get(DS1307_DATE,false));
char t(RTC.get(DS1307_MTH,false));
word y(RTC.get(DS1307_YR,false));
//
sprintf(str,"Tgl=%d/%d/%d Jam=%d:%d",d,t,y,h,m);
bRestart = scrollText(bRestart, str);
}

//==================================
void resetMatrix(void)
{
mx.control(MD_MAX72XX::INTENSITY, MAX_INTENSITY/2);
mx.control(MD_MAX72XX::UPDATE, MD_MAX72XX::ON);
mx.clear();
prevTimeAnim = 0;
}

Jalannya Alat :
Pada modul LED Dot Matrix 32x8 akan tampil tanggal , kemudian tampil nilai Jam. Tampilan
berjalan geser ke kiri. Nilai tanggal dan jam akan ter-update secara real time.

Kontrol 4 Relay dg SMS


Mengontrol 4 Relay via SMS. Sistem kerjanya sebagai berikut apabila ingin menghidupkan Relay
no.1 saja cukup SMS “1 on” kemudian Relay no.1 aktif jika ingin non aktifkan cukup SMS “1 off”.
Karena berbasis SMS alat ini dapat dikontrol secara jauh, selama ada sinyal dan pulsa.

www.inkubator- Page
“TRAINER KIT

Kebutuhan Hardware :
 Modem SMS Getway SIM800L
 LCD 2x16
 4 Relay +5V
 Power supply +9Volt

Koneksi Arduino dengan LCD:


Pin ARDUINO CN3
2 1
3 2
4 3
5 4
6 5
7 6

Koneksi Modul SIM800L:


Pin ARDUINO Pin Modul SIM800L
GND GND
+5V VCC
Pin 18/TX1 RXD
Pin 19/RX1 TXD

Pin power supply diambilkan pada power di bawah SIM800L.

Tambahkan power supply eksternal +9V

www.inkubator- Page
“TRAINER KIT

Koneksi Relay:
Pin ARDUINO CN 24
Pin A0 1
Pin A1 2
Pin A2 3
Pin A3 4
+5V 5
GND 6

Source Code/Sketch :
Sebelum menggunakan modul GSM ini, perhatikan kode yang ada di modul SIM800.
• Kode A : memakai Source Code A
• Kode B : memakai Source Code B
Hal ini terjadi karena kadang terdapat system komunikasi yang sedikit berbeda walaupun secara
fisik dan kode sama (dari pabriknya).

Source Code A:
/*************************************
* Program : Kontrol 4 lampu dg SMS
* www.inkubator-teknologi.com
* ***********************************/
#include <LiquidCrystal.h>

LiquidCrystal lcd(2, 3, 4, 5, 6, 7);

String inString="";

String inString2="";
String Stemp="";
String inbox="";

char str,f;
int i,j;

void setup(){
Serial1.begin(9600);
lcd.begin(16, 2);
lcd.clear();
lcd.print("Tes Koneksi...");
delay(1000);

Serial1.println("AT");
getmodem();
getmodem();
lcd.setCursor(0, 1);
lcd.print(inString);
delay(2000);

// dig output Relay


pinMode(A0, OUTPUT);

www.inkubator- Page
“TRAINER KIT

pinMode(A1, OUTPUT);
pinMode(A2, OUTPUT);
pinMode(A3, OUTPUT);
digitalWrite(A0, 0);
digitalWrite(A1, 0);
digitalWrite(A2, 0);
digitalWrite(A3, 0);
}

//============================================program utama
void loop() {
lcd.begin(16,2);
lcd.print("Kontrol 4 Relay");
lcd.setCursor(0,1);
lcd.print("Tunggu SMS masuk");

// data ENTER
getmodem();
lcd.begin(16,2);
lcd.print("SMS Masuk...");
// data CMTI:
getmodem2();
i=inString2.indexOf(':');
if(i>0){
Stemp=inString2.substring(0,i);
if(Stemp=="+CMTI"){
i=inString2.indexOf(',');
j=inString2.length ();
i=i+1;
inbox=inString2.substring(i,j);
Serial1.print("AT+CMGR=");
Serial1.println(inbox);
getmodem();
getmodem();
getmodem2();
lcd.setCursor(0,1);
lcd.print(inString2);
// isi SMS "1 on"
if(inString2=="1 on"){
digitalWrite(A0,1);
delay(2000);
}
// isi SMS "2 on"
else if(inString2=="2 on"){
digitalWrite(A1,1);
delay(2000);
}
// isi SMS "3 on"
else if(inString2=="3 on"){
digitalWrite(A2,1);
delay(2000);
}
// isi SMS "4 on"
else if(inString2=="4 on"){
digitalWrite(A3,1);
delay(2000);
}

www.inkubator- Page
“TRAINER KIT

// isi SMS "1 off"


else if(inString2=="1 off"){
digitalWrite(A0,0);
delay(2000);
}
// isi SMS "2 off"
else if(inString2=="2 off"){
digitalWrite(A1,0);
delay(2000);
}
// isi SMS "3 off"
else if(inString2=="3 off"){
digitalWrite(A2,0);
delay(2000);
}
// isi SMS "4 off"
else if(inString2=="4 off"){
digitalWrite(A3,0);
delay(2000);
}

lcd.begin(16,2);
lcd.print("Hapus SMS:");
// hapus inbox
getmodem();
getmodem();
Serial1.print("AT+CMGD=");
Serial1.println(inbox);
do{
getmodem();
}
while(inString != "OK");
lcd.print(inbox);
lcd.setCursor(0,1);
lcd.print(inString);
delay(3000);
}
}
}

//====================================baca data serial


void getmodem(){
f=1;
inString="";
while(f){
if(Serial1.available()){
str=Serial1.read();
switch (str){
case '\r': break;
case '\n':f=0; break;
default:inString+=(char)str;
}
}
}
}
//====================================
void getmodem2(){

www.inkubator- Page
“TRAINER KIT

f=1;
inString2="";
while(f){
if(Serial1.available()>0){
str=Serial1.read();
switch (str){
case '\r': break;
case '\n':f=0; break;
default:inString2+=(char)str;
}
}
}
}

Source Code B:
/*************************************
* Program 39: Kontrol 4 lampu dg SMS
* www.inkubator-teknologi.com
* ***********************************/
#include <LiquidCrystal.h>

LiquidCrystal lcd(2, 3, 4, 5, 6, 7);

String inString="";

String inString2="";
String Stemp="";
String inbox="";

char str,f;
int i,j;

void setup(){
Serial1.begin(9600);
lcd.begin(16, 2);
lcd.clear();
lcd.print("Tes Koneksi...");
delay(1000);

Serial1.println("AT");
buff();
getmodem();
getmodem();
lcd.setCursor(0, 1);
lcd.print(inString);
delay(2000);

// dig output Relay


pinMode(A0, OUTPUT);
pinMode(A1, OUTPUT);
pinMode(A2, OUTPUT);
pinMode(A3, OUTPUT);
digitalWrite(A0, 0);
digitalWrite(A1, 0);
digitalWrite(A2, 0);

www.inkubator- Page
“TRAINER KIT

digitalWrite(A3, 0);
}

//============================================program utama
void loop() {
lcd.begin(16,2);
lcd.print("Kontrol 4 Relay");
lcd.setCursor(0,1);
lcd.print("Tunggu SMS masuk");
// data ENTER
getmodem();
lcd.begin(16,2);
lcd.print("SMS Masuk...");
// data CMTI:
getmodem2();
i=inString2.indexOf(':');
if(i>0){
Stemp=inString2.substring(0,i);
if(Stemp=="+CMTI"){
i=inString2.indexOf(',');
j=inString2.length ();
i=i+1;
inbox=inString2.substring(i,j);
Serial1.print("AT+CMGR=");
Serial1.println(inbox);
buff();
getmodem();
if(inString < " "){
getmodem();
}
getmodem2();
lcd.setCursor(0,1);
lcd.print(inString2);
delay(2000);
// isi SMS "1 on"
if(inString2=="1 on"){
digitalWrite(A0,1);
delay(2000);
}
// isi SMS "2 on"
else if(inString2=="2 on"){
digitalWrite(A1,1);
delay(2000);
}
// isi SMS "3 on"
else if(inString2=="3 on"){
digitalWrite(A2,1);
delay(2000);
}
// isi SMS "4 on"
else if(inString2=="4 on"){
digitalWrite(A3,1);
delay(2000);
}
// isi SMS "1 off"
else if(inString2=="1 off"){
digitalWrite(A0,0);

www.inkubator- Page
“TRAINER KIT

delay(2000);
}
// isi SMS "2 off"
else if(inString2=="2 off"){
digitalWrite(A1,0);
delay(2000);
}
// isi SMS "3 off"
else if(inString2=="3 off"){
digitalWrite(A2,0);
delay(2000);
}
// isi SMS "4 off"
else if(inString2=="4 off"){
digitalWrite(A3,0);
delay(2000);
}

lcd.begin(16,2);
lcd.print("Hapus SMS:");
// hapus inbox
getmodem();
getmodem();
Serial1.print("AT+CMGD=");
Serial1.println(inbox);
buff();
do{
getmodem();
}
while(inString != "OK");

lcd.print(inbox);
lcd.setCursor(0,1);
lcd.print(inString);
delay(3000);
}
}
}

//====================================baca data serial


void getmodem(){
f=1;
inString="";
while(f){
if(Serial1.available()){
str=Serial1.read();
switch (str){
case '\r': break;
case '\n':f=0; break;
default:inString+=(char)str;
}
}
}
}
//====================================
void getmodem2(){
f=1;

www.inkubator- Page
“TRAINER KIT

inString2="";
while(f){
if(Serial1.available()>0){
str=Serial1.read();
switch (str){
case '\r': break;
case '\n':f=0; break;
default:inString2+=(char)str;
}
}
}
}
//====================================
void buff(){
f=1;
inString2="";
while(f){
if(Serial1.available()>0){
str=Serial1.read();
switch (str){
case '\r': break;
case '\n':f=0; break;
}
}
}
}

Jalannya Alat :
1. Tampilan pertama pada LCD selama 1 detik :
2. Selanjutnya tampil:
Tes Koneksi ...
Tes Koneksi ..
OK
3. Setelah 2 detik LCD menampilkan (Tampilan Normal):
4. Selanjutnya silahkan Anda SMS ke nomor yang adi di modem, misal Anda SMS “1 on”.
Kontrol 4 Relay
5. Jika SMS sudah diterima maka LCD menampilkan:
Tunggu SMS
SMS Masuk...
1 on

www.inkubator- Page

Anda mungkin juga menyukai