Sunday, September 18, 2022

Membuat Counter mundur menuju Azan dengan Arduino Wemos

Membuat Counter Mundur Menuju Azan dengan Arduino Wemos


 #include <Wire.h>

#include "RTClib.h"

#include "SPI.h"

#include <DMD2.h>

#include "PrayerTimes.h"

#include <fonts/SystemFont5x7.h>

#include <fonts/Droid_Sans_12.h>

#include <fonts/angka_2.h>



/*

 *  Koneksi Pin RTC3231 ke PIN Arduiono UNO

 *    GND -> GND

 *    VCC -> +5V

 *    SCL -> A5

 *    SDA -> A4

 *    

 *    Wemos SCL -> D1

 *          SDA -> D2

 *    

 *    Pin P10 ke Arduino Wemos


  Pin 1(Enable)      ----> D4

  Pin 2 (A)          ----> D0

  Pin 4 (B)          ----> D6

  Pin8 ( CLK)        ----> D5

  Pin 10 (SCLK)      ----> D3

  Pin 12 (DATA)      ----> D7

 *    

 *    

 *    SPIDMD dmd(2, 1, D4,D0,D6,D3);

*/  



void Running(String s);

String Konversi(int sInput);

int tulisan_menuju_azan(int jam,int menit,String* waktu_sholat);


//Init RTC

RTC_DS3231 rtc;


//Konstanta

boolean issetting=false;


// Set Width to the number of displays wide you have

const int WIDTH = 2;


// You can change to a smaller font (two lines) by commenting this line,

// and uncommenting the line after it:

const uint8_t *FONT = Droid_Sans_12;

const uint8_t *FONT2 = Droid_Sans_12;

//const uint8_t *FONT3 =Droid_Sans_16;

const uint8_t *FONT4 = SystemFont5x7;


//SPIDMD dmd(WIDTH,1);  // aktifkan ini jika menggunakan ESP8266, disable baris atasnya

SPIDMD dmd(2, 1, D4,D0,D6,D3);


    int AKecerahan=1;

  int speaker=D8;  //buat beep  


 int jam_sholat;int menit_sholat;

  


//// marquee values

int marX = 1;   // awal kotak running text minimal diawali 1.

int marY = 1;

int marWidth = 63;  // dimensi running text  32 dikurangi marX. 

int marHeight = 16;

int marCur = marX + marWidth;  // kursor

//marCur = marX + marWidth;

int messageCount;  // karakter yang aktif

//int widthCount;    // sisa lebar satu huruf terakhir

int messageLength;  // jumlah karakter pada pesan

boolean blinking=true;

int i=0;

boolean jalan=true;


 int hours, minutes;     //jam sholat dan  menit sholat

  

  String jam1;

  String jam2;

  String waktu_subuh;int jam_subuh;int menit_subuh;

  String waktu_terbit;

  String waktu_duhur;int jam_duhur;int menit_duhur;

  String waktu_azar;int jam_azar;int menit_azar;

  String waktu_magrib;int jam_magrib;int menit_magrib;

  String waktu_isya;int jam_isya;int menit_isya;

  String waktu_imsyak;

  boolean setting=false;


  String lintange;

  String bujure;

  String Ze="7";


 double times[sizeof(TimeName) / sizeof(char*)];


 String get_imsyak(int jam_subuh,int menit_subuh);

 //uint32_t jumlahHariDariTanggal(byte tanggal, byte bulan, uint16_t tahun);

 //void masehiKeHijriah(uint32_t HariMasehi, byte *tanggal, byte *bulan, uint16_t *tahun);




int jeda_menuju_azan=30;

// the setup routine runs once when you press reset:

void setup() {


 pinMode(speaker, OUTPUT);


 Serial.begin(9600);

 Wire.begin(D1,D2);

 rtc.begin();

 dmd.setBrightness(10);

 dmd.begin();

 dmd.selectFont(SystemFont5x7);

 dmd.clearScreen();  

//inisialisasi awal jika sudah running live harus di remark

rtc.adjust(DateTime(2022, 9, 18, 11, 46, 0));


} //end of setup





void loop()

{

  dmd.setBrightness(100);

  DateTime now = rtc.now();

  

  uint32_t jumlahHari;

  double jumlahHariMatahari;

   


  byte tanggalMasehi = now.day();

  byte bulanMasehi =now.month();

  uint16_t tahunMasehi =now.year();



   int jam= now.hour();

   int menit=now.minute();

   int detik=now.second();



///================pengaturan koordinat-gunakan gps android untuk menentukan posisi anda=================

 //sby

  //  double lintang = -7.4726;  //Latitude

 //   double bujur = 112.6675;   //Longitude


//tangsel

    double lintang = -6.3088649;  //Latitude

    double bujur = 106.682188;   //Longitude

    

    int Z = 7 ;                   //Zona Waktu GMT WIB biasanya 7

    int interval=0;


    long mulai = millis();


    set_calc_method(ISNA);        //Methode perhitungan mengikuti ISNA

    set_asr_method(Shafii);       //Pendapat Imam Syafi'i

    set_high_lats_adjust_method(AngleBased);

    set_fajr_angle(20);           //Sudut Waktu Subuh

    set_isha_angle(18);           ////Sudut Waktu Isya

    get_prayer_times(tahunMasehi,bulanMasehi, tanggalMasehi, lintang, bujur, Z, times);



    //Subuh

    get_float_time_parts(times[0], hours, minutes);

    jam_subuh=hours;menit_subuh=minutes;

   // jam_subuh=jam_sholat;menit_subuh=menit_sholat;

    waktu_subuh=Konversi(jam_subuh)+ ":"+Konversi(menit_subuh);

    

    //Imsyak

    waktu_imsyak=get_imsyak(jam_subuh,menit_subuh);


    //waktu terbit

    get_float_time_parts(times[1], hours, minutes);

    waktu_terbit=Konversi(hours)+ ":"+Konversi(minutes);

    


   //Waktu duhur

   get_float_time_parts(times[2], hours, minutes);

    jam_sholat=hours;menit_sholat=minutes;

    jam_duhur=jam_sholat;menit_duhur=menit_sholat;

    waktu_duhur=Konversi(jam_duhur)+ ":"+Konversi(menit_duhur);  

   

    //waktu ashar

    get_float_time_parts(times[3], hours, minutes);

    jam_sholat=hours;menit_sholat=minutes;

    jam_azar=jam_sholat;menit_azar=menit_sholat;    

    waktu_azar=Konversi(jam_azar)+ ":"+Konversi(menit_azar);  


    //waktu_magrib

    get_float_time_parts(times[4], hours, minutes);

    jam_sholat=hours;menit_sholat=minutes;

    jam_magrib=jam_sholat;menit_magrib=menit_sholat;

    waktu_magrib=Konversi(jam_magrib)+ ":"+Konversi(menit_magrib);


   //waktu Isya

    get_float_time_parts(times[6], hours, minutes);

    jam_sholat=hours;menit_sholat=minutes;

    jam_isya=jam_sholat;menit_isya=menit_sholat;

    waktu_isya=Konversi(jam_isya)+ ":"+Konversi(menit_isya);  





/******* MAIN RUNNING TEXT ****/

///String running_jadwal_sholat=Konversi(tanggalMasehi)+"-"+ Konversi(bulanMasehi) + "-"+ Konversi(tahunMasehi) + " IMSAK "+waktu_imsyak+" SUBUH " + waktu_subuh + " TERBIT "+waktu_terbit + " DHUHUR " + waktu_duhur + " ASHAR " + waktu_azar + " MAGRIB " + waktu_magrib + " ISYA' "+ waktu_isya ;

//jam_besar(30);

//Running(running_jadwal_sholat);



/*--- Menampilan menuju jadwal sholat kurang berapa menit  --*/


String waktu_sholat;

int kurang=tulisan_menuju_azan(jam,menit,&waktu_sholat);

String jam_sho=""; 

if (kurang!=-1)

{

// dmd.clearScreen();

 if(waktu_sholat=="ISYA'") { jam_sho=waktu_isya;}

 else if(waktu_sholat=="SUBUH") { jam_sho=waktu_subuh;}

 else if(waktu_sholat=="DZUHUR") { jam_sho=waktu_duhur;}

 else if(waktu_sholat=="ASHAR") { jam_sho=waktu_azar;}

 else if(waktu_sholat=="MAGRIB") { jam_sho=waktu_magrib;}


String tulisan_kurang="ADZAN " + waktu_sholat + " "+ jam_sho + " -"+ String(kurang) + " Menit " ;

Running(tulisan_kurang);

//digitalWrite(D4,LOW);


if (kurang==0)

  {

   dmd.clearScreen();

   int lama=9;  //3 menit

   for(i=0;i<5*lama;i++)

    {

  //hhuruf adzan berkedip2

      dmd.selectFont(SystemFont5x7);

      dmd.drawString(33,0,"ADZAN");

      dmd.drawString(33,9,waktu_sholat);

      delay(1000);

      dmd.selectFont(SystemFont5x7);

      dmd.drawString(33,0,"            ");

      dmd.drawString(33,9,"            ");

      delay(1000);

   

    }

  }

}

}




void Running(String s)

{

  DateTime now = rtc.now();

  int jam= now.hour();

  int menit=now.minute();

  int detik=now.second();

  String waktu1=Konversi(jam)+":"+Konversi(menit);//+":"+Konversi(detik)+"  ";

  dmd.selectFont(angka_2);  

  dmd.drawString(33,0,waktu1);


  

marX=1;

marY=9;

jalan=true;

while(jalan)

{

messageLength = s.length()+65;

//Geser 1 pixel dulu. 

dmd.movePixels(marX, marY, marX-1, marY, marWidth, marHeight);

marCur = marCur-1; 

if (marCur == marX + marWidth - dmd.charWidth(s[messageCount],FONT)-1) {

  marCur = marX + marWidth;

  messageCount = messageCount+1;

  if (messageCount == messageLength){

    messageCount = 0;

    jalan=false;

  }

}



dmd.selectFont(SystemFont5x7);

dmd.drawChar(marCur, marY , s[messageCount]);  // tulis karakter baru setelah digeser

delay(50);

i++;

if(i*50 >600)

{

  DateTime now = rtc.now();

  int jam= now.hour();

  int menit=now.minute();

  int detik=now.second();

 // String waktu1=Konversi(jam)+":"+Konversi(menit)+"  ";

  String waktu1=Konversi(jam)+":"+Konversi(menit);//+":"+Konversi(detik)+"  ";

  String waktu2=Konversi(jam)+" "+Konversi(menit);//+" "+Konversi(detik)+"  ";


   

if (blinking)

{

dmd.selectFont(angka_2);

dmd.drawString(33,0,waktu1);

//beep(300);

blinking=false;

}

 else

 {

  dmd.selectFont(angka_2);

  dmd.drawString(33,0,waktu2);

  blinking=true;

 }


i=0;

}


}

}


///Konversi angka agar ada nol didepannya jika diawah 10

String Konversi(int sInput) {

  if (sInput < 10)

  {

    return"0" + String(sInput);

  }

  else

  {

    return String(sInput);

  }

}


String get_imsyak(int jam_subuh,int menit_subuh)

{

if (menit_subuh-10 <0)

{

int menit=60+(menit_subuh-10);

int jam=jam_subuh-1;

return Konversi(jam)+":"+Konversi(menit);

}

else

{

  return Konversi(jam_subuh)+":"+Konversi(menit_subuh-10);

}


}



int tulisan_menuju_azan(int jam,int menit,String* waktu_sholat)

{

  int selisih;

  String waktu;

  int selisih_waktu_isya=(jam_isya*60+menit_isya) -(jam*60+menit);

  int selisih_waktu_subuh=(jam_subuh*60+menit_subuh) -(jam*60+menit);

  int selisih_waktu_duhur=(jam_duhur*60+menit_duhur) -(jam*60+menit);

  int selisih_waktu_azar=(jam_azar*60+menit_azar) -(jam*60+menit);

  int selisih_waktu_magrib=(jam_magrib*60+menit_magrib) -(jam*60+menit);

  


 if(selisih_waktu_isya>=0 && selisih_waktu_isya<=jeda_menuju_azan ){  selisih=selisih_waktu_isya; waktu="ISYA'";}

 else if(selisih_waktu_subuh>=0 && selisih_waktu_subuh<=jeda_menuju_azan ){  selisih=selisih_waktu_subuh; waktu="SUBUH";}

 else if(selisih_waktu_duhur>=0 && selisih_waktu_duhur<=jeda_menuju_azan ){  selisih=selisih_waktu_duhur; waktu="DZUHUR";}

 else if(selisih_waktu_azar>=0 && selisih_waktu_azar<=jeda_menuju_azan ){  selisih=selisih_waktu_azar;  waktu="ASHAR";}

 else if(selisih_waktu_magrib>=0 && selisih_waktu_magrib<=jeda_menuju_azan ){  selisih=selisih_waktu_magrib;  waktu="MAGRIB";} 

 else { selisih=-1; waktu="-----";}   

  

  

  int s=selisih;

 *waktu_sholat=waktu;

  return s;

  

}


Saturday, June 4, 2022

Running Text untuk Mobil atau Motor ( Nano + Max 7219 )


Running Text untuk Mobil atau Motor ( Nano + Max 7219 )





#include <MD_Parola.h>

#include <MD_MAX72xx.h>

#include <SPI.h>



#define HARDWARE_TYPE MD_MAX72XX::FC16_HW

#define MAX_DEVICES 4

#define CLK_PIN   7 

#define DATA_PIN  6 

#define CS_PIN    8  


#define kiri 3

#define kanan 4

#define rem 5


// HARDWARE SPI

MD_Parola myDisplay = MD_Parola(HARDWARE_TYPE, DATA_PIN, CLK_PIN, CS_PIN, MAX_DEVICES);


int i = 0;

int j=0;

int k=0;



void panah_kiri();

void panah_kanan();

void Stop_blink();

void Rem_blink();


textEffect_t texteffect[] =

{

  PA_PRINT,

  PA_SCAN_HORIZ,

  PA_SCROLL_LEFT,

  PA_WIPE,

  PA_SCROLL_UP_LEFT,

  PA_SCROLL_UP,

  PA_OPENING_CURSOR,

  PA_GROW_UP,

  PA_MESH,

  PA_SCROLL_UP_RIGHT,

  PA_BLINDS,

  PA_CLOSING,

  PA_RANDOM,

  PA_GROW_DOWN,

  PA_SCAN_VERT,

  PA_SCROLL_DOWN_LEFT,

  PA_WIPE_CURSOR,

  PA_DISSOLVE,

  PA_OPENING,

  PA_CLOSING_CURSOR,

  PA_SCROLL_DOWN_RIGHT,

  PA_SCROLL_RIGHT,

  PA_SLICE,

  PA_SCROLL_DOWN

};


void setup() {

  pinMode(kiri, INPUT);

  pinMode(kanan, INPUT);

  pinMode(rem, INPUT);

  myDisplay.begin();

  myDisplay.setIntensity(5);

  myDisplay.setTextAlignment(PA_CENTER);

  myDisplay.setPause(1000);

  myDisplay.setSpeed(20);

  myDisplay.displayClear();

}



void loop() {

   int tombolkiri=digitalRead(kiri);

   int tombolkanan=digitalRead(kanan);

   int tombolrem=digitalRead(rem);


   if (tombolkiri==1 and tombolkanan==1)

    {

      Hati2_blink();

    }

  

   if (tombolkiri==1)

    {

      j++;

      if(j==1)

      {

        // myDisplay.displayReset();

         myDisplay.displayClear();

         myDisplay.print("                            ");  

      }

      panah_kiri();

      k=0;

    } 

    else if (tombolkanan==1)

    {

      j++;

      if(j==1)

      {

         myDisplay.displayClear();

         myDisplay.print("                            ");  

      }

      panah_kanan();

      k=0;

    }

    else if (tombolrem==1)

    {

      Stop_blink();

    }

    else

    {

      j=0;

      k++;

       if(k==1)

      {

         myDisplay.displayClear();

         myDisplay.print("                            ");  

      }


      if ( k>10) {k=2;}

      myDisplay.setIntensity(2);

      myDisplay.setTextAlignment(PA_CENTER);

      myDisplay.setPause(1);

      myDisplay.setSpeed(30);

 

    

     if (myDisplay.displayAnimate()) {

      i=2;

      myDisplay.displayText("Welcome to Youtube Channel Belajar Tehnologi jaman Now", myDisplay.getTextAlignment(), myDisplay.getSpeed(), myDisplay.getPause(), texteffect[i], texteffect[i]);

      myDisplay.displayReset();

     }

    }

 

}



void panah_kiri()

{

  myDisplay.setIntensity(5);

  myDisplay.setTextAlignment(PA_CENTER);

  myDisplay.setPause(0);

  myDisplay.setSpeed(20);

 

if (myDisplay.displayAnimate()) {

      i=2; 

      myDisplay.displayText("<<<< <<<< <<<< <<<<", myDisplay.getTextAlignment(), myDisplay.getSpeed(), myDisplay.getPause(), texteffect[i], texteffect[i]);

     myDisplay.displayReset();

     }

}



void panah_kanan()

{

  myDisplay.setIntensity(5);

  myDisplay.setTextAlignment(PA_CENTER);

  myDisplay.setPause(0);

  myDisplay.setSpeed(20);

 

if (myDisplay.displayAnimate()) {

      i=21; 

      myDisplay.displayText(">>>> >>>> >>>> >>>>", myDisplay.getTextAlignment(), myDisplay.getSpeed(), myDisplay.getPause(), texteffect[i], texteffect[i]);

     myDisplay.displayReset();

     }

}


void Stop_blink()

{

myDisplay.print("<STOP>");

delay(200);

myDisplay.print("         ");  

delay(200);

}


void Hati2_blink()

{

myDisplay.print("Hati2 ");

delay(200);

myDisplay.print("         ");  

delay(200);

}


Sunday, June 27, 2021

Pembuatan Saklar otomatis terprogram dengan menggunakan Arduino Nano

Abstrak

Pada saat kita bepergian meninggalkan rumah dan menginap di tempat lain kadang kita lupa menyalakan lampu d imalam hari sehingga lampu rumah kita gelap di saat malam hari dan hal kurang bagus buat lingkungan tetangga karena lampu kita gelap dan kurang bagus juga untuk keamanan karena dengan lampu mati rumah kita ketahuan kalo kosong.

Berangkat dari alasan tersebut di atas maka kami ada membuat  perangkat /alat yg bisa di program untuk menyalakan maupun mematikan lampu maupun perangkat lain.

 

Dengan alat ini kita tidak akan kuatir jika bepergian dengan jangka waktu yang lama. Kita bisa set lampu atau perangkat lain mati/off jam berapa maupun lampu nyala jam berapa.

 

Komponen yg di butuhkan

1. Arduino Nano  1 buah

2. RTC DS 1302  1 buah

3. LCD 16x2 +I2C 1 buah

4. Saklar micro button 4 buah

5. Relay 5 V  1 buah

 

 Harga komponen di toko online

 

1. Arduino Nano

 

 

2. RTC DS1302

 

 

3. LCD 16x2 + I2C

 

 

4. Button

 

 5. Relay

 

 

 PIN  OUT ARDUINO NANO

Seperti kita lihat pin out Arduino nano bahwa untuk

A5 -> SCL

A4 -> SDA

 

 

 

 Rangkaian komponen

 

 

 

 Flow chart program

 

 

 

 

 

Program Arduino

//memanggil library header virtuabotixRTC

#include <virtuabotixRTC.h>

#include <EEPROM.h>

#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x27, 16, 2);

int i=0;int j=0; int pin10;int pin11;int pin12;

 

int jam_off;

int jam_on;

int menit_off;

int menit_on;

int counter=0;

 

 

int detik,menit,jam,tgl,bulan;

String detikstr,menitstr,jamstr,tglstr,bulanstr;

 

//Inisialisasi pin (CLK, DAT, RST)

virtuabotixRTC myRTC(6,7,8);

 

void setup(){

//Inisialisasi port serial arduino dengan komputer

Serial.begin(9600);

//pinMode(9, INPUT);

lcd.begin();

lcd.clear();

lcd.setBacklight(1);

pinMode(9, INPUT_PULLUP); //masuk seeting

pinMode(10, INPUT_PULLUP); // ubah data

pinMode(11, INPUT_PULLUP); //save

pinMode(12, INPUT_PULLUP); //exit without save

pinMode(3, OUTPUT); //Relay

//menit_off=10;

//menit_on=20;

//pinMode(11, OUTPUT);

 

//tulis waktu ff

//tulis_eeprom(1,3,"05");

//waktu on

//tulis_eeprom(4,6,"18");

 

 

jam_off=baca_eeprom(1,3).toInt();

jam_on=baca_eeprom(4,6).toInt();

 

menit_off=baca_eeprom(7,9).toInt();

menit_on=baca_eeprom(10,12).toInt();

 

 

//penulisan data pertama kali dan disarankan saat transfer

//ke-2 ini tidak digunakan dikarenakan akan menghapus data

//sebelumnya

//myRTC.setDS1302Time(00,53,15,6,10,10,2020);

//detik, menit, jam, hari dalam seminggu, tanggal, bulan, tahun

// 00:59:23 "Rabu" 7-September-2017

}

 

void tulis_waktu_off(String waktuoff)

{

  tulis_eeprom(1,3,waktuoff);

}

 

void tulis_waktu_on(String waktuon)

{

  tulis_eeprom(4,6,waktuon);

}

 

void tulis_menit_on(String waktuon)

{

  tulis_eeprom(10,12,waktuon);

}

 

void tulis_menit_off(String waktuon)

{

  tulis_eeprom(7,9,waktuon);

}

 

 

 

 

 

void tulis_eeprom(int pos1, int pos2,String strText)

{

 int pj_strText=strText.length()+1;

 char stringIn[pj_strText];

 strText.toCharArray(stringIn,pj_strText);

// char* stringIn;

 int j=-1;

  for(int i = pos1; i <pos2+1; i++){

       j++;

       if (i<pos1+pj_strText )  {EEPROM.write(i, stringIn[j]);}

       else  {EEPROM.write(i, '\0');}

       }

}

 

 

String  baca_eeprom(int pos1,int pos2){

 int i;char c;

 String hasil="";

   for (i=pos1;i<pos2;i++)

  {

    c=EEPROM.read(i);

   delay(30);

    hasil=hasil+String(c);

  }

   hasil=hasil+'\0';

 

return hasil;

}

 

 

void loop(){

  awal:

 

  counter++;

  if (counter>=60) {lcd.setBacklight(1);counter=31;}

//memanggil fungsi untuk update data waktu

myRTC.updateTime();

 

 

//fungsi penulisan data untuk detik

//Serial.println(myRTC.seconds);

 

int pin9=digitalRead(9);

 

Serial.println("pin9=");

Serial.println(pin9);

 

if (pin9==0) {

  lcd.setBacklight(1);

  lcd.clear();

  lcd.setCursor(0,0);

  lcd.print("  SETTING DATA");

  delay(1000);

  goto Setting;

  }

 

awal2:

detik=myRTC.seconds;

menit=myRTC.minutes;

jam=myRTC.hours;

tgl=myRTC.dayofmonth;

bulan=myRTC.month;

 

//if (jam>=jamon && jam<=23) {digitalWrite(12, HIGH);}

//if (jam>=0 && jam<jamoff) {digitalWrite(12, HIGH);}

 

if (Konversi(jam)+Konversi(menit) >=Konversi(jam_off)+ Konversi(menit_off) && Konversi(jam)+Konversi(menit) < Konversi(jam_on)+ Konversi(menit_on)) {

                      digitalWrite(3, LOW);

                      //lcd.setBacklight(0);

                     } else

                        {

                            digitalWrite(3, HIGH);

                          // lcd.setBacklight(1);

                            }

 

if (detik<=9){ detikstr="0"+ String(detik);} else{detikstr=detik;}

if (menit<=9){ menitstr="0"+ String(menit);} else{menitstr=menit;}

if (jam<=9){ jamstr="0"+ String(jam);} else{jamstr=jam;}

 

if (tgl<=9){ tglstr="0"+ String(tgl);} else{tglstr=tgl;}

if (bulan<=9){ bulanstr="0"+ String(bulan);} else{bulanstr=bulan;}

 

lcd.setCursor(0+4,0); lcd.print(jamstr);

lcd.setCursor(2+4,0); lcd.print(":");

lcd.setCursor(3+4,0); lcd.print(menitstr);

lcd.setCursor(5+4,0); lcd.print(":");

lcd.setCursor(6+4,0); lcd.print(detikstr);

 

lcd.setCursor(0, 1);lcd.print("" + Konversi(jam_off)+":"+Konversi(menit_off));

//lcd.setCursor(2,1); lcd.print("-");

///lcd.setCursor(3,1); lcd.print(bulanstr);

//lcd.setCursor(5,1); lcd.print("-");

lcd.setCursor(9,1); lcd.print("  "+Konversi(jam_on)+":"+Konversi(menit_on));

i++;

//if (i>5) { lcd.setBacklight(1);}

//f (i>10) { i=0; lcd.setBacklight(0);}

//if (pin9==0) {lcd.setBacklight(1);} else {lcd.setBacklight(0);}

 

delay( 1000);

//lcd.clear();

 

pin12=digitalRead(12);

if (pin12==0) {

   lcd.setBacklight(1);

   //lcd.clear();

   counter=0;

   delay(100);

}

 

goto awal;

 

Setting:

 // lcd.clear();

 pin10=digitalRead(10);

 pin9=digitalRead(9);

 pin11=digitalRead(11);

 pin12=digitalRead(12);

 

 

 if (pin10==0 && j==1 ) {

     jam++;

     if (jam==24) jam=0;

     lcd.clear();

     lcd.setCursor(0,0); lcd.print("SETTING JAM");

     lcd.setCursor(0, 1);lcd.print(Konversi(jam));

     delay(50);

 }

 

  if (pin10==0 && j==2 ) {

     menit++;

     if (menit==60) menit=0;

     lcd.clear();

     lcd.setCursor(0,0); lcd.print("SETTING MENIT");

     lcd.setCursor(0, 1);lcd.print(Konversi(menit));

     delay(50);

 }

 

   if (pin10==0 && j==3 ) {

     detik++;

     if (detik==60) detik=0;

     lcd.clear();

     lcd.setCursor(0,0); lcd.print("SETTING DETIK");

     lcd.setCursor(0, 1);lcd.print(Konversi(detik));

     delay(50);

 }

 

  if (pin10==0 && j==4 ) {

     jam_off++;

     if (jam_off==24) jam_off=0;

     lcd.clear();

     lcd.setCursor(0,0); lcd.print("SETTING JAM OFF");

     lcd.setCursor(0, 1);lcd.print(Konversi(jam_off)+":"+Konversi(menit_off));

     tulis_waktu_off(Konversi(jam_off));

     delay(50);

 }

 

   if (pin10==0 && j==5) {

     menit_off++;

     if (menit_off==60) menit_off=0;

     lcd.clear();

     lcd.setCursor(0,0); lcd.print("SETTING MENIT OFF");

     lcd.setCursor(0, 1);lcd.print(Konversi(jam_off)+":"+Konversi(menit_off));

     tulis_menit_off(Konversi(menit_off));

     delay(50);

 }

 

 

   if (pin10==0 && j==6 ) {

     jam_on++;

     if (jam_on==24) jam_on=0;

     lcd.clear();

     lcd.setCursor(0,0); lcd.print("SETTING JAM ON");

     lcd.setCursor(0, 1);lcd.print(Konversi(jam_on)+":"+Konversi(menit_on));

     tulis_waktu_on(Konversi(jam_on));

     delay(50);

 }

 

    if (pin10==0 && j==0 ) {

     menit_on++;

     if (menit_on==60) menit_on=0;

     lcd.clear();

     lcd.setCursor(0,0); lcd.print("SETTING MENIT ON");

     lcd.setCursor(0, 1);lcd.print(Konversi(jam_on)+":"+Konversi(menit_on));

     tulis_menit_on(Konversi(menit_on));

     delay(50);

 }

 

 //ubah yg akan di update

 if (pin9==0) {

 

  j++;

    if (j==1) {

      lcd.clear();

     lcd.setCursor(0,0); lcd.print("SETTING JAM");

     lcd.setCursor(0, 1);lcd.print(Konversi(jam));

     delay(50);

    }

    if (j==2) {

      lcd.clear();

     lcd.setCursor(0,0); lcd.print("SETTING MENIT");

     lcd.setCursor(0, 1);lcd.print(Konversi(menit));

     delay(50);

    }

 

    if (j==3) {

      lcd.clear();

     lcd.setCursor(0,0); lcd.print("SETTING DETIK");

     lcd.setCursor(0, 1);lcd.print(Konversi(detik));

     delay(50);

    

    }

    if (j==4) {

      lcd.clear();

     lcd.setCursor(0,0); lcd.print("SETTING JAM OFF");

     lcd.setCursor(0, 1);lcd.print(Konversi(jam_off)+":"+Konversi(menit_off));

     delay(50);

    

    }

 

    if (j==5) {

     lcd.clear();

     lcd.setCursor(0,0); lcd.print("SETTING MENIT OFF");

     lcd.setCursor(0, 1);lcd.print(Konversi(jam_off)+":"+Konversi(menit_off));

     delay(50);

    

    }

 

    if (j==6) {

     lcd.clear();

     lcd.setCursor(0,0); lcd.print("SETTING JAM ON");

     lcd.setCursor(0, 1);lcd.print(Konversi(jam_on)+":"+Konversi(menit_on));

    

     delay(50);

    }

 

     if (j==7) {

     lcd.clear();

     lcd.setCursor(0,0); lcd.print("SETTING MENIT ON");

     lcd.setCursor(0, 1);lcd.print(Konversi(jam_on)+":"+Konversi(menit_on));

     j=0;

     delay(50);

    }

   

  }

 

//save data

if (pin11==0) {

   lcd.clear();

   counter=0;

   myRTC.setDS1302Time(detik,menit,jam,6,10,10,2020);

   delay(50);

   goto awal;

   }

//cancel no save data

  if (pin12==0) {

   lcd.clear();

   counter=0;

   //myRTC.setDS1302Time(detik,menit,jam,6,10,10,2020);

   delay(50);

   goto awal;

   }

  

  delay(100);

goto Setting;

 

 

}

 

 

String Konversi(int sInput) {

  if (sInput < 10)

  {

    return"0" + String(sInput);

  }

  else

  {

    return String(sInput);

  }

}

 

 

Membuat Counter mundur menuju Azan dengan Arduino Wemos

Membuat Counter Mundur Menuju Azan dengan Arduino Wemos  #include <Wire.h> #include "RTClib.h" #include "SPI.h" #i...