pwm+ led animasyon

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

mg1980

Erdoğan Bey,
Gene aynı hatayı yapmışsınız.while(1) {
.....
}  demek devamlı bu iki süslü parantez arasında döner demek.Siz bu arada butona basarsanız B portunun ilk dört biti 1 sn.yanıp söner oraya bir delay daha koyarsanız 1 sn. de sönük kalır. Ama bir şartla; Buton bağlantınızın doğru olması şartıyla ki burada butonunuz PULL DOWN bağlantıda olmalı.Böyle mi ?
Gelelim parantezin dışına. Yazdığınız şekilde oraya hiç bir zaman çıkmaz. Benim ilk cevabımda yazdığım kısa kodu örnek alarak yapmanız lazım.

erdoganacun

rica  etsem size  zahmet olmazsa  en sonki  yazdığıma ilave yaparsanız  yeni olduğum için  bazı kavramları tam  anlayamıyorum sizide zahmet verdiriyorum .ayrıca ilginize de çok teşekkür  ediyorum. sadece kitaptan ve videolardan öğrenmeye  çalışıyorum

erdoganacun


mg1980

#18
İsis işini pek bilmiyorum.Ancak kodunuzun tamamını göndermek için programı yazdığınız editörün sayfasında kodunuz açık iken tümünü seçin sağ tıkla kopyalayın. Forumda yanıtla butonuna basıp açılan pencerede kod ekle (#) butonuna basın.   (code    code yazan iki parantez arasına tıklayıp yapıştırın).Bu şekilde bana gönderin bakayım.

erdoganacun

#19
#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() // ana program başlangıç
{

set_tris_a(0x01);  // a portunun  0  pini  buton giriş
set_tris_b(0x00); // b portu  tümü çıkış
output_a(0x00);  // a portu  sıfırlandı
output_b(0x00); // b portu  sıfırlandı




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

[#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() // ana program başlangıç
{

set_tris_a(0x01);  // a portunun  0  pini  buton giriş
set_tris_b(0x00); // b portu  tümü çıkış
output_a(0x00);  // a portu  sıfırlandı
output_b(0x00); // b portu  sıfırlandı




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);

 
}

}

/code]

erdoganacun

şimdi  oldu  kusura  bakmayın nede olsa  ilk okul mezunuyum

mg1980

#22
Estağfirullah.Bu azim işi.Tahsil ikinci planda bence.Kodunuzun diğer tarafı doğruysa çalışması lazım.
[#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() // ana program başlangıç
{

set_tris_a(0x01);  // a portunun  0  pini  buton giriş
set_tris_b(0x00); // b portu  tümü çıkış
output_a(0x00);  // a portu  sıfırlandı
output_b(0x00); // b portu  sıfırlandı




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


  if (input(pin_a0)){
  output_b(0b11111111);
  delay_ms(1000); 
  output_b(0b00000000);
  delay_ms(1000);
  while(input(pin_a0));  // !!!!!!!!!!!!!!!!!!!!!!!DİKKAT İLAVE
}
   
 
 


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);

 
}

}

/code]

erdoganacun

malesef yine olmadı  butona basıyorum  port  b0,b1,b2,b3    yanmıyor    yine  diğer pwm ve animasyonlar devam ediyor  yani buton activ olamıyor

erdoganacun


mg1980

Hocam, diğer animasyonların devamının uzunca bir süresi var.Bu süre tamamlanıp başa döndüğünde butonu görür.Bunun için butona basılı tutun. Kodun bu durumuna göre(benim yaptığım düzeltmeyi aktardı iseniz) B portunun tamamının yanıp sönmesi gerekir.

erdoganacun

butona basılı tutunca   b portunun  tümüne  1   göndermek istiyorum    taki butonu bırakıncaya kadar butonu bırakınca  yine pwm ve diğer animasyonlar devam estsin istiyorum  bu şekilde olurmu 

mg1980


erdoganacun


erdoganacun

buton  hiç bir işlem yapmıyor

Powered by EzPortal