Bu sistem, belirli vakitlerde namaz zamanlarını hatırlatmak, minare ışıklarını kontrol etmek ve özel durumları ele almak için tasarlanmıştır.
Kodun ana bölümlerini aşağıda bulabiliriz:
- Kütüphane ve Tanımlamaların Eklenmesi: Arduino’nun çalışması için gerekli olan kütüphaneler eklenir ve pin bağlantıları tanımlanır.
- Setup Fonksiyonu: Arduino’nun başlangıç ayarları yapılır. Bu aşamada seri iletişim başlatılır, pinler ayarlanır, LCD ve RTC başlatılır ve SD kart hazırlanır.
- Loop Fonksiyonu: Arduino, bu döngü içinde sürekli olarak çalışır. Her döngüde mevcut zaman RTC ile kontrol edilir ve belirlenmiş namaz zamanlarına göre işlem yapılır. Namaz vakti geldiğinde, ilgili ezan sesi çalınır, LCD ekrana mesaj yazılır ve minare ışıkları kontrol edilir. Ayrıca, Cuma namazı öncesinde ve Ramazan ayı boyunca özel durumlar ele alınır.
- Reset Fonksiyonu: Bu fonksiyon, Arduino kartını sıfırlamak için kullanılır.
Bu sistem, kullanıcıya belirli namaz vakitlerinde hatırlatıcılar sunar ve ayrıca Cuma namazı gibi özel durumları ve Ramazan ayına özgü zamanlamaları da dikkate alır. Bu şekilde, kullanıcıya İslami ibadetlerini zamanında yerine getirmesi için yardımcı olur.
Adım adım sıra ile gideceğiz.
1.DS1302 RTC gerçek zaman bilgisinin Arduino’ya eklenmesi
Arduino Uno ve bir RTC (Gerçek Zaman Saati) modülü kullanarak zamanı izlemek için MyRealTimeClock.h
gibi özel bir kütüphane kullanabilirsiniz. RTC modülü, Arduino Uno’ya bağlanan bir saat entegresi içerir ve gerçek zamanlı saat ve tarih bilgilerini sağlar.
MyRealTimeClock.h Hakkında bilgilendirme:
Kod Örneği:
#include <MyRealTimeClock.h> DS1302 RTC kütüphanesi MyRealTimeClock myRTC(6, 7, 8); //Or CLK -> 6 , DAT -> 7, Reset -> 8 pinleri arduino'ya ekledik void setup() { Serial.begin(9600); myRTC.setDS1302Time(15, 36, 23, 7, 4, 2, 2024); //(saniye, dakika, saat, haftanın günü, ayın günü, ay, yıl) DS1302'yı ayarlamak için } void loop() { myRTC.updateTime(); //Guncel Saati bilgisini istiyoruz int suanzaman[6]={myRTC.month,myRTC.dayofmonth,myRTC.year,myRTC.hours,myRTC.minutes,myRTC.seconds}; // Saat ve Tarih bilgisini suanzaman içine kaydettik Serial.println(suanzaman[2]); // serial porta gönderdik //suanzaman[0]=>Ay bilgisini, suanzaman[1]=>Gün bilgisini, suanzaman[2]=>Yıl bilgisini, suanzaman[3]=>Saat bilgisini, suanzaman[4]=>Dakika bilgisini, suanzaman[5]=>Saniye bilgisini temsil eder }
2.LCD Ekranın Arduino’ya eklenmesi
LiquidCrystal_I2C_AvrI2C.h
, I2C arabirimini kullanan LCD ekranların Arduino ile kullanımını kolaylaştıran bir kütüphanedir. Bu kütüphane genellikle standart 16×2 veya 20×4 LCD ekranlarla kullanılır ve I2C adaptörü aracılığıyla LCD ekranı Arduino’ya bağlamayı sağlar.
İşte LiquidCrystal_I2C_AvrI2C.h
kütüphanesini kullanarak bir LCD ekranı Arduino ile nasıl kullanacağınıza dair temel bir örnek:
- Bağlantılar: LCD ekranı ve I2C adaptörünü Arduino’ya bağlamak için gereken bağlantılar aşağıdaki gibidir:
- SDA: Arduino A4 pinine bağlanır.
- SCL: Arduino A5 pinine bağlanır.
- VCC: Arduino’nun 5V pinine bağlanır.
- GND: Arduino’nun GND pinine bağlanır.
- Kütüphane ve Nesne Oluşturma: İlk olarak,
LiquidCrystal_I2C_AvrI2C.h
kütüphanesini projenize eklemelisiniz. Ardından, bir LCD nesnesi oluşturmanız gerekir.
Kod Örneği:
#include <MyRealTimeClock.h> DS1302 RTC kütüphanesi #include <LiquidCrystal_I2C_AvrI2C.h> I2C 17x2 Ekran kütüphanesi MyRealTimeClock myRTC(6, 7, 8); //Or CLK -> 6 , DAT -> 7, Reset -> 8 pinleri arduino'ya ekledik LiquidCrystal_I2C_AvrI2C lcd(0x27,17,2); //lcd isminde 0x27 adresli bir 17x2 ekran nesnesi oluşturduk void setup() { Serial.begin(9600); //myRTC.setDS1302Time(15, 36, 23, 7, 4, 2, 2024); //(saniye, dakika, saat, haftanın günü, ayın günü, ay, yıl) DS1302'yı ayarlamak için lcd.begin(); //lcd'yi başlatıyoruz lcd.backlight(); //lcd arka ışığını açıyoruz. } void loop() { myRTC.updateTime(); //Guncel Saati bilgisini istiyoruz int suanzaman[6]={myRTC.month,myRTC.dayofmonth,myRTC.year,myRTC.hours,myRTC.minutes,myRTC.seconds}; // Saat ve Tarih bilgisini suanzaman içine kaydettik lcd.setCursor(0,0); //1.Satır 1.sıradan başlamasını belirtiyoruz lcd.print(myRTC.hours); //saati ekrana gönderdik lcd.print(":"); //saatın hemen yanına : işareti gönderdik lcd.print(myRTC.minutes); //Dakikayı ekran gönderdik lcd.print(":"); //Dakikanın hemen yanına : işareti gönderdik lcd.print(myRTC.seconds); //Saniyeyi ekrana gönderdik lcd.setCursor(0,1); //2.Satır 1.sıradan başlamasını belirtiyoruz lcd.print(myRTC.dayofmonth); //Günü ekrana gönderdik lcd.print("/"); //Günün hemen yanına / işareti gönderdik lcd.print(myRTC.month); //Ay bilgisini ekrana gönderdik lcd.print("/"); //Ayın hemen yanına / işareti gönderdik lcd.print(myRTC.year); //Yıl bilgisini ekrana gönderdik }
Kütüphane hakkında daha fazla bilgi almak isterseniz GitHub link’ını buraya ekliyorum. I2C 16×2 için LiquidCrystal_I2C_AvrI2C.h kütüphanesini bulamadıysanız LiquidCrystal_I2C_AvrI2C.zip dosyasını buraya ekledim.
3.MicroSD kartın Arduino’ya eklenmesi
MicroSD kartın Arduino’ya eklenmesi için genellikle bir MicroSD kart adaptörü veya modülü kullanılır. Bu modül, Arduino ile SPI (Serileştirilmiş Paralel Arabirim) üzerinden iletişim kurar ve Arduino’nun MicroSD kart ile dosya okuma ve yazma işlemlerini gerçekleştirmesini sağlar.
İşte MicroSD kartı Arduino’ya eklemek için adımlar:
- Bağlantılar: MicroSD kart modülünü Arduino’ya bağlamak için aşağıdaki bağlantıları yapın:
- MISO (Master In Slave Out): Arduino’nun MISO pinine bağlanır.
- MOSI (Master Out Slave In): Arduino’nun MOSI pinine bağlanır.
- SCK (Serial Clock): Arduino’nun SCK pinine bağlanır.
- CS (Chip Select): Arduino’nun herhangi bir dijital pinine bağlanabilir, ancak genellikle D10 kullanılır.
- VCC: Arduino’nun 5V veya 3.3V pinine bağlanır (MicroSD kart modülünün çalışma gerilimine bağlı olarak).
- GND: Arduino’nun GND pinine bağlanır.
- Kütüphane Kurulumu: MicroSD kartı Arduino ile kullanmak için
SD.h
kütüphanesini kullanmanız gerekir. Bu kütüphane, Arduino’nun MicroSD kart ile iletişim kurmasını sağlar. Arduino IDE’de bu kütüphane kurulu gelir.
#include <MyRealTimeClock.h> DS1302 RTC kütüphanesi #include <LiquidCrystal_I2C_AvrI2C.h> I2C 16x2 Ekran kütüphanesi #include <SD.h> // sd kart kütüphanesi Arduinı IDE ile otomatik kurulmuş olur #define Sd_Chip_pin 4 //MicoSD kartın CS haberleşme pini arduino'nun 4 nolu pinine bağlı olduğunu belirttik MyRealTimeClock myRTC(6, 7, 8); //Or CLK -> 6 , DAT -> 7, Reset -> 8 pinleri arduino'ya ekledik LiquidCrystal_I2C_AvrI2C lcd(0x27,17,2); //lcd isminde 0x27 adresli bir 17x2 ekran nesnesi oluşturduk void setup() { Serial.begin(9600); //myRTC.setDS1302Time(15, 36, 23, 7, 4, 2, 2024); //(saniye, dakika, saat, haftanın günü, ayın günü, ay, yıl) DS1302'yı ayarlamak için lcd.begin(); //lcd'yi başlatıyoruz lcd.backlight(); //lcd arka ışığını açıyoruz. } void loop() { myRTC.updateTime(); //Guncel Saati bilgisini istiyoruz int suanzaman[6]={myRTC.month,myRTC.dayofmonth,myRTC.year,myRTC.hours,myRTC.minutes,myRTC.seconds}; // Saat ve Tarih bilgisini suanzaman içine kaydettik lcd.setCursor(0,0); //1.Satır 1.sıradan başlamasını belirtiyoruz lcd.print(myRTC.hours); //saati ekrana gönderdik lcd.print(":"); //saatın hemen yanına : işareti gönderdik lcd.print(myRTC.minutes); //Dakikayı ekran gönderdik lcd.print(":"); //Dakikanın hemen yanına : işareti gönderdik lcd.print(myRTC.seconds); //Saniyeyi ekrana gönderdik lcd.setCursor(0,1); //2.Satır 1.sıradan başlamasını belirtiyoruz lcd.print(myRTC.dayofmonth); //Günü ekrana gönderdik lcd.print("/"); //Günün hemen yanına / işareti gönderdik lcd.print(myRTC.month); //Ay bilgisini ekrana gönderdik lcd.print("/"); //Ayın hemen yanına / işareti gönderdik lcd.print(myRTC.year); //Yıl bilgisini ekrana gönderdik }
4.TMRpcm Kütüphanesinin Arduino’ya eklenmesi
TMRpcm.h
, Arduino ile ses çalma yetenekleri eklemek için kullanılan popüler bir kütüphanedir. Bu kütüphane, Arduino’nun dijital pinlerini kullanarak WAV dosyalarını SD kart üzerinden çalmanızı sağlar. Bu, Arduino projelerinizde ses efektleri, müzik veya konuşma eklemek için kullanışlıdır.
İşte TMRpcm.h
kütüphanesi ile MicroSD kartın Arduino’ya nasıl eklenileceğine dair temel adımlar:
Kütüphane ve Nesne Oluşturma: İlk olarak, TMRpcm.h
kütüphanesini projenize eklemeniz gerekir. Ardından, bir TMRpcm
nesnesi oluşturmanız gerekir.Kütüphanemiz hoparlör pini olarak dokuzuncu pini otomatik olarak almıştır. Çünkü ses çıkışları arduino ile 9. pinden yapılmaktadır.
WAV dosyası Oluşturma:
Siteye girdiğimizde ilk başta mp3 dosyamızı yükleyelim ve aşağıdaki resimdeki gibi ayarları yapalım ve mp3 dosyamızı çevirelim.
Çevrilmiş müzik dosyasını 1.wav olarak kaydettiyseniz mikro sd karta yükleyelim ve modülümüze takalım. Geriye arduino’muza kodu yükleyelim
Dikkat edilmesi gerekenler;
1.MicroSD kartı FAT32 ile biçimlendirmiş olmanız gerekiyor. (Not: SD karta yükleme yapmadan 2 kez FAT32 ile biçimlendirin)
2.WAV dosyalarında isim değişikliği vb. şeyler yapmayın çevirdiğiniz dosyayı kopyalayarak SD karta atın. (örnek: 1.WAV)
3.SD kartda klasör oluşturmayın. Yükleyeceğiniz WAV dosyası ana dizinde olsun
4.WAV dosyasında harf kullanmayın. Çevireceğiniz Mp3 veya Mp4 dosyasını audio.online-convert.com’a yüklemeden isim oluşturunuz.
5.WAV convert ederken Change bit resolution: 8 Bit , Change audio frequency: 16000 Hz , Change audio channels: MONO ve Change PCM format: U8 seçin
Kod Örneği:
#include <MyRealTimeClock.h> DS1302 RTC kütüphanesi #include <LiquidCrystal_I2C_AvrI2C.h> I2C 16x2 Ekran kütüphanesi #include <SD.h> // sd kart kütüphanesi Arduinı IDE ile otomatik kurulmuş olur #define Sd_Chip_pin 4 //MicoSD kartın CS haberleşme pini arduino'nun 4 nolu pinine bağlı olduğunu belirttik #include <TMRpcm.h> // melodi çalma kütüphanesi #include "SPI.h" char val; TMRpcm tmrpcm; // melodi fonksiyonu oluşturma TMRpcm wav; MyRealTimeClock myRTC(6, 7, 8); //Or CLK -> 6 , DAT -> 7, Reset -> 8 pinleri arduino'ya ekledik LiquidCrystal_I2C_AvrI2C lcd(0x27,17,2); //lcd isminde 0x27 adresli bir 17x2 ekran nesnesi oluşturduk int anficalistir = 2; //Anfi çalıştırmak için 2 nolu pini çıkış olarak atayacağız int minareisikyak = 3; //Minare Işıkları için 3 nolu pini çıkış olarak atayacağız int ramazanayimi=0; //Ramazan ayı içinde 1 yapacağız void(* resetfunc) (void) = 0; //WAV Dosyası çalıştıkdan sonra RAM'ı boşaltmak için buraya donuyoruz void setup() { pinMode(anficalistir, OUTPUT); //çıkış olarak ayarlandı pinMode(minareisikyak, OUTPUT); //çıkış olarak ayarlandı digitalWrite(anficalistir, LOW); //Çıkış LOW yapıldı digitalWrite(minareisikyak, LOW); //Çıkış LOW yapıldı Serial.begin(9600); //myRTC.setDS1302Time(15, 36, 23, 7, 4, 2, 2024); //(saniye, dakika, saat, haftanın günü, ayın günü, ay, yıl) DS1302'yı ayarlamak için lcd.begin(); //lcd'yi başlatıyoruz lcd.backlight(); //lcd arka ışığını açıyoruz. tmrpcm.speakerPin = 9; // hoparlör + bacağı digital 9. pine tak if (!SD.begin(Sd_Chip_pin)) { // sd module bağlandık return; } } void loop() { myRTC.updateTime(); //Guncel Saati bilgisini istiyoruz int suanzaman[6]={myRTC.month,myRTC.dayofmonth,myRTC.year,myRTC.hours,myRTC.minutes,myRTC.seconds}; // Saat ve Tarih bilgisini suanzaman içine kaydettik int sabahezansaati=1; //Sabah Ezan Vakti için Saatı ayarladık int sabahezandakikasi=46; //Sabah Ezan Vakti için Dakikayı ayarladık int sabahezansaniyesi=0; int oglenezansaati=1; //Öğlen Ezan Vakti için Saatı ayarladık int oglenezandakikasi=50; //Öğlen Ezan Vakti için Dakikayı ayarladık int oglenezansaniyesi=0; int ikindiezansaati=23; //İkindi Ezan Vakti için Saatı ayarladık int ikindiezandakikasi=20; //İkindi Ezan Vakti için Dakikayı ayarladık int ikindiezansaniyesi=0; int aksamezansaati=23; //Akşam Ezan Vakti için Saatı ayarladık int aksamezandakikasi=30; //Akşam Ezan Vakti için Dakikayı ayarladık int aksamezansaniyesi=0; int yatsiezansaati=23; //Yatsı Ezan Vakti için Saatı ayarladık int yatsiezandakikasi=40; //Yatsı Ezan Vakti için Dakikayı ayarladık int yatsiezansaniyesi=0; if (suanzaman[3]==sabahezansaati && suanzaman[4]==sabahezandakikasi && suanzaman[5]==sabahezansaniyesi) //Şuan Zaman Sabah ezanı zamanına eşit olduğunda çalışacak { digitalWrite(anficalistir, HIGH); //Anfi Başlatıldı lcd.setCursor(0,0); lcd.print("EZAN OKUNUYOR... "); lcd.setCursor(0,1); lcd.print(" SABAH "); lcd.print(myRTC.hours); lcd.print(":"); lcd.print(myRTC.minutes); lcd.print(":"); lcd.print(myRTC.seconds); lcd.print(" "); tmrpcm.play("1.wav"); // Sabah ezanı SD kartdaki Dosyamız tmrpcm.volume(1); //Sesi yükselttik tmrpcm.quality(1); //Ses kalitesi max. yapıldı delay(306000); //EZAN OKUNURKEN 5.1 DAKİKA BEKLE tmrpcm.stopPlayback(); //WAV dosyası durduruldu tmrpcm.disable(); //Kütüphane kapatıldı digitalWrite(anficalistir, LOW); //Anfi kapatıldı lcd.setCursor(0,0); lcd.print(" SABAH EZANI "); lcd.setCursor(0,1); lcd.print("EZAN OKUNDU.... "); delay(60000); resetfunc(); // reser atıldı } else if (suanzaman[3]==oglenezansaati && suanzaman[4]==oglenezandakikasi && suanzaman[5]==oglenezansaniyesi) { digitalWrite(anficalistir, HIGH); lcd.setCursor(0,0); lcd.print("EZAN OKUNUYOR.. "); lcd.setCursor(0,1); lcd.print(" OGLEN "); lcd.print(myRTC.hours); lcd.print(":"); lcd.print(myRTC.minutes); lcd.print(":"); lcd.print(myRTC.seconds); lcd.print(" "); tmrpcm.play("2.wav"); tmrpcm.volume(1); tmrpcm.quality(1); delay(210000);//EZAN OKUNURKEN 3,5 DAKİKA BEKLE tmrpcm.stopPlayback(); tmrpcm.disable(); digitalWrite(anficalistir, LOW); lcd.setCursor(0,0); lcd.print(" OGLEN EZANI "); lcd.setCursor(0,1); lcd.print("EZAN OKUNDU.... "); delay(60000); resetfunc(); } else if (suanzaman[3]==ikindiezansaati && suanzaman[4]==ikindiezandakikasi && suanzaman[5]==ikindiezansaniyesi) { digitalWrite(anficalistir, HIGH); lcd.setCursor(0,0); lcd.print("EZAN OKUNUYOR.. "); lcd.setCursor(0,1); lcd.print(" IKINDI "); lcd.print(myRTC.hours); lcd.print(":"); lcd.print(myRTC.minutes); lcd.print(":"); lcd.print(myRTC.seconds); lcd.print(" "); tmrpcm.play("3.wav"); tmrpcm.volume(1); tmrpcm.quality(1); delay(246000); //EZAN OKUNURKEN 4.1 DAKİKA BEKLE tmrpcm.stopPlayback(); tmrpcm.disable(); digitalWrite(anficalistir, LOW); lcd.setCursor(0,0); lcd.print(" IKINDI EZANI "); lcd.setCursor(0,1); lcd.print("EZAN OKUNDU.... "); delay(60000); resetfunc(); } else if (suanzaman[3]==aksamezansaati && suanzaman[4]==aksamezandakikasi && suanzaman[5]==aksamezansaniyesi) { digitalWrite(anficalistir, HIGH); lcd.setCursor(0,0); lcd.print("EZAN OKUNUYOR.. "); lcd.setCursor(0,1); lcd.print(" AKSAM "); lcd.print(myRTC.hours); lcd.print(":"); lcd.print(myRTC.minutes); lcd.print(":"); lcd.print(myRTC.seconds); lcd.print(" "); tmrpcm.play("4.wav"); tmrpcm.volume(1); tmrpcm.quality(1); delay(147000); //EZAN OKUNURKEN 2,45 DAKİKA BEKLE tmrpcm.stopPlayback(); tmrpcm.disable(); digitalWrite(anficalistir, LOW); lcd.setCursor(0,0); lcd.print(" AKSAM EZANI "); lcd.setCursor(0,1); lcd.print("EZAN OKUNDU.... "); delay(60000); resetfunc(); } else if (suanzaman[3]==yatsiezansaati && suanzaman[4]==yatsiezandakikasi && suanzaman[5]==yatsiezansaniyesi) { digitalWrite(anficalistir, HIGH); lcd.setCursor(0,0); lcd.print("EZAN OKUNUYOR.. "); lcd.setCursor(0,1); lcd.print(" YATSI "); lcd.print(myRTC.hours); lcd.print(":"); lcd.print(myRTC.minutes); lcd.print(":"); lcd.print(myRTC.seconds); lcd.print(" "); tmrpcm.play("5.wav"); tmrpcm.volume(1); tmrpcm.quality(1); delay(206400); tmrpcm.stopPlayback(); tmrpcm.disable(); digitalWrite(anficalistir, LOW); lcd.setCursor(0,0); lcd.print(" YATSI EZANI "); lcd.setCursor(0,1); lcd.print("EZAN OKUNDU.... "); delay(60000); resetfunc(); } else { lcd.setCursor(0,0); lcd.print("TARIH= "); lcd.print(myRTC.dayofmonth); lcd.print("/"); lcd.print(myRTC.month); lcd.print("/"); lcd.print(myRTC.year); lcd.print(" "); lcd.setCursor(0,1); switch(myRTC.dayofweek) { case 1: lcd.print("pts.");break; case 2: lcd.print("sal.");break; case 3: lcd.print("crs.");break; case 4: lcd.print("prs.");break; case 5: lcd.print("cum.");break; case 6: lcd.print("cts.");break; case 7: lcd.print("paz.");break; } lcd.print(" "); lcd.print(myRTC.hours); lcd.print(":"); lcd.print(myRTC.minutes); lcd.print(":"); lcd.print(myRTC.seconds); lcd.print(" "); } //CUMA GÜNÜ CUMA NAMAZINDAN 1 SAAT ÖNCE SELA OKUR if (myRTC.dayofweek==5 && suanzaman[3]==oglenezansaati - 1 && suanzaman[4]==oglenezandakikasi && suanzaman[5]==oglenezansaniyesi) { digitalWrite(anficalistir, HIGH); lcd.setCursor(0,0); lcd.print("SELAA OKUNUYOR.. "); lcd.setCursor(0,1); lcd.print(" CUMA SELASI "); lcd.print(myRTC.hours); lcd.print(":"); lcd.print(myRTC.minutes); lcd.print(":"); lcd.print(myRTC.seconds); tmrpcm.play("6.wav"); tmrpcm.volume(1); tmrpcm.quality(1); delay(378000); tmrpcm.stopPlayback(); tmrpcm.disable(); digitalWrite(anficalistir, LOW); lcd.setCursor(0,0); lcd.print(" CUMA "); lcd.setCursor(0,1); lcd.print("SELAA OKUNDU.... "); delay(60000); resetfunc(); } //-------- //PERŞEMBE GÜNÜ AKŞAM EZANI İLE CUMA SABAH EZANINA KADAR AKTİF OLUR (MİNARE IŞIKLARINI YAKMAK İÇİN KULLANILIR) if (myRTC.dayofweek==4 && suanzaman[3]==aksamezansaati && suanzaman[4]==aksamezandakikasi && suanzaman[5]==aksamezansaniyesi) {digitalWrite(minareisikyak, HIGH);} else if (myRTC.dayofweek==5 && suanzaman[3]==sabahezansaati && suanzaman[4]==sabahezandakikasi && suanzaman[5]==sabahezansaniyesi) {digitalWrite(minareisikyak, LOW);} //-------- //RAMAZAN AYI BOYUNCA İFTAR SAATI İLE SAHUR SAATI ARASINDA AKTİF OLUR (MİNARE IŞIKLARINI YAKMAK İÇİN KULLANILIR) if (ramazanayimi==1 && suanzaman[3]==aksamezansaati && suanzaman[4]==aksamezandakikasi && suanzaman[5]==aksamezansaniyesi) {digitalWrite(minareisikyak, HIGH);} else if (ramazanayimi==1 && suanzaman[3]==sabahezansaati && suanzaman[4]==sabahezandakikasi && suanzaman[5]==sabahezansaniyesi) {digitalWrite(minareisikyak, LOW);} //-------- }
Kütüphane hakkında daha fazla bilgi almak isterseniz GitHub link’ını buraya ekliyorum. Yardıma ihtiyacınız olduğunda yorum kısmından iletin yardımcı olmaya çalışırım.
Kaynak Dosyaları:
2.LiquidCrystal_I2C_AvrI2C.zip
4.SD Kart ezanlar WAV içeriği.zip
5.bes_vakit_ezan_uygulamasi_mustafakeskin_org.ino
merhaba üstadım bu projeyi dahada geliştirebilirmisiniz. 0532 777 34 99 ulasabilirmisiniz
Merhaba tabiki whatsap dan ekleyeyim olur dimi
olur ustadım whatsaptanda görüşebiliriz.