Selasa, 15 Desember 2015
Latihan Pengendalian lampu Led
Pertama-tama marilah kita berlatih dasar yaitu menampilkan jam di layar lcd.
Listing programnya adalah sebagai Berikut :
--------------------------------------------------------
#include <LiquidCrystal.h>
LiquidCrystal lcd(43, 45, 47, 49,51,53); // RS,E,D4,D5,D6,D7
#include "Wire.h"
#define DS1307_ADDRESS 0x68
int d,m,j,hk,bl,th,tg, hd;
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());
m = 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 ( hd != d){
hd = d ;
String waktuu = "< "+ String (j/10)+String (j%10)+":"+ String (m/10) +String (m%10)+ ":"+String (d/10)+String (d%10)+" WIB >" ;
lcd.clear() ;
lcd.setCursor(0,0);
lcd.print(waktuu); }
}
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) );
}
--------------------------------------------------------
Nah Sekarang cobalah latihan dengan baris program di bawah ini.
----------------------------------------------------------
#include <LiquidCrystal.h>
LiquidCrystal lcd(43, 45, 47, 49,51,53); // RS,E,D4,D5,D6,D7
#include "Wire.h"
#define DS1307_ADDRESS 0x68
byte zero = 0x00; //workaround for issue #527
int d,m,j,hk,bl,th,tg ;
int k=1 ; int tm=1;
int ta=9 ; int tb=8; int tc=7;
String hari;
void setup() {
Wire.begin();
lcd.begin(16,2);
pinMode(ta,INPUT); pinMode(tb,INPUT);pinMode(tc,INPUT);
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() {
if (k==1) {
Wire.beginTransmission(DS1307_ADDRESS);
byte zero = 0x00;
Wire.write(zero);
Wire.endTransmission();
Wire.requestFrom(DS1307_ADDRESS, 7);
d = bcdToDec(Wire.read());
m = 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());
delay (233);
String waktuu = "Jam :" + String (j/10)+String (j%10)+":"+String (m/10)+ String (m%10)+":"+String (d/10)+String (d%10) ;
String waktu2 = "1.Atur Jam" ;
lcd.clear() ;
lcd.setCursor(0,0);
lcd.print(waktuu);
lcd.setCursor(0,1);
lcd.print(waktu2);
if (digitalRead (ta) ==1 ) { k=2; delay (400); }
}
if (k==2) {
if (tm==1){
lcd.clear ();
lcd.setCursor(0,0);
lcd.print(" Merubah Jam ");
lcd.setCursor(0,1);
lcd.print("1. Ya 2. Tidak ");
if (digitalRead (tb)==1) { delay (100); k=1; }
if (digitalRead (ta)==1) {delay (100); tm=2;}
delay (100);
}
if (tm==2){
lcd.clear ();
lcd.setCursor(0,0);
lcd.print("Jam : "); lcd.print (j);
lcd.setCursor(0,1);
lcd.print("1= + 2= - 3=OK");
if (digitalRead (ta)==1) {
j=j+1; delay (100);
if (j>23 ) j=0; }
if (digitalRead (tb)==1) {
j=j-1; delay (100);
if ( j < 0 ) j=23 ; }
if (digitalRead (tc)==1) {tm=3; delay (100); }
delay(300); ;
}
if (tm==3){
lcd.clear ();
lcd.setCursor(0,0);
lcd.print("Menit : "); lcd.print (String (m/10)+ String (m%10));
lcd.setCursor(0,1);
lcd.print("1= + 2= - 3=OK");
if (digitalRead (ta)==1) {
m=m+1; delay (100);
if (m > 59) m=0;}
if (digitalRead (tb)==1) {
m=m-1; delay (100);
if (m<0) m=59; }
if (digitalRead (tc)==1) {tm=4; delay (100); }
delay(100); ;
}
if (tm==4){
lcd.clear ();
lcd.setCursor(0,0);
lcd.print("Data Disimpan");
lcd.setCursor(0,1);
lcd.print("1= Ya 2= Tidak");
if (digitalRead (ta)==1) {
Wire.beginTransmission(DS1307_ADDRESS);
Wire.write(zero); //stop Oscillator
Wire.write(decToBcd(10));
Wire.write(decToBcd(m));
Wire.write(decToBcd(j));
Wire.write(decToBcd(hk));
Wire.write(decToBcd(tg));
Wire.write(decToBcd(bl));
Wire.write(decToBcd(th));
Wire.write(zero); //start
Wire.endTransmission();
delay (100);
tm=1; k=1;
}
if (digitalRead (tb)==1) { tm=1; k=1; }
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) );
}
--------------------------------------------------------
Langganan:
Posting Komentar (Atom)
Tidak ada komentar:
Posting Komentar