在这个项目中我们使用了4个库。我们使用了两个库显示,两旋转编码器。
-
Adafruit的GFX:https://github.com/adafruit/adafruit-gfx-library
-
诺基亚5110:https://github.com/adafruit/adafruit-pcd8544-nokia-5110-lcd-library
-
编码库:https://github.com/0xpit/encoder/tree/arduino
-
timerone图书馆:https://github.com/paulstoffregen/timerone
首先我们要看看在绘制菜单条功能。这个函数负责在显示器上绘制菜单。此功能称为每隔几毫秒,所以如果有一种改变菜单上这个功能是负责在屏幕更新菜单。
int MenuItem = 1; 国际框架= 1; int页= 1; int lastmenuitem;
也有3个非常重要的全局变量,该变量的页面,框架的变量和变量的属性。可变页想起UI屏幕显示在屏幕上。所以,如果页面变为1,我们在主界面的屏幕,如果变量是2我们在我们设定的值在一个变量的二次用户界面屏幕。菜单项记得选定菜单项。所以,如果它的值是1,选择第一个菜单项,所以绘制菜单条函数必须画这个菜单项是黑与白的信。如果菜单项是2的第二个选择菜单项等等。框架变量,记得菜单的哪一部分是显示在屏幕上。既然我们已经创建的菜单包含6个项目,我们只能显示3的人在一个时间,我们需要知道哪些项目显示在屏幕上。框架变量,告诉我们的正是这个。如果框架变量1的值,我们显示前三个菜单项,如果是2,我们显示项目、等等。
我试图让代码尽可能容易修改,所以我创造了一些全局变量,把名字的菜单项。这种方式,你可以创建你自己的菜单不容易搜索代码。
字符串menuitem1 =“对比”; 字符串menuitem2 =“量”; 字符串menuitem3 =“语言”; 字符串menuitem4 =“难”; 字符串menuitem5 =“光”; 字符串menuitem6;
布尔背光= true; int对比= 60; int体积;
字符串的语言[ 3 ] = {“en”、“ES”、“厄尔尼诺”}; int selectedlanguage =;
字符串的困难[ 2 ] = {“易”,“硬”}; int selecteddifficulty =;
首先初始化所有在编码所需的全局变量。下一步我们初始化显示。在回路的功能,我们首先调用绘制菜单条的功能,在屏幕上绘制菜单。然后我们读值从旋转编码器和检查按钮。例如,如果我们在主用户界面屏幕,选择第一个菜单项,如果从旋转编码器的价值增加,MenuItem变量增加,在下一循环功能将绘制菜单条第二菜单项选择。如果我们按我们的旋转编码器定位到第二页的按钮,我们在那里设置该变量的值。再次使用旋转编码器可以增加或减少的变量的值。如果我们按下按钮,我们回到主菜单页面,页面变量减小。
这背后的菜单的基本思想。我们遵循所有的菜单项和页相同的程序。代码是复杂的,它是在400行。它看似复杂,但如果你自己试试你会更容易理解它,你可以改变它,扩展它,并使用它在您自己的项目。你总是可以找到代码贴在这里。