pwm+ led animasyon

Başlatan erdoganacun, 03 Mayıs 2017, 18:50:25

erdoganacun

merhabalar  ben CCS  C  yeni  başladım   1 aydır   CCS C  çalışıyorum  emekli  olduğum için  full  uğraşıyorum bu zaman içerisinde   butonlu  pwm ve  led animasyon  proje yaptım      fakat butona gelince  zorlandım   16f628  işlemci kullandım  butonla yapmak istediğim  b  portunun tümüne  1  göndermek   yni butona basılı tutuğum sürece   b portu tümüyle  1  olsun  butonu bırakınca  normal  pwm ve  diğer led animasyon  devam etsin  istiyorum.. buton çalışmasıyla  bayağı  uğraştım  aslında kendim yapayım dedim ama  malesef yardım istemek  zorunda  kaldım.  acaba  buton satırını yanlış yerdemi  kullanıyorum  bilemedim.

yazdığım kodu paylaşıyorum

erdoganacun

#include <16F628a.h>
#FUSES intrc_io,NOWDT,PROTECT,NOBROWNOUT,NOLVP 
#use delay(clock=4M)
#use fast_io(a)
#use fast_io(b)
#define buton pin_a0

int sayi=0;



void main()
{

set_tris_a(0x01);
set_tris_b(0x00);
output_a(0x00);
output_b(0x00);




while(1){

  if (input(pin_a0))
  output_high(pin_b0);
  else
   output_low(pin_b0);//  buton  satırı
}


output_b(0b00000111);
delay_ms(1000);
output_b(0b00000111);
delay_ms(1000);
output_b(0b00000011);
  delay_ms(1000);
output_b(0b00000001);
  delay_ms(1000);
  output_b(0b00000000);
  delay_ms(1000);
 
output_b(0b00000001);
  delay_ms(1000);
output_b(0b00000011);
   delay_ms(1000);
output_b(0b00000111);
  delay_ms(1000);

   
  output_b(0b00000111);
  delay_ms(2000);
   
     
output_b(0b00000111);
delay_ms(1000); 
 
output_b(0b00000000);
delay_ms(1000); 
     
  output_b(0b00000111);
delay_ms(1000); 
 
output_b(0b00000000);
delay_ms(1000); 
     
     
output_b(0b00000111);
delay_ms(1000); 
 
output_b(0b00000000);
delay_ms(1000); 
     
  output_b(0b00000111);
delay_ms(1000); 
 
output_b(0b00000000);
delay_ms(1000); 
     
    output_b(0b00000111);
delay_ms(1000); 
 
  output_b(0b00000000);
delay_ms(1000); 
     
    output_b(0b00000111);
delay_ms(1000); 
 
   
     
output_b(0b00000111);
delay_ms(2000);
   


Setup_timer_2(T2_DIV_BY_16,254,1);
setup_ccp1(CCP_PWM); 


sayi=sayi+5;
if(sayi==255)
{
for(sayi=255;sayi<0;sayi=sayi-5)

{
set_pwm1_duty(sayi);
delay_ms(20);
}
}
set_pwm1_duty(sayi);
delay_ms(20);


}

erdoganacun

butonu  ekliyorum  o zamanda  pwm  led  animasyonun döngüsünü  kesiyor 

erdoganacun

denemek için buton satırında   b portunun  0  kullandım

mg1980

#4
Buton eklediğiniz durumda (yani şu anki kodunuzda)while döngüsü { } parantezleri arasında döner diğer tarafları görmez. O parantezden aşağıda olanı kodların en altına alın.Ayrıca butona bastığınızda yanlış görmedi isem sadece B portunun 0. pini yanar söner.

while(1){

  if (input(pin_a0)){
  output_high(pin_b0);
  delay_ms(1000);
  }
  else
  { 
  output_low(pin_b0);//  buton  satırı
..}
....
....
}

erdoganacun

biliyorum ben b0  portunu  deneme için öyle  yaptım

erdoganacun

bhocam birde   b portunu komple  nasıl  1  yaparım

mg1980

#7
output_b(0x01);    olabilir sanırım bir deneyin.

veya  yaptığınız gibi ;
output_b(b11111111);

erdoganacun


erdoganacun

hocam hata veriyor  hatada  else  deyimini  gösteriyor

mg1980

Düzelttim bu şekliyle deneyin.

erdoganacun

nerde hocam  göremedim

mg1980

İlk cevabım üzerinde düzelttim.

erdoganacun

while(1){  // sonsuz  döngü


  if (input(pin_a0))
  output_b(0b00001111);
  delay_ms(1000); 
  output_b(0b00000000);
   
  }
 


output_b(0b00000111);
delay_ms(1000);
output_b(0b00000111);
delay_ms(1000);
output_b(0b00000011);
delay_ms(1000);
output_b(0b00000001);
delay_ms(1000);
output_b(0b00000000);
delay_ms(1000);
 
 
output_b(0b00000001);
delay_ms(1000);
output_b(0b00000011);
delay_ms(1000);
output_b(0b00000111);
delay_ms(1000);
 
   
  output_b(0b00000111);
  delay_ms(2000);
  output_b(0b00000111);
  delay_ms(1000); 
  output_b(0b00000000);
  delay_ms(1000); 
  output_b(0b00000111);
  delay_ms(1000); 
 
  output_b(0b00000000);// 1  sn   söndür
  delay_ms(1000); 
     
     
output_b(0b00000111);
delay_ms(1000); 
output_b(0b00000000);
delay_ms(1000); 
output_b(0b00000111);
delay_ms(1000); 
output_b(0b00000000);
delay_ms(1000); 
output_b(0b00000111);
delay_ms(1000); 
output_b(0b00000000);
delay_ms(1000); 
output_b(0b00000111);
delay_ms(1000); 

output_b(0b00000111);// 2  sn yak
delay_ms(2000);
   



Setup_timer_2(T2_DIV_BY_16,254,1);//  pwm  satırı
setup_ccp1(CCP_PWM); 


sayi=sayi+5;
if(sayi==255)
{
for(sayi=255;sayi<0;sayi=sayi-5)

{
set_pwm1_duty(sayi);
delay_ms(20);
}
}
set_pwm1_duty(sayi);
delay_ms(20);

 
}

}

erdoganacun

#14
mg1980  hocam  burdan isis dosya nasıl ekleniyor acaba

Powered by EzPortal