microrobotics icon

OLED-13-I2C-BLU

microrobotics | PRO | 05/17/24 08:15:52 AM UTC | 0 ⭐ | 17447 👁️ | Never ⏰ | []
Arduino |

3.78 KB

|

None

|

0 👍

/

0 👎

#include "U8glib.h"
 
// Initialize the display with the correct driver
U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NONE);
 
void u8g_prepare(void) 
{
  u8g.setFont(u8g_font_6x10);
  u8g.setFontRefHeightExtendedText();
  u8g.setDefaultForegroundColor();
  u8g.setFontPosTop();
}
 
const unsigned char mybotic[] PROGMEM =
{
   // (Your image data)
};
 
void picture(uint8_t a)
{
  u8g.drawXBMP(26, 2, 70, 63, mybotic);
}
 
void intro(uint8_t a)
{
  u8g.setFont(u8g_font_unifont);
  u8g.drawStr(2, 19, "Welcome");
  u8g.drawStr(2, 38, "to");
  u8g.drawStr(2, 57, "Mybotic :)");
}
 
void u8g_box_frame(uint8_t a) 
{
  u8g.drawStr(2, 0, "drawBox");
  u8g.drawBox(5, 10, 20, 10);
  u8g.drawBox(10 + a, 15, 30, 7);
  u8g.drawStr(2, 30, "drawFrame");
  u8g.drawFrame(5, 40, 20, 10);
  u8g.drawFrame(10 + a, 45, 30, 7);
}
 
void u8g_disc_circle(uint8_t a) 
{
  u8g.drawStr(2, 0, "drawDisc");
  u8g.drawDisc(11, 18, 9);
  u8g.drawDisc(24 + a, 16, 7);
  u8g.drawStr(2, 30, "drawCircle");
  u8g.drawCircle(11, 48, 9);
  u8g.drawCircle(24 + a, 46, 7);
}
 
void u8g_r_frame(uint8_t a) 
{
  u8g.drawStr(2, 0, "drawRFrame/Box");
  u8g.drawRFrame(5, 10, 40, 30, a + 1);
  u8g.drawRBox(50, 10, 25, 40, a + 1);
}
 
void u8g_string(uint8_t a) 
{
  u8g.drawStr270(30, 31 - a, "0/360");
  u8g.drawStr(30 + a, 31, "90");
  u8g.drawStr90(30, 31 + a, "180");
  u8g.drawStr180(30 - a, 31, "270");
}
 
void u8g_line(uint8_t a) 
{
  u8g.drawStr(2, 0, "drawLine");
  u8g.drawLine(7 + a, 10, 40, 55);
  u8g.drawLine(7 + a * 2, 10, 60, 55);
  u8g.drawLine(7 + a * 3, 10, 80, 55);
  u8g.drawLine(7 + a * 4, 10, 100, 55);
}
 
void u8g_triangle(uint8_t a) 
{
  uint16_t offset = a;
  u8g.drawStr(2, 0, "drawTriangle");
  u8g.drawTriangle(14, 7, 45, 30, 10, 40);
  u8g.drawTriangle(10 + offset, 7 - offset, 45 + offset, 30 - offset, 57 + offset, 10 - offset);
  u8g.drawTriangle(53 + offset * 2, 10, 45 + offset * 2, 30, 86 + offset * 2, 53);
  u8g.drawTriangle(7 + offset, 40 + offset, 45 + offset, 30 + offset, 86 + offset, 53 + offset);
}
 
void u8g_extra_page(uint8_t a)
{
  if (u8g.getMode() == U8G_MODE_HICOLOR || u8g.getMode() == U8G_MODE_R3G3B2) {
    u8g_uint_t r, g, b;
    b = a << 5;
    for (g = 0; g < 64; g++) {
      for (r = 0; r < 64; r++) {
        u8g.setRGB(r << 2, g << 2, b);
        u8g.drawPixel(g, r);
      }
    }
    u8g.setRGB(255, 255, 255);
    u8g.drawStr(66, 0, "Color Page");
  } else if (u8g.getMode() == U8G_MODE_GRAY2BIT) {
    u8g.drawStr(66, 0, "Gray Level");
    u8g.setColorIndex(1);
    u8g.drawBox(2, 4, 64, 32);
    u8g.drawBox(70, 20, 4, 12);
    u8g.setColorIndex(2);
    u8g.drawBox(2 + 1 * a, 4 + 1 * a, 64 - 2 * a, 32 - 2 * a);
    u8g.drawBox(74, 20, 4, 12);
    u8g.setColorIndex(3);
    u8g.drawBox(2 + 2 * a, 4 + 2 * a, 64 - 4 * a, 32 - 4 * a);
    u8g.drawBox(78, 20, 4, 12);
  } else {
    u8g.drawStr(2, 13, "setScale2x2");
    u8g.setScale2x2();
    u8g.drawStr(1, 6 + a, "setScale2x2");
    u8g.undoScale();
  }
}
 
uint8_t draw_state = 2;
 
void draw(void) 
{
  u8g_prepare();
  switch (draw_state >> 3) {
    case 0: picture(draw_state & 7); break;
    case 1: intro(draw_state & 7); break;
    case 2: u8g_box_frame(draw_state & 7); break;
    case 3: u8g_disc_circle(draw_state & 7); break;
    case 4: u8g_r_frame(draw_state & 7); break;
    case 5: u8g_string(draw_state & 7); break;
    case 6: u8g_line(draw_state & 7); break;
    case 7: u8g_triangle(draw_state & 7); break;
    case 8: u8g_extra_page(draw_state & 7); break;
  }
}
 
void setup(void) 
{
#if defined(ARDUINO)
  pinMode(13, OUTPUT);           
  digitalWrite(13, HIGH);  
#endif
}
 
void loop(void) 
{
  u8g.firstPage();  
  do 
  {
    draw();
  } while (u8g.nextPage());
  
  draw_state++;
  if (draw_state >= 9 * 8)
    draw_state = 0;
}
 

Comments

  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎