pic animasyon butonkontrol (C dili)

Başlatan tabutcu, 12 Ocak 2013, 15:27:12

tabutcu

Selamun aleyküm.

Pic 16f628a entegresi ile 2 kanallı bir animasyon hazırladık.

ancak bu animasyonlar ard arda oluyor yani biri bitiyor biri başlıyor sonra tekrar sonsuza kadar böyle (pil bitene kadar) bunu bir buton ile kontrol etmem için nasıl bir kod yazmam lazım ?
Paylaş:

t2

Bunu bir buton ile kontrol etmek için şöyle bir kod yazmalısın.

Okan AKÇA

kodunuzu paylaşırsanız yardımcı olabiliriz...

tabutcu


set_tris_b(0x00);
output_b(0x00);

while(1)


{
output_high(pin_b0);
delay_ms(20);
output_low(pin_b0);
output_high(pin_b1);
delay_ms(20);
output_low(pin_b1);
output_high(pin_b2);
delay_ms(20);
output_low(pin_b2);
output_high(pin_b3);
delay_ms(20);
output_low(pin_b3);
output_high(pin_b4);
delay_ms(20);
output_low(pin_b4);
output_high(pin_b5);
delay_ms(20);
output_low(pin_b5);
output_high(pin_b6);
delay_ms(20);
output_low(pin_b6);
output_high(pin_b7);
delay_ms(20);
output_low(pin_b7);
output_high(pin_b7);
delay_ms(20);
output_low(pin_b7);
output_high(pin_b6);
delay_ms(20);
output_low(pin_b6);
output_high(pin_b5);
delay_ms(20);
output_low(pin_b5);
output_high(pin_b4);
delay_ms(20);
output_low(pin_b4);
output_high(pin_b3);
delay_ms(20);
output_low(pin_b3);
output_high(pin_b2);
delay_ms(20);
output_low(pin_b2);
output_high(pin_b1);
delay_ms(20);
output_low(pin_b1);
output_high(pin_b0);
delay_ms(20);
output_low(pin_b0);
}

ufak bir animasyon bunu yanına 1animasyon daha ekleyeceğim ancak buton ile kontrolünü nasıl sağlayabilirim ?

serhat1990

#4
Merhabalar ,

Örnek veriyorum ... A1 ve A2 pinlerinde butonların olsun . Ledler B portunda olsun diyelim . Giriş tanımlamalarını yapmıyorum onları kendin eklersin . Anime'yide istediğin gibi doldur :)

Umarım yardımcı olur ...

İyi çalışmalar dilerim.

Aynı zamanda bu konudaki örnekleri indir bazı şeyleri daha net kavrayabilirsin .

https://www.picproje.org/index.php/topic,38490.0.html

void anime1(void)
{
   // Doldur animasyonunu içine
}

void anime2(void)
{
    // Doldur animasyonu içine  
}

void main()
{
// Buraları kendin doldurursun ...

while(1)
{
if(input(PIN_A1)==1)
{
Delay_Ms(200);
anime1();
}
if(input(PIN_A2)==2)
{
Delay_Ms(200);
anime1();
}
}
}
 

artapon

if(!input(PIN_A0))
   {
   output_high(pin_b0);
delay_ms(20);
output_low(pin_b0);
   }
   
   if(!input(PIN_A1))
   {
  output_high(pin_b1);
delay_ms(20);
output_low(pin_b1);
   }
..
..
...
Aldanma İnsanların Samimiyetine, Menfaatleri İçin Gelirler Vecde, Vaad Etmeseydi Allah cenneti, O'na Bile Etmezlerdi Secde!   (NFK)

tabutcu

#6
serhat hocam çok teşekkür ederim projeme çok büyük yardımınız oldu artapon hocam sizede çok teşekkür ederim

necati

//Led animasyon
#include <16F648A.h>
#FUSES NOWDT                   
#FUSES INTRC                   
#FUSES PUT                     
#FUSES NOPROTECT               
#FUSES NOBROWNOUT               
#FUSES MCLR                     
#FUSES NOLVP                   
#FUSES NOCPD                   
#use delay(clock=4000000)

#include "animations.h"

#define frame_time 200

#define bu pin_a0
#define ba pin_a1

unsigned int8 index=0,im=8;


void but(void);
////////////////////////////////////////////////////////////////////////
void main(){

   unsigned int8 i=0;
   //unsigned int8 j=0;
   //unsigned int8 k=0;
   
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
   setup_timer_1(T1_INTERNAL|T1_DIV_BY_4);
   setup_timer_2(T2_DIV_BY_16,255,1);
   setup_ccp1(CCP_OFF);
   set_pwm1_duty(0);
   setup_comparator(NC_NC_NC_NC);
   setup_vref(FALSE);
   disable_interrupts(GLOBAL);
   setup_oscillator(osc_4MHz); 
   output_a(0);
   output_b(0);
   index=read_EEPROM (20);
   if(index>5){index=0;write_eeprom(20,index);}
   
   im=read_EEPROM (21);
   if(im>8){im=2;write_eeprom(21,2);}
   if(im<2){im=2;write_eeprom(21,2);}
   
////////////////////////////////////////////////////////////////////////   
   while(true){
////////////////////////////////////   
   while(index==0){
      for(i=0;i<im;i++){
         output_b(anim_1);
         delay_ms(frame_time);}

      for(i=0;i<im;i++){
         output_b(anim_2);
         delay_ms(frame_time);
         but();
         }
         }
////////////////////////////////////         
while(index==1){
      for(i=0;i<im;i++){
         output_b(anim_3);
         delay_ms(frame_time);}
     
      for(i=0;i<im;i++){
         output_b(anim_4);
         delay_ms(frame_time);
         but();
         }
         }
////////////////////////////////////         
while(index==2){     
      for(i=0;i<(im*4);i++){
         output_b(anim_5);
         delay_ms(frame_time);
         but();
         }
         }
/////////////////////////////////////         
   while(index==3){
      for(i=0;i<im;i++){
         output_b(anim_1);
         delay_ms(frame_time);
         output_b(0);
         delay_ms(frame_time);
         }

      for(i=0;i<im;i++){
         output_b(anim_2);
         delay_ms(frame_time);
         output_b(0);
         delay_ms(frame_time);
         but();
         }
         }
////////////////////////////////////         
while(index==4){
      for(i=0;i<im;i++){
         output_b(anim_3);
         delay_ms(frame_time);
         output_b(0);
         delay_ms(frame_time);
         }
     
      for(i=0;i<im;i++){
         output_b(anim_4);
         delay_ms(frame_time);
         output_b(0);
         delay_ms(frame_time);
         but();
         }
         }
////////////////////////////////////         
while(index==5){     
      for(i=0;i<(im*4);i++){
         output_b(anim_5);
         delay_ms(frame_time);
         output_b(0);
         delay_ms(frame_time);
         but();
         }
         }         
   }
}
////////////////////////////////////////////////////////////////////////////////
void but(void){
////////////////////////
while(!input(bu)){
index++;
if(index>5){index=0;}
write_eeprom(20,index);
switch(index){
case 0x0:
output_b(0);
break;
////////////////////////////
case 0x1:
output_b(1);
break;
////////////////////////////
case 0x2:
output_b(3);
break;
////////////////////////////
case 0x3:
output_b(7);
break;
////////////////////////////
case 0x4:
output_b(15);
break;
////////////////////////////
case 0x5:
output_b(31);
break;
}
delay_ms(1000);
}

///////////////////////////////////////////////den
while(!input(ba)){
im++;
if(im>8){im=2;}
if(im<2){im=2;}
write_eeprom(21,im);
switch(im){
////////////////////////////
case 0x2:
output_b(3);
break;
////////////////////////////
case 0x3:
output_b(7);
break;
////////////////////////////
case 0x4:
output_b(15);
break;
////////////////////////////
case 0x5:
output_b(31);
break;
////////////////////////////
case 0x6:
output_b(63);
break;
////////////////////////////
case 0x7:
output_b(127);
break;
////////////////////////////
case 0x8:
output_b(255);
break;
}
delay_ms(1000);
}//den

}
////////////////////////////////////////////////////////////////////////

//animations.h
const char anim_1[8]=
   {
         0b00000001,
         0b00000010,
         0b00000100,
         0b00001000,
         0b00010000,
         0b00100000,
         0b01000000,
         0b10000000,
   };

const char anim_2[8]=
   {
         0b10000000,
         0b01000000,
         0b00100000,
         0b00010000,
         0b00001000,
         0b00000100,
         0b00000010,
         0b00000001,
   };

const char anim_3[8]=
   {
         0b00000001,
         0b00000011,
         0b00000111,
         0b00001111,
         0b00011111,
         0b00111111,
         0b01111111,
         0b11111111,
   };

const char anim_4[8]=
   {
         0b10000000,
         0b11000000,
         0b11100000,
         0b11110000,
         0b11111000,
         0b11111100,
         0b11111110,
         0b11111111,
   };

const char anim_5[36]=
   {
         0b10000000,
         0b01000000,
         0b00100000,
         0b00010000,
         0b00001000,
         0b00000100,
         0b00000010,
         0b00000001,
         0b10000001,
         0b01000001,
         0b00100001,
         0b00010001,
         0b00001001,
         0b00000101,
         0b00000011,
         0b10000011,
         0b01000011,
         0b00100011,
         0b00010011,
         0b00001011,
         0b00000111,
         0b10000111,
         0b01000111,
         0b00100111,
         0b00010111,
         0b00001111,
         0b10001111,
         0b01001111,
         0b00101111,
         0b00011111,
         0b10011111,
         0b01011111,
         0b00111111,
         0b10111111,
         0b01111111,
         0b11111111,
   };




[email]entegreterbiyecisi@yahoo.com[/email]

serhat1990

Alıntı yapılan: tabutcu - 12 Ocak 2013, 22:40:20
serhat hocam çok teşekkür ederim projeme çok büyük yardımınız oldu artapon hocam sizede çok teşekkür ederim

Ne demek iyi çalışmalar dilerim :)

ipek

#9
necati hocam bu güzel kodu Codetag içine alırmısınız,bazı yerler gülen yada gözlüklü emotion gibi

çıkıyor.

8) yaptım çalıştı fakat kesmede uzun kalıyor butona baya basmak gerekiyor kısaltılabilirmi..?

tabutcu

Alıntı yapılan: serhat1990 - 12 Ocak 2013, 23:44:08
Ne demek iyi çalışmalar dilerim :)

Hocam peki bu animasyonları tekbir butonla nasıl kontrol edebilirim ?