pic ile buton kontollu

34BERK34

Üye
Katılım
21 May 2013
Mesajlar
1
Puanları
1
iyi gunler ben pic ile buton kontrollu ışık sistemi yapmak istiyorum mesale birinci butona bastıgımda ışık yanıp sönucek aynı butona bastıgımda kapanıcak ıkıncı butona bastıgımda ısık yanıcak sureklı sonra tekrar bastıgımda sonucek çok arastırdım fakat bunun dısında sonuclar elde ettım ornegın sırayla led yakma gıbı yada kara sımsek yaptırma gıbı kodlar hakkında yardımcı olursanız sevınırım
 
S.A.
Bu istediklerinize butonları yönlendirerek döngü oluşturup uygulayabilirsiniz.
 
Aşağıdaki kodlar kısmen istediğiniz karşılar.

Çalışma şekli tek butonladır. 2 butona gerek yoktur... (Eğer 2 buton ile yapmak istiyorsanız kodlarda değişkliğe ihitiyaç vardır.)


Çalışması:

1-Buton eğer toogle şeklinde bir buton olursa;

ON iken çıkıştaki lamba 1 sn aralıklar ile yanp söner. OFF iken lamba söner...

2-Buton bas-bırak bir buton ise eğer;

1. basılıp bırakıldığında lamba yanar 2. basılıp bırakıldığında lamba söner. Bu şekilde bir döngü şeklinde btonan basılıp bırakıldıkça işlemler tekrar eder.


Aslında bu işin doğrusu ve pratiği şudur.

Bu istediğin bu iş 3 buton ile kolayca yapılır.

1.Buton: İstedğiniz 1. işi başlatır.
2.Buton: İstedğiniz 2. işi başlatır.
3.Buton: başalatılan 1. veya 2 .işi durdurur(sonlandırır) Eğer 2 buton şart değil ise bunu 3 buton ile yaparsanız daha kolay ve kullanışlı olur.


'****************************************** INFORMASYON **************************************************
'BUTON_lamba.BAS
'NBATMAN
'25/05/2013
'V.001
'Ledyak
'1 tuş ile 1 LAMBA KONTROL
'*******************************************Tanımlamalar*************************************************
CMCON=7 '16F628 de komparatör (Analog) pinleri iptal. Hepsi giriş çıkış olarak ayarlanıyor.
TRISA=%00000001 'porta giriş yapıldı
TRISB=%00000000 'portb çıkış yapıldı
A0 Var Byte 'a0 isimli değişken tanımlanıyor.
A0 = 1 'a0 isimli değişken 0 değeri atanıyor.
B0 Var Byte 'B0 isimli değişken tanımlanıyor.
B0 = 0 'B0 isimli değişken 0 değeri atanıyor.

PortB.3=0
Symbol Button1 = PortA.0
Symbol Led= PortB.1

Main:

PAUSE 500
BUTTON PORTA.0,0,255,5,B0,1,IND1_A

IND1_A:
While button1 = 1 'buton kontrol
Wend
A0=A0+1
Toggle Led


If A0 =3 Then
A0 =1
EndIf


IF A0=1 THEN
PortB.1=0
ENDIF
IF A0=2 THEN
PortB.1=0
PAUSE 1000
PortB.1=1
PAUSE 1000
ENDIF
Goto Main


End 'Programı Bitir.
 
#include <16f877.h> //kullandığımız pici tanıttık
#use delay (clock=4m) //kristalimizin hızını ayarladık
int x=0,y=0,z=0; //gerekli değişkenleri tanımladık
#define buton_1 pin_a0 //a0 pinini buton1 ısmıyle tanımladık
#define buton_2 pin_a1
#define buton_3 pin_a2
main()
{
while(1)
{
if(input(buton_1)) //buton1 e basıldıysa
x=1; //xi 1 yap
if(x==1&&z==0) //x=1 ise döngü içine gir
{
output_high(pin_a3);
delay_ms(200); //led yanıp sönüyor
output_low(pin_a3);
delay_ms(200);
}
if(input(buton_2)) //buton 2 ye basılırsa
{
z=0; //zyi 0 yyi1 xi0 yap
y=1;
x=0;
}
if(y==1) //y1 ise donguye gır
{
output_low(pin_a3); //ledi söndür
y=0; //y yi 0 yap
}
if(input(buton_3)) //buton3 e basıldımı
if(x==0) //x0 mı kontrol et sıfırsa gir
z=1; //zyi 1 yap
if(z==1&&x==0) //z1 ve x 0 sa gir
{
output_high(pin_a3); //ledi yak
}
}
}





bende 3 butonlu haliyle yaptım sana 1buton =sürekli yakıp sonduruyo 2 buton durdurma butonu 3 buton sürekli yanıık kalması ıcın
ayrıca 1.buton aktıfken 3. buton calısmaz 3. buton aktıfkende 1. buton calısmaz once durdurmalı sonra dıger secenege gecılmelı özellikle boyle yaptım
 
#include <16f877.h> //kullandığımız pici tanıttık
#use delay (clock=4m) //kristalimizin hızını ayarladık
int x=0,y=0,z=0; //gerekli değişkenleri tanımladık
#define buton_1 pin_a0 //a0 pinini buton1 ısmıyle tanımladık
#define buton_2 pin_a1
#define buton_3 pin_a2
main()
{
while(1)
{
if(input(buton_1)) //buton1 e basıldıysa
x=1; //xi 1 yap
if(x==1&&z==0) //x=1 ise döngü içine gir
{
output_high(pin_a3);
delay_ms(200); //led yanıp sönüyor
output_low(pin_a3);
delay_ms(200);
}
if(input(buton_2)) //buton 2 ye basılırsa
{
z=0; //zyi 0 yyi1 xi0 yap
y=1;
x=0;
}
if(y==1) //y1 ise donguye gır
{
output_low(pin_a3); //ledi söndür
y=0; //y yi 0 yap
}
if(input(buton_3)) //buton3 e basıldımı
if(x==0) //x0 mı kontrol et sıfırsa gir
z=1; //zyi 1 yap
if(z==1&&x==0) //z1 ve x 0 sa gir
{
output_high(pin_a3); //ledi yak
}
}
}





bende 3 butonlu haliyle yaptım sana 1buton =sürekli yakıp sonduruyo 2 buton durdurma butonu 3 buton sürekli yanıık kalması ıcın
ayrıca 1.buton aktıfken 3. buton calısmaz 3. buton aktıfkende 1. buton calısmaz once durdurmalı sonra dıger secenege gecılmelı özellikle boyle yaptım
ısıklar yanıp sonerken durdurma butonunu bazen gormeyebılır oda gecıkmeden kaynaklanan bı sorun .bunu halletmek ıcın 2.butonu rb0 a baaglayııp 2 butonun programını kesme programı olarak duzenleyebılırsın
 

Forum istatistikleri

Konular
130,165
Mesajlar
933,920
Kullanıcılar
453,290
Son üye
CanTekin01

Yeni konular

Geri
Üst