1000 kişiden bir kişi için ! devam.... 320volt blog

Elektronik Devreler Projeler » Microchip PIC devreleri bilgiler »

Havada yazı yazma visual basic rgb led ccs c

havada-yazi-yazma-visual-basic-rgb-led-ccs-c

Bir çok havada yazı yazma uygulamasına göre daha üstün bir uygulama visual basic ile hazırlanan kontrol programı sayesinde istenilen yazı, belirlenen rekte yazdırılıyor.

Havada yazı yazma devresinde kullanılan mikrodenetleyici pic16f877 kod CCS C ile hazırlanmış 8 adet rgb led kullanılıyor.

Hazırlayan: Korhan USLU – Emeği geçen hazırlayan kişilere teşekkürler

Visual Basic code generator rgb programının kullanımı;

leds-rgb-Visual-Basic-code-generator-rgb-program-kullanimi

Yazı ve şekilleri oluşturmak için Visual Basic’de bir program yazdım. Program oluşturduğum şeklin oluşması için gereken kodları ve şeklin dizi halini C: de rgb.txt ve rgb1.txt dosyalarına oluşturuyor. ilk başta direk sıralı kodları kullanıyordum yazıyı oluşturmak için ama bu şekilde pic’in hafızası yetmiyordu, ben de şekli dizi halinde tanımlayıp döngüyle göstermeyi denedim ve çok daha az yer kapladı. tavsiyem rgb1.txt içine oluşan dizileri kullanın. rgb1.txt içinde fazladan oluşan 255 leri silin bi harfi 6 byte dan oluşturun sondaki bir 255 bir boşluk anlamında. harfleri birleştirip yazıyı oluşturun. ccs c kodlarına bakarsanız anlarsınız zaten. programda her oluşturduğunuz harf in dizisi rgb1.txt nin içine eklenecek. yani içindeki bilgiler silinmeyecek oraya dikkat edin.

RGB Ledler ile havada yazı yazdırma görüntüleri;

RGB LED’lerle havaya yazı yazma picproje2.c ccs c yazılım içeriği;

/***************************************************************
*  Proje   : RGB LED'lerle havaya yazı yazma                   *
*  Name    : picproje2.c                                       *
*  Author  : [KORHAN USLU]                                     *
*  Notice  : Copyright (c) 2010 [KORHAN USLU]                  *
*          : All Rights Reserved                               *
*  Date    : 30.12.2010                                        *
*  Version : 4.4                                               *
*  korhan-uslu@hotmail.com                                     *
*  www.facebook.com/korhanuslu                                 *
****************************************************************
*/
#include <16f877.h>     // Kullanılacak denetleyicinin başlık dosyası tanıtılıyor.

#fuses XT,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD // Denetleyici konfigürasyon ayarları

#use delay (clock=4000000) // Gecikme fonksiyonu için kullanılacak osilatör frekansı belirtiliyor.

#use fast_io(b) //Port yönlendirme komutları B portu için geçerli
#use fast_io(c) //Port yönlendirme komutları C portu için geçerli
#use fast_io(d)
#use fast_io(a)

//#HEXCOMMENT KORHAN USLU
int1 a=1;
unsigned int i=0;
unsigned int16 k=1;
unsigned int j=0;
unsigned int w=0;
unsigned int s=0;
unsigned int z=255;
unsigned int r1=(0b00111001);
unsigned int g1=(0b11100001);
unsigned int b1=(0b10001101);
unsigned int r2=0;
unsigned int g2=0;
unsigned int b2=0;
//_______________________

unsigned int32 kesme=0; // Tamsayı tipinde 16 bitlik değişken tanımlanıyor

unsigned int b=45;
unsigned int c=39;
unsigned int d=33;

unsigned int r_1[8]={0x00,0x00,0xff,0xff,0xff,0x00,0x00,0xff,};
unsigned int r_2[8]={0xff,0x00,0x00,0xff,0xff,0xff,0x00,0x00,};
unsigned int g_1[8]={0xff,0x00,0x00,0x00,0xff,0xff,0x00,0xff,};
unsigned int g_2[8]={0xff,0xff,0x00,0x00,0x00,0xff,0xff,0x00,};
unsigned int b_1[8]={0xff,0xff,0xff,0x00,0x00,0x00,0x00,0xff,};
unsigned int b_2[8]={0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,};
//------------------------------
unsigned int ayyildiz[21]={195,          129,          24,           60,           126,
                           189,          219,          255,          255,          119,
                           55,           131,          129,          192,          129,
                           131,          55,           119,          255,          255,
                           255,};//ay yıldız dizisi

unsigned int korhan[36]={ 0,    231,    219,    60,     126,    255,   //K [0]-[5]
                          129,  126,    126,    126,    129,    255,   //O [6]-[11]
                          0,    230,    214,    185,    127,    255,   //R [12]-[17]
                          0,    239,    239,    239,    0,      255,   //H [18]-[23]
                          3,    237,    238,    237,    3,      255,   //A [24]-[29]
                          0,    249,    231,    159,    0,      255,   //N [30]-[35]
};
unsigned int uslu[24]={  128,          127,          127,          127,          128,          255, //U [0]-[5]
                         185,          118,          118,          110,          157,          255, //S [6]-[11]
                         0,            127,          127,          127,          127,          255, //L [12]-[17]
                         128,          127,          127,          127,          128,          255, //U [18]-[23]
};
unsigned int kou[18]={ 0,    231,    219,    60,     126,    255,   //K [0]-[5]
                       129,  126,    126,    126,    129,    255,   //O [6]-[11]
                       131,  126,    127,    126,    131,    255,   //Ü [12]-[17]
};

unsigned int mekatronik[58]={0,            249,          231,          249,          0,            255, //M
                             0,            110,          110,          110,          110,          255, //E
                             0,            231,          219,          60,           126,          255, //K
                             3,            237,          238,          237,          3,            255, //A
                             254,          254,          0,            254,          254,          255, //T
                             0,            230,          214,          185,          127,          255, //R
                             129,          126,          126,          126,          129,          255, //O
                             0,            249,          231,          159,          0,            255, //N
                             123,          2,            123,          255,                             //İ
                             0,            231,          219,          60,           126,          255, //K
};
unsigned int mekatronik1[58]={255,255,255,255,255,255,//geçici değişken
                              255,255,255,255,255,255,
                              255,255,255,255,255,255,
                              255,255,255,255,255,255,
                              255,255,255,255,255,255,
                              255,255,255,255,255,255,
                              255,255,255,255,255,255,
                              255,255,255,255,255,255,
                              255,255,255,255,
                              255,255,255,255,255,255,};
//sinüsoidal dalgalar
unsigned int dalgakirmizi[15]={231,          219,          189,          126,          189,
                               219,          231,          231,          219,          189,
                               126,          126,          189,          219,          231,};
unsigned int dalgamor[15]={239,          223,          191,          127,          191,
                           223,          239,          247,          251,          253,
                           254,          254,          253,          251,          247,};  

//****** Dış Kesme Fonksiyonu *****************

#int_ext              // Dış (External) RB0/INT kesmesi
void  ext_kesmesi ()
{    // Dış kesme fonksiyonu

kesme=kesme+1;//her tur kesme 1 artar

   a=1;
   i=1;
   if (kesme>680){   // animasyonlar bittiğinde başa döner
      kesme=0;
      b=45;
      c=39;
      d=33;
      k=0;
      w=0;
      z=7;
      s=0;
      for(w=0;w<58;w++)
      {
      mekatronik1[w]=255;
      }
   }

} 

/********* ANA PROGRAM FONKSİYONU********/
void goster(){

   while(kesme<5){//pwm ile renk geçişleri
      output_a(0x01);
      output_b(0xff);
      output_d(0xff);
      output_c(0xff);
      for(w=0;w<8;w++){
      for (k=1;k<1000;k++){
         for(j=1;j<3;j++){
            output_a(r_1[w]);
            output_b(r_1[w]);
            output_d(g_1[w]);
            output_c(b_1[w]);
            delay_us(k);
            output_a(r_2[w]);
            output_b(r_2[w]);
            output_d(g_2[w]);
            output_c(b_2[w]);
            delay_us(1000-k);
            if(kesme>5){
            break;
            }
         }
      if(kesme>5){//motor dönmeye başlayınca 5 tur sonra döngüden çık
      break;
      }
      }
      if(kesme>5){//motor dönmeye başlayınca 5 tur sonra döngüden çık
         break;
         }
      k=1;
      }

   }

while((kesme<120)&&(kesme>5)){//çiçek 

   output_b(dalgakirmizi[w]);//kırmızı
   output_a(dalgakirmizi[w]);//kırmızı
   output_d(255);//yeşil
   output_c(dalgamor[w]);//mavi
   delay_ms(1);
   w=w+1;
   if ((w>15)||(a==1)){
   a=0;//!!dalganın kaymasını düzelt!!
   w=0;//dalga döngüsü taşınca döngü başa alınır.
   //görüntüde kayma olmaması için kesme geldiğinde dalga döngüsü başa alınır.
   }

}

//-------------------------------------\

if(kesme>120){//şelale
if(kesme<160){
   w=w+1;
   if(w>4){
   w=0;
   output_b(r1);//kırmızı
   output_a(r1);//kırmızı
   output_d(g1);//yeşil
   output_c(b1);//mavi
   r2=r1<<1;//bit dizisi sola kaydırlır
   g2=g1<<1;//bit dizisi sola kaydırlır
   b2=b1<<1;//bit dizisi sola kaydırlır
   if(bit_test(r1,7)){
      r2=r2+1;
   }
   if(bit_test(g1,7)){
      g2=g2+1;
   }
   if(bit_test(b1,7)){
      b2=b2+1;
   }
   r1=r2;
   g1=g2;
   b1=b2;
   }
}
}
//---------------------------
if(kesme>160){//kayan koü
if(kesme<280){
   w=0;
   delay_ms(b);
   for (w=0;w<6;w++){//kırmızı K kayarak başa gelir
      output_b(kou[w]);//kırmızı
      output_a(kou[w]);//kırmızı
      output_d(255);//yeşil-sönük
      output_c(255);//mavi-sönük
      delay_ms(1);
   }
   if(b<4){
      w=5;
      delay_ms(c);
      for (w=5;w<12;w++){//yeşil O kayarak K'nın yanına gelir
         output_b(255);//kırmızı-sönük
         output_a(255);//kırmızı-sönük
         output_d(kou[w]);//yeşil
         output_c(255);//mavi-sönük
         delay_ms(1);

      }
         if(c<3){
            delay_ms(d);
            w=11;
            for (w=11;w<18;w++){//mavi Ü kayarak O'nun yanına gelir
               output_b(255);//kırmızı
               output_a(1);//kırmızı
               output_d(255);//yeşil
               output_c(kou[w]);//mavi
               delay_ms(1);
            }
            if(d<3){
            d=3;
            }
            c=3;
            d=d-1;
         }
      c=c-1;
      b=3;
   }
   b=b-1;
}
}

//-------------------kırmızı kou
if((kesme>280)&&(kesme<320)){
   w=0;
   for (w=0;w<18;w++){
      output_b(kou[w]);
      output_a(kou[w]);
      output_d(255);
      output_c(255);
      delay_ms(1);
   }
}
//--------------------yeşil kou
if((kesme>320)&&(kesme<360)){
   w=0;
   for (w=0;w<18;w++){
      output_b(255);
      output_a(255);
      output_d(kou[w]);
      output_c(255);
      delay_ms(1);
   }
}

if((kesme>360)&&(kesme<440)){
   s=s+1;
   if (kesme<362){
   j=0;
   z=7;
   }

   if (kesme>362){
   if (j<8){
   if (s>9)
   s=0;
   for (w=0;w<58;w++){
      mekatronik1[w]=mekatronik1[w]<<1;
      if((bit_test(mekatronik[w],z))==0){
      bit_clear(mekatronik1[w],0);//mekatronik dizisi bitleri sondan
      }                          //mekatronik1in başına aktarılır
      else
      {
      bit_set(mekatronik1[w],0);
      }

   }
   j=j+1;
   z=z-1;
   }
   }
      for (w=0;w<58;w++){
         output_b(255);
         output_a(255);
         output_d(mekatronik1[w]);
         output_c(255);
         delay_ms(1);
      }
}
//--------------mekatronik
if((kesme>440)&&(kesme<480)){//mavi mekatronik

   w=0;
   for (w=0;w<58;w++){
      output_b(255);
      output_a(255);
      output_d(255);
      output_c(mekatronik[w]);
      delay_ms(1);
   }
}

//-------------------------
if((kesme>480)&&(kesme<520)){//kırmızı mekatronik
   w=0;
   for (w=0;w<58;w++){
      output_b(mekatronik[w]);
      output_a(mekatronik[w]);
      output_d(255);
      output_c(255);
      delay_ms(1);
   }
}
//-------------------------
if((kesme>520)&&(kesme<560)){//turkuaz mekatronik
   w=0;
   for (w=0;w<58;w++){
      output_b(0);
      output_a(0);
      output_d(mekatronik[w]);
      output_c(mekatronik[w]);
      delay_ms(1);
   }
}

//----------------TÜRK BAYRAĞI
if((kesme>560)&&(kesme<620)){
   w=0;
   for (w=0;w<21;w++){
      output_b(0);
      output_a(0);
      output_d(ayyildiz[w]);
      output_c(ayyildiz[w]);
      delay_ms(1);
   }

}
//-----------------korhan uslu
if((kesme>620)&&(kesme<680)){
   w=0;
   for (w=0;w<36;w++){
      output_b(korhan[w]);
      output_a(korhan[w]);
      output_d(255);
      output_c(255);
      delay_ms(1);
   }
   w=0;
   for (w=0;w<24;w++){
      output_b(uslu[w]);
      output_a(uslu[w]);
      output_d(uslu[w]);
      output_c(255);
      delay_ms(1);
   }
}
//------------------

}
void main ( )
{

   setup_psp(PSP_DISABLED);        // PSP birimi devre dışı
   setup_spi(SPI_SS_DISABLED);     // SPI birimi devre dışı
   setup_timer_1(T1_DISABLED);     // T1 zamanlayıcısı devre dışı
   setup_timer_2(T2_DISABLED,0,1); // T2 zamanlayıcısı devre dışı
   setup_adc_ports(NO_ANALOGS);    // ANALOG giriş yok
   setup_adc(ADC_OFF);             // ADC birimi devre dışı
   setup_CCP1(CCP_OFF);            // CCP1 birimi devre dışı
   setup_CCP2(CCP_OFF);            // CCP2 birimi devre dışı

   set_tris_b(0x01);   //B0 pini giriş,diğer uçlar çıkış
   set_tris_c(0x00);   //c portu çıkış
   set_tris_d(0x00);   //d portu çıkış
   set_tris_a(0x00);   //a portu çıkış
   output_b(0x00);     // B portu çıkışı ilk anda sıfırlanıyor

   ext_int_edge(H_TO_L);   // INT_EXT kesmesinin düşen kenarda aktif olacağını belirtir
   enable_interrupts(INT_EXT);  // INT_EXT kesmesini aktif yapar
   enable_interrupts(GLOBAL);   // Aktif edilen kesmelere izin ver
   b=45;
   c=39;
   d=33;
   r1=(0b00111001);
   g1=(0b11100001);
   b1=(0b10001101);

   output_b(254);
   output_d(255);
   output_c(255);
   output_a(1);

   basla:

   if(a==1){ //kesme gelince a=1 olur ve göster fonksiyonuna gidilir
      goster();
      a=0;//fonksiyondan dönünca a=0 olur ve tekrar kesme gelmesi beklenir.
      i=0;
   }

   goto basla;
 }

8-rgb-leds-pic16f877-ccs-c-havada-yazi-pov-motor ccsc-led-leds-rgbs-pov-text-havada-yazi-yazdirma pov-leds-rgb-ccs-c-pic16f877-led rgb-led-9v-battery-9volt-pil-pcb-plaket-ccs-c-rgb

RGB Led projesine ait proteus isis şema, visual basic led program ve ccs c kod dosyaları: havada-yazi-yazma-visual-basic-rgb-led-ccs-c.rar

Yazar: gevv

Yazarımızın 320volt.com Blog üzerinde şu an okuduğunuz yazı dahil 1955 yazısı bulunmaktadır. Yazarımız hakkında bilgileri ve diğer yazılarını görmek için bakınız;

Elektronik

 
  1. Anıl says:

    Yada nokta tire gibi görünüyo bu daha açık oldu sanırım.

  2. mustafa says:

    yapanların ellerine emeklerine sağlık ama projenin baskı devresini kullandığı elemanların listesini de koysaydıda başkalarıda yararlana bilseydi keşke..

  3. ArseniK says:

    Korhan kardeşim devrenin pcb şeması ve devre elemanlarınıda verme imkanın varmı ?

  4. banu says:

    reed röleyi nasıl yerleştirdiniz, resimlerde göremedim. tam (reülatör devresiyle)devre şemasını ve malzeme listesini koyabilir misiniz acaba.bunu proje olarak aldım çok az vaktim kaldı.yardımcı olursanız sevinirim.

Yorum Sayfaları

Yorum yapın

Doğrulama: (kutuyu işaretleyiniz)

  • Lütfen Türkçe imla kurallarına dikkat etmeye özen gösteriniz.
  • Yorumunuz yönetici tarafından kontrol edilmeden yayımlanmaz.
  • Paylaşılan devrelerin malzeme listesini istemeyiniz. Olsa zaten paylaşılırdı şema üzerinden listeyi çıkartabilirsiniz
  • Gavatar sitesine avatarınızı yükleyebilirsiniz.