Jadi kemarin saya punya kerjaan, ingin mengendalikan (kontrol) kecepatan motor AC induksi 1 phase. tujuannya supaya mesin bisa berputar pelan misalnya setengah atau seperempat kecepatan namun tetap ada powernya.
Awalnya saya mencoba menggunakan modul AC dimmer yang biasa untuk lampu yang katanya juga bisa dipakai untuk motor AC.
tapi setelah dsicoba ternyata ketika dipelankan ternyata powernya hilang kemudian berhenti, jadi malah susah untuk dikendalikan.
kemudian saya mencari referensi untuk mengendalikan motor AC ternyata ada 2 metode yang saya temukan
1. menggunakan VFD, tapi harganya mahal sekali dan susah mencari VFD yang 1 phase
2. menggunakan Cycloconverter, manum tidak ditemukan penjualnya dimanapun, cuma nemu 1 sumber yang menjual training Kit, mungkin Cycloconverter masih teknologi baru atau mungkin teknologinya kurang bagus di industri.
Akhirnya saya menemukan ide untuk membuat Cycloconverter dengan Arduino dan modul dimmer yang biasa dipakai di arduino.
prinsip kerjanya sama persis seperti Cyclo converter, tapi dengan modul dimmer ini kita tidak dapat membalik phase, hanya dapat memotong phase yang tidak kita gunakan, sehingga didapatkan Cycloconverter dengan tenaga separuhnya saja.
memang hasilnya tidak bisa sempurna, tetapi hasilnya lumayan, motor tetap ada tenaganya ketika diseting kecepatan rendah.
cara kerjanya:
1. jika setting full speed kita tidak perlu melakukan pengontrolan
2. jika setting setengah kecepatan, di phase pertama, kita hanya aktifkan tegangan positif, tegangan negatif dimatikan. di phase kedua kita aktifkan tegangan yang negatif saja, tegangan positif dimatikan. begitu diulang seterusnya. sehingga kita menciptakan output frekuensi listrik 25 Hz
3. untuk frekuensi yang lebih rendah, seperempat atau seper delapan gunakan logika yang sama, tapi pembagi fasenya dibuat lebih lebar.
semoga membantu untuk yang sedang penelitian pengontrolan motor AC. untuk kode tidak dapat saya berikan di sini, silakan kontak langsung untuk kerja sama.
Belajar Arduino
07 August 2019
11 April 2018
Membuat jadwal sholat menggunakan panel P10 DMD dan RTC DS1302
kita semua tahu bahwa RTC DS1302 merupakan RTC dengan harga termurah. namun ternyata tidak banyak yang menggunakan. Disini akan saya berikan contoh sketch arduino untuk membuat jadwal sholat menggunakan panel running text satu buah. nanti hasilnya akan seperti video ini.
library yang kita butuhkan(untuk didownload)
1. library DMD
2. library RTC DS1302
3. library PrayerTimes
pin arduino yang dipakai :
Skettchnya: (download disini, sudah termasuk library). link diupdate 2 agustus 2018
DS1302 bisa beli disini https://tokopedia.link/mTYCxNdh1L
jam sholat yang sudah jadi bisa beli disini : https://store.yufid.com/jual/jam-pengingat-waktu-sholat/
library yang kita butuhkan(untuk didownload)
1. library DMD
2. library RTC DS1302
3. library PrayerTimes
pin arduino yang dipakai :
- RTC --> A5,A4,A3 (CE,IO,SCLK) CE= reset , IO=data
- tombol SETTING --> 2
- tombol UP --> 3
- tombol DOWN --> 4
- alarm --> 5
- pin tombol bisa langsung ke arah ground, tidak perlu pakai pull up,
Skettchnya: (download disini, sudah termasuk library). link diupdate 2 agustus 2018
DS1302 bisa beli disini https://tokopedia.link/mTYCxNdh1L
jam sholat yang sudah jadi bisa beli disini : https://store.yufid.com/jual/jam-pengingat-waktu-sholat/
//perubahan: rutin adzan dan iqomah menjadi satu fungsi saja dengan input integer dari waktu sholat // fix tahun kabisat untuk 100 dan 400 tahun // tambahan seting jam kedip kedip #include <EEPROM.h> #include <EepromUtil.h> #include <DMD.h> #include <TimerOne.h> #include "DS1302.h" // library RTC //#include <Time.h> #include "PrayerTimes.h" double times[sizeof(TimeName) / sizeof(char*)]; DS1302 rtc(A5, A4, A3); // (CE,IO,SCLK) pin terhubung ke RTC CE=reset IO=data Time t; // library RTC #include <SystemFont5x7.h> #include <angka6x13.h> #include <font4x7.h> #include <SPI.h> char separator[] = {':', ' '}; const char *waktusholat[] = {"SUBUH", "DZUHUR", "'ASHAR", "MAGHRIB", "ISYA'"} ; const char *szona[] = { "", "", "", "", "", "", "", "WIB ", "WITA", "WIT ",}; char *hari[] = {"SENIN", "SELASA", "RABU" , "KAMIS", "JUM'AT", "SABTU", "AHAD" }; int maxday[] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; double lintang; double bujur; int zonawaktu; int jedaiqomah; unsigned long previousMillis = 0; unsigned long currentMillis; const int interval = 1000; #define SETTING 2 #define UP 3 #define DOWN 4 #define ALARM 5 int mode = 0; byte tjam; byte tmenit; byte tdetik; byte ttanggal; byte tbulan; int ttahun; int tdow; int pos; int subuhH; int subuhM; int terbitH; int terbitM; int dzuhurH; int dzuhurM; int asarH; int asarM; int magribH; int magribM; int isyaH; int isyaM; int imsakH; int imsakM; char textbuffer[10]; DMD dmd(1, 1); //untuk mengatur jumlah panel yang kamu pakai void ScanDMD() { dmd.scanDisplayBySPI(); } //////////////////////SEEEEEEETTTTTTTUUUUUUUUP////////////////////////////////////////////////////////////// void setup() { // put your setup code here, to run once: pinMode(SETTING, INPUT_PULLUP); pinMode(UP, INPUT_PULLUP); pinMode(DOWN, INPUT_PULLUP); pinMode(ALARM, OUTPUT); digitalWrite(ALARM, LOW); // alarm of dulu kan delay(100); digitalWrite(ALARM, HIGH); // alarm of dulu kan delay(1000); digitalWrite(ALARM, LOW); // alarm of dulu kan rtc.halt(false); rtc.writeProtect(false); // Setup Serial connection Serial.begin(9600); //setting JAM // rtc.setDate(28, 9, 2017); // rtc.setTime(11, 35, 30); // rtc.setDOW(4); //READ EEPROM DATA zonawaktu = EEPROM.read(1); jedaiqomah = EEPROM.read(2); //EepromUtil::eeprom_write_string(5,"-7.78"); //EepromUtil::eeprom_write_string(15,"110.36"); EepromUtil::eeprom_read_string(5, textbuffer, 10); lintang = atof(textbuffer); EepromUtil::eeprom_read_string(15, textbuffer, 10); bujur = atof(textbuffer); Serial.print("lintang = "); Serial.println(lintang); Serial.print("bujur = "); Serial.println(bujur); // fire UP DMD Timer1.initialize( 3000 ); Timer1.attachInterrupt( ScanDMD ); dmd.clearScreen( true ); dmd.setBrightness(255); //attachInterrupt(digitalPinToInterrupt(SETTING), interruptpress, FALLING); } ////// LOOOOOOOOP /////////////////////////////////////////////////////////////////////// void loop() { // put your main code here, to run repeatedly: int t1 = digitalRead(SETTING); //tombol setting int t2 = digitalRead(UP); // tombol Up int t3 = digitalRead(DOWN); // tombol down if (t1 == LOW) { mode = mode + 1; Serial.print("mode = "); Serial.println(mode); dmd.clearScreen(true); delay(250); if (mode > 9) { mode = 0; dmd.clearScreen(true); } } getjadwal(); if (mode == 1) { //setting jam // dmd.clearScreen(true); dmd.selectFont(font4x7); dmd.drawString(8, 0, "JAM", 3 , GRAPHICS_NORMAL); int jam = tjam; int menit = tmenit; if (t2 == LOW) { jam = jam + 1; delay(100); if (jam > 23 ) { jam = 0; } } if (t3 == LOW) { jam = jam - 1; delay(100); if (jam < 0 ) { jam = 23; } } String xjam = Konversi(jam); int pjg = xjam.length() + 1; char sjam[pjg]; xjam.toCharArray(sjam, pjg); String xmenit = Konversi(menit); char smenit[pjg]; xmenit.toCharArray(smenit, pjg); dmd.selectFont(SystemFont5x7); //dmd.drawString(0, 8, sjam, pjg, GRAPHICS_NORMAL); //dmd.drawChar(12, 8, separator[currentMillis / 1000 % 2], GRAPHICS_NORMAL); dmd.drawChar(12, 8, ':', GRAPHICS_NORMAL); dmd.drawString(18, 8, smenit, pjg, GRAPHICS_NORMAL); if (separator[currentMillis / 250 % 2] == ' '){ dmd.drawString(0, 8, sjam, pjg, GRAPHICS_NORMAL); } else dmd.drawString(0, 8, " ", pjg, GRAPHICS_NORMAL); rtc.setTime(jam, tmenit, tdetik); } if (mode == 2) { //setting menit // dmd.clearScreen(true); dmd.selectFont(font4x7); dmd.drawString(5, 0, "MENIT", 5 , GRAPHICS_NORMAL); int jam = tjam; int menit = tmenit; if (t2 == LOW) { menit = menit + 1; delay(100); if (menit > 59 ) { menit = 0; } } if (t3 == LOW) { menit = menit - 1; delay(100); if (menit < 0 ) { menit = 59; } } String xjam = Konversi(jam); int pjg = xjam.length() + 1; char sjam[pjg]; xjam.toCharArray(sjam, pjg); String xmenit = Konversi(menit); //int pjg = xmenit.length() + 1; char smenit[pjg]; xmenit.toCharArray(smenit, pjg); dmd.selectFont(SystemFont5x7); dmd.drawString(0, 8, sjam, pjg, GRAPHICS_NORMAL); //dmd.drawChar(12, 8, separator[currentMillis / 1000 % 2], GRAPHICS_NORMAL); dmd.drawChar(12, 8, ':', GRAPHICS_NORMAL); //dmd.drawString(18, 8, smenit, pjg, GRAPHICS_NORMAL); if (separator[currentMillis / 250 % 2] == ' '){ dmd.drawString(18, 8, smenit, pjg, GRAPHICS_NORMAL); } else dmd.drawString(18, 8, " ", pjg, GRAPHICS_NORMAL); rtc.setTime(tjam, menit, tdetik); } if (mode == 3) { //setting tahun // dmd.clearScreen(true); dmd.selectFont(font4x7); dmd.drawString(3, 0, "TAHUN", 5 , GRAPHICS_NORMAL); int tahun = ttahun; int bulan = tbulan; if (bulan>12){ bulan = 12; } int tanggal = ttanggal; if (tanggal > 31) { tanggal = 31; } if (t2 == LOW) { tahun = tahun + 1; delay(100); if (tahun > 2200 ) { tahun = 2200; } } if (t3 == LOW) { tahun = tahun - 1; delay(100); if (tahun < 2017 ) { tahun = 2017; } } String xtahun = Konversi(tahun); int pjg = xtahun.length() + 1; char stahun[pjg]; xtahun.toCharArray(stahun, pjg); dmd.selectFont(SystemFont5x7); if (separator[currentMillis / 250 % 2] == ' '){ dmd.drawString(0, 8, stahun, pjg, GRAPHICS_NORMAL); } else dmd.drawString(0, 8, " ", pjg, GRAPHICS_NORMAL); rtc.setDate(tanggal, bulan, tahun); } if (mode == 4) { //setting bulan // dmd.clearScreen(true); dmd.selectFont(font4x7); dmd.drawString(3, 0, "BULAN", 5 , GRAPHICS_NORMAL); int bulan = tbulan; int tanggal = ttanggal; if (t2 == LOW) { bulan = bulan + 1; delay(100); if (bulan > 12 ) { bulan = 1; } } if (t3 == LOW) { bulan = bulan - 1; delay(100); if (bulan < 1 ) { bulan = 12; } } String xbulan = Konversi(bulan); int pjg = xbulan.length() + 1; char sbulan[pjg]; xbulan.toCharArray(sbulan, pjg); String xtanggal = Konversi(tanggal); char stanggal[pjg]; xtanggal.toCharArray(stanggal, pjg); dmd.selectFont(SystemFont5x7); dmd.drawString(18, 8, stanggal, pjg, GRAPHICS_NORMAL); dmd.drawChar(12, 8, '/', GRAPHICS_NORMAL); if (separator[currentMillis / 250 % 2] == ' '){ dmd.drawString(0, 8, sbulan, pjg, GRAPHICS_NORMAL); } else dmd.drawString(0, 8, " ", pjg, GRAPHICS_NORMAL); rtc.setDate(ttanggal, bulan, ttahun); } if (mode == 5) { //setting tanggal // dmd.clearScreen(true); dmd.selectFont(font4x7); dmd.drawString(8, 0, "TGL", 3 , GRAPHICS_NORMAL); int bulan = tbulan; int tanggal = ttanggal; if (t2 == LOW) { tanggal = tanggal + 1; delay(100); if ((((ttahun % 4 == 0) && (ttahun % 100 != 0)) || (ttahun % 400 == 0)) && (tbulan ==2) ) { if (tanggal > maxday[tbulan] + 1 ) { tanggal = 1; } } else if (tanggal > maxday[tbulan] ) { tanggal = 1; } } if (t3 == LOW) { tanggal = tanggal - 1; delay(100); if (tanggal < 1 ) { if ((((ttahun % 4 == 0) && (ttahun % 100 != 0)) || (ttahun % 400 == 0)) && (tbulan ==2) ) { tanggal = maxday[tbulan] + 1; } else tanggal = maxday[tbulan]; } } String xtanggal = Konversi(tanggal); int pjg = xtanggal.length() + 1; char stanggal[pjg]; xtanggal.toCharArray(stanggal, pjg); String xbulan = Konversi(bulan); char sbulan[pjg]; xbulan.toCharArray(sbulan, pjg); dmd.selectFont(SystemFont5x7); //dmd.drawString(0, 8, stanggal, pjg, GRAPHICS_NORMAL); dmd.drawString(0, 8, sbulan, pjg, GRAPHICS_NORMAL); dmd.drawChar(12, 8, '/', GRAPHICS_NORMAL); if (separator[currentMillis / 250 % 2] == ' '){ dmd.drawString(18, 8, stanggal, pjg, GRAPHICS_NORMAL); } else dmd.drawString(18, 8, " ", pjg, GRAPHICS_NORMAL); rtc.setDate(tanggal, tbulan, ttahun); Serial.println(jumlahhari()); Serial.println(((jumlahhari() - 4) % 7) + 1); rtc.setDOW(((jumlahhari() - 4) % 7) + 1); } if (mode == 6) { //setting jeda iqomah // dmd.clearScreen(true); dmd.selectFont(font4x7); dmd.drawString(7, 0, "JEDA", 5 , GRAPHICS_NORMAL); int jeda = EEPROM.read(2); if (t2 == LOW) { jeda = jeda + 1; delay(100); if (jeda > 30 ) { jeda = 30; } } if (t3 == LOW) { jeda = jeda - 1; delay(100); if (jeda < 5 ) { jeda = 5; } } String xjeda = Konversi(jeda); int pjg = xjeda.length() + 1; char sjeda[pjg]; xjeda.toCharArray(sjeda, pjg); dmd.selectFont(SystemFont5x7); if (separator[currentMillis / 250 % 2] == ' '){ dmd.drawString(0, 8, sjeda, pjg, GRAPHICS_NORMAL); } else dmd.drawString(0, 8, " ", pjg, GRAPHICS_NORMAL); dmd.drawString(14, 8, "mnt", pjg, GRAPHICS_NORMAL); jedaiqomah = jeda; EEPROM.write(2, jeda); } if (mode == 7) { //setting zona waktu // dmd.clearScreen(true); dmd.selectFont(SystemFont5x7); dmd.drawString(1, 0, "ZONA:", 5 , GRAPHICS_NORMAL); //dmd.selectFont(font4x7); int zona = EEPROM.read(1); if (t2 == LOW) { zona = zona + 1; delay(100); if (zona > 9 ) { zona = 7; } } if (t3 == LOW) { zona = zona - 1; delay(100); if (zona < 7 ) { zona = 9; } } if (separator[currentMillis / 500 % 2] == ' '){ dmd.drawString(1, 8, szona[zona], 4, GRAPHICS_NORMAL); } else dmd.drawString(1, 8, " ", 4, GRAPHICS_NORMAL); zonawaktu = zona; EEPROM.write(1, zona); } if (mode == 8) { //setting LINTANG // dmd.clearScreen(true); dmd.selectFont(font4x7); dmd.drawString(0, 0, "LINTANG", 7 , GRAPHICS_NORMAL); if (t2 == LOW) { lintang = lintang + 0.01; delay(5); if (lintang > 15 ) { lintang = 15; } if (lintang == 0 ) { //pergantian minus biar tidak nyisa dmd.clearScreen( true ); } } if (t3 == LOW) { lintang = lintang - 0.01; delay(5); if (lintang < -15 ) { lintang = -15; } } String xlintang = String(lintang); int pjg = xlintang.length() + 1; char slintang[pjg]; xlintang.toCharArray(slintang, pjg); dmd.selectFont(font4x7); if (separator[currentMillis / 500 % 2] == ' '){ dmd.drawString(0, 8, slintang, pjg, GRAPHICS_NORMAL); } else dmd.drawString(0, 8, " ", pjg, GRAPHICS_NORMAL); EepromUtil::eeprom_write_string(5, slintang); } if (mode == 9) { //setting BUJUR // dmd.clearScreen(true); dmd.selectFont(font4x7); dmd.drawString(1, 0, "BUJUR", 5 , GRAPHICS_NORMAL); if (t2 == LOW) { bujur = bujur + 0.01; delay(10); if (bujur > 145 ) { bujur = 145; } } if (t3 == LOW) { bujur = bujur - 0.01; delay(10); if (bujur < 90 ) { bujur = 90; } } String xbujur = String(bujur); int pjg = xbujur.length() + 1; char sbujur[pjg]; xbujur.toCharArray(sbujur, pjg); dmd.selectFont(font4x7); if (separator[currentMillis / 500 % 2] == ' '){ dmd.drawString(0, 8, sbujur, pjg, GRAPHICS_NORMAL); } else dmd.drawString(0, 8, " ", pjg, GRAPHICS_NORMAL); EepromUtil::eeprom_write_string(15, sbujur); } if (mode == 0) { if (currentMillis - previousMillis < 15000) { normalMode(); } else if (tjam == subuhH && tmenit == subuhM) { adzan(0); } else if (tdow == 5 && tjam == dzuhurH && tmenit == dzuhurM) { jumat(); } else if (tjam == dzuhurH && tmenit == dzuhurM) { adzan(1); } else if (tjam == asarH && tmenit == asarM) { adzan(2); } else if (tjam == magribH && tmenit == magribM) { adzan(3); } else if (tjam == isyaH && tmenit == isyaM) { adzan(4); } else { runningtext(); } } } ///// END LOOOOOP/////////////////////////////////////////////////////////////////// unsigned long jumlahhari() { unsigned long d = ttanggal; unsigned long m = tbulan; unsigned long y = ttahun; unsigned long hb[] = {0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365}; unsigned long ht = (y - 1970) * 365 - 1; unsigned long hs = hb[m - 1] + d; unsigned long kab = 0; unsigned long i; if (y % 4 == 0) { if (m > 2) { hs++; } } for (i = 1970; i < y; i++) { if (((i % 4 == 0) && (i % 100 != 0)) || (i % 400 == 0)) { kab++; } } return (ht + hs + kab); } /////////////////////untuk nambahi 0 di depan jika angka <10 ////////////////// String Konversi(int sInput) { if (sInput < 10) { return"0" + String(sInput); } else { return String(sInput); } } void normalMode() { dmd.selectFont(angka6x13); // Tampilan jam String xjam = Konversi(tjam); int pjg = xjam.length() + 1; char sjam[pjg]; xjam.toCharArray(sjam, pjg); dmd.drawString(0, 0, sjam, pjg, GRAPHICS_NORMAL); //tampilan detikan dmd.selectFont(SystemFont5x7); dmd.drawChar(14, 5, separator[currentMillis / 500 % 2], GRAPHICS_NORMAL); // tampilan menit dmd.selectFont(angka6x13); String xmenit = Konversi(tmenit); int pjgmenit = xmenit.length() + 1; char smenit[pjgmenit]; xmenit.toCharArray(smenit, pjgmenit); dmd.drawString(19, 0, smenit, pjgmenit, GRAPHICS_NORMAL); if (((ttahun % 100 == 0) && (ttahun % 400 != 0)) && (tbulan == 2) && (ttanggal == 29)){ //penyesuaian tahun kabisat rtc.setDate(1, 3, ttahun); } } void runningtext() { //dmd.clearScreen(true); dmd.selectFont(SystemFont5x7); // Tampilan jam String xjam = Konversi(tjam); int pjg = xjam.length() + 1; char sjam[pjg]; xjam.toCharArray(sjam, pjg); dmd.drawString(1, 0, sjam, pjg, GRAPHICS_NORMAL); //tampilan detikan dmd.drawChar(14, 0, separator[currentMillis / 500 % 2], GRAPHICS_NORMAL); // tampilan menit String xmenit = Konversi(tmenit); int pjgmenit = xmenit.length() + 1; char smenit[pjgmenit]; xmenit.toCharArray(smenit, pjgmenit); dmd.drawString(20, 0, smenit, pjgmenit, GRAPHICS_NORMAL); dmd.selectFont(font4x7); String teks; teks = String(hari[tdow - 1]) + " " + Konversi(ttanggal) + "-" + Konversi(tbulan) + "-" + String(ttahun) + " SUBUH " + Konversi(subuhH) + ":" + Konversi(subuhM) + " TERBIT " + Konversi(terbitH) + ":" + Konversi(terbitM) + " DZUHUR " + Konversi(dzuhurH) + ":" + Konversi(dzuhurM) + " 'ASHAR " + Konversi(asarH) + ":" + Konversi(asarM) + " MAGHRIB " + Konversi(magribH) + ":" + Konversi(magribM) + " ISYA' " + Konversi(isyaH) + ":" + Konversi(isyaM) + " IMSAK " + Konversi(imsakH) + ":" + Konversi(imsakM); int pjgteks = teks.length() + 1; char cteks[pjgteks]; pos = pos - 1; delay(15); teks.toCharArray(cteks, pjgteks); dmd.drawString(15 + pos, 8, cteks, pjgteks, GRAPHICS_NORMAL); if (currentMillis - previousMillis > 49000) { currentMillis = millis(); previousMillis = currentMillis; dmd.clearScreen(true); pos = 0; } } void getjadwal() { currentMillis = millis(); t = rtc.getTime(); ttanggal = t.date; tbulan = t.mon; ttahun = t.year; tjam = t.hour; tmenit = t.min; tdetik = t.sec; tdow = t.dow; set_calc_method(ISNA); set_asr_method(Shafii); set_high_lats_adjust_method(AngleBased); set_fajr_angle(20); set_isha_angle(18); get_prayer_times(ttahun, tbulan, ttanggal, lintang , bujur , zonawaktu, times); // jadwal sholat di masukkan ke variabel times get_float_time_parts(times[0] + 0.05, subuhH, subuhM); get_float_time_parts(times[1] , terbitH, terbitM); get_float_time_parts(times[2] + 0.05, dzuhurH, dzuhurM); get_float_time_parts(times[3] + 0.05, asarH, asarM); get_float_time_parts(times[4] + 0.05, magribH, magribM); get_float_time_parts(times[6] + 0.05, isyaH, isyaM); get_float_time_parts(times[0] - 0.117, imsakH, imsakM); } void persiapan(int number, String teks){ } void adzan(int number) { dmd.clearScreen( true ); dmd.selectFont(SystemFont5x7); dmd.drawString(2, 0, "ADZAN ", 5, 0); //koordinat tampilan dmd.selectFont(font4x7); dmd.drawString(0, 8, waktusholat[number], strlen(waktusholat[number]), 0); //koordinat tampilan digitalWrite(ALARM, HIGH);//alarm sholat delay(1000); digitalWrite(ALARM, LOW);//alarm sholat delay(1000); digitalWrite(ALARM, HIGH);//alarm sholat delay(1000); digitalWrite(ALARM, LOW);//alarm sholat delay(1000); digitalWrite(ALARM, HIGH);//alarm sholat delay(1000); digitalWrite(ALARM, LOW);//alarm sholat delay(1000); digitalWrite(ALARM, HIGH);//alarm sholat delay(1000); digitalWrite(ALARM, LOW);//alarm sholat delay(1000); delay(150000); //waktu adzan 150000 = 2,5 menit // IQOMAH dmd.clearScreen( true ); dmd.drawString(2, 0, "IQOMAH", 6, 0); int tampil; int detik = 60, menit = jedaiqomah - 1; // waktu jeda iqomah 9 menit 60 detik for (detik = 60; detik >= 0; detik--) { delay(1000); String iqomah = Konversi(menit) + ":" + Konversi(detik); int panjang_iqomah = iqomah.length() + 1; char waktu_iqomah[panjang_iqomah]; iqomah.toCharArray(waktu_iqomah, panjang_iqomah); dmd.selectFont(SystemFont5x7); dmd.drawString(1, 9, waktu_iqomah, panjang_iqomah, 0); if (detik <= 0) { detik = 60; menit = menit - 1; } if (menit <= 0 && detik <= 1) { digitalWrite(ALARM, HIGH);//alarm sholat delay(1000); digitalWrite(ALARM, LOW);//alarm sholat delay(1000); digitalWrite(ALARM, HIGH);//alarm sholat delay(500); digitalWrite(ALARM, LOW);//alarm sholat delay(1000); for (tampil = 0; tampil < 600 ; tampil++) { // waktu sholat 600 = 5 menit menit = 0; detik = 0; dmd.clearScreen( true ); dmd.selectFont(font4x7); dmd.drawString(1, 0, "SHOLAT", 6, 0); //koordinat tampilan /////////////////////// //now = rtc.now(); t = rtc.getTime(); String xjam = Konversi(t.hour) + String(separator[millis() / 500 % 2]) + Konversi(t.min) ; //tampilan jam int pjg = xjam.length() + 1; char sjam[pjg]; xjam.toCharArray(sjam, pjg); dmd.selectFont(SystemFont5x7); dmd.drawString(2, 9, sjam, pjg, 0); ///////////////////// delay (500); } } } } void jumat() { digitalWrite(ALARM, HIGH);//alarm sholat delay(1000); digitalWrite(ALARM, LOW);//alarm sholat delay(1000); digitalWrite(ALARM, HIGH);//alarm sholat delay(1000); digitalWrite(ALARM, LOW);//alarm sholat delay(1000); int tampil; for (tampil = 0; tampil < 30100 ; tampil++) { // waktu sholat jumat 1550 = 25 menit dmd.clearScreen( true ); dmd.selectFont(font4x7); dmd.drawString(1, 0, "JUM'AT", 6, 0); //koordinat tampilan /////////////////////// //now = rtc.now(); t = rtc.getTime(); String xjam = Konversi(t.hour) + String(separator[millis() / 500 % 2]) + Konversi(t.min) ; //tampilan jam int pjg = xjam.length() + 1; char sjam[pjg]; xjam.toCharArray(sjam, pjg); dmd.selectFont(SystemFont5x7); dmd.drawString(2, 9, sjam, pjg, 0); ///////////////////// delay (500); } }
Subscribe to:
Posts (Atom)