Panduan Trainer Kit Arduino
Panduan 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
Arduino ini merupakan board mikrokontroler yang berbasis pada mikrokontroler tipe ATmega.
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.
Arduino diproduksi di Italia (ada juga yang made in China). Sudah banyak varian dari Arduino yang ada di
pasaran. Berikut beberapa diantaranya :
www.inkubator- Page
“TRAINER KIT
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
ATmega2560
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.
Struktur dasar
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.
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
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
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.
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.
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 :
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
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 :
Tipe Data
Setiap variabel yang dibuat harus mempunyai tipe data yang menunjukkan kemampuan variabel tersebut
menampung data.
www.inkubator- Page
“TRAINER KIT
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);
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);
Kebutuhan Hardware
Semua hardware sudah tersedia pada paket pembelajaran Trainer Kit Arduino.
Power supply sudah diperoleh melalui jalur tegangan dari port USB (komputer).
ARDUINO
DOT MATRIX
UNO
8X32
POWER
7 SEGMENT 6
SUPPLY
DIGIT
BUZZER 4 RELAY
SENSOR BLUETOOTH
ULTRASONIC HC-05
www.inkubator- Page
“TRAINER KIT
Instalasi driver
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.
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
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.
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).
www.inkubator- Page
“TRAINER KIT
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.
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
Jalannya program :
Lihat hasilnya pada LED (L). LED akan nyala.
Tugas 1:
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
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.
Jalannya program :
LED 1, 3, 5, 7 padam. LED 2, 4, 6, 8 nyala.
www.inkubator- Page
“TRAINER KIT
Tugas 3:
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
Langkah pemrograman:
Buat flowchart
Koneksikan LED dengan pin Arduino
Buat program step per step
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
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’.
www.inkubator- Page
“TRAINER KIT
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 :
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 :
Tugas 6:
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.
Sambung CN3 dengan Arduino di kaki 2 s/d 7. CN4 dengan power supply.
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.
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.
var=digitalRead(pin);
var adalah variabel, nilainya tergantung logika input. Bernilai ‘1’ (HIGH) atau ‘0’ (LOW).
pin adalah nomor pin Arduino yang dibaca inputannya.
Skematik koneksi :
www.inkubator- Page
“TRAINER KIT
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:
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};
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:
1 ms 1 ms
Tugas 11:
www.inkubator- Page
“TRAINER KIT
Pin ArduinoCN19
91
GND9
Tugas 12:
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.
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
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
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
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
Tidak
Ya Led 2 = on Kirim ke serial : “LED 2 ON”
Data= ‘2’ ?
Tidak
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.
Data analog didapat dari output potensiometer, potensiometer dibuat menjadi rangkaian
voltage devider. Koneksikan CN12 dengan Arduino seperti table dibawah ini:
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:
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);
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);
EEPROM.write(2, 35);
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.
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.
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
byte nilai,i;
byte second ,minute,hour, weekDay;
byte monthDay,month,year;
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 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
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
/***************************
www.inkubator- Page
“TRAINER KIT
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);
}
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
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);
}
}
www.inkubator- Page
“TRAINER KIT
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
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!”:
www.inkubator- Page
“TRAINER KIT
www.inkubator- Page
“TRAINER KIT
Jam Alarm
Koneksi hardware:
/***************************
Program 20: Jam Alarm
****************************/
#include <Wire.h>
#define DS1307_ADDRESS 0x68
byte zero = 0x00;
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);
}
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:
www.inkubator- Page
“TRAINER KIT
2 1 A0 1
3 2 A1 2
4 3 GND 9
5 4
6 5
7 6
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;
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.
www.inkubator- Page
“TRAINER KIT
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>
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){
www.inkubator- Page
“TRAINER KIT
www.inkubator- Page
“TRAINER KIT
fkpd = 0; for(t=0;t<6;t+
+)pw_kpd[t]=' '; delay(3000);
menu = 4;
}
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.
www.inkubator- Page
“TRAINER KIT
Simpan PW Baru..
/***************************
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
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
Koneksi hardware:
www.inkubator- Page
“TRAINER KIT
#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);
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:
www.inkubator- Page
“TRAINER KIT
void loop(){
//=============== motor ON
digitalWrite(10,HIGH);
delay(5000);
Motor akan berputar searah jarum jam selama 5 detik, dan akan berhenti selama 5 detik.
Koneksi Hardware:
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:
www.inkubator- Page
“TRAINER KIT
2 1
3 2
4 3
5 4
GND 5
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:
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.
Kebutuhan Hardware :
Potensio meter 50K
Motor Servo
Modul Arduino UNO
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.
/***************************
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.
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
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
www.inkubator- Page
“TRAINER KIT
8 FFA857
9 FF906F
0 FF9867
* FF6897
# FFB04F
UP FF18E7
DOWN FF4AB5
PREV FF10EF
NEXT FF5AA5
OK FF38C7
Kebutuhan Hardware :
Remot HX1838 NEC
Sensor TV (TSOP1738)
LCD 2x16
4 Relay +5V
Modul Arduino Mega
www.inkubator- Page
“TRAINER KIT
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
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
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.
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
Pilih Connect
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.
www.inkubator- Page
“TRAINER KIT
Koneksi Arduino:
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.
www.inkubator- Page
“TRAINER KIT
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.
Kebutuhan Hardware :
www.inkubator- Page
“TRAINER KIT
Pin ARDUINO CN 13
A0 1
+5V 2
GND 3
Pin ARDUINO CN 26
19/RX1 1
18/TX1 2
+5V 3
GND 4
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
Pilih HC-05
Jika sudah terkoneksi maka akan tampil nilai temperature yang dibaca sensor suhu LM35 yang
ada di Arduino.
Connected
Suhu
www.inkubator- Page
“TRAINER KIT
Kontrol relay melalui internet ini berbasis Arduino dan modul WiFi ESP8266 dengan tambahan
modul relay 4 channel.
Kebutuhan Hardware :
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
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));
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
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.
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.
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
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 MAX_DEVICES 4
#define DATA_PIN 51 // or MOSI
#define CLK_PIN 52 // or SCK
#define CS_PIN 53 // or SS
//==============================
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;
}
www.inkubator- Page
“TRAINER KIT
void setup()
{
mx.begin();
delay(1000);
/****************************** seting RTC
byte second = 50; // detik
byte minute = 30; // menit
www.inkubator- Page
“TRAINER KIT
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.
www.inkubator- Page
“TRAINER KIT
Kebutuhan Hardware :
Modem SMS Getway SIM800L
LCD 2x16
4 Relay +5V
Power supply +9Volt
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>
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);
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
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);
}
}
}
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>
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);
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);
}
}
}
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