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) );

}

--------------------------------------------------------







 





Tidak ada komentar:

Posting Komentar