Bir Buton İle Birden Çok Fonksiyon Kullanmak !

Başlatan HeCToR, 03 Ağustos 2015, 12:14:08

fatih6761

@mufitsozen rica ederim hocam bildiğimizi paylaşmak görevimiz :)

HeCToR

@t2 Hocam verdiğiniz kodlar tamamdır teşekkürler ancak bir ayrı buton daha düşünelim o butonlada her bir defa bastığımızda ledleri low konumuna çekmeliyiz !
if(!input(PIN_B2)){;
{

say++;

switch (say) {

        case  1:
        output_high(LEVEL1_LED);
        break;

        case  2:
        output_high(LEVEL2_LED);
        break;
        
        case  3:
        output_high(LEVEL3_LED);
        break;
    
        case  4:
        output_high(LEVEL4_LED);
        break; 


        case  5:
        say=0;
        break;

}
}
}
Bilginin Efendisi Olmak İçin Çalışmanın Kölesi Olmak Gerekir

Karamel

#17
hocam ayni seyin yesili iste.

baska bir buttonu if ile okuyup. case icersinde output_high(LEVEL3_LED); değilde bunun ccs dilinde low a karsilik gelenini yazacaksiniz.


HeCToR

Ne yazıkki Karamel onu denemiştim ancak dengesiz çalışıyor  ;D
Bilginin Efendisi Olmak İçin Çalışmanın Kölesi Olmak Gerekir

HeCToR

#19
Bir sorum daha olacak @RaMu Hocam ve @t2 Hocam L1,L2,L3,L4 olarak  (+) butonumuz ile hepsini yaktık diyelim (-) butonumuz ilede L4,L3,L2,L1 ledlerimizi sırayla tekrar söndürdük diyelim; ( peki (+) butonumuz ile L1,L2 ledimizi yaktık (-) butonumuz ile tekrar L2,L1 ledimizi nasıl söndürebiliriz L4'e kadar saymadan ayrıca tekrar (+) butona bastığımda L3,L4 ledimizden yanmaya başlamayacak L1 ledimizden başlaması gerekiyor aşağıda verdiğim örnek kodu incelerseniz bu konu ile yardımcı olabilirseniz memnun olurum teşekkürler
if(input(+buton)){


ileri_say++;

switch (ileri_say) {

        case  1:
        output_high(L1_LED);
       
        break;

        case  2:
       
        output_high(L2_LED);
        
        break;
        
        case  3:
   
        output_high(L3_LED);
       
        break;
    
        case  4:
        
        output_high(L4_LED);
        break; 


        case 5:
        ileri_say=0;
        break;

}
}


if(input(-buton)){


geri_say++;

switch (geri_say) {

        case  1:
        output_low(L4_LED);

        break;

        case  2:
        output_low(L3_LED);
        
        break;
        
        case  3:
        output_low(L2_LED);
       
        break;
    
        case  4:
        output_low(L1_LED);
        break; 


        case  5:
        geri_say=0;
        break;

}
}
Bilginin Efendisi Olmak İçin Çalışmanın Kölesi Olmak Gerekir

sadogan

Bir görev listesi tanımlayıp, (-)ve(+) butonları ile bir değişkeni artırıp eksilterek bu değişken ile
görev listesinden yapılacak görevi alıp yapsanız daha basit ve işlevsel olmazmı?
Örenek:
  static unsigned char state=0,
   unsigned char gorev;
   const unsigned char Gorev_Table[5] = {0B0000000,0B0000001,0B0000011,0B0000111,0B0001111};   
   if(input(+buton))if(++state>4)state=0;
   if(input(-buton))if(--state>4)state=4;   
  
   gorev=Gorev_Table[state];
   if(gorev&0b00000001)output_high(LED1);
   else output_low(LED1);
   if(gorev&0b00000010)output_high(LED2);
   else output_low(LED2);
    if(gorev&0b00000100)output_high(LED3);
   else output_low(LED3);
   if(gorev&0b00001000)output_high(LED4);
   else output_low(LED4);

HeCToR

#21
@sadogan Hocam çok teşekkürler sorun çözülmüştür iyi çalışmalar dilerim
Bilginin Efendisi Olmak İçin Çalışmanın Kölesi Olmak Gerekir

RaMu

#22
Şöylede olur ama ledlerin sıralı bağlanması lazım.
#include <main_bll_1.h>

#define LED_PINS  0b00001111   //alt4 pine led bağlı (led bağlı pinler 1 yapılacak)
#define iLED_PINS 0b11110000   //led pinlerinin tersi
#define last_led  3

#define art_butonu    input(pin_b6)
#define azalt_butonu  input(pin_b7)

void main()
{
unsigned int8 led_durum=0;

   while(TRUE)
   {
   

   
   if(art_butonu)
   {
   delay_ms(10);
  
    led_durum = rotate_left( &led_durum,1);
    bit_set(led_durum,0);   
    output_B(   (led_durum & iLED_PINS)  |  ( led_durum  & LED_PINS  )   );

    while(art_butonu);
    delay_ms(20);
    }

  
   if(azalt_butonu)
   {
      delay_ms(10);
  
    led_durum = rotate_right( &led_durum,1);
    bit_clear(led_durum,last_led);   
    output_B(   (led_durum & iLED_PINS)  |  ( led_durum  & LED_PINS  )   );
    
    while(azalt_butonu);
    delay_ms(20);
    }
   
   }

}


    //output_B(  ( led_durum & iLED_PINS )  |  (  ( rotate_right( &led_durum,1) )  & LED_PINS  )   ); gibi


isis simulasyon ve ccsc proje dosyası.
http://www.mediafire.com/download/htmowp7va24r4dw/button_level_led_cortex.rar

mesaj birleştirme:: 07 Ağustos 2015, 15:50:51

Sorularınıza hızlı cevap alın: http://www.picproje.org/index.php/topic,57135.0.html