赞
踩
最近无聊做了 mixly esp8266的菜单系统。为什么要写这个系统原因很简单,平时做玩意时或调试的时候控制很是麻烦。所以就做了这个系统。以后用着方便。菜单思路来源网络。开始感觉很简单,真的做起来确实很麻烦。所以我也狠狠的学习了一下。水平有限做的很LOW。
先说一下需要的硬件。
esp8266 一个
12864 lcd
EC11 编码器 一个
DHT11 可有可无
介绍一下功能:
编码为控制菜单 上 下 单击(确定) 双击(关闭菜单) 长按 (返回) 菜单参数存贮采用LittleFS存储!替代了EEPROM
菜单两种显示方式:文字 和 图片 下边为图方式
上图看真相:
主页面
设置
下边是我做的库 LittleFS
LittleFS 示例代码
程序图
太多只上部分代码:
#define ENCODER_DO_NOT_USE_INTERRUPTS #include <LittleFS.h> #include <U8g2lib.h> #include <SPI.h> #include <ESP8266WiFi.h> #include <Encoder.h> #include <TimeLib.h> #include <NtpClientLib.h> #include <OneButton.h> #include <DHT.h> 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);
需要留言的吧。全部开源。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。