震惊!OLED菜单竟只用10行代码就可以完成到完美!!!-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 31036|回复: 40

震惊!OLED菜单竟只用10行代码就可以完成到完美!!!

  [复制链接]
发表于 2019-7-27 23:00 | 显示全部楼层 |阅读模式
本帖最后由 新手之帆 于 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[5]={"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要更改

图片
IMG_20190728_163507.jpg
IMG_20190728_163520.jpg
IMG_20190728_163658.jpg



q3320987642
MENU.rar (1.9 KB, 下载次数: 963)
库文件









发表于 2019-7-27 23:17 | 显示全部楼层
这么晚还在逛论坛
 楼主| 发表于 2019-7-28 00:36 | 显示全部楼层
Creeper666 发表于 2019-7-27 23:17
这么晚还在逛论坛

很早啊,只是家里灯坏了,晚上没开电,看不清键盘
发表于 2019-7-28 09:18 | 显示全部楼层
新手之帆 发表于 2019-7-28 00:36
很早啊,只是家里灯坏了,晚上没开电,看不清键盘

你把你的OLED像素全开,然后照着键盘不就行了
 楼主| 发表于 2019-7-28 12:49 | 显示全部楼层
Creeper666 发表于 2019-7-28 09:18
你把你的OLED像素全开,然后照着键盘不就行了

牛逼啊,但128*64*3像素点够用吗
 楼主| 发表于 2019-7-28 17:57 | 显示全部楼层
大家可以用一下,成功的评论。屏幕型号必须是ssd1306,要装U8G2的库
发表于 2019-7-28 23:33 | 显示全部楼层
屏幕上只显示12345额
 楼主| 发表于 2019-7-29 00:07 | 显示全部楼层
zistar 发表于 2019-7-28 23:33
屏幕上只显示12345额

有没有用中文,有的话要自己做字库。或者用里面的,代码发上来,也许你的参数有问题
发表于 2019-8-3 10:03 | 显示全部楼层
这个屏我也收了一个,只是从未接触过,要向老师学习
微信图片_20190803100100.jpg




发表于 2019-8-8 15:32 | 显示全部楼层
你用了好几个u8g2的库函数,最好说明一下它的用法
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-12-1 00:14 , Processed in 0.079045 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表