Emir2507
Decapat
- Katılım
- 25 Nisan 2020
- Mesajlar
- 66
İyi günler. Arduino'da bir proje yapmak istedim. Proje şuydu, RTC modülü ile 16×2 LCD ekranda saat ve tarih bilgisini gösterdim. Daha sonra devreye hareket sensörü ve buton ekledim. Butona basılmadığı zaman saat ve tarihi gösterecek btona basılı tuttuğumda tarih ve saat bilgisi ekrandan silinip hareket sensörünün kaç kere hareket algıladığını gösterecekti. Her şey çok güzeldi kodu yükledim. Saat ve tarih karşımda butona baılı tuttum ekranda bir şey yok elimi hareket sensörüne götürdüm hareket 1 dedi sonra butonu braktım gene saat ve tarih ekranına döndü tekrardan hareket sensörü kaç hareket aklgılamış diye bakayım dedğimde ekran yine bom boş. Butona basılı tutarken elimi hareket sensörüne götürdüm hareketi algılayınca kaç hareket algıladığını gösterdi. Sorun şu ben tarih saat ve hareket algılama ekranı arasında geçiş yaparken en son değeri bana göstermesi gerek ama hareket algıladığında gösteriyor. İşte yazdığım kod.
#Include.
#Include “RTClib.h”
#Include.
LiquidCrystal LCD(8, 7, 6, 5, 4, 3);
RTC_DS1307 rtc;
İnt buton=2;
İnt hareket=9;
İnt sayac;
Void setup () {
Pinmode(buton, ınput);
Pinmode(hareket, ınput);
Wire.begin();
RTC.begin();
LCD. Begin(16, 2); //kullandığın LCD 2×16'lık burada onu belirtiyoruz.
İf (! RTC.isrunning()) {
LCD. Println(“rtc calismiyor”);
}
LCD. Setcursor(0, 0);
LCD. Print(“rtc uyg.”);
LCD. Setcursor(0, 1);
lcd.print(“ELEKTROHOBIM.COM”);
Delay (3000);
lcd.clear();
Rtc. Adjust(datetime(2016, 01, 4, 16, 36, 00)); // tarih ve saat bilgisi ayarlanıyor…burada başlangıç ayarları yapılıyor.
}
Void loop () {
İf(digitalread(buton)==0){
Datetime Now = RTC.now();
LCD. Setcursor(0, 0);
LCD. Print(“tarih:”);
lcd.print(now.day(), DEC);
LCD. Print(‘/’);
lcd.print(now.month(), DEC);
LCD. Print(‘/’);
lcd.print(now.year(), DEC);
LCD. Print(‘ ‘);
LCD. Setcursor(0, 1);
LCD. Print(“saat :”);
İf (now.hour()<10)
LCD. Print('0');
lcd.print(now.hour(), DEC);
LCD. Print(':');
İf (now.minute()<10)
LCD. Print('0');
lcd.print(now.minute(), DEC);
LCD. Print(':');
İf (now.second()<10)
LCD. Print('0');
lcd.print(now.second(), DEC);
Delay(1000);
lcd.clear();
}
İf(digitalread(buton)==1){
İf (digitalread(hareket) == 1){
Delay(2000);
Sayac = sayac + 1;
LCD. Print("algilanan ");
LCD. Print(sayac);
lcd.home();
}
}
}
Not = hareket algıladığında 1 arttır kısmında 2 saniye bekleme vermemin sebebi hareket sensörü minimum 3 saniye boyunca locik 1 çıkışı verdiğinden her hareket algıladığında + 3 değer yapıyor bende 2 saniye bekletip sorunu bu şekilde çözdüm. Cevaplarınızı bekliyorum 1 haftadır uğraştım ama bulamadım
#Include.
#Include “RTClib.h”
#Include.
LiquidCrystal LCD(8, 7, 6, 5, 4, 3);
RTC_DS1307 rtc;
İnt buton=2;
İnt hareket=9;
İnt sayac;
Void setup () {
Pinmode(buton, ınput);
Pinmode(hareket, ınput);
Wire.begin();
RTC.begin();
LCD. Begin(16, 2); //kullandığın LCD 2×16'lık burada onu belirtiyoruz.
İf (! RTC.isrunning()) {
LCD. Println(“rtc calismiyor”);
}
LCD. Setcursor(0, 0);
LCD. Print(“rtc uyg.”);
LCD. Setcursor(0, 1);
lcd.print(“ELEKTROHOBIM.COM”);
Delay (3000);
lcd.clear();
Rtc. Adjust(datetime(2016, 01, 4, 16, 36, 00)); // tarih ve saat bilgisi ayarlanıyor…burada başlangıç ayarları yapılıyor.
}
Void loop () {
İf(digitalread(buton)==0){
Datetime Now = RTC.now();
LCD. Setcursor(0, 0);
LCD. Print(“tarih:”);
lcd.print(now.day(), DEC);
LCD. Print(‘/’);
lcd.print(now.month(), DEC);
LCD. Print(‘/’);
lcd.print(now.year(), DEC);
LCD. Print(‘ ‘);
LCD. Setcursor(0, 1);
LCD. Print(“saat :”);
İf (now.hour()<10)
LCD. Print('0');
lcd.print(now.hour(), DEC);
LCD. Print(':');
İf (now.minute()<10)
LCD. Print('0');
lcd.print(now.minute(), DEC);
LCD. Print(':');
İf (now.second()<10)
LCD. Print('0');
lcd.print(now.second(), DEC);
Delay(1000);
lcd.clear();
}
İf(digitalread(buton)==1){
İf (digitalread(hareket) == 1){
Delay(2000);
Sayac = sayac + 1;
LCD. Print("algilanan ");
LCD. Print(sayac);
lcd.home();
}
}
}
Not = hareket algıladığında 1 arttır kısmında 2 saniye bekleme vermemin sebebi hareket sensörü minimum 3 saniye boyunca locik 1 çıkışı verdiğinden her hareket algıladığında + 3 değer yapıyor bende 2 saniye bekletip sorunu bu şekilde çözdüm. Cevaplarınızı bekliyorum 1 haftadır uğraştım ama bulamadım
Son düzenleyen: Moderatör: