Saturday, February 9, 2013

[Review] Alat Pengingat Shalat 5 Waktu

         29 - 01 - 2013
         11 : 34 PM




         Baiklah, pasti kalian bertanya-tanya, dari post-post review rangkaian sebelumnya kok hanya memposting rangkaian Penulisan Ilmiah milik teman terus. Rangkaian Penulisan milik mu sendiri mana? Ok ok, kali ini saya akan memposting rangkaian Penulisan Ilmiah saya. Tapi mungkin agak sedikit rumit ya, bukan maksud untuk merumit-rumitkan atau membesar-besarkan rangkaian Penulisan Ilmiah saya sendiri. Tapi memang kalau anda tidak mengerti perhitungannya matematisnya akan rumit, karena saya tidak akan membahas secara perhitungan secara matematisnya. Baiklah langsung saja kalau begitu, alat ini berjudul "Alat Pengingat Shalat 5 Waktu Berbasis ATMEGA32".
         Baiklah, karena ini adalah rangkaian saya sendiri. Jadi saya akan langsung memberikan gambar blok diagramnya saja ya.


         Baiklah, input, proses, maupun output sudah jelas di blok diagram. Lalu bagaimana cara kerja alat ini? Alat ini bekerja layaknya sebuah jam weker. Hanya bedanya jam ini akan berbunyi ketika sudah masuk waktu shalat 5 waktu. Bagaimana, terdengar simple ya? Baiklah lanjut kalau begitu, karena shalat waktu setiap harinya atau mungkin setiap minggunya berubah-ubah. Jadi saya menggunakan rumus perhitungan matematis yang biasa di gunakan oleh situs-situs perhitungan shalat 5 waktu seperti situs ini : http://www.islamicfinder.org/world.php . Perhitungan waktu shalat 5 waktunya saya gunakan seperti yang ada di situs ini, silahkan anda baca sendiri jika tertarik ingin tahu bagaimana perhitungannya : http://jokoradityo.wordpress.com/2010/06/16/cara-menghitung-waktu-shalat/ .

         Baiklah, lalu sekarang gambar rangkaiannya adalah seperti ini : 



         Hmm blok diagram sudah, lalu gambar rangkaian juga sudah. Baiklah kalau begitu sekarang cara kerja alat. Jadi alat ini terdiri dari rangkaian pengontroll / mikrokontroller, dan rangkaian music player. Karena outputnya disini adalah tampilan LCD dan suara adzan dari suatu file mp3, sehingga perlu rangkaian penguat lagi. Karena output dari mikrokontroller hanya 5v, jadi perlu rangkaian penguat lagi yang bisa menghidupkan rangkaian mp3 yang membutuhkan tegangan sekitar 12v. Saya tidak tampilkan gambar rangkaiannya disini, karena saya langsung menggunakan music player dan rangkaian penguat yang langsung jadi dari toko elektronik sekitar 20 ribu-50 ribu kalau tidak salah, lupa juga. Karena waktu itu mepet waktunya dengan jadwal sidang saya, jdi mau tidak mau saya harus cepat bergerak, jadi membeli rangkaian langsung. Ok jadi langsung saja ya, karena yang saya gunakan pada gambar rangkaian di atas adalah nyala lampu LED yang mana mengisyaratkan kondisi High, yang mana kondisi High itu nanti akan di proses oleh rangkaian penguat lalu akan menuju ke rangkaian Music Player untuk menyalakan suara adzan. Ok langsung saja saya share program dan videonya yang sempat saya rekam waktu itu untuk dokumentasi jaga-jaga kalau alatnya bermasalah pas saat sidang nanti. Pada video demo ini saya menggunakan input tegangan yang berasal dari adaptor. Karena lebih hemat dibandingkan harus membeli batu baterai 12v. Dan juga maketnya (pemaketan alatnya) sangat fail sekali pakai sterofoam wakakakak, bener-bener hemat alias ga modal wakakakk. Tapi ya sudahlah, memang saya kurang begitu ahli dalam hal pemaketan alat. Dan juga pada video demonstrasi alat ini saya sudah sempat mengecek sebelumnya dari alat itu bahwa waktu shalat dzuhur pada tanggal tersebut adalah jam 11 : 59 AM. Jadi alat ini juga bisa mengecek waktu shalat pada tanggal yang tertera pada alat, tapi saya tidak demonstrasikan pengecekan waktu shalatnya. Ok langsung saja saya share di bawah ini program dan videonya. Semoga bermanfaat.



----

#include <mega32.h>
#include <delay.h>
#include <stdio.h>
#include <math.h>
#asm
   .equ __i2c_port=0x18
   .equ __sda_bit=0
   .equ __scl_bit=1
   .equ __lcd_port=0x15
#endasm
#include <i2c.h>
#include <ds1307.h>
#include <lcd.h>
unsigned char buff[16];
unsigned char h,m,s,day,month,year,set1,set2,set3,set4,set5,set6;
int jamdhuz,mendhuz,detdhuz,asd,asd5,wl=7,tinggi=50,sudsub=18,sudisy=17,month2,year2,aa,bb,aa2,jamash,menash,detash,jammagh,menmagh,detmagh,asd7,jamisy,menisy,detisy,asd9,jamsub,mensub,detsub,asd11,var1;
float jddhuz,sudtandhuz,uudhuz,l0dhuz,deltadhuz,equdhuz,wktdhuz,asd2,asd6,pi=3.14159265359,korlin=-1*6.1744,korbuj=106.8294,jdg,jdl,sudtan,delta,uu,l0,equ,perdhuz,lintang,asd3,asd4,absol,percosash,perhaash,jdash,sudtanash,uuash,l0ash,deltaash,equash,absol2,altnam,koralt,altsej,cosash,haash,wktash,percosmagh,perhamagh,jdmagh,sudtanmagh,uumagh,l0magh,deltamagh,equmagh,cosmagh,hamagh,wktmagh,asd8,sudisya,percosisy,perhaisy,jdisy,sudtanisy,uuisy,l0isy,deltaisy,equisy,coshaisy,haisy,wktisy,asd10,sudsubuh,percossub,perhasub,jdsub,sudtansub,uusub,l0sub,deltasub,equsub,coshasub,hasub,wktsub,asd12;
void main(void)
{
PORTA=0x00;DDRA=0xff;
PORTB=0x00;DDRB=0xff;
PORTC=0x00;DDRC=0xff;
PORTD=0xff;DDRD=0x00;

ACSR=0x80;
SFIOR=0x00;
i2c_init();
rtc_init(0,0,0);
lcd_init(16);
lcd_clear();              
while (1)
      {lcd_clear(); 
      rtc_get_time(&h,&m,&s);
      rtc_get_date(&day,&month,&year);
      lcd_gotoxy(0,0);
      sprintf(buff,"Time %d:%d:%d",h,m,s);
      lcd_puts(buff);
      lcd_gotoxy(0,1);
      sprintf(buff,"Date %d:%d:20%d", day,month,year);
      lcd_puts(buff);
      delay_ms(50);

lintang=korlin*pi/180;
month2=month,year2=2000+year;
if (month<=2)
{month2=month2+12;year2=year2-1;}
aa= (year2)/100;
aa2=aa/4;
bb = 2 + aa2 - aa;
asd3= 365.25*(year2);
asd4=30.6001*(month2 + 1);
jdg = 1720994.5 + asd3 + asd4 + bb + day +(12/24);

jdl = jdg-(wl/24);
sudtan=2*pi*(jdl - 2451545)/365.25;
delta=(0.37877 + 23.264*sin((57.297*sudtan - 79.547)*pi/180) + 0.3812*sin((2*57.297*sudtan - 82.682)*pi/180) + 0.17132*sin((3*57.297*sudtan - 59.722)*pi/180))*pi/180;
uu = (jdl - 2451545)/36525;
l0 = (280.46607 + 36000.7698*uu)*pi/180;
equ= (-1*(1789 + 237*uu)*sin(l0) - (7146 - 62*uu)*cos(l0) + (9934 - 14*uu)*sin(2*l0) - (29 + 5*uu)*cos(2*l0) + (74 + 10*uu)*sin(3*l0) + (320 - 4*uu)*cos(3*l0) - 212*sin(4*l0))/1000;
perdhuz=12+wl-(korbuj/15)-(equ/60);
jddhuz=jdl+(perdhuz/24)-(12/24);
sudtandhuz=2*pi*(jddhuz - 2451545)/365.25;
uudhuz = (jdl - 2451545)/36525;
l0dhuz=(280.46607 + 36000.7698*uudhuz)*pi/180;
deltadhuz=(0.37877 + 23.264*sin((57.297*sudtandhuz - 79.547)*pi/180) + 0.3812*sin((2*57.297*sudtandhuz - 82.682)*pi/180) + 0.17132*sin((3*57.297*sudtandhuz - 59.722)*pi/180))*pi/180;
equdhuz= (-1*(1789 + 237*uudhuz)*sin(l0dhuz) - (7146 - 62*uudhuz)*cos(l0dhuz) + (9934 - 14*uudhuz)*sin(2*l0dhuz) - (29 + 5*uudhuz)*cos(2*l0dhuz) + (74 + 10*uudhuz)*sin(3*l0dhuz) + (320 - 4*uudhuz)*cos(3*l0dhuz) - 212*sin(4*l0dhuz))/1000;
wktdhuz=12+wl-(korbuj/15)-(equdhuz/60);
asd=wktdhuz;
asd2= ((wktdhuz)-(asd));
jamdhuz=asd;
mendhuz=asd2*60;
detdhuz=((asd2*60)-mendhuz)*60;

absol=lintang-delta;
if (absol<0)
{absol=-1*absol;}
percosash=(sin(atan(1/(1+tan(absol))))-sin(delta)*sin(lintang))/(cos(delta)*cos(lintang));
perhaash=acos(percosash)*180/pi;
jdash=jdl+(perhaash/360);
sudtanash=2*pi*(jdash-2451545)/365.25;
uuash=(jdash-2451545)/36525;
l0ash=(280.46607 + 36000.7698*uuash)*pi/180;
deltaash=(0.37877+23.264*sin((57.297*sudtanash-79.547)*pi/180)+0.3812*sin((2*57.297*sudtanash-82.682)*pi/180)+0.17132*sin((3*57.297*sudtanash-59.722)*pi/180))*pi/180;
equash=(-1*(1789 + 237*uuash)*sin(l0ash) - (7146 - 62*uuash)*cos(l0ash) + (9934 - 14*uuash)*sin(2*l0ash) - (29 + 5*uuash)*cos(2*l0ash) + (74 + 10*uuash)*sin(3*l0ash) + (320 - 4*uuash)*cos(3*l0ash) - 212*sin(4*l0ash))/1000;
absol2=lintang-deltaash;
if (absol2<0)
{absol2=-1*absol2;}
altnam=atan(1/(1+tan(absol2)))*180/pi;
koralt=1/(60*tan((altnam+7.31/(altnam+4.4))*pi/180));
altsej=(altnam-koralt)*pi/180;
cosash=(sin(altsej)-sin(deltaash)*sin(lintang))/(cos(deltaash)*cos(lintang));
haash=acos(cosash)*180/pi;
wktash=12+wl-korbuj/15-equash/60+haash/15;
asd5=wktash;
asd6= ((wktash)-(asd5));
jamash=asd5;
menash=asd6*60;
detash=((asd6*60)-menash)*60;

percosmagh=(sin((-0.8333-0.0347*pow(tinggi,0.5))*pi/180)-sin(delta)*sin(lintang))/(cos(delta)*cos(lintang));
perhamagh=acos((sin((-0.8333-0.0347*pow(tinggi,0.5))*pi/180)-sin(delta)*sin(lintang))/(cos(delta)*cos(lintang)))*180/pi;
jdmagh=jdl+perhamagh/360;
sudtanmagh=2*pi*(jdmagh-2451545)/365.25;
uumagh=(jdmagh-2451545)/36525;
l0magh=(280.46607 + 36000.7698*uumagh)*pi/180;
deltamagh= (0.37877+23.264*sin((57.297*sudtanmagh-79.547)*pi/180)+0.3812*sin((2*57.297*sudtanmagh-82.682)*pi/180)+0.17132*sin((3*57.297*sudtanmagh-59.722)*pi/180))*pi/180;
equmagh=(-1*(1789 + 237*uumagh)*sin(l0magh) - (7146 - 62*uumagh)*cos(l0magh) + (9934 - 14*uumagh)*sin(2*l0magh) - (29 + 5*uumagh)*cos(2*l0magh) + (74 + 10*uumagh)*sin(3*l0magh) + (320 - 4*uumagh)*cos(3*l0magh) - 212*sin(4*l0magh))/1000;
cosmagh=(sin((-0.8333-0.0347*pow(tinggi,0.5))*pi/180)-sin(deltamagh)*sin(lintang))/(cos(deltamagh)*cos(lintang));
hamagh=acos(cosmagh)*180/pi;
wktmagh=12+wl-(korbuj/15)-(equmagh/60)+(hamagh/15);
asd7=wktmagh;
asd8= ((wktmagh)-(asd7));
jammagh=asd7;
menmagh=asd8*60;
detmagh=((asd8*60)-menmagh)*60;

sudisya=sudisy*pi/180;
percosisy=(sin(-1*sudisya)-sin(delta)*sin(lintang))/(cos(delta)*cos(lintang));
perhaisy=acos(percosisy)*180/pi;
jdisy=jdl+perhaisy/360;
sudtanisy=2*pi*(jdisy-2451545)/365.25;
uuisy=(jdisy-2451545)/36525;
l0isy=(280.46607 + 36000.7698*uuisy)*pi/180;
deltaisy=(0.37877+23.264*sin((57.297*sudtanisy-79.547)*pi/180)+0.3812*sin((2*57.297*sudtanisy-82.682)*pi/180)+0.17132*sin((3*57.297*sudtanisy-59.722)*pi/180))*pi/180;
equisy=(-1*(1789 + 237*uuisy)*sin(l0isy) - (7146 - 62*uuisy)*cos(l0isy) + (9934 - 14*uuisy)*sin(2*l0isy) - (29 + 5*uuisy)*cos(2*l0isy) + (74 + 10*uuisy)*sin(3*l0isy) + (320 - 4*uuisy)*cos(3*l0isy) - 212*sin(4*l0isy))/1000;
coshaisy=(sin(-1*sudisya)-sin(deltaisy)*sin(lintang))/(cos(deltaisy)*cos(lintang));
haisy=acos(coshaisy)*180/pi;
wktisy=12+wl-korbuj/15-equisy/60+haisy/15;
asd9=wktisy;
asd10= ((wktisy)-(asd9));
jamisy=asd9;
menisy=asd10*60;
detisy=((asd10*60)-menisy)*60;

sudsubuh=sudsub*pi/180;
percossub=(sin(-1*sudsubuh)-sin(delta)*sin(lintang))/(cos(delta)*cos(lintang));
perhasub=acos(percossub)*180/pi;
jdsub=jdl-perhasub/360;
sudtansub=2*pi*(jdsub-2451545)/365.25;
uusub=(jdsub-2451545)/36525;
l0sub=(280.46607 + 36000.7698*uusub)*pi/180;
deltasub=(0.37877+23.264*sin((57.297*sudtansub-79.547)*pi/180)+0.3812*sin((2*57.297*sudtansub-82.682)*pi/180)+0.17132*sin((3*57.297*sudtansub-59.722)*pi/180))*pi/180;
equsub=(-1*(1789 + 237*uusub)*sin(l0sub) - (7146 - 62*uusub)*cos(l0sub) + (9934 - 14*uusub)*sin(2*l0sub) - (29 + 5*uusub)*cos(2*l0sub) + (74 + 10*uusub)*sin(3*l0sub) + (320 - 4*uusub)*cos(3*l0sub) - 212*sin(4*l0sub))/1000;
coshasub=(sin(-1*sudsubuh)-sin(deltasub)*sin(lintang))/(cos(deltasub)*cos(lintang));
hasub=acos(coshasub)*180/pi;
wktsub=12+wl-korbuj/15-equsub/60-hasub/15;
asd11=wktsub;
asd12= ((wktsub)-(asd11));
jamsub=asd11;
mensub=asd12*60;
detsub=((asd12*60)-mensub)*60;
      switch (PIND)
      {case 0xFE :
      {lcd_clear();
      set3=0,set1=h;set2=m;
      while (1)
      {
      lcd_gotoxy(0,0);
      lcd_putsf("Set Jam :");                
      lcd_gotoxy(0,1);
      sprintf(buff,"Jam %d:%d",set1,set2);
      lcd_puts(buff);
      if (PIND.1==0)
      {set1++;
      rtc_set_time(set1,set2,set3);
      delay_ms(150);
      if (set1==24 | set1>=100)
      {lcd_clear();set1=0;
      rtc_set_time(set1,set2,set3);
      delay_ms(20);}}
      if (PIND.2==0)
      {set2++;
      rtc_set_time(set1,set2,set3);
      delay_ms(150);
      if (set2==60 | set2>=100)
      {lcd_clear();set2=0;
      rtc_set_time(set1,set2,set3);
      delay_ms(20);}}
      if (PIND.4==0)
      {break;}
      };break;}
     
      case 0xFD :
      {lcd_clear();
      set4=day,set5=month,set6=year;
      while (1)
      {
      lcd_gotoxy(0,0);
      lcd_putsf("Set Tanggal :");                
      lcd_gotoxy(0,1);
      sprintf(buff,"%d-%d-20%d",set4,set5,set6);
      lcd_puts(buff);
      if (PIND.1==0)
      {set4++;
      rtc_set_date(set4,set5,set6);
      delay_ms(150);
      var1=29;
      if (set6%4==0)
      {var1=30;}
      if (set4==var1 | set4>=100 )
      {lcd_clear();set4=0;
      rtc_set_date(set4,set5,set6);
      delay_ms(20);}}
      if (PIND.2==0)
      {set5++;
      rtc_set_date(set4,set5,set6);
      delay_ms(150);
      if (set5==13 | set5>=100)
      {lcd_clear();set5=1;
      rtc_set_date(set4,set5,set6);
      delay_ms(20);}}
      if (PIND.3==0)
      {set6++;
      rtc_set_date(set4,set5,set6);
      delay_ms(150);
      if (set6==100 | set6>=100)
      {lcd_clear();set6=0;
      rtc_set_date(set4,set5,set6);
      delay_ms(20);}}
      if (PIND.4==0)
      {break;}
      };break;}
      case 0xFB :
      {lcd_clear();
      while (1){
      lcd_gotoxy(0,0);
      sprintf(buff,"shubuh %d:%d",jamsub,mensub);
      lcd_puts(buff);
      delay_ms(200);
      lcd_clear();
      if (PIND.4==0)
      {break;}
      sprintf(buff,"dzuhur %d:%d",jamdhuz,mendhuz);
      lcd_puts(buff);
      delay_ms(200);
      lcd_clear();
      if (PIND.4==0)
      {break;}
      sprintf(buff,"ashar %d:%d",jamash,menash);
      lcd_puts(buff);
      delay_ms(200);
      lcd_clear();
      if (PIND.4==0)
      {break;}
      sprintf(buff,"maghrib %d:%d",jammagh,menmagh);
      lcd_puts(buff);
      delay_ms(200);
      lcd_clear();
      if (PIND.4==0)
      {break;}
      sprintf(buff,"isya %d:%d",jamisy,menisy);
      lcd_puts(buff);
      delay_ms(200);
      lcd_clear();
      if (PIND.4==0)
      {break;}};break;}
      
      default : break;}
      if (jamsub==h&mensub==m| jamisy==h&menisy==m| jammagh==h&menmagh==m| jamash==h&menash==m| jamdhuz==h&mendhuz==m)
      {
      PORTA=0xff;}
      else
      {PORTA=0x00;}     
     };
}    

----



http://www.youtube.com/watch?v=fGCUDa2VsWY&feature=youtu.be







47 comments:

dinda wardhani said...

mau tanya dong, switch nya berfungsi buat apa ya?

khalid ahmad said...

Wah maaf baru baca, tidak ada notifnya di blog saya (aneh). Switch disitu berfungsi untuk bermacam-macam.
Jadi ada 2 tampilan, pertama yaitu menu utama dimana LCD menampilkan waktu dan tanggal seperti tampilan umum pada Jam / HP, kedua yaitu tampilan settingan dimana LCD menampilkan settingan-settingan untuk menset waktu dan menset tanggal.

Jika LCD sedang berada pada mode pertama (menu utama), lalu apabila switch 1 di tekan, maka mode ‘menset jam’ akan aktif. Bila mode ‘menset jam’ sudah aktif, maka switch 2 akan berfungsi sebagai penambahan jam, switch 3 akan berfungsi sebagai penambahan menit, dan switch 5 akan berfungsi sebagai penampil menu utama yaitu menampilkan jam dan tanggal di LCD.
Lalu apabila switch 2 ditekan, maka mode ‘menset tanggal’ akan aktif. Bila mode ‘menset tangga’ sudah aktif, maka switch 2 akan berfungsi sebagai penambahan tanggal, switch 3 berfungsi sebagai penambahan bulan, switch 4 berfungsi sebagai penambahan tahun, dan switch 5 berfungsi sama seperti saat berada di mode ‘menset jam’ yaitu sebagai penampil menu utama yaitu menampilkan jam dan tanggal di LCD.
Lalu apabila switch 3 ditekan, maka mode 'menampilkan waktu shalat pada hari itu (dzuhur ashar maghrib isya subuh)' akan aktif. Sehingga LCD akan memberitahu dzuhur waktu shalat jam sekian, ashar sekian, dsb. Switch yang berfungsi pada mode ini hanya switch 5 yaitu untuk kembali ke menu utama yaitu menampilkan jam dan tanggal di LCD.

harianto bonek said...

itu cara penetapan waktu sholatnya gimana masuk programnya ?

khalid ahmad said...

Cara perhitungan waktu shalat agak sedikit rumit untuk dijelaskan, karena banyak faktor yang mempengaruhi. Untuk lebih jelasnya dapat di baca disini mengenai cara / rumus menghitung waktu shalat : http://jokoradityo.wordpress.com/2010/06/16/cara-menghitung-waktu-shalat/

Dan sudah dilakukan pengujian dengan website waktu shalat international, yang saya setting kordinatnya adalah kota jakarta, hanya terjadi perbedaan selang 1 menit dari alat dengan website tersebut. http://www.islamicfinder.org/

harianto bonek said...

program di atas saya compile kok eror y bang .

khalid ahmad said...

Masa error? Barusan saya tes ulang buat project baru lalu copy paste dari tulisan diatas tidak ada error kok, saya pakai compiler CodeVisionAVR. Harianto compilernya pakai software apa? Lalu error yang muncul seperti apa tulisannya, bisa tolong di print screen?

harianto bonek said...

ini bang file nya https://www.dropbox.com/s/kaehz56ii4mj7op/jam.rar

mohon bantuannya :)

khalid ahmad said...

Waduh, jelas banyak yang error Har. Karena kamu ini tidak langsung copas semuanya, tetapi using CodeWizardAvr. Kamu langsung block semua codingannya lalu copas saja semuanya ini yang ada di atas, tidak usah di tambah2in, tidak usah dikurang2in, ga ada yang error kok, paling hanya akan ada warning saja.
Dan yang harus di ingat lagi, di codingan saya di atas itu pakai IC nya ATMEGA32, bukan 8535.
Jangan lupa untuk di configure ke IC ATMEGA32 pada software CodevisionAVRnya.
IC 8535 tidak akan sanggup menyimpan coding memori sebesar itu, karena hanya berkapasitas 8 KB. Sedangkan codingan diatas memakan memori sampai kira2 24 KB kalau tidak salah, saya lupa tepatnya berapa.
Yang pasti diatas 16 KB, karena saya pernah coba dengan ATMEGA16 juga tidak bisa, akhirnya pakai ATMEGA32.

harianto bonek said...

oalah iya mas terma kasih ternyata gak bisa y pake atmega 16 heheh

untuk program di atas waktu sholatnya itu untuk daerah mana mas? kalo ingin ganti waktu daerah surabaya gimana mas program mana yang harus d ganti.

terima kasih

khalid ahmad said...

Yang di atas untuk waktu daerah Jakarta. Karena pada alat ini tidak memakai sensor GPS jadi alat ini hanya terbatas pada satu atau beberapa kota saja, karena kordinat lintang, bujur, dan ketinggian dari permukaan lautnya harus di set manual.

Kalau pakai sensor GPS bisa merequest data2 itu dari satelit, sehingga memungkinkan alatnya untuk dapat dipakai di belahan bumi mana saja.

Kalau untuk Surabaya saya rasa yang perlu diganti hanya di korlin dan korbuj (dengan asumsi ketinggian dari permukaan laut sama seperti jakarta, yaitu 50m) yang mana menjadi :
korlin=-1*7.2492,korbuj=112.7508

Dan sudah saya bandingkan antara waktu shalat di alat (yang sudah saya ganti codingannya dengan korlin dan korbuj diatas) dengan situs international islamicfinder.org (dengan settingan waktu Surabaya), dan hasilnya terkadang terjadi perbedaan selang waktu antara 1 atau 2 menit.

Dan ngomong2 program di atas silahkan di copy kan lagi, karena baru saja saya edit postingannya dan mengganti sedikit codingannya, karena setelah saya tes tadi ternyata nemu satu bug yang belum diperbaiki. Jadi barusan saya perbaiki.

harianto bonek said...

oke mas terima kasih saya coba dulu

harianto bonek said...

programnya hasilnya kok gini mas
setelah saya download di lcd keluar "Time 8 :19:20 dan date 24;4:11"
-Kemudian saya tekan switch 1 di tekan, maka mode ‘menset jam’ setelah itu saya set dengan menekan tombol kok gak bisa nge set ya tampil set jam kemudian belum di set tampil ke menu utama.
-Begitu juga saat saya menekan mode tanggal tidak bisa saya set muncul set tanggal sebentar kemudian tampil menu utama
-Saat sayaa tekan switch 3 juga begitu untuk melihat jadwal sholat saat saya tekan switch 3 tampil subuh 4;30 kemudian tanpa menekan apa2 kembali ke menu utama

khalid ahmad said...

Oh iya itu sepertinya saya lupa mengembalikan programnya, karena waktu itu memang sengaja saya set seperti itu supaya saya bisa tahu waktu shalatnya seberapa tepat dengan yang di web.
Sudah saya ganti beberapa listing program, silahkan di copy lagi yang ada di atas.
Tapi klo menset waktu dan tanggalnya tidak ada masalah kok, mungkin agak sedikit lama dalam menekan switchnya karena delaynya mungkin.

harianto bonek said...

kok tetep gan fungsi tombol tidak berfungsi seperti sesuai program

khalid ahmad said...

Rangkaian dan programnya sudah sesuai dengan yang di atas? Sudah pakai IC RTC nya? Kalau sudah sesuai semua harusnya mau, kalau tidak berjalan berarti ada yang tidak sesuai.

harianto bonek said...

sudah semua bro

khalid ahmad said...

Wah entah deh kalau sudah di flash ulang dan masih ga mau juga, coba saja di ganti switchnya atau jumpernya di cek kembali.
Kalau program sih tidak ada yang salah sepertinya, karena di simulasi proteus saja sudah berjalan dengan baik kok. Berarti hanya masalah di alat / rangkaiannya.

harianto bonek said...

lha gini bang kemaren juga tak coba di proteus juga gak bisa jalan programnya ini filenya https://www.dropbox.com/s/ofdv7mzbwdwulxe/Coba.rar

mohon pencerahan

khalid ahmad said...

Oh, saya sudah lihat. Pada desain schematic di proteusnya tidak ada masalah. Saya sudah coba load dengan program saya dan berhasil kok. Masalahnya memang terletak pada program anda mas Hari. Sebelumnya saya sudah bilang ya, kalau ini program di copas saja langsung. Ga perlu di tambahin ga perlu di kurangin. Tetapi problemnya di anda adalah, anda masih saja menggunakan codewizard dalam pembuatan programnya. Entah saya tidak tahu apa maksud anda dengan tetap memakai codewizard, mungkin agar ada komentar-komentar dan sebagainya. Jadi saran saya sekarang adalah, buka project anda, block semua program, lalu delete. Setelah itu copy listing program saya yg ada di atas, dan paste ke project anda, lalu build. Dan simulasikan di proteus. Terima kasih.

harianto bonek said...

oh iya maaf mas sudah bisa . . .
untuk hitungan waktu sholat kok selisih banyak y mas

Hasil Program daerah surabaya (korlin=7.2492 & korbuj =112.7508)

I=18:44
S=3:46
L=11:17
A=14:43
M=17:34

hasil di web islamicfinder

I=6:36
S=4:28
L=11:35
A=2:56
M=5:26

khalid ahmad said...

Dilihat sekali lagi dengan baik comment saya 7 June.

korlin=-1*7.2492,korbuj=112.7508

Kurang minus(-)nya tuh sepertinya di korlin. Saya sudah tes sebelum comment diatas sepertinya, dan ga beda jauh juga kok hasilnya. Entah deh saya yang belum tes atau saya yang lupa. Commentnya sudah sebulan yang lalu (7 june) sih. Di coba saja dahulu.

harianto bonek said...

sudah tapi hasilnya ndak pas gan selisih jauh

khalid ahmad said...

Saya sudah coba kok barusan, bahkan dengan rangkaian yang sudah anda buat di proteus. Hanya saya ganti korlin dan korbujnya, dan hasilnya sama seperti yang pernah saya katakan sebelumnya, tidak berbeda jauh dengan waktu surabaya yang ada di islamicfinder.org.

Coba anda tidak usah edit-edit lagi coding yang lainnya, copy paste saja coding di atas, lalu cari tulisan "korlin=-1*6.1744,korbuj=106.8294", lalu hapus, ganti dengan tulisan "korlin=-1*7.2492,korbuj=112.7508". Lalu build, dan selesai. Terima kasih.

harianto bonek said...

oh iya mas terima kasih. sudah tepat waktunya
oh ya mas kenapa waktu sholatnya menggunakan rumus kenapa kok ndak langsung masukan waktu sholat yang ada di islamicfinder.org . . .

khalid ahmad said...

Alhamdulillah ternyata sudah bisa ya. Ya itu karena perhitungan shalat memang seperti itu, kalau masukin langsung justru malah memakan memori lebih banyak. Masukin 1 tahun saja ada 354 hari. 1 hari ada 5 waktu. 354 x 5, waduh mesti masukin berapa kodingan tuh. Sudah begitu itu juga hanya bisa untuk 1 tahun saja. Lebih efektif pakai rumus, bisa sepanjang masa. Tapi lebih efektif lagi pakai sensor gps. Program lebih sedikit tidak sepanjang itu, plus bisa di pakai di seluruh pelosok dunia.

harianto bonek said...

oalah gitu y mas alasannya knp kok ndak masukan jadwal sholat langsung dari islamicfinder, , , , , ,makasih mas ini saya lagi buat jam untuk tunanetra plus pengingat waktu sholat dengan output suara yang tak simpen di mmc, terima kasih program perhitungan waktu sholatnya mas heheh.

khalid ahmad said...

Ok sama2. Semoga berhasil.

harianto bonek said...
This comment has been removed by the author.
harianto bonek said...

Sip mas . .
oh ya mas kira2 yang menyebabkan perbedaan antara waktu sholat perhitungan dengan waktu sholat di islamicfinder.org apa y mas . . .?

khalid ahmad said...

Banyak, yang dari islamicfinder.org kan kita hanya mengcopy kordinat bujur dan kordinat lintangnya saja. Sedang perhitungan shalatnya di islamic finder kita tidak tahu seperti apa. Dan ketinggian dari bawah permukaan lautnya juga kalau di alat sudah di masukan 10m. Belum tentu kalau di islamic finder mereka menggunakan 10m juga, bisa jadi 9m, 11m, 12m, atau lainnya. Perbedaan kecil inilah mungkin yang menyebabkan adanya perbedaan selang berapa second dengan islamic finder.

Atau bisa juga pengaruh dari logika pemrogramannya, karena di variabel yang saya gunakan banyak yang seharusnya bukan bilangan bulat tapi saya ubah ke bilangan bulat. Misal variabel waktu zuhur tanggal sekian harusnya 12.00 + 40 detik, tapi saya jadikan integer sehingga jadi 12.00 saja, bisa jadi kalau di islamicfinder.org kalau detiknya >30 maka di anggap 1 menit, sehingga akan tertulis 12.01. Dan masih banyak contoh lainnya, nah perbedaan-perbedaan kecil ini juga bisa menjadi pengaruh.

Intinya kalau logika pemrograman dan data yang di gunakan oleh islamicfinder.org dengan kita sama, maka pasti hasil waktunya akan sama. Tapi kalau hasil waktunya berbeda walau hanya sedikit saja, berarti logika pemrograman atau data yang kita masukan ada yang berbeda.

Karena Islamicfinder.org tidak menshare cara perhitungan dan data mereka, maka sulit untuk membuat hasil sama persis dengan perhitungan mereka.

sicangklong said...

Mas program di atas saya compile terdapat error pada bagian rtc_get_date(&day,&month,&year);too few arguments in function call
minta dibantu kesalahannya dimana ya
terimakasih

khalid ahmad said...

Ah maaf baru balas, habis sibuk sidang dan mencari kerja kemarin2 ini. Itu IC yang digunakan ATMEGA32? Lalu program di atas sudah di copy semua?

MBC said...

Mas program saya jufa problemnya sama ,setelah saya compile terdapat error pada bagian rtc_get_date(&day,&month,&year);too few arguments in function call
ic sudah digunakan ATMEGA32
terimakasih

khalid ahmad said...

Program di atas sudah di copy semua? Tidak ada yang ditambah dan dikurangi?

MBC said...

tidak mas saya copy paste aja tapi errornya itu mas , apa versi cvavr saya kurng tinggi ya? saya pake codevision 2.05.3

MBC said...

mungkin kalo mas khalid tidak keberatan saya tolong dikirimi file codevision mas ke lambizkid@yahoo.com

khalid ahmad said...

Oh iya, kamu jangan pakai codevision avr yg evaluated version. Saya pakai yang versi : 2.04.41 advanced

Barusan sudah saya copas semua yang diatas dan saya compile tidak ada error kok, kalau warning sih memang ada dari dulu juga.

khalid ahmad said...

Eh salah ketik versinya, yg saya pakai : 2.04.4a Advanced

khalid ahmad said...

Saya sih ga masalah kirim filenya, tapi filenya sama codingan di atas sama persis kok. Jadi saya pikir ya percuma aja kalau saya kirim, karena sepertinya masalahnya bkn di codingannya.
Oh iya, ini berhubung saya sudah rada jarang buka blog ini, lagi bimbang cari2 kerjaan + modem speedy dirumah juga sudah dicabut, jadi saya pakai paket simcard buat modem, takut kalau2 replynya lama nanti kalau di comment sini. Email ke saya saja kalau butuh reply cepat : admin@khalidahmad.com
Karena saya hampir tiap hari cek email + email itu sudah terintegrasi dengan hp saya, jadi kalau ada email masuk ada notifikasi di hp saya.
Ok, selamat mencoba, semoga berhasil :D

arief said...

Maaf mau tanya gan, untuk koordinat lintang yang + gimana caranya yah?
saya coba dengan koordinat kota gorontalo koordinat lintang = 0.5344 dan koordinat bujur = 123.0617, kalau dikalkulasi hasilnya jauh dari islamicfinder.org
mohon pencerahan

khalid ahmad said...

Kalau + ya tinggal di hilangkan saja - nya.
Cari variabel berikut :
korlin=-1*6.1744,korbuj=106.8294

Ganti angkanya dengan kordinat lintang yang ada di islamic finder.
Ada 2 gorontalo di islamic finder saya lihat, tuan pakai yang mana?
- Gorontalo, (State: Sulawesi Utara)
(0.53 N, 123.06 E)
- Gorontalo, (State: Gorontalo)
(0.67 N, 123 E)

Dari yang saya analisa sih sepertinya tuan pakai yang pertama. Baik, jadi begini tuan, sepertinya tuan belum mengerti cara mengkonversi bujur dan lintang. Jadi misal ada data kordinat gorontalo seperti ini :

00º 53’ LU 123º 06’ BT (Dibaca 0 derajat 53 menit lintang utara dan 123 derajat 6 menit bujur timur)

Lalu mengkonversinya untuk dimasukkan kedalam perhitungan shalat bukan menjadi 0,53. Tetapi 0 + (53/60) maka didapat hasil = 0,883
Begitu juga dengan bujur, bukan 123,06. Tetapi 123 + (06/60) maka didapat hasil = 123,1.

Lalu masukkan angka itu ke dalam variabel yang saya suruh cari tadi. Oke, selamat mencari dan mencoba :D

Taukhid Effendy said...

untuk memntukan waktu imsyak gimana gan??????????

khalid ahmad said...

Kalau imsyak saya belum tahu bagaimana perhitungan matematikanya.
Tapi kalau saya perhatikan sepertinya ada yang hanya dengan mengurangkannya dengan waktu shubuh 10 menit. Jadi misal shubuh 4.30, maka imsak 4.20.

Tapi saya lihat disini : http://falak-com.blogspot.com/2011/11/penentuan-waktu-waktu-shalat-dan-puasa.html

Cara menghitungnya begini :
Wkt Imsak = MP + KWK + T.Imsak dimana harga (T.Imsak) :
T.Imsak = Cos-1 ( - Tan PE x Tan DS + Sin (-22) / Cos PE x Cos DS) / 15

Mungkin bisa di gunakan cara perhitungan di atas. (Saya belum mencobanya sih)

Septian D Chandra said...

Assalamu'alaykum mas, saya mau tanya. Untuk waktu dzhuhur sampai maghrib insyaallah sudah tepat, kurang lebih ketelitannya 1 menit. Tapi untuk shubuh meleset 7 menit dan isya kurang 6 menit. Bagaimana kira2 solusinya ya mas? Mohon bantuannya. Jazakallah Khairan.

Abu Qohar Al-Irhaby said...

Assalamu'alaykum mas, saya mau minta code hexnya boleh..

Agustri Saputro said...
This comment has been removed by the author.
My Blog said...

mas, klo boleh tau, itu di float, maksud dari jddhuz,sudtandhuz,uudhuz,l0dhuz,deltadhuz,equdhuz,wktdhuz,asd2,asd6, dll itu apa ya ?

jddhuz = apa

kalo boleh, kasi tau dong apa maksud singkatannya, biar mudah dipahami.. makasih.

Post a Comment

 
Free Website TemplatesFreethemes4all.comFree CSS TemplatesFree Joomla TemplatesFree Blogger TemplatesFree Wordpress ThemesFree Wordpress Themes TemplatesFree CSS Templates dreamweaverSEO Design