본문 바로가기
아두이노

아두이노 디지털 게이지 디자인

by 구루가 되고픈 2019. 9. 11.

아날로그 게이지 디자인 기본과 응용에 대해서는 아래 포스트에 작성하였고, 내친김에 디지털 게이지 디자인도 올려 드리겠습니다.

 

디지털 게이지는 아날로그 게이지에 비하면 너무 쉬어서 크게 설명할 부분이 없습니다.

 

1.3인치 128X64픽셀 OLED 디지털 게이지 디자인

 

게이지바가 그려지고 게이지값이 상단에 표시되는게 다 입니다.

 

#include "U8glib.h"
U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_DEV_0|U8G_I2C_OPT_FAST);

// 데이터 처리 변수
int val;

//그래픽 처리 변수
int level;

void setup(void) {
}

void Disp()
{
  level = map(val, 0, 100, 0, 120);       // 레벨박스크기
  
  u8g.firstPage(); 
  do {             
    u8g.drawLine(3, 40, 123, 40);
    u8g.drawLine(3, 63, 123, 63);
    u8g.drawLine(3, 38, 3, 63);
    u8g.drawLine(123, 38, 123, 63);
    u8g.drawLine(92, 38, 92, 42);
    u8g.drawLine(62, 38, 62, 42);
    u8g.drawLine(32, 38, 32, 42);
    
    u8g.setFont(u8g_font_profont11r);    // 6*10폰트
    u8g.drawStr(110, 36, "100");
    u8g.drawStr(87, 36, "75");
    u8g.drawStr(57, 36, "50");
    u8g.drawStr(27, 36, "25");
    u8g.drawStr(0, 36, "0");
    u8g.drawStr(120, 20, "%");

    u8g.drawStr(0, 10, "VAL");

    u8g.setFont(u8g_font_profont29r);      //16*28폰트
    if (val < 10)
      u8g.setPrintPos(100, 20);
    else if (val >= 10 && val <= 99)
      u8g.setPrintPos(84, 20);
    else
      u8g.setPrintPos(68, 20);
    u8g.print(val);

    u8g.drawBox(3, 45, level, 14);
  }
  while( u8g.nextPage() );
}

void loop(void)
{
  val = random(0, 100);
  Disp();
  delay(500);
}

 

코드는 진짜진짜 설명하게 없네요 ^^;;

 

각자의 취향에 맞게 조금씩 변형해서 디자인해 보시면 될것 같습니다.

 

(추석연휴 첫날 포스트를 쓰고 있네요 ^^;;)