화면에서 일단 간단한 로고나 메세지를 보여준 후
메뉴로 넘어가고 그 다음 메뉴로 넘어가는 등의 구성을 생각했습니다.
그래서 일단 텍스트로 꾸며봤는데
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이 함수 호출하면 메모리에 디스플레이 할 정보를 불러들이고서
메모리를 읽어서 화면에 뿌려주는 방식이라
그 과정 사이에 명령어를 사용할 때는 주의해야 하더군요.
'Making > 아두이노 더치커피머신' 카테고리의 다른 글
더치커피머신 90%쯤 완료. (0) | 2016.11.17 |
---|---|
OLED 스위치 입력과 수치변경 (2) | 2016.09.18 |
정량펌프를 이용한 더치커피머신 설계 (0) | 2016.07.28 |
정량펌프 테스트. (0) | 2014.10.18 |
Peristaltic Pump를 하나 그려보고 있는데 생각보다 어렵네요 (0) | 2014.10.16 |