震惊!OLED菜单竟只用10行代码就可以完成到完美!!!
本帖最后由 新手之帆 于 2020-11-1 17:02 编辑震惊!OLED菜单竟只用10行代码就可以完成到完美!!!
相信各位在看了我上次的教程贴之后,已经略有头绪。
但!这显然对小白们不怎么友好!!!
毕竟,我们都是从小白过来的。
所以,我花费了大概1天的时间,将菜单功能封装成了个库,其功能比我上次给出的代码强大了大概1/3。怎么样?
是不是有点小激动了呢???
首先,我还是来讲解一下该库的一些函数:
void Begin(int buttona,int buttonb,int delay_time,int times_val,String c,int button_state);
该句应放在setup里面。
buttona指按键a的pin,buttonb指按键b的pin
delay_time指消抖时的时间,根据本人手抖,一般为45
times_val指你在同一时间的屏幕上总共有多少选项,取值范围为1-3(悄悄告诉你,会根据该值,自动生成较好看的界面哟!)
c指你的在选项面前的指向符号,记住(要加"")
button_state指在按键按下的一瞬间,button的状态,这取决于你的一端接pin,另一端接v还是g
void Inputstring(String str[],int num,bool state);
放在setup里面
str是输入你的字符串数组,就是选项的名字们。
注意:是数组,但在输入时,无需加[]
num指你这个数组有多少个元素
state指是否含有中文,就是名字里面
最后写false,除非你真的要显示中文
但!!!!!!
要是你要显示中文的话,必须用esp32 || due ||2560 ||零知的开发板,等高配开发板,小的内存不怎么够
void Loop(void);
没什么,直接放在loop里面就行
void Inputfun_0(String fun0_s1,String fun0_s2,String fun0_s3);
注意!!该函数十分重要
取决于你按下按键,显示选项的内容
应放在setup里面
其中指1、2、3行
你可以其中一些行不写
打个""就可以
给出例子
Inputfun_0("time","","weather");
就是这样
该函数有11个
就是_后面为0-10
这取决于你究竟要多少个,也就是你的选项名数组有多少个
主要就这几个函数
示例代码:
#include<MENU.h>
Menu test;
String s={"time","weather","arduino","esp32","esp8266"};
void setup() {
test.Begin(5,18,45,3,"--",0);
test.Inputstring(s,5,0);
test.Inputfun_0("a","b","c");
test.Inputfun_1("f","e","f");
test.Inputfun_2("fe","h","i");
test.Inputfun_3("1","k","l");
test.Inputfun_4("24·","n","o");
}
void loop() {
test.Loop();
}
//记住!按键的pin要更改
图片
q3320987642
库文件
这么晚还在逛论坛 Creeper666 发表于 2019-7-27 23:17
这么晚还在逛论坛
很早啊,只是家里灯坏了,晚上没开电,看不清键盘 新手之帆 发表于 2019-7-28 00:36
很早啊,只是家里灯坏了,晚上没开电,看不清键盘
你把你的OLED像素全开,然后照着键盘不就行了;P Creeper666 发表于 2019-7-28 09:18
你把你的OLED像素全开,然后照着键盘不就行了
牛逼啊,但128*64*3像素点够用吗 大家可以用一下,成功的评论。屏幕型号必须是ssd1306,要装U8G2的库 屏幕上只显示12345额 zistar 发表于 2019-7-28 23:33
屏幕上只显示12345额
有没有用中文,有的话要自己做字库。或者用里面的,代码发上来,也许你的参数有问题 这个屏我也收了一个,只是从未接触过,要向老师学习
你用了好几个u8g2的库函数,最好说明一下它的用法