分享一个2X4的图标菜单(摇杆控制)的代码-Arduino中文社区 - Powered by Discuz! Archiver

qqwab606 发表于 2019-12-14 16:12

分享一个2X4的图标菜单(摇杆控制)的代码

通过摇杆控制选择需要移动到的菜单,可以根据个人需求定制每个图标不同的内容,屏幕用的I2C12864OLED屏,操作流畅,分享给大家,做项目可以改,界面里的图标是28*28大小的,可以根据自己需要修改图标代码






#include "U8glib.h"
U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_DEV_0|U8G_I2C_OPT_FAST); // Dev 0, Fast I2C / TWI

//摇杆X轴连接A0,Y轴连接A1

int Frame_position_x ;
int Frame_position_y ;

static unsigned char bitmap[] U8G_PROGMEM = {
{0X00,0XF8,0X03,0X00,0X00,0XFE,0X0F,0X00,0X80,0X07,0X3C,0X00,0XE0,0X00,0XE0,0X00,
0X70,0XE0,0XC0,0X01,0X38,0XF8,0X83,0X03,0X18,0XFC,0X07,0X03,0X0C,0XFC,0X0F,0X06,
0X04,0XFE,0X0F,0X04,0X06,0XFE,0X0F,0X0C,0X06,0XFE,0X0F,0X0C,0X03,0XFE,0X0F,0X08,
0X03,0XFC,0X07,0X08,0X03,0XFE,0X0F,0X08,0X03,0XFE,0X07,0X08,0X03,0XFC,0X07,0X08,
0X03,0XF8,0X03,0X08,0X03,0XF8,0X03,0X08,0X06,0XF0,0X01,0X0C,0X06,0XF0,0X01,0X0C,
0X04,0XF8,0X03,0X04,0X0C,0XFC,0X07,0X06,0X18,0XFF,0X1F,0X03,0XF8,0XFF,0XFF,0X01,
0XF0,0XFF,0XFF,0X01,0XC0,0XFF,0X7F,0X00,0X80,0XFF,0X3F,0X00,0X00,0XFE,0X0F,0X00
},
{ 0X00,0X00,0X00,0X00,0X00,0X40,0X00,0X00,0XE0,0XE3,0XFC,0X00,0XF0,0XEF,0XFE,0X01,
0XF8,0X4F,0XFE,0X03,0XFC,0XF3,0XF9,0X07,0XFC,0XFE,0XF7,0X07,0X7C,0XFF,0XDF,0X07,
0XBC,0XBF,0XBF,0X07,0XDC,0X47,0X7C,0X07,0XFC,0XE1,0X70,0X03,0XE8,0XE1,0XF0,0X02,
0XF0,0XE0,0XE0,0X00,0XF0,0XE0,0XE0,0X01,0X70,0XE0,0XE3,0X01,0X70,0XE0,0XC7,0X01,
0X70,0XE0,0XE7,0X01,0XF0,0X00,0XE0,0X01,0XF0,0X00,0XE0,0X01,0XE0,0X00,0XF0,0X00,
0XE0,0X01,0XF0,0X00,0XC0,0X03,0X7C,0X00,0X80,0X1F,0X3F,0X00,0X00,0XFF,0X1F,0X00,
0X80,0XFF,0X3F,0X00,0X80,0XFB,0X3B,0X00,0X80,0X01,0X30,0X00,0X00,0X00,0X00,0X00
},
{ 0X00,0X02,0X0E,0X00,0X00,0X02,0X1B,0X00,0X40,0X90,0X35,0X00,0X00,0X8F,0X2E,0X00,
0X80,0X88,0X2A,0X00,0XA0,0XA8,0X2A,0X00,0X80,0X88,0X2A,0X00,0X00,0X87,0X0A,0X00,
0X40,0X90,0X6A,0X00,0X00,0X82,0X6A,0X00,0X00,0X80,0X6A,0X00,0X00,0X80,0X6A,0X00,
0X00,0X80,0X0A,0X00,0X00,0X80,0X6A,0X00,0X00,0X80,0X0A,0X00,0X00,0X80,0X6A,0X00,
0X00,0X80,0X0A,0X00,0X00,0X80,0X2A,0X00,0X00,0XC0,0X6A,0X00,0X00,0X60,0XDB,0X00,
0X00,0XA0,0XA0,0X00,0X00,0XA0,0XE0,0X00,0X00,0XF0,0XC0,0X01,0X00,0XE0,0XE0,0X01,
0X00,0XA0,0XA0,0X00,0X00,0X60,0XDB,0X00,0X00,0XC0,0X6E,0X00,0X00,0X80,0X3B,0X00
},
{ 0X00,0XF0,0X01,0X00,0X00,0XF0,0X01,0X00,0X00,0XF0,0X01,0X00,0XC0,0XB8,0X63,0X00,
0XE0,0X1F,0XFF,0X00,0XF0,0X07,0XFC,0X01,0X38,0X01,0X90,0X03,0X38,0X00,0X80,0X03,
0X70,0X00,0XC0,0X01,0X30,0X40,0X80,0X01,0X30,0XF8,0X81,0X01,0X18,0X0C,0X02,0X03,
0X1F,0X04,0X04,0X0F,0X0F,0X04,0X04,0X0E,0X03,0X06,0X0C,0X0C,0X0F,0X04,0X04,0X0E,
0X1F,0X04,0X04,0X0F,0X18,0X08,0X02,0X03,0X30,0XF0,0X81,0X01,0X30,0X40,0X80,0X01,
0X70,0X00,0XC0,0X01,0X38,0X00,0X80,0X03,0X38,0X01,0X90,0X03,0XF0,0X07,0XFC,0X01,
0XE0,0X1F,0XFF,0X00,0XC0,0XB8,0X63,0X00,0X00,0XF0,0X01,0X00,0X00,0XF0,0X01,0X00
},
{ 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0XFE,0XFF,0XFF,0X0F,
0XFF,0XFF,0XFF,0X0F,0XFF,0XFF,0XFF,0X0F,0X07,0X00,0X00,0X0C,0X07,0X00,0X00,0X0C,
0X87,0X01,0X00,0X0C,0XC7,0X03,0X00,0X0C,0XC7,0X07,0X00,0X0C,0XC7,0X03,0X00,0X0C,
0X87,0X03,0X0C,0X0C,0X07,0X00,0X0E,0X0C,0X07,0X00,0X1F,0X0C,0X07,0X00,0X1F,0X0C,
0X07,0X83,0X3F,0X0C,0X07,0XC7,0X3F,0X0C,0X87,0XEF,0X7F,0X0C,0XC7,0XFF,0XFF,0X0C,
0XE7,0XFF,0XFF,0X0C,0XE7,0XFF,0XFF,0X0D,0XF7,0XFF,0XFF,0X0D,0X07,0X00,0X00,0X0C,
0XFF,0XFF,0XFF,0X0F,0XFE,0XFF,0XFF,0X0F,0XFC,0XFF,0XFF,0X07,0X00,0X00,0X00,0X00
},
{ 0X00,0X3F,0X00,0X00,0XC0,0XFF,0X00,0X00,0XF0,0XFF,0X03,0X00,0XF8,0XF3,0X07,0X00,
0X7C,0X80,0X0F,0X00,0X3C,0X07,0X0F,0X00,0XDE,0X07,0X1E,0X00,0XCE,0X01,0X1C,0X00,
0XEF,0X00,0X3C,0X00,0X6F,0X00,0X3C,0X00,0X67,0X00,0X3C,0X00,0X07,0X00,0X3C,0X00,
0X0F,0X00,0X3C,0X00,0X0F,0X00,0X3C,0X00,0X0E,0X00,0X1C,0X00,0X1E,0X00,0X1E,0X00,
0X3C,0X00,0X0F,0X00,0X7C,0X80,0X0F,0X00,0XF8,0XFF,0X77,0X00,0XF0,0XFF,0XFB,0X00,
0XC0,0XFF,0XFC,0X01,0X00,0X3F,0XFC,0X03,0X00,0X00,0XFC,0X07,0X00,0X00,0XF8,0X0F,
0X00,0X00,0XF0,0X0F,0X00,0X00,0XE0,0X0F,0X00,0X00,0XC0,0X0F,0X00,0X00,0X80,0X0F
},
{ 0XC0,0X01,0X70,0X00,0XC0,0X01,0X70,0X00,0XC0,0X01,0X70,0X00,0XC0,0X01,0X70,0X00,
0XDC,0XFD,0X77,0X07,0XDE,0XFD,0X77,0X0F,0X3F,0XFE,0X8F,0X0F,0XFF,0XFF,0XFF,0X0F,
0XFF,0XFF,0XFF,0X0F,0X07,0X00,0X00,0X0C,0X03,0X00,0X00,0X08,0X03,0X00,0X00,0X08,
0X03,0X00,0X00,0X08,0XC3,0XE1,0X70,0X08,0XC3,0XE1,0X70,0X08,0XC3,0XE1,0X70,0X08,
0X03,0X00,0X00,0X08,0X03,0X00,0X00,0X08,0X03,0X00,0X00,0X08,0X03,0X00,0X00,0X08,
0XC3,0XE1,0X70,0X08,0XC3,0XE1,0X70,0X08,0XC3,0XE1,0X70,0X08,0X03,0X00,0X00,0X08,
0X03,0X00,0X00,0X08,0X03,0X00,0X00,0X08,0X06,0X00,0X00,0X0C,0XFC,0XFF,0XFF,0X07
},
{ 0X00,0X40,0X00,0X00,0X00,0XE0,0X00,0X00,0X00,0XE0,0X00,0X00,0X00,0XF0,0X01,0X00,
0X00,0XB8,0X03,0X00,0X00,0X18,0X03,0X00,0X00,0X1C,0X07,0X00,0XFC,0XFF,0XFF,0X07,
0XFC,0XFF,0XFF,0X07,0X1C,0X07,0X1C,0X07,0X18,0X03,0X18,0X03,0XB0,0X03,0XB8,0X01,
0XF0,0X01,0XF0,0X01,0XE0,0X00,0XE0,0X00,0XE0,0X00,0XE0,0X00,0XE0,0X00,0XE0,0X00,
0XF0,0X01,0XF0,0X01,0XB8,0X03,0XB8,0X01,0X18,0X03,0X18,0X03,0X1C,0X07,0X1C,0X07,
0XFC,0XFF,0XFF,0X07,0XFC,0XFF,0XFF,0X07,0X00,0X1C,0X07,0X00,0X00,0X18,0X03,0X00,
0X00,0XB8,0X01,0X00,0X00,0XF0,0X01,0X00,0X00,0XE0,0X00,0X00,0X00,0XE0,0X00,0X00
},
};


void draw(void) {
unsigned char i;
unsigned char j;

u8g.firstPage();
do {
      for(i=0;i<2;i++)
      {
      for(j=0;j<4;j++)
      {
         u8g.drawXBMP( 32*j+1, 32*i+2,28, 28, bitmap);
      }
      }
      u8g.drawRFrame(Frame_position_x,Frame_position_y, 30,32,5);
      } while( u8g.nextPage() );

}

void key_scan(void)
{
int x_value;
int y_value ;

x_value = analogRead(A0);
y_value = analogRead(A1);

    if(x_value>800)
      {
      delay(100);
      if(x_value> 800)
      {
         Frame_position_x = Frame_position_x+32;
         if(Frame_position_x>96)
         {
            Frame_position_x = 96;
            }
      }
      }
      if(x_value<300)
      {
      delay(100);
      if(x_value<300)
      {
         Frame_position_x = Frame_position_x-32;
         if(Frame_position_x<0)
         {
            Frame_position_x = 0;
            }
      }
      }

      if(y_value>800)
      {
      delay(100);
      if(y_value> 800)
      {
         Frame_position_y = Frame_position_y+32;
         if(Frame_position_y>32)
         {
            Frame_position_y = 32;
            }
      }
      }
      if(y_value<300)
      {
      delay(100);
      if(y_value<300)
      {
         Frame_position_y = Frame_position_y-32;
         if(Frame_position_y<0)
         {
            Frame_position_y = 0;
            }
      }
      }

}

void setup(void) {
Frame_position_x = 0;
Frame_position_y = 0;
}

void loop(void) {
draw();
key_scan();

}


页: [1]
查看完整版本: 分享一个2X4的图标菜单(摇杆控制)的代码