Elektronik / Mikrodenetleyici Projeleri/

Havada yazı yazma visual basic rgb led ccs c

Sponsorlu Bağlantılar

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 yazı yazma visual basic rgb led ccs c

Dosya indirme LINK listesi (TXT formatında) link-13910.zip şifre-pass: 320volt.com

  • walat

    güzel proje emeğine sağlık.

  • aytac dürgen

    yapanın eline emeğine sağlık çok güzel olmuş.
    İlgililer için çok daha profesyonel tarzda uygulama videosu linkte mevcut

    [youtube]http://www.youtube.com/watch?v=Jc6D_NTv4y0&feature=related[/youtube]

    http://www.youtube.com/watch?v=Jc6D_NTv4y0&feature=related

  • tuğba

    harika olmuş yapan arkadaşı tebrik ediyorum :))

  • mtmrtsn

    Böyle bir program hep aklımdaydı ama zaman yoktu
    Eline sağlık çok güzel olmuş ^^

  • AYB

    kardeş elleine sağlık gerçekten çok güzel olmuş :)

  • Elektron_X

    Selam devre güzel olmuş bu konularla ilgilenenler için olayı bir adım daha ileri taşımak ve bir fikir vermek için bende vir video linki gönderiyorum.
    eğer isterseniz dönen ledlerde böyle bir tv veya her hangi bir medya oynatıcı yapabilirsiniz.

    [youtube]http://www.youtube.com/watch?v=qHMs1iBg4BI&feature=related[/youtube]
    http://www.youtube.com/watch?v=qHMs1iBg4BI&feature=related

  • korhan uslu

    :D bunlar uçmuş tv yapmış adamlar :D

  • korhan uslu

    arkadaşlar baskı devrede ufak bir hata var.
    http://rapidshare.com/files/448846679/rgb_ledlerle_havaya_yazae__korhan_uslu.rar
    bu linkten indirirseniz daha iyi veya admin linki değiştirsin

  • OKAN

    Havada kayan yazının maliyeti nedir acaba, çok zaman istiyormu yapması. İlk proje yapacak biri olarak ağır gelirmi bu proje.

  • Akbar

    http://rapidshare.com/files/448846679/rgb_ledlerle_havaya_yazae__korhan_uslu.rar dosyayi kaldirmislar

  • korhan uslu

    maliyeti 70 lira civarında

    http://hotfile.com/dl/110963752/d62acdc/rgb_ledlerle_havaya_yaz_korhan_uslu.rar.html

    ———–
    edit: alternatif link : rgb-ledlerle-havaya-yazi-korhan-uslu.ZIP

  • cafersert

    merhabalar. Korhan kardeşim devreni yaptım eline sağlık çok güzel çaşılıyor ama bu Project2 programı run time error ’76’ hatası veriyor ne yapmam gerek acaba

  • korhan uslu

    o program bende çalışıyor fakat kullanıcı adından dolayı başka bilgisayarda çalışmıyor sanırım. ama çok gerekli değil sadece zaman kazandırır programı yazarken. yazı oluşturmayı elektrotekno sitesinde paylaşmıştım ordan okuyarak anlayabilirsiniz. kolay gelsin..
    http://www.elektrotekno.com/about56162.html

  • İsmail

    Öncelikle çok iyi bir çalışma başarılarının devamını dilerim..

    Bende daha küçüğüm size göre belki lise 3 elektrik elektronik öğrencisiyim ve bundan yapmak istiyorum.

  • balkes22

    Birkaç sorum olacak devreyi kurdum ama sadece çizgiler görüyorum

    reed rölenin yerinde 1kohm direnç gördüm bunu takınca reed röleye gerek var mı
    acaba çalışmamasının nedeni bu olabilir mi.

  • andac 2011

    Devreyi yaptım eline sağlık gayet güzel çalışıyor fakat reed röle takılıyken de aynı değilkende aynı çalışıyor. Bu 1 kohm direnç i neden kullandınız bir açıklama yaparmısınız ? yazıları net göremiyorum !

  • korhan uslu

    reed röle takılı değilken çalışmaması lazım. çünkü reed röle mıknatısa geldiği zaman program yazı bilgisini gönderiyor. reed röle mıknatısın yanına gelmediği sürece yazı oluşmaz. 1kohm regülatör devresinde vardı sanırım ben seçmedim bil.tek.’den aldım regülatör devresini

  • korhan uslu

    baskı devre çiziminde reed röle ve ona bağlı olan 10k direnci koyamadım. şemaya bakarsanız reed röle ve 10k ohm nereye koyulacağını anlarsınız. regülatör devresindeki 1kohm önemsizdir koymasanız da olur.

  • Mehmet

    Merhaba Korhan Bey
    Visual Basic code generator çalıştırdığımda Run-Time error ’76’ Path not found hata mesajı alıyorum işletim sistemim xp servis pack3 bu konuda yardıncı olabilirmisiniz.

  • ömer dağdaş

    korhan bey
    mümkünse bi görüşebilir miyiz…

  • korhan uslu

    @mehmet
    Visual Basic code generator için önceki yorumlarda link paylaştım.

    @ömer daağdaş
    buyrun istediğiniz soruyu sorabilirsiniz

  • Anıl

    Bu tip devrelerde oluşturulan yazı veya şekillerde oluşan hafif bir uzama var bunu engellemenin bir yolu var mı?

  • korhan uslu

    uzama derken neyi kastettiniz?

  • Anıl

    Net bir görüntü olmuyor. Diyelim normalde A harfinin birinci sütunu 1cm olması gerekirken 2-3cm oluyor.

  • Anıl

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

  • mustafa

    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..

  • ArseniK

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

  • banu

    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.

  • gürkan

    mıknatısı, motorun üstüne yerleştirdikten sonra
    reed anahtarı, mıknatısa yakın mı yerleştirdiniz ??

  • korhan

    ya şemadan bakıp listeyi çıkartın onunla da siz uğraşın. herşey hazır zaten. mıknatıs sabit bir yerde duracak reed röle de dönen hareketli kısımda. dönerken reed röle mıknatısın yakınından geçmeli.

  • menderes

    menderes yazılı bir hex dosyası varmı koyabilinmi

  • fatih

    hocam motorun özelliklerini verebilir misiniz kaç devirli bir motor kullandınız

  • djtur

    Korhan bey,acaba 7805 in önünde ve arkasındaki kondansatörlerin değerleri nedir?Bildirirseniz sevinirim.

  • korhan

    kondansatör değerlerini hatırlamıyorum ama onları koymayıp boş bıraksan da çalışır zaten

  • djtur

    Teşekkür ederim.Elinize sağlık

  • doğukan

    merhaba. çok güzel bir çalışma olmuş emeğinize sağlık.ben de bu devreyi gerçekleştirmek istiyorum fakat takıldığım bir nokta var bu 7805′ e bağlı kondansatör,direnç ve diyotun değerini belirtebilir misiniz ? şimdiden teşekkürler.

  • mhr01

    hocam öncelkle elinize sağlık. programın şu kısmında yaptığınız nedir anlayamadım, yani neden 255 ve 254 gönderiyorsunuz?
    output_b(254);
    output_d(255);
    output_c(255);
    output_a(1);

  • bedo

    devre de bakır plakete motoru nasıl sabitlediniz.fan veya saç kurutma makinesi motorunu devrede kullanayım lütfen acil

  • Batuhan Alkan

    Devreyi yapanın ellerine sağlık çok güzel olmuş bende yapıcam bu devernin aynısından ama malzemeleri bilmiyorum bana acil bi şekilde yardımcı olurmusunuz?