LDR İçin Kesme Oluşturmak

Kodun yazılışına bakarsak myDFPlayer.play() fonksiyonu bloke olan bir fonksiyon değil gibi duruyor. Arkasına kocaman bir delay konmuş, herhalde orada dosyanın tamamlanması bekleniyor. Bu durumda özel birşey yapmaya gerek yok. Bir kere play çağrıldıktan sonra, programda sen dijital veya analog girişleri döngü içerisinde kontrol edebilirsin. Kesmeye gerek yok yani.
Abi delay'i ben koydum.
Kodun orjinalin de myDFPlayer.play() void setup içindeydi. Açılışta direk başlıyordu.
Ben LDR değerine göre başlatacağım için Void loop içinde if koşulu ile start ettim.
Void loop içinde de sürekli döngü olduğu için şarkı saniyede bir baştan başlıyordu. Bende mecburen şarkı süresi boyunca delay ekledim.
Bu şekilde kutunun kapağı açıldığında sistem olması gerektiği gibi çalışıyor. Ama kutunun kapağını kapatınca delay yüzünden şarkıyı durduramadım. O yüzden kesme olayına yöneldim.
 
@Gokrtl aklıma gelen birkaç tane yönemi @Ahmet ve @ozkarah söylemiş zaten. Kutu kapağındaki reed kontak yada opamp ve LDR ikilisi ile lojik davranan bir LDR devresi.

Üçüncü bir seçenek ise kutu altına konulacak bir anahtar olabilir. Kutu düz zemine konulunca kapanır. Ele alınınca anahtar boşa çıkar ve devre tamamlanır. Kutuyu açmadan da sadece ele almakla çalmaya başlar. Reed kkontak daha mantklı duruyor çünkü mobil bir cihaz olacağı için sürekli LDR'i beslemek pilömrü için iyi değil. Arduino da çalışacak bu arada. Bu yüzden reed kontak daha mantıklı.
 
Şu şekilde kodunu düzenlersen sürekli dfplayer.play komutu sürekli çalışmaz.
Ama bu kodda kapak açılırken/kapanırken yada ldr ye anlık gölge düşerse, ldr değerleri sürekli oynayacak ve kararsız bir durum oraya çıkacak yüksek ihtimalle. Bunun önüne geçmek içinde belli bir sure boyunca, misal 500ms boyunca, ldr 350den büyük olursa kapakAçık değişkenini 1 yapmak gerekli(aynısı 0 yaparken gerekli).

kapakAçık, kapakAçıkEskiDurum ve müzikçalıyor diye üç degisken tanımla ve 0 ver.
main loopunun içinde
C++:
ldr yi oku
lf( ldr > 350 )
{
 kapakAçık =1
}
else if ( ldr < 250)
{
 kapakAçık =0
}

if (kapakAçık != kapakAçıkEskiDurum)
{
   kapakAçıkEskiDurum=kapakAçık
   if( müzikçalıyor=0 )
   {
      müzikçalıyor =1
      dfplayer.play
   }
   else
   {
      müzikçalıyor=0
      dfplayer.stop
   }
}
 
Last edited by a moderator:
Şu şekilde kodunu düzenlersen sürekli dfplayer.play komutu sürekli çalışmaz.

Programı bir "kod" bloğu içerisine koyarsan anlaşılması çok daha kolay olur

1688630335145.png
 
Şu şekilde kodunu düzenlersen sürekli dfplayer.play komutu sürekli çalışmaz.
Ama bu kodda kapak açılırken/kapanırken yada ldr ye anlık gölge düşerse, ldr değerleri sürekli oynayacak ve kararsız bir durum oraya çıkacak yüksek ihtimalle. Bunun önüne geçmek içinde belli bir sure boyunca, misal 500ms boyunca, ldr 350den büyük olursa kapakAçık değişkenini 1 yapmak gerekli(aynısı 0 yaparken gerekli).

kapakAçık, kapakAçıkEskiDurum ve müzikçalıyor diye üç degisken tanımla ve 0 ver.
main loopunun içinde
C++:
ldr yi oku
lf( ldr > 350 )
{
 kapakAçık =1
}
else if ( ldr < 250)
{
 kapakAçık =0
}

if (kapakAçık != kapakAçıkEskiDurum)
{
   kapakAçıkEskiDurum=kapakAçık
   if( müzikçalıyor=0 )
   {
      müzikçalıyor =1
      dfplayer.play
   }
   else
   {
      müzikçalıyor=0
      dfplayer.stop
   }
}
Denemeye fırsatım olmadı ama biraz baktım. Üç tane değişkeni harmanlamak kafa karıştırıcı geldi biraz. Zihinden kodu yürütünce ilk turdan sonra düzgün çalışmayacağı hissiyatına kapıldım. Müsait bir zamanda deneyeceğim.


@Gokrtl aklıma gelen birkaç tane yönemi @Ahmet ve @ozkarah söylemiş zaten. Kutu kapağındaki reed kontak yada opamp ve LDR ikilisi ile lojik davranan bir LDR devresi.

Üçüncü bir seçenek ise kutu altına konulacak bir anahtar olabilir. Kutu düz zemine konulunca kapanır. Ele alınınca anahtar boşa çıkar ve devre tamamlanır. Kutuyu açmadan da sadece ele almakla çalmaya başlar. Reed kkontak daha mantklı duruyor çünkü mobil bir cihaz olacağı için sürekli LDR'i beslemek pilömrü için iyi değil. Arduino da çalışacak bu arada. Bu yüzden reed kontak daha mantıklı.
Bir şey keşfettim. myDFPlayer.play() fonksiyonu tetikleme ile çalışıyor.
Yani diyelimki LDR ışık alıyor ve değeri 500. Bende dedim ki 300 altına düşerse myDFPlayer.play() çalıştır.
Böyle bir komut verdiğimde şarkı sürekli baştan başlıyor. (saniyede bir). Ne zaman LDR değeri tekrar 300 üstüne çıkarsa o zaman sağlıklı bir şekilde şarkı devam ediyor. Anahtar fikrine sıcak bakmıyorum. Ama çoğunluk reed röle dediğine göre ona bir bakayım.
 
@ozkarah dediği gibi reed röle ile çok pratik olur hem de pil ömrü bakımından iyi olur. Ama başına dert açmak istersen :) arduinoda dahili analog komperatör var ve kesme oluşturabiliyor. Uykudan uyandırmak için kullanılabiliyor mu emin değilim. Kesmede güç yönetimi de yapılabilir.
 
@ozkarah dediği gibi reed röle ile çok pratik olur hem de pil ömrü bakımından iyi olur. Ama başına dert açmak istersen :) arduinoda dahili analog komperatör var ve kesme oluşturabiliyor. Uykudan uyandırmak için kullanılabiliyor mu emin değilim. Kesmede güç yönetimi de yapılabilir.
Valla başıma dert açmak isterdim ama yoğunluktan açamıyorum. İki gün oldu hala reed röle almaya gidemedim. :)
Allahtan bir ay kadar vakim var da projeyi yetiştiricem inşallah.
 
ustaa yt da izledim eline sağlık bende yapcam/yapmaya çalışcam
 
anlamadığım tek şey var mıknatıs neyle iletişime geçiyor inş çözerim okuyanlar eyvah diyordur

videoyu da ekliyim bugün yt günü :D

 
anlamadığım tek şey var mıknatıs neyle iletişime geçiyor inş çözerim okuyanlar eyvah diyordur

reed röle diye bir eleman var. Dirence benziyor.
Resimde gördüğün gibi bir şekli var. Dikkat edersen iki kontak birbirine temas etmiyor.
Mıknatısı yaklaştırdığında o iki kontak birleşiyor ve tetik vermiş oluyorsun. Aynı butona basınca verdiğin tetik gibi.
Gerisi arduinonun işi. Butona basıldıysa şarkıyı çal diyorsun olay bitiyor.

MANYETİK KONTAK.jpg
 
  • Beğen
Reactions: nt
reed röle diye bir eleman var. Dirence benziyor.
Resimde gördüğün gibi bir şekli var. Dikkat edersen iki kontak birbirine temas etmiyor.
Mıknatısı yaklaştırdığında o iki kontak birleşiyor ve tetik vermiş oluyorsun. Aynı butona basınca verdiğin tetik gibi.
Gerisi arduinonun işi. Butona basıldıysa şarkıyı çal diyorsun olay bitiyor.

31729 eklentisine bak
mıtnatıs kollardan birini ayırıyor ve off durumunda kalıyor anladım usta :tamam3: teşekkürler
 
@nt reed röle ile çalışırken dikkatli olmak da fayda var bacağını bukeyim derken kırılıp camlar fırlıyor geçen gözlük olmasaydı kör olabilirdim...
 

Forum istatistikleri

Konular
6,950
Mesajlar
118,747
Üyeler
2,822
Son üye
lalemasall

Son kaynaklar

Son profil mesajları

hakan8470 wrote on Dede's profile.
1717172721760.png
Dedecim bu gul mu karanfil mi? Gerci ne farkeder onu da anlamam. Gerci bunun anlamini da bilmem :gulus2:
Lyewor_ wrote on hakan8470's profile.
Takip edilmeye başlanmışım :D ❤️
Merhaba elektronik tutsakları...
Lyewor_ wrote on taydin's profile.
Merhabalar. Elektrik laboratuvarınız varsa bunun hakkında bir konunuz var mı acaba? Sizin laboratuvarınızı merak ettim de :)
Lyewor_ wrote on taydin's profile.
Merhabalar forumda yeniyim! Bir sorum olacaktı lcr meterler hakkında. Hem bobini ölçen hemde bobin direnci ölçen bir lcr meter var mı acaba?
Back
Top