bir butonla led yakıp söndürme

Başlatan Recep METE, 26 Eylül 2013, 11:40:33

Recep METE

Arkadaşlar ben bir buton ve bir led kullanarak led yakıp söndürmek istiyorum.Kendimce aşağıdaki kodları yazdım ancak led while döngüsü nedeniyle sürekli yanıp söndü.Kodlar aşağıdaki gibidir.Sizce bunun başka yolu var mı? bu konuda yardımlarınızı bekliyorum.
while(1) 
{
if(input(PIN_A0)) //Buton a basılımı?
{delay_ms(15); //15 ms gecikme
output_high(PIN_B0); //B portundaki 1led'i yak

delay_ms(100); //500 ms gecikme
}
 if(input(PIN_A0)) //Buton a basılımı?
{
delay_ms(15); //500 ms gecikme
output_low(PIN_B0); //B portundaki led'i  söndür


delay_ms(100); //500 ms gecikme

}
printf(lcd_putc,"\f  Ne kadar okursan oku, bilgine, yakışır şekilde davranmıyorsan cahilsin demektir.  \n   semfero");d

AYKIRI

if(input(pin_a0)==1) {output_toggle(pin_b0);delay_ms(15);while(input(pin_a0)==1);}
bunu deneyin her bastığınızda bir öncekinin tersini yapacak
yani led yanıyorsa söndürecek sönükse yakacak

Recep METE

if(input(pin_a0)==1) {output_toggle(pin_b0);delay_ms(15);while(input(pin_a0)==1);}
bunu deneyin her bastığınızda bir öncekinin tersini yapacak
yani led yanıyorsa söndürecek sönükse yakacak
[/quote]

Hocam kodları denedim çalışmadı.Bir kez daha baksanız sevinirim.
sizin yazmış olduğunuz kod:
if(input(pin_a0)==1)
  {output_toggle(pin_b0);
  delay_ms(15);
  while(input(pin_a0)==1);}
printf(lcd_putc,"\f  Ne kadar okursan oku, bilgine, yakışır şekilde davranmıyorsan cahilsin demektir.  \n   semfero");d

serhat1990

#3
2 tane aynı durum için 2 farklı kod yazmışsın . @AYKIRI arkadaşın dediği şekilde tek bir koşul altında pinin durumunu tersleyebilirsin . Bu arada led butona basmadan yanıp sönüyor ise butona basılınca bağlı olduğu pine lojik-0 geldiği düşünebilir . Eğer butona basılıca pine lojik-0 geliyorsa koşulunu buna göre ayarlaman gerek . Yani
if(input(pin_a0)==0)
şeklinde değiştirmen gerekir .

İyi çalışmalar dilerim , saygılarımla ...

Şu kodu denermisin ...

while(1) 
{
if(input(PIN_A0)==0) //Buton a basılımı?
{
delay_ms(200); //200  ms gecikme
output_toggle(pin_b0);
delay_ms(100); //500 ms gecikme
}
}

Recep METE

Hocam şimdi çalıştı.While(1) kodunu yazmamıştım.kodu yerine koyunca çalıştı.İkinizede çok teşekkür ederim.Şimdi merak ettiğim şudur; bu işin toggle kodundan başka yolu yok mudur? "^" kodu kullanılarak yapılmış kod görmüştüm ama ben çalıştıramadım.Bun benzer kodlarla bir butonla ledi yakıp söndüremezmiyiz.Saygılar sunarım.
printf(lcd_putc,"\f  Ne kadar okursan oku, bilgine, yakışır şekilde davranmıyorsan cahilsin demektir.  \n   semfero");d

mehmet

Setting a bit:
Use the bitwise OR operator (|) to set a bit.
number |= 1 << x;
That will set bit x.

Clearing a bit:
Use the bitwise AND operator (&) to clear a bit.
number &= ~(1 << x);
That will clear bit x. You must invert the bit string with the bitwise NOT operator (~), then AND it.

Toggling a bit:
The XOR operator (^) can be used to toggle a bit.
number ^= 1 << x;
That will toggle bit x.

Checking a bit:
You didn't ask for this but I might as well add it.
To check a bit, AND it with the bit you want to check:
bit = number & (1 << x);
That will put the value of bit x into the variable bit.
Olan olmuştur,
olacak olan da olmuştur.
Olacak bir şey yoktur.
---------------------------------------------
http://www.mehmetbilgi.net.tr

Recep METE

Alıntı yapılan: mehmet - 26 Eylül 2013, 14:45:15
Setting a bit:
Use the bitwise OR operator (|) to set a bit.
number |= 1 << x;
That will set bit x.

Clearing a bit:
Use the bitwise AND operator (&) to clear a bit.
number &= ~(1 << x);
That will clear bit x. You must invert the bit string with the bitwise NOT operator (~), then AND it.

Toggling a bit:
The XOR operator (^) can be used to toggle a bit.
number ^= 1 << x;
That will toggle bit x.

Checking a bit:
You didn't ask for this but I might as well add it.
To check a bit, AND it with the bit you want to check:
bit = number & (1 << x);
That will put the value of bit x into the variable bit.



Hocam ingilizce yetersiz olduğundan hiçbir şey anlamadım valla...
printf(lcd_putc,"\f  Ne kadar okursan oku, bilgine, yakışır şekilde davranmıyorsan cahilsin demektir.  \n   semfero");d

mehmet

İmzandaki satırı biliyorsan bunu da bilirsin. Püf
noktası italik satırlar...
Olan olmuştur,
olacak olan da olmuştur.
Olacak bir şey yoktur.
---------------------------------------------
http://www.mehmetbilgi.net.tr