S

8 Kanal iR(kızılötesi) alıcı-verici-non toogle nasıl yapılır

Başlatan surhay, 25 Ekim 2011, 21:13:50

surhay




Devre toggle modda çalışmaktadır.Vericiden butonlara basılınca alıcıda ilgili led açılır-yanar(on).Tekrar basılınca kapanır-söner.(off)
Devre ve kodlar alıntıdır.Fakat tarafımdan yapılarak denenmiştir.Hala sorunsuz çalışmaktadır.

C açık kodları(alıcı-verici),hex kodları ekte mevcut.Devre oldukça sade-ekonomik

Butona basılı tutulduğu sürece led yanacak(çıkış verecek) butondan el çekilince sönecek(çıkışı kapatacak).non toggle mod hali  lazım.
Bu hale nasıl dönüştürebiliriz
.C kodlarından pek anlamıyorum.

Bu kodları değiştirebilecek varsa yardımlarını rica ederim.
(ya da elinde bu şekilde çalışan projesi olan paylasırsa)

kolay gelsin

ete

Burası C konularını işleyen bir forum değil arkadaşlar. Bu nedenle lütfen sorularınız temel bilgiler ve Basic programlama dili üzerine olsun.

C dili için ayrı forumlar mevcut. Sorularınızı orada sorabilirsiniz.

Ete

surhay


ete

Bir pin'e pin=1 şeklinde HIGH değeri verirseniz ve tusa basılı olduğu müddetçe bu komutu uygularsanız sistem basbırak çalışır.
Zira tuştan elinizi çeker çekmez aynı şekilde Pin=0 komutunuda siz vererek o pini low'a düşümeniz gerekir.
Pin=1-pin şekklinde veya toggle pin şeklinde bir komut verirseniz pin toggle olarak konum değiştirir.
Bu komutları verilen programda bulabilirsen gerekli değişikliği yapabilirsin. Ama o kadar kolay olacağını sanmayın çünki program düşündüğünüz kadar kolay bir mantıkla yazılmamış. Anlamak gerçekten zor. Üstelik illaki bu değişiklik yapılacak diyede bir kanun yok maalesef. Program mantığı buna uygunsa gerekli değişikliği yapabilir aksi halde yeniden program yazılması gerekebilir.

Örnek verirseniz demişsiniz ama neye örnek istemişsiniz onu anlamadım ama sanki C ile ilgili forum örneği istemişsiniz gibi hissettim. İstek bu ise üyelerimiz belki yardımcı olurlar. Çünki zaman zaman be görüyorum dolaşırken ama hiç birisinin kaydını falan tutmadığım için adresleri yeniden bulmam imkansız.

Ete

surhay

Ete hocam,
C ye dair pic forumu biliyorsanız diye rica etmiştim aslında.C bilmediğim için kodlar açıkta olsa benim icin oldukca zor bir iş bu kodları non toggle yapmak.
devre toggle modda gayet güzel çalışıyor yapmak isteyen olursa diye paylaştım,hem de buradaki üyelerin ve sizlerin değerli katkılarını bekledim.

İlginiz ve cevabıız icin tesekkurler.




Mucit23

Hocam Bunu nasıl yapılacağını daha önce açıklamıştınız sanırım. Aynı sistemi RF alıcı vericilerde uygulamak için Yani Bas-Bırak Metoduyla çalışması için 1 den fazla kanal varsa nasıl bir yöntem izlenebilir.
  Ben iki kanal Model araba kontrol sistemi yapmıştım. O sistemde her olasılığı düşünerek farklı veriler göndererek durumu çözmüştüm. Yani İleri-Geri Sağ ve sol olmak üzere 4 adet buton vardır. Kumandada joystick olduğu için ileri veya geriye yada sağ ve sol aynı anda basılamıyordu. Bunları göz ardı ederek. Sadece ileri,Sadece geri,Sadece sağ,Sadece Sol,Hem ileri Hem Sağ,Hem ileri Hem Sol, Hem geri Hem Sağ ve Hem Geri hemde sol olmak üzere 8 adet farklı olasılığı ele alıp Her bir olasılığı ayrı ayrı işleyerek alıcıya farklı veriler gönderdim.
   Alıcıdada gelen verilere göre çıkışları kontrol ettim.

Dediğim gibi 4 kanalda fazla olasılık olmadığı için pek sorun olmadı ama kanal sayısı dolayısıyla kontrol edebileceğimiz çıkış sayısı artıkça olasılıklar çok fazlalaşıyor.

Hayal Meyal hatırlıyorum. Yine buna benzer bir başlık altında buna benzer bir sistemin nasıl toogle veya bas bırak mantığıyla kontrol edebileceğini söylemiştiniz sanırım. Tekrar anlatabilirmisiniz.
Bir ulusu yok etmenin En iyi yolu o ulusun dilini yok etmektir.

www.arectron.com/

est32

tuşları tek tek okumaya her zaman gerek yok.
butonlarla pinlere direnç üzerinden VCC yolla,portun durumunu gönder.
if portb>0 then serout portb cart curt tarzı bişey,tam yazmadım komutu belki port değişkene atılır yollanır.
Daha önce yaptım böyle bişey çalışıyor.Port olduğu gibi karşıya yansıtılıyor.
neyse,komutu düzgün yazmasam da demek istediğim anlaşıldı sanırım.

ete

Şu anda bir ticari konu üzerinde çalışıyorum. Sistemin amacı bir dip sw ile seçilen duruma göre ilgili pinin toggle yada basbırak çalışması şeklinde. Bu işin nasıl yapıldığını sanırım okullarda öğretmiyorlar. Kullandığım yöntem benim mantık yolu ile bulduğum yöntemdir. Esası ise şöyledir.
Öncelikle RF sistemi ortada yokmuş gibi düşünün. Yani butona basıldığı zaman RX direk bunu algılıyor farzedin. Gerçektede bu böyle oluyor zaten RF sadece arada taşıyıcı rol oynamaktadır.
Ortada bir buton var. Butona basıldığı zaman bas bırak sistemi ne iş yapacak ? ilgili pini HIGH yapacak. Ne zamana kadar elimi butondan çekinceye kadar. O halde bütün mesele elimi butondan çekip çekmediğimi kontrol etmekte. Zİra butona basıldığını kolaylıkla anlayabiliyorum ve diyorumki,
IF TUS=0 ise ROLE=1 yap.
İşte bu deyişten sonra yeniden tuş bakmaya gidersem tuşa bastığım müddetçe ROLE=1 yapılacaktır. Her seferinde aynı komutu icra etsin istemiyorsanız bir işaretçi kullanırsınız. POZ değişkeni işaretçi olsun. Başlangıçta POZ=0 dır.
TUSBAK:
IF TUS=0 then
   IF POZ=1 then TUSBAK
   ROLE=1
   POZ=1
   GOTO TUSBAK
ENDIF
bu komut dizisi ile tusa basılmış ve ilk defa basılmış ise Role=1 yaptım. Hemen ardından yeniden tus kontrola gittim.
İkinci defa tusa basılı tutuyorum dolayısıyla TUS=0 durumunda ama POZ=1 olduğu için artık program direk TUSBAK isimli etikete yönlenir. Ne zamana kadar tusu bırakıncaya kadar. Tusu bıraktığım anda program artık bu komut satırına bakmayacaktır. Dolayısıyla bu komut altına artık Roleyi sıfırlayan komutu yazabilirim demektir. İşte çözüm.

TUSBAK:
IF TUS=0 then
   IF POZ=1 then TUSBAK
   ROLE=1
   POZ=1
   GOTO TUSBAK
ENDIF
ROLE=0:POZ=0
GOTO TUSBAK
buradan da anlayacağınız üzere bu sistem tusa bırakılıncaya kadar role=1 yapar ve tus bırakılır bırakılmaz role=0 yapar. BU kadar basit.

Toggle işi biraz daha kolay.
TUSBAK:
IF TUS=0 then
   IF POZ=1 then TUSBAK
   TOGGLE ROLE
   POZ=1
ENDIF
poz=0
GOTO TUSBAK
Tusa basıp basılı tuttuğum mddetçe bir kere TOGGLE işlemini yapar ve tus bırakılıncaya kadar bir daha yapmaz.
Tus bırakılınca sistem yeniden kurulur ve ilk basılışta yeniden toggle işlemi yerine getirilir.

Hepsi bu kadar umarım anlaşılmıştır.

Ete

ummet

hex dosyalarını direk pic e atıyorum fakat hata veriyor yapan varmı teşekürler

ummet


~ENES~

Alıntı yapılan: ete - 27 Ekim 2011, 11:22:47
Şu anda bir ticari konu üzerinde çalışıyorum. Sistemin amacı bir dip sw ile seçilen duruma göre ilgili pinin toggle yada basbırak çalışması şeklinde. Bu işin nasıl yapıldığını sanırım okullarda öğretmiyorlar. Kullandığım yöntem benim mantık yolu ile bulduğum yöntemdir. Esası ise şöyledir.
Öncelikle RF sistemi ortada yokmuş gibi düşünün. Yani butona basıldığı zaman RX direk bunu algılıyor farzedin. Gerçektede bu böyle oluyor zaten RF sadece arada taşıyıcı rol oynamaktadır.
Ortada bir buton var. Butona basıldığı zaman bas bırak sistemi ne iş yapacak ? ilgili pini HIGH yapacak. Ne zamana kadar elimi butondan çekinceye kadar. O halde bütün mesele elimi butondan çekip çekmediğimi kontrol etmekte. Zİra butona basıldığını kolaylıkla anlayabiliyorum ve diyorumki,
IF TUS=0 ise ROLE=1 yap.
İşte bu deyişten sonra yeniden tuş bakmaya gidersem tuşa bastığım müddetçe ROLE=1 yapılacaktır. Her seferinde aynı komutu icra etsin istemiyorsanız bir işaretçi kullanırsınız. POZ değişkeni işaretçi olsun. Başlangıçta POZ=0 dır.
TUSBAK:
IF TUS=0 then
   IF POZ=1 then TUSBAK
   ROLE=1
   POZ=1
   GOTO TUSBAK
ENDIF
bu komut dizisi ile tusa basılmış ve ilk defa basılmış ise Role=1 yaptım. Hemen ardından yeniden tus kontrola gittim.
İkinci defa tusa basılı tutuyorum dolayısıyla TUS=0 durumunda ama POZ=1 olduğu için artık program direk TUSBAK isimli etikete yönlenir. Ne zamana kadar tusu bırakıncaya kadar. Tusu bıraktığım anda program artık bu komut satırına bakmayacaktır. Dolayısıyla bu komut altına artık Roleyi sıfırlayan komutu yazabilirim demektir. İşte çözüm.

TUSBAK:
IF TUS=0 then
   IF POZ=1 then TUSBAK
   ROLE=1
   POZ=1
   GOTO TUSBAK
ENDIF
ROLE=0:POZ=0
GOTO TUSBAK
buradan da anlayacağınız üzere bu sistem tusa bırakılıncaya kadar role=1 yapar ve tus bırakılır bırakılmaz role=0 yapar. BU kadar basit.

Toggle işi biraz daha kolay.
TUSBAK:
IF TUS=0 then
   IF POZ=1 then TUSBAK
   TOGGLE ROLE
   POZ=1
ENDIF
poz=0
GOTO TUSBAK
Tusa basıp basılı tuttuğum mddetçe bir kere TOGGLE işlemini yapar ve tus bırakılıncaya kadar bir daha yapmaz.
Tus bırakılınca sistem yeniden kurulur ve ilk basılışta yeniden toggle işlemi yerine getirilir.

Hepsi bu kadar umarım anlaşılmıştır.

Ete


Hocam degisken kullanmak yerine while wend kullansak daha kisa ve mantikli olmaz mi ?
Ornegin

İf tus=0 then
While tus=0
Role=1
Wend
Role=0
Endif

Seklinde yapsak daha basit olur diye dusunuyorum bu komutun baska islevleri oldugundan mi kullanmadiniz ?
ALLAH'a teslim olmuş bir insan ! Ne sultan tanir , ne sadrazam !

ete

Benim yaptığım şekilde birden fazla tuş kontrolü yapabilirsin.
Senin yaptığınla tuşun bırakılmasını bekleyeceğin için başka bir kontrol yapamazsın.
Ete

Powered by EzPortal