arduino mixly esp8266 u8g2 LittleFS LCD编码器菜单系统
最近无聊做了 mixly esp8266的菜单系统。为什么要写这个系统原因很简单,平时做玩意时或调试的时候控制很是麻烦。所以就做了这个系统。以后用着方便。菜单思路来源网络。开始感觉很简单,真的做起来确实很麻烦。所以我也狠狠的学习了一下。水平有限做的很LOW。
先说一下需要的硬件。
esp8266 一个
12864 lcd
EC11 编码器 一个
DHT11 可有可无
介绍一下功能:
编码为控制菜单 上 下 单击(确定) 双击(关闭菜单) 长按 (返回) 菜单参数存贮采用LittleFS存储!替代了EEPROM
菜单两种显示方式:文字 和 图片 下边为图方式
上图看真相:
主页面

设置









下边是我做的库 LittleFS

LittleFS 示例代码

程序图
太多只上部分代码:
#define ENCODER_DO_NOT_USE_INTERRUPTS
#include
#include
#include
#include
#include #include
#include
#include
#include volatile int netw;
volatile int beepw;
volatile int tempw;
String data_net9;
String data_beep9;
String data_temp9;
U8G2_ST7565_LX12864_F_4W_SW_SPI u8g2(U8G2_R0,/* clock=*/ 14,/* data=*/ 13,/* cs=*/ 15,/* dc=*/12, /* reset=*/16);
volatile long newPos;
volatile int Pos;
volatile int keyup;
volatile int keydown;
volatile int keyenter;
volatile int keydley;
volatile int endover;
Encoder encoder_1(5,4);int8_t timeZone = 8;
const PROGMEM char *ntpServer = "ntp1.aliyun.com";
OneButton button2(2,true);
DHT dht0(0, 11);typedef struct
{uint8_t current;uint8_t up;//向上翻索引号uint8_t down;//向下翻索引号uint8_t enter;//确认索引号uint8_t changan;//长按确认void (*current_operation)();
}key_table;uint8_t func_index=0;
void (*current_operation_index)();
void menu11();
void menu12();
void menu13();
void menu14();
void menu15();
void menu16();
void menu17();
void menu18();
void menu19();
void menu20();
void menu21();
void menu22();
void menu23();
void menu24();
void menu25();
void menu26();
void menu27();
void menu28();
void menu29();
void menu30();
key_table table[20]=
{
//页 上 下 确定 返回 菜单项{0, 1, 7, 8, 0, (*menu11)},{1, 2, 0, 10, 0, (*menu12)},{2, 3, 1, 12, 0, (*menu13)},{3, 4, 2, 14, 0, (*menu14)},{4, 5, 3, 15, 0, (*menu15)},{5, 6, 4, 16, 0, (*menu16)},{6, 7, 5, 17, 0, (*menu17)},{7, 0, 6, 19, 0, (*menu18)},{8, 9, 9, 0, 0, (*menu19)},{9, 8, 8, 0, 0, (*menu20)},{10, 11, 11, 0, 0, (*menu21)},{11, 10, 10, 0, 0, (*menu22)},{12, 13, 13, 0, 0, (*menu23)},{13, 12, 12, 0, 0, (*menu24)},{14, 14, 14, 0, 0, (*menu25)},{15, 15, 15, 0, 0, (*menu26)},{16, 16, 16, 0, 0, (*menu27)},{17, 17, 17, 0, 0, (*menu28)},{18, 18, 18, 0, 0, (*menu29)},{19, 19, 19, 0, 0, (*menu30)},};
void attachDoubleClick2() {endover = 2;Serial.println(String("end:") + String(endover));
}void attachClick2() {keyenter = 1;
}void attachLongPressStart2() {keydley = 1;
}void encode() {Pos = encoder_1.read();if (Pos != newPos) {newPos = Pos;keyup = newPos;keydown = newPos;}
}void shibai() {u8g2.clearBuffer();//清屏u8g2.setFont(u8g2_font_wqy12_t_gb2312a);u8g2.setFontPosTop();u8g2.setCursor(15,20);u8g2.print("无WiFi网络请配网");u8g2.sendBuffer(); // 开显示
}void menu18() {u8g2.clearBuffer();//清屏u8g2.setFont(u8g2_font_wqy12_t_gb2312a);u8g2.setFontPosTop();u8g2.setCursor(53,52);u8g2.print("关于");u8g2.setFont(u8g2_font_open_iconic_all_6x_t);u8g2.drawGlyph(42,-48+6*8,95);u8g2.sendBuffer(); // 开显示
}void menu17() {u8g2.clearBuffer();//清屏u8g2.setFont(u8g2_font_wqy12_t_gb2312a);u8g2.setFontPosTop();u8g2.setCursor(53,52);u8g2.print("关于");u8g2.setFont(u8g2_font_open_iconic_all_6x_t);u8g2.drawGlyph(42,-48+6*8,268);u8g2.sendBuffer(); // 开显示
}void menu16() {u8g2.clearBuffer();//清屏u8g2.setFont(u8g2_font_wqy12_t_gb2312a);u8g2.setFontPosTop();u8g2.setCursor(53,52);u8g2.print("其它");u8g2.setFont(u8g2_font_open_iconic_all_6x_t);u8g2.drawGlyph(42,-48+6*8,104);u8g2.sendBuffer(); // 开显示
}void menu15() {u8g2.clearBuffer();//清屏u8g2.setFont(u8g2_font_wqy12_t_gb2312a);u8g2.setFontPosTop();u8g2.setCursor(53,52);u8g2.print("LCD");u8g2.setFont(u8g2_font_open_iconic_all_6x_t);u8g2.drawGlyph(42,-48+6*8,222);u8g2.sendBuffer(); // 开显示
}void menu14() {u8g2.clearBuffer();//清屏u8g2.setFont(u8g2_font_wqy12_t_gb2312a);u8g2.setFontPosTop();u8g2.setCursor(53,52);u8g2.print("温度");u8g2.setFont(u8g2_font_open_iconic_all_6x_t);u8g2.drawGlyph(42,-48+6*8,136);u8g2.sendBuffer(); // 开显示
}void menu13() {u8g2.clearBuffer();//清屏u8g2.setFont(u8g2_font_wqy12_t_gb2312a);u8g2.setFontPosTop();u8g2.setCursor(53,52);u8g2.print("声音");u8g2.setFont(u8g2_font_open_iconic_all_6x_t);u8g2.drawGlyph(42,-48+6*8,277);u8g2.sendBuffer(); // 开显示
}void menu12() {u8g2.clearBuffer();//清屏u8g2.setFont(u8g2_font_wqy12_t_gb2312a);u8g2.setFontPosTop();u8g2.setCursor(53,52);u8g2.print("网络");u8g2.setFont(u8g2_font_open_iconic_all_6x_t);u8g2.drawGlyph(42,-48+6*8,175);u8g2.sendBuffer(); // 开显示
}void menu11() {u8g2.clearBuffer();//清屏u8g2.setFont(u8g2_font_wqy12_t_gb2312a);u8g2.setFontPosTop();u8g2.setCursor(53,52);u8g2.print("设置");u8g2.setFont(u8g2_font_open_iconic_all_6x_t);u8g2.drawGlyph(42,-48+6*8,129);
需要留言的吧。全部开源。
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
