HERHANGİ BİR PORTTAKİ DEĞİŞİMİ ALGILAMAK

Başlatan eub, 05 Mart 2015, 22:55:47

eub

Merhaba. LDR sensöründen gelen algılamaya göre iş yapacak PICBASIC kodu ne olabilir. Yani PORTA.1=1 olduğunda bir iş yaptıktan sonra tekrar sıfır olup tekrar 1 olduğunda iş yapacak. Yani PORT pinindeki değişim olursa iş yapması için gereken Picbasic kodu ne olabilir.


eub

Yanıtınıza teşekkürler. Fakat kullandığım pic16f628 olduğundan ADC converter yapısı zannedersem yok. Benim için LDR'deki voltaj değişimini kademe kademe incelemeye gerek yok. Sadece LDR'nın bağlı olduğu pin'deki değer 1 olduğunda LCD display'e değer gidiyorken bu kontrolü değer 0 olup tekrar 1'e döndüğünde gerçekleştirmem gerekiyor. Aksi halde değer 1 oldukça Displaye yazdırmaya devam ediyor. Oysa bana 0'dan 1 e her döndüğünde komutun gerçekleşmesi gerekiyor. Bunun için IF'li komutlarla bazı denemeler yapıyorum ama şu anda yapamadım daha. Bunun kolay yoldan örneğin TOGGLE komutu çıkış olan bitin durumunu değiştirirken, giriş olan ve biz müdahele etmeden TOGGLE durumuna uğramış mı diye bir komut var mı? diye merak ediyorum.

stm

sorunun ldr nin kararsız bölgede kalması ise eğer bunu bir zener diyoT ve bir transistör ile halledebilirsin.



+5V------LDR--|----DİRENÇ----EKSİ
                      |
                    3.2V
                      Z
                      E
                      N
                      E
                      R
                      ---------BC237----PİC

eğer liner olarak ölçmek istersen en basidinden PİC12F675 kullanabilirsin. analog olarak ölçüp istediğin seviyede lcd ye istediğin şeyi yazdırabilirsin v.s.





sadogan

Alıntı yapılan: eub - 06 Mart 2015, 16:40:29
Yanıtınıza teşekkürler. Fakat kullandığım pic16f628 olduğundan ADC converter yapısı zannedersem yok. Benim için LDR'deki voltaj değişimini kademe kademe incelemeye gerek yok. Sadece LDR'nın bağlı olduğu pin'deki değer 1 olduğunda LCD display'e değer gidiyorken bu kontrolü değer 0 olup tekrar 1'e döndüğünde gerçekleştirmem gerekiyor. Aksi halde değer 1 oldukça Displaye yazdırmaya devam ediyor. Oysa bana 0'dan 1 e her döndüğünde komutun gerçekleşmesi gerekiyor. Bunun için IF'li komutlarla bazı denemeler yapıyorum ama şu anda yapamadım daha. Bunun kolay yoldan örneğin TOGGLE komutu çıkış olan bitin durumunu değiştirirken, giriş olan ve biz müdahele etmeden TOGGLE durumuna uğramış mı diye bir komut var mı? diye merak ediyorum.
Picbasic bilmiyorum
Söyle bir yol tavsiye edebilirim
LCD_YAZ gibi bir bayrak tanımlayın.
İlgili pininiz '0' olduğunda bu bayrağı 'set' edin ve ilgili pin ile LCD_YAZ bayrafını
ADN leyip sonuc '1' ise lcd nize yazacaklarınızı yazıp LCD_YAZ bayragını 'clr' edin
Böylece ilgili pininiz 0 dan 1 e döndüğünde LCD yazmış olursunuz.
Tekrar yazabilmek için ilgili pinininizin 0 dönmesini beklemiş olursunuz.


eub

Cevaplarınıza teşekkürler. Ama bahsettiğniz çözümlerden ziyade bunu PICBASIC kodları ile çözebilmeyi istiyorum. IF'li komutlarla falan bir yolu olmalı diye düşünüyorum.

OG

ADC olmayan pin ile LDR türü değişken dirençlerle elde edilecek LOW veya HIGH değerleri dışındaki voltaj bilgisine sahip olmak için ADC gibi yuksek dogruluklu olmasa da POT isimli komuttan yararlanılabilir. bu komut için kullanılacak port I/O olabilmelidir ve OD (open drain) yapıda olmamalıdır. LDR ye uygun değerli kapasite eklenmeli.

http://melabs.com/resources/pbcmanual/5/5-24.htm

https://www.picproje.org/index.php?topic=10074.0
FORUMU İLGİLENDİREN KONULARA ÖM İLE CEVAP VERİLMEZ.