Havada yazı yazma visual basic rgb led ccs c

| Mart 23, 2021 Tarihinde güncellendi
Havada yazı 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 Dosya indirme LINK listesi (TXT formatında) link-13910.zip şifre-pass: 320volt.com

Yayım tarihi: 2011/02/03 Etiketler: , , , , , ,



46 Yorum “Havada yazı yazma visual basic rgb led ccs c

  1. mtmrtsn

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

    CEVAPLA
  2. AYB

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

    CEVAPLA
  3. 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]https://www.youtube.com/watch?v=qHMs1iBg4BI&feature=related[/youtube]
    https://www.youtube.com/watch?v=qHMs1iBg4BI&feature=related

    CEVAPLA
  4. OKAN

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

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

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

    elektrotekno.com/about56162.html

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

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

    CEVAPLA
  9. 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 !

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

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

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

    CEVAPLA
  13. ömer dağdaş

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

    CEVAPLA
  14. korhan uslu

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

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

    CEVAPLA
  15. Anıl

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

    CEVAPLA
  16. Anıl

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

    CEVAPLA
  17. Anıl

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

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

    CEVAPLA
  19. ArseniK

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

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

    CEVAPLA
  21. gürkan

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

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

    CEVAPLA
  23. menderes

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

    CEVAPLA
  24. fatih

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

    CEVAPLA
  25. djtur

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

    CEVAPLA
  26. korhan

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

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

    CEVAPLA
  28. 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);

    CEVAPLA
    1. Samet

      Cevap için saolun kod oluşturucu program çalışmıyor hata veriyor programın kodunu verseniz veya kodun mantığı anlatılsa iyi olur devreeyi yapacağım ama kodda sıkıntı olmasın.

      CEVAPLA
  29. bedo

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

    CEVAPLA
  30. 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?

    CEVAPLA
  31. samet

    merhaba picprojedeki devre rgb ledler ortak anot mu katot mu?

    CEVAPLA
  32. samet

    merhaba 31 ve 33. pin uçları arası boş oraya mı reed röle takılacak ? Cevaplarsanız sevinirim saolun.

    CEVAPLA
  33. gevv Yazar

    Merhaba, pin 31 boş değil şase, pin 33 reed röle bağlantısı reed rölenin diğer ucuda şaseye bağlanacak pin 33 şaseye çekildiği ve yakın olduğu için reed röle şaseside o pin üzerinden verilmiş

    CEVAPLA
    1. Samet

      Saolun yani 31 33 arası reed röle bağlantısı değil mi fotoğrafta o arada direnç var gibi

      CEVAPLA
      1. gevv Yazar

        aynı pinden şaseye karşı 10k direnç de var şemaya bakmıyormusunuz ???

        CEVAPLA
  34. Samet

    Pcb baskıda arada direnç yok o yüzden dedim röle de bu olur mu saolun bu arada
    robotistan.com/reed-role-reed-contact

    CEVAPLA

Bir cevap yazın

E-posta hesabınız yayımlanmayacak.