GLCD farklı bitmap basma

sitemdepresif

Yeni Üye
Katılım
4 Ocak 2021
Mesajlar
4
Merhaba projemde GLCD'de bir çıktı aldıktan sonra diğerine geçmesini istiyorum fakat ilkini gösterip orada duruyor.

Kod:
void main()
{

   setup_adc_ports(NO_ANALOGS);
   setup_adc(ADC_OFF);
   setup_psp(PSP_DISABLED);
   setup_spi(FALSE);
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DISABLED,0,1);
   set_tris_a(0x00); // A portlari cikis ayarlandi.
   set_tris_c(0b11000000); // C portlari RS232 kullanimina dikkat edilerek cikis/giris olarak ayarlandi.
   glcd_init(on); // GLCD aktif edildi.
   delay_ms(100); // Bekleme suresi
   logoyaz(); // Logo yazma fonksiyonu


}
void bitmapyaz()
{


      int a=0;
      int b=0;


      for(i=0;i<64;i+=8)
      {
         for(j=0;j<128;j++)
         {
            for(k=0;k<8;k++)
            {
               if(bit_test(l1[syc],k))
               {
                  glcd_pixel(a+j,b+i+k,ON);

               }
            }
            syc++;
         }
      }
    
      glcd_init(off);

      glcd_init(on);
      int x=0;
      int y=0;
      syc=0;

      for(i=0;i<64;i=8)
      {
         for(j=0;j<128;j++)
         {
            for(k=0;k<8;k++)
            {
               if(bit_test(logo2[syc],k))
               {
                  glcd_pixel(x+j,y+i+k,ON);

               }
            }
            syc++;
         }
      }
      glcd_init(off);
   }
}
 
Son düzenleme:
Bu hangi işlemci? Arduino mu?
 
İlk resimi sorunsuz gösteriyorsa main deki son 3 satırı sonsuz döngü içine alman yeterli.

Kod:
while(true)
{
       glcd_init(on); // GLCD aktif edildi.
       delay_ms(100); // Bekleme suresi
       logoyaz(); // Logo yazma fonksiyonu
}
 
LogoYaz kısmı tam doğru çalışmıyor anlaşılan.
Algoritma iyi değil ama kodunda bariz bir hata göremedim.
glcd_init lerden sonra biraz bekleme koymayı dene. delay_ms(100) gibi.
 
LogoYaz kısmı tam doğru çalışmıyor anlaşılan.
Algoritma iyi değil ama kodunda bariz bir hata göremedim.
glcd_init lerden sonra biraz bekleme koymayı dene. delay_ms(100) gibi.
Evet fonksiyonlarda sorun var sanırım. logoyaz gibi başka bir fonksiyon tanımlayınca oluyor sıra sıra fakat aynı fonksiyon içinde sadece tek görüntü elde edebiliyorum.
 
Döngünün logoyaz fonksiyonunu komple kapsaması gerekiyor, yoksa bir kere tuş soruyor ve bir daha da sormuyor.

Yalnız programla ilgili de bazı eleştirilerim var. Çok özensiz ve dağınık yazıldığı için takip etmesi son derece zor. Şu kurallara dikkat edersen daha iyi programlar yazabilirsin:

  • İç içe giren kod bloklarını belli sayıda boşluk kadar sağa kaydır.

Kod:
// okunmasi ve takip edilmesi cok zor
for (i = 0; i < 8; ++i)
{
for (j = 0; j < 8; ++j)
{
for (k = 0; k < 8; ++k)
{
birseyler_yap();
}
}
}

// bu daha kolay anlasiliyor
for (i = 0; i < 8; ++i)
{
    for (j = 0; j < 8; ++j)
    {
        for (k = 0; k < 8; ++k)
        {
            birseyler_yap();
        }
    }
}

  • Operatörlerden, virgüllerden ve keywordlerden sonra bir boşluk bırak

Kod:
// okunmasi ve hata varsa gormek cok zor
for(i=0;i<8;++i){if(flag==0)flag_is_set();}

// simdi okunmasi daha kolay
for (i = 0; i < 8; ++i)
{
    if (flag == 0)
    {
        flag_is_set();
    }
}

  • Belli bir düzen ve simetri ile kod yaz
Kod:
// cok daginik ve ozensiz yazilan bir kod. Adeta
// su lanet seyi bitireyim de kurtulayim dusuncesi ile yazilmis.
int   main(   )
    {

            if (flag = 0)
            {
                            birseyler_yap()     ;

            
            
            }
        
        
        ilk_is()  ;
                       ikinci_is  ();

return 0;   
}

// bu daha duzgun ve ozenli
int main()
{
    if (flag = 0)
    {
        birseyler_yap();
    }
        
    ilk_is();

    ikinci_is();

    return 0;   
}
 
Mesela Uluslararsı Arap Saçı C kodu yarışmasında adam şöyle bir uçak simulatör kodu geliştirmiş. Kod derlenip çalışıyor da. Ama bunun nasıl çalıştığın anlamak için sence ne kadar zaman harcaman lazım? :cheeky5:

Kod:
#include                                     <math.h>
#include                                   <sys/time.h>
#include                                   <X11/Xlib.h>
#include                                  <X11/keysym.h>
                                          double L ,o ,P
                                         ,_=dt,T,Z,D=1,d,
                                         s[999],E,h= 8,I,
                                         J,K,w[999],M,m,O
                                        ,n[999],j=33e-3,i=
                                        1E3,r,t, u,v ,W,S=
                                        74.5,l=221,X=7.26,
                                        a,B,A=32.2,c, F,H;
                                        int N,q, C, y,p,U;
                                       Window z; char f[52]
                                    ; GC k; main(){ Display*e=
 XOpenDisplay( 0); z=RootWindow(e,0); for (XSetForeground(e,k=XCreateGC (e,z,0,0),BlackPixel(e,0))
; scanf("%lf%lf%lf",y +n,w+y, y+s)+1; y ++); XSelectInput(e,z= XCreateSimpleWindow(e,z,0,0,400,400,
0,0,WhitePixel(e,0) ),KeyPressMask); for(XMapWindow(e,z); ; T=sin(O)){ struct timeval G={ 0,dt*1e6}
; K= cos(j); N=1e4; M+= H*_; Z=D*K; F+=_*P; r=E*K; W=cos( O); m=K*W; H=K*T; O+=D*_*F/ K+d/K*E*_; B=
sin(j); a=B*T*D-E*W; XClearWindow(e,z); t=T*E+ D*B*W; j+=d*_*D-_*F*E; P=W*E*B-T*D; for (o+=(I=D*W+E
*T*B,E*d/K *B+v+B/K*F*D)*_; p<y; ){ T=p[s]+i; E=c-p[w]; D=n[p]-L; K=D*m-B*T-H*E; if(p [n]+w[ p]+p[s
]== 0|K <fabs(W=T*r-I*E +D*P) |fabs(D=t *D+Z *T-a *E)> K)N=1e4; else{ q=W/K *4E2+2e2; C= 2E2+4e2/ K
 *D; N-1E4&& XDrawLine(e ,z,k,N ,U,q,C); N=q; U=C; } ++p; } L+=_* (X*t +P*M+m*l); T=X*X+ l*l+M *M;
  XDrawString(e,z,k ,20,380,f,17); D=v/l*15; i+=(B *l-M*r -X*Z)*_; for(; XPending(e); u *=CS!=N){
                                   XEvent z; XNextEvent(e ,&z);
                                       ++*((N=XLookupKeysym
                                         (&z.xkey,0))-IT?
                                         N-LT? UP-N?& E:&
                                         J:& u: &h); --*(
                                         DN -N? N-DT ?N==
                                         RT?&u: & W:&h:&J
                                          ); } m=15*F/l;
                                          c+=(I=M/ l,l*H
                                          +I*M+a*X)*_; H
                                          =A*r+v*X-F*l+(
                                          E=.1+X*4.9/l,t
                                          =T*m/32-I*T/24
                                           )/S; K=F*M+(
                                           h* 1e4/l-(T+
                                           E*5*T*E)/3e2
                                           )/S-X*d-B*A;
                                           a=2.63 /l*d;
                                           X+=( d*l-T/S
                                            *(.19*E +a
                                            *.64+J/1e3
                                            )-M* v +A*
                                            Z)*_; l +=
                                            K *_; W=d;
                                            sprintf(f,
                                            "%5d  %3d"
                                            "%7d",p =l
                                           /1.7,(C=9E3+
                              O*57.3)%0550,(int)i); d+=T*(.45-14/l*
                             X-a*130-J* .14)*_/125e2+F*_*v; P=(T*(47
                             *I-m* 52+E*94 *D-t*.38+u*.21*E) /1e2+W*
                             179*v)/2312; select(p=0,0,0,0,&G); v-=(
                              W*F-T*(.63*m-I*.086+m*E*19-D*25-.11*u
                               )/107e2)*_; D=cos(o); E=sin(o); } }
 
Bu arada kullandığın grafik LCD nedir? Bir de PIC devresini kendin mi kurdun yoksa hazır bir PIC geliştirme kartı mı kullanıyorsun? Test düzeneğinin de resmini koyarsan başkalarına da fikir verir.
 

Çevrimiçi üyeler

Forum istatistikleri

Konular
7,285
Mesajlar
123,138
Üyeler
2,939
Son üye
Cano

Son kaynaklar

Son profil mesajları

Freemont2.0 herbokolog Freemont2.0 wrote on herbokolog's profile.
nick iniz yakıyor
:D
Freemont2.0 posta Freemont2.0 wrote on posta's profile.
Merhabalar :)
az bilgili çok meraklı
Prooffy semih_s Prooffy wrote on semih_s's profile.
Merhaba, sizden DSO2C10 hakkında bilgi rica ettim. Yanıtlarsanız sevinirim...
Unal taydin Unal wrote on taydin's profile.
Timur Bey, Arduino kontrollü bir akü şarj cihazı yapmaya çalışıyorum. Aklımdaki fikri basit bir çizim olarak konu açmıştım. Özellikle sizin fikirlerinizi çok önemsiyorum.
Back
Top