2 buton 1 led

Başlatan scorpions_64, 18 Nisan 2016, 13:36:04

scorpions_64

arkadaşlar tekrardan yeni konu ile merhaba.
şimdi 2 buton ile tek çıkışı kontrol edemiyorum. yani 1. butona basılıp çekildiğinde led yanacak diğer 2. butona basılı tuttuğumda yada basıldığında  led sönmesini istiyorum buna benzer;

if buton=1 and buton2=0 then
high led
else
low led .... vb.
bu şekilde bir yazlım yazdım lakin ilk butoa bastığın sürece led yanık kalıyor on off bantığı yani.

birde ;

If buton = 1 Then
'  While buton = 1   
  'Wend
'Toggle led

bu komutu tek buton ile sorunsuz oluyor ama 2 buton devreye grince işin içinden çıkamadım. bu konuda yardımcı olurmusunuz?

ete

Program yazmak veya algoritma oluşturmak tamamen akıl ve mantık yürütmekten ibarettir.
Bu işi yaparken de çok yönlü düşünmeniz gerekir. Tek boyut düşünrseniz başarılı olamazsınız.
Bir butona basılıp ledi yakacak isen oraya sadece butona basılmış ise ledi yak komutunu vermen gerekir. Basılmamış ise ledi söndür dersen ikinci butona bakmadan program o ledi hemen söndürür ve ikinci butonun hiç bir fonksiyonu kalmaz.
Ledi 1 nolu buton şle yakacağım ama 2 nolu buton ile söndüreceğim amaç bu. O hlade, yazacağın komutlar ;
-1 nolu butona basımış isem ledi yak
-2 nolu butona basmış isem ledi söndür şeklinde olması gerekir.
Bu açıklamaya uygun yeniden yaz bakalım.
Ete


scorpions_64

hocam teşekkürler cvabınız için lakin, buton on off mantığında olmayacak. 1. buton basılıp çekildiğinde led yanıp 2. butona basıldığı anda led sönecek. ilk yazdığım mesajdaki gibi on off mantığı ile çok iyi çalışmakta, takıldığım nokta bu.

ete

#3
BU kadar basit bir ayrınıtıyı dünebilmeni beklerdim. Zira butona basılıp bırakıldığında demek;

IF TUS=0 THEN
  WHILE TUS1=0:WEND
  PAUSE 50
  LED=1
ENDIF


Diğer butona basıldığında sönmesi demek ise;
IF TUS2=0 THEN
     LED=0
     WHILE TUS2=0:WEND
     PAUSE 50
ENDIF

Demek oluyor.

Ete

scorpions_64

If tus=1 Then
  While tus=0:Wend
  DelayMS 50
  role3=1
EndIf

If tus1=1 Then
'    role3=0
    While tus1=0:Wend
    role3=0
     DelayMS 50
EndIf


hocam çok teşekkür ederim. haklısınız böyle basit bir kodu düşünmem lazımdı. kodu gördükten sonra insanın aklı başına gelip "tabi ya" diye kendine kızıyor...

ete

Tuş un 1 veya 0 olma durumunu karıştırma. Mümkün olduğunca tuşa basılınca sıfır olan durumu kullanmaya bakmalısın. Bu pullup lı kullanım demek olur bu sayede genelde B portuna bağlananbutonlar için dahili pullup dirençlerini kullanma imkanın doğar.
Yazdıklarında bu konuda hata var dikka et.

Ete

scorpions_64

yok hocam projeyi yazdıklarıma göre tasarladım. devre sorunsuz çalışıyor tekrar çok teşekkürler.

ete

If tus=1 then
While tus=0:wend

Burası yanlış. Onu demek istemiştim. 1. Satır tuşa basılınca pin high olduğunu ama ikinci satır ise tersi olduğunu gösteriyor.

Ete

Powered by EzPortal