Picproje Elektronik Sitesi

DERLEYİCİLER => PIC C => Konuyu başlatan: tabutcu - 12 Ocak 2013, 15:27:12

Başlık: pic animasyon butonkontrol (C dili)
Gönderen: tabutcu - 12 Ocak 2013, 15:27:12
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ş:
Başlık: Ynt: pic animasyon butonkontrol (C dili)
Gönderen: t2 - 12 Ocak 2013, 20:07:58
Bunu bir buton ile kontrol etmek için şöyle bir kod yazmalısın.
Başlık: Ynt: pic animasyon butonkontrol (C dili)
Gönderen: Okan AKÇA - 12 Ocak 2013, 20:56:09
kodunuzu paylaşırsanız yardımcı olabiliriz...
Başlık: Ynt: pic animasyon butonkontrol (C dili)
Gönderen: tabutcu - 12 Ocak 2013, 21:48:32

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 ?
Başlık: Ynt: pic animasyon butonkontrol (C dili)
Gönderen: serhat1990 - 12 Ocak 2013, 22:24:09
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 (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();
}
}
}

 
Başlık: Ynt: pic animasyon butonkontrol (C dili)
Gönderen: artapon - 12 Ocak 2013, 22:39:33
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);
   }
..
..
...
Başlık: Ynt: pic animasyon butonkontrol (C dili)
Gönderen: 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
Başlık: Ynt: pic animasyon butonkontrol (C dili)
Gönderen: necati - 12 Ocak 2013, 23:03:12
//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,
   };




Başlık: Ynt: pic animasyon butonkontrol (C dili)
Gönderen: serhat1990 - 12 Ocak 2013, 23:44:08
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 :)
Başlık: Ynt: pic animasyon butonkontrol (C dili)
Gönderen: ipek - 13 Ocak 2013, 03:30:18
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..?
Başlık: Ynt: pic animasyon butonkontrol (C dili)
Gönderen: tabutcu - 15 Ocak 2013, 17:38:22
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 ?