Sabtu, 30 Juli 2016

Jam dinding Arduino 1

Dalam kesempatan kali ini akan dilakukan percobaan membuat jam dengan mikrokontroller Arduino Uno. Mungkin jika sudah jadi bisa di tempel didinding atau disimpan di meja belajar.
Bahan bahan yang diperlukan dalam praktek kali ini adalah

Arduino Uno
Kabel secukupnya
LCD 20x4 Karakter
Modul RTC



Coba perhatikan gambar di atas. yaaa.. itulah rangkaian yang akan kita program.. RTC dan LCD yang dihubungkan dengan Mikrokontroller Arduino Uno  abal abal alias versi Kloningan. tapi jangan kuatir tetap berjalan dengan baik koooo..
Untuk sementara abaikan rangkaian saklar pada gambar di atas. Rangkaian saklar kita akan gunakan pada latihan step selanjutnya yaitu pemrograman jam tingkat lanjut. 

Pada prinsipnya cara kerja dari program yang dirancang kali ini adalah kita mengambil data waktu dari Modul RTC dan data waktu tersebut kita tampilkan di layar LCD. Data yang ditampilkan adalah jam dan tanggal.
Tampilan Jam yang akan ditampilkan di layar Lcd adalah seperti di bawah ini.







List Program di bawah adalah Program jam yang kita prasktekan sekarang.
---------------------------------------------------------------------------------

#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);  // RS,E,D4,D5,D6,D7

#include "Wire.h"
#define DS1307_ADDRESS 0x68
byte zero = 0x00; //workaround for issue #527
int t1,t2,t3,j,mn,d,tg,bl,th,hk;
String hari;
String b1,b2,baris1,baris2;
int j1,j2,m1,m2,d1,d2;
void setup() {
    Wire.begin();
    lcd.begin(16,2);
   pinMode (18,OUTPUT); digitalWrite(18,0); // Untuk Memberi Tegangan 0 Volt ke RTC
 pinMode (19,OUTPUT); digitalWrite(19,1);  // Untuk Memberi Tegangan 5 Volt ke RTC

}

void loop() {
  Wire.beginTransmission(DS1307_ADDRESS);
  byte zero = 0x00;
  Wire.write(zero);
  Wire.endTransmission();
  Wire.requestFrom(DS1307_ADDRESS, 7);
   d = bcdToDec(Wire.read());
  mn = bcdToDec(Wire.read());
  j = bcdToDec(Wire.read() & 0b111111); //24 hour time
  hk = bcdToDec(Wire.read()); //0-6 -> sunday - Saturday
  tg = bcdToDec(Wire.read());
  bl = bcdToDec(Wire.read());
  th = bcdToDec(Wire.read());
   
 if (hk == 1) hari="Minggu" ;
  if (hk == 2) hari="Senin" ;
  if (hk == 3) hari="Selasa" ;
  if (hk == 4) hari="Rabu" ;
  if (hk == 5) hari="Kamis" ;
  if (hk == 6) hari="Jum'at" ;
  if (hk == 7) hari="Saptu" ;


 j1= j/10; j2=j%10; m1=mn/10; m2=mn%10; d1=d/10; d2=d%10;

 baris1=hari+ " "+ String (tg) +"-"+ String (bl)+"-"+ String (th) ;
  baris2= "Jam : "+String (j1)+String (j2) +":"+ String (m1)+String (m2)+":"+String (d1)+String (d2) ;

// Menampilkan jam di layar LCD
  if(b1!= baris1 || b2!=baris2 ) {
  b1= baris1 ; b2=baris2 ;
    lcd.clear() ;
  lcd.setCursor(0,0);   lcd.print(b1);
  lcd.setCursor(0,1);   lcd.print(b2); }

 delay (100);
}

byte bcdToDec(byte val)  {
// Convert binary coded decimal to normal decimal numbers
  return ( (val/16*10) + (val%16) );
}

byte decToBcd(byte val){
// Convert normal decimal numbers to binary coded decimal
  return ( (val/10*16) + (val%10) );
}
---------------------------------------------------------------------------------
 Marilah coba kita teliti programnya
Dari  Wire.beginTransmission(DS1307_ADDRESS);   sampai Wire.requestFrom(DS1307_ADDRESS, 7);
adalah untuk bagian RTC.. Intinya adalah mengaktipkan RTC untuk kemudian dibaca datanya.
   d = bcdToDec(Wire.read());
  mn = bcdToDec(Wire.read());
  j = bcdToDec(Wire.read() & 0b111111); //24 hour time
  hk = bcdToDec(Wire.read()); //0-6 -> sunday - Saturday
  tg = bcdToDec(Wire.read());
  bl = bcdToDec(Wire.read());
  th = bcdToDec(Wire.read());

Baris program di atas adalah membaca data detik menyimpannya di variabel d, data menit dimasukan ke variabel mn. dan seterusnya ( j = jam, hk = hari, tg = tanggal, bl = bulan, th = tahun )

Data yang tersimpan di variabel hk adalah data hari dimulai dari nilai nol sampai enam, nol berarti minggu, satu artinya senin dan seterusnya sampai enam artinya Sabtu. Nah data inilah kita transfer menjadi nama hari melalui seleksi if. coba perhatikan list program di bawah.
if (hk==1) hari="Minggu" ;   if (hk==2) hari="Senin" ;
  if (hk==3) hari="Selasa" ;   if (hk==4) hari="Rabu" ;
  if (hk==5) hari="Kamis" ;   if (hk==6) hari="Jum'at" ;   if (hk==7) hari="Saptu" ; 
Data hari, jam dan tanggal dapat kita tampilkan di layar LCD seperti gambar di bawah.


Data jam bernilai dari 0 (Jam 12 Malam) sampai jam 23, data menit  dan detik dari 0 sampai 59 . Coba perhatikan jika jam menunjukan pukul 12 malam lewat 1 menit dan 2 detik maka akan di tampilkan   Jam: 0:1:2 . Nah akan terasa tidak nyaman bukan, seharusnya yang ditampilkan adalah Jam: 00:01:02
Nah oleh karena itulah perlu di modifikasi seperti di bawah ini :
j1= j/10; j2=j%10; m1=mn/10; m2=mn%10; d1=d/10; d2=d%10;

 baris1=hari+ " "+ String (tg) +"-"+ String (bl)+"-"+ String (th) ;
  baris2= "Jam : "+String (j1)+String (j2) +":"+ String (m1)+String (m2)+":"+String (d1)+String (d2) ;

Untuk menapilkan di layar Lcd list nya  adalah
/ Menampilkan jam di layar LCD
  if(b1!= baris1 || b2!=baris2 ) {
  b1= baris1 ; b2=baris2 ;
    lcd.clear() ;
  lcd.setCursor(0,0);   lcd.print(b1);
  lcd.setCursor(0,1);   lcd.print(b2); }

 delay (100);
}

Fungsi if di atas adalah agar layar lcd hanya akan berganti tampilan bila data berubah. jadi tampilan akan berganti satu detik sekali sesuai dengan perubahan detik. jika kita terlalu sering berganti tampilan layar lcd maka layar akan berkedip kedip. nanti jika sering berlatih saudara juga akan mengalaminya dan lebih faham lagi tentunya. program selesai dech.........


Nah marilah kita kembangkan latihan di atas menjadi jam yang lebih baik lagi.  ayo ikuti Link di bawah ini yaaa......

Latihan membuat Jam Yang dapat di atur.
Latihan membuat jadwal Shalat Abadi dengan Arduino
Latihan membuat Jam Yang dapat di atur Plus alarm. [Maap Belum Jadi]



 

Rabu, 27 Juli 2016

Mobil Remot Bluetooth

Percobaan pada kesempatan kali ini adalah membuat mobil-mobilan remot kontrol yang dikontrol via ponsel Android.
Peralatan yang di perlukan adalah :
2 Buah Motor DC Gear Box
Adafruit Motor Shield
Mikrokontroller Arduino Uno
Batrai
Bluetooth HC 06

Membuat Aplikasi Android dengan Mit App Inventor
Aplikasi Android untuk mengendalikan mobil remot dibuat dengan Aplikasi Online Mit App Inventor. Bagi rekan rekan yang belum pernah mencoba silahkan coba coba terlebih dahulu.

Yang kita perlukan dalam pembuatan aplikasi ini adalah Button, List Picker, Label, Horizontal Arrangement dan Bluetooth Client.

Kita memerlukan beberapa Button Untuk :
- Maju
- Mundur
- Stop
- Kiri 1
- Kiri 2
- Kanan 1
- Kanan 2

Caranya yaitu Button Kita geser dari bagian User Interface kemudian kita geser ke bidang kerja dan  Pada  Component Kita rename dengan Maju dan Bagian Propertis di bagian Text nya diisi Maju
Lakukan juga halnya yang sama untuk yang lainnya. Pokoknya percaya deech Kalian pasti Bisaaaa.. Ayooo semangathhhh....!!!!!
kita juga memerlukan beberapa label untuk memberi keterangan pada program agar lebih dimengerti. Nah coba perhatikan gambar di bawah ini dengan seksama.






Nah Pada bagian Bloknya susun deh agar seperti dibawah ini






Rencananya adalah aplikasi hp yang kita buat ini akan mengendalikan mobil mobilan. Perhatikan gambar Fi ata
Cara Kerja pada sisi program di ponsel Android adalah sebagai berikut
Pertama tama aktipkan terlebih dahulu blutut yang ada di ponsel.
Kedua Aktipkan aplikasi yang sudah jadi kita buat dengan mit app inventor
Ketiga lakukan koneksi bluetooth melalui tombol List Picker
nah tombol tombol yang kita rancang di program akan bekerja seperti di bawah ini.

- Tombol Maju akan mengirimkan nilai1melalui bluetooth.
- Mundur Maju akan mengirimkan nilai 2 melalui bluetooth

- Kiri 1 Maju akan mengirimkan nilai 3 melalui bluetooth
- Kiri 2 Maju akan mengirimkan nilai 4 melalui bluetooth
- Kanan 1 Maju akan mengirimkan nilai 5 melalui bluetooth
- Kanan 2 Maju akan mengirimkan nilai 6 melalui bluetooth
- Stop Maju akan mengirimkan nilai  7 melalui bluetooth
nilai nilai yang dikirimkan ini akan ditangkap oleh modul bluetooth yang ada di Mikrokontroller Arduino dan akan ditidak lanjuti sebagai berikut.



Sabtu, 16 Juli 2016

lcd 20x4 dan Arduino


Ada sedikit waktu luang. Lumayan dapat dipergunakan untuk berlatih Mikrokontroller Arduino. Udah sebulan lebih membeli LCD 20x4 karakter tapi belum pernah di coba. Naah waktunya untuk mencoba. Setelah bertanya dulu ke teman ternyata pemakaiannya sama saja dengan LCD 16x2 karakter. rangkaiannya juga sama. jadi tidak ada masalah yang berarti, bedanya hanya sedikit yaitu pada inisialisasinya coba deh liat pada listing program di bawah.. yaaa lcd.begin(20,4) bukan menggunakan lcd.begin(16,2).


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

void setup() {
  lcd.begin(20, 4);
}

void loop() {
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("Ini Budi");
  lcd.setCursor(0, 1);
  lcd.print("Ini Bapa Budi");
  lcd.setCursor(0, 2);
  lcd.print("Ini Ibu Budi");
  lcd.setCursor(0, 3);
  lcd.print("Ini Guru Budi");
  delay (2000);
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("Selamat Datang");
  lcd.setCursor(0, 1);
  lcd.print("Di Blog Saya");
  lcd.setCursor(0, 2);
  lcd.print("Terima kasih");
  lcd.setCursor(0, 3);
  lcd.print("Atas kehadirannya");
  delay (2000);
}