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 * * [email protected] * * 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 havada yazı projesine ait proteus simülasyon şema, visual basic led program ve ccs c kod dosyaları;
Şifre-Pass: 320volt.com
Yayım tarihi: 2011/02/03 Etiketler: ccs c projeleri, ccs c rgb led, havada yazı, microchip pic projeleri, PIC16F877 örnekleri, rgb led, Visual Basic led
güzel proje emeğine sağlık.
yapanın eline emeğine sağlık çok güzel olmuş.
İlgililer için çok daha profesyonel tarzda uygulama videosu linkte mevcut
[youtube]https://www.youtube.com/watch?v=Jc6D_NTv4y0&feature=related[/youtube]
https://www.youtube.com/watch?v=Jc6D_NTv4y0&feature=related
harika olmuş yapan arkadaşı tebrik ediyorum :))
Böyle bir program hep aklımdaydı ama zaman yoktu
Eline sağlık çok güzel olmuş ^^
kardeş elleine sağlık gerçekten çok güzel olmuş 🙂
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
😀 bunlar uçmuş tv yapmış adamlar 😀
Havada kayan yazının maliyeti nedir acaba, çok zaman istiyormu yapması. İlk proje yapacak biri olarak ağır gelirmi bu proje.
maliyeti 70 lira civarında
hotfile.com/dl/110963752/d62acdc/rgb_ledlerle_havaya_yaz_korhan_uslu.rar.html
———–
edit: alternatif link : rgb-ledlerle-havaya-yazi-korhan-uslu.ZIP
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
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
Ö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.
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.
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 !
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
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.
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.
korhan bey
mümkünse bi görüşebilir miyiz…
@mehmet
Visual Basic code generator için önceki yorumlarda link paylaştım.
@ömer daağdaş
buyrun istediğiniz soruyu sorabilirsiniz
Bu tip devrelerde oluşturulan yazı veya şekillerde oluşan hafif bir uzama var bunu engellemenin bir yolu var mı?
uzama derken neyi kastettiniz?
Net bir görüntü olmuyor. Diyelim normalde A harfinin birinci sütunu 1cm olması gerekirken 2-3cm oluyor.
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.
mıknatısı, motorun üstüne yerleştirdikten sonra
reed anahtarı, mıknatısa yakın mı yerleştirdiniz ??
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 yazılı bir hex dosyası varmı koyabilinmi
hocam motorun özelliklerini verebilir misiniz kaç devirli bir motor kullandınız
Korhan bey,acaba 7805 in önünde ve arkasındaki kondansatörlerin değerleri nedir?Bildirirseniz sevinirim.
kondansatör değerlerini hatırlamıyorum ama onları koymayıp boş bıraksan da çalışır zaten
Teşekkür ederim.Elinize sağlık
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.
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);
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.
devre de bakır plakete motoru nasıl sabitlediniz.fan veya saç kurutma makinesi motorunu devrede kullanayım lütfen acil
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?
merhaba picprojedeki devre rgb ledler ortak anot mu ?
merhaba picprojedeki devre rgb ledler ortak anot mu katot mu?
Merhaba, ortak anot rgb led
Şemada yazıyor…
merhaba 31 ve 33. pin uçları arası boş oraya mı reed röle takılacak ? Cevaplarsanız sevinirim saolun.
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ş
Saolun yani 31 33 arası reed röle bağlantısı değil mi fotoğrafta o arada direnç var gibi
aynı pinden şaseye karşı 10k direnç de var şemaya bakmıyormusunuz ???
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