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ı;

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;
}
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; gevv
















Yada nokta tire gibi görünüyo bu daha açık oldu sanırım.
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..
Korhan kardeşim devrenin pcb şeması ve devre elemanlarınıda verme imkanın varmı ?
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.