', { cookie_domain: 'auto', cookie_flags: 'max-age=0;domain=.tistory.com', cookie_expires: 7 * 24 * 60 * 60 // 7 days, in seconds }); u8glib 화면 전환 딜레이 문제 해결 :: MakerLee's Workspace
728x90

화면에서 일단 간단한 로고나 메세지를 보여준 후


메뉴로 넘어가고 그 다음 메뉴로 넘어가는 등의 구성을 생각했습니다.


그래서 일단 텍스트로 꾸며봤는데



void loop() {


  u8g.firstPage();  //OLED 루프

  do {

    switch(draw_state){

      case 0:StartPage();delay(500)break;

      case 1:SecondPage();delay(500);break;    

    }

    }

  while( u8g.nextPage() ); 


이렇게 u8glib 함수 사이에 딜레이를 넣어봤습니다. 








첫번째 화면을 뿌리고 잠시 후에 두번째 화면으로 바뀌어야 하는데


두 화면을 동시에 뿌리려는 듯 겹친 화면이 나옵니다. 




void StartPage(){

   u8g.drawStr(0,10,"ColdBrewSystem 0.9");

   u8g.drawStr(0,25,"pashiran's");

   u8g.drawStr(0,40,"workspace");

   delay(500);


그래서 위와 같이 호출하는 화면함수에 딜레이를 넣었습니다. 





그랬더니 화면 자체에 딜레이가 걸려버립니다. 



여기저기 딜레이 위치를 바꿔봤지만 해결이 안되었는데







void loop() {


  u8g.firstPage();  //OLED 루프

  do {

    switch(draw_state){

      case 0:StartPage();break;

      case 1:SecondPage();break;    

    }

    }

  while( u8g.nextPage() );



if(draw_state==0){

  draw_state++;

}

else{

  draw_state=0;

}

delay(500);


} //loop의 끝 


이렇게 해야 하니 정상적으로 나옵니다. 


기본적으로는 u8glib이 함수 호출하면 메모리에 디스플레이 할 정보를 불러들이고서 


메모리를 읽어서 화면에 뿌려주는 방식이라  


그 과정 사이에 명령어를 사용할 때는 주의해야 하더군요.






728x90

+ Recent posts