亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Manufacturing Technology >> 制造工艺

使用旋转编码器的诺基亚 5110 Lcd 上的 Arduino 菜单

组件和用品

Arduino UNO
× 1
旋转编码器
× 1
诺基亚 5110 LCD
× 1

应用和在线服务

Arduino IDE

关于这个项目

亲爱的朋友们欢迎来到另一个教程!在本视频中,我们将学习如何为流行的诺基亚 5110 LCD 显示屏构建我们自己的菜单,以使我们的项目更加用户友好和功能更强大。 让我们开始吧!

这就是我们要构建的项目。显示屏上会出现一个简单的菜单,在旋转编码器的帮助下,我可以通过按下旋转编码器按钮向上或向下导航并选择菜单项。当按下旋转编码器的中间按钮时,会出现另一个屏幕,我们可以更改变量的值。如果我们再次按下旋转编码器按钮,我们将返回主菜单屏幕。菜单有 6 个项目,我们可以向下或向上滚动菜单,显示屏上的项目会相应改变。观看随附的视频以确切了解此菜单的工作原理。当然,如果您愿意,您可以修改它以构建您自己的更复杂的菜单。

现在让我们看看如何构建这个项目。

第 1 步:获取所有零件

构建此项目所需的部分如下:

  • 一个 Arduino Uno ▶ http://educ8s.tv/part/ArduinoUno
  • 诺基亚 5110 LCD 显示屏 ▶ http://educ8s.tv/part/NOKIA5110
  • 旋转编码器 ▶ http://educ8s.tv/part/RotaryEncoder
  • 一个小面包板 ▶ http://edu8s.tv/part/SmallBreadboard
  • 一些电线 ▶ http://edu8s.tv/part/Wires

该项目的成本非常低,不到10美元。您可以在下面的视频说明中找到我使用的所有部分的链接。

第 2 步:诺基亚 5110 液晶显示屏

诺基亚 5110 是我最喜欢的 Arduino 项目显示器。

诺基亚 5110 是一款基本的图形 LCD 屏幕,最初用作手机屏幕。它使用 PCD8544 控制器,它是一种低功耗 CMOS LCD 控制器/驱动器。因此,该显示器具有令人印象深刻的功耗。它在开启时仅使用 0.4mA,但背光被禁用。它在睡眠模式下使用小于 0.06mA!这就是使这款显示器成为我最喜欢的原因之一。 PCD8544 通过串行总线接口连接到微控制器。这使得显示器非常易于与 Arduino 一起使用。你只需要连接8根线。

我准备了一个详细的教程,介绍如何在 Arduino 上使用诺基亚 5110 液晶显示器。我在本教程中附上了该视频,它将提供有关显示的可能有用的信息,因此我鼓励您仔细观看。显示器的成本约为 4 美元。

你可以在这里得到它:▶ http://educ8s.tv/part/NOKIA5110

第 3 步:旋转编码器

旋转编码器,也称为轴编码器,是一种机电设备,可将轴或轴的角位置或运动转换为模拟或数字代码。旋转编码器用于需要精确轴无限制旋转的许多应用,包括工业控制、机器人、专用摄影镜头、计算机输入设备(如光机械鼠标和轨迹球)、受控应力流变仪和旋转雷达平台。

我们将在这个项目中使用的旋转编码器是一种非常便宜的编码器。它还嵌入了一个按钮,为了使其工作,我们只需要连接 5 根电线。我准备了有关如何使用旋转编码器的详细教程。你可以在这里找到这个视频。

这种旋转编码器的成本非常低。它的成本约为 1.5 美元。

你可以在这里得到它▶ http://educ8s.tv/part/RotaryEncoder

第 4 步:构建项目

现在让我们将所有部分连接在一起。在构建这个项目之前,如果你过去没有使用过旋转编码器,我鼓励你观看我准备的关于旋转编码器的教程。它将帮助您了解旋转编码器的工作原理,并且您将获得一些使用它们的经验。此视频附在此处。

我把显示器放在一个像这样的小面包板上。我们先连接显示器。显示器的第一个引脚是复位连接到 Arduino Uno 的数字引脚 3,第二个引脚连接到数字引脚 4,第三个引脚连接到数字引脚 5,第四个引脚连接到数字引脚 11,第五个引脚连接到数字引脚引脚 13。下一个引脚是 Vcc。我们将 Vcc 连接到面包板的正极,面包板正极连接到 Arduino 的 3.3V 输出。下一个引脚是显示器的背光。因为我们想通过软件控制它,所以我们将它连接到数字引脚 7。最后一个引脚是 GND。我们将 GND 连接到面包板的负轨,将面包板的负轨连接到 Arduino GND。

现在我们要做的就是连接旋转编码器。第一个引脚是 GND,我们将它连接到面包板的负轨。下一个引脚是 Vcc,我们将它连接到面包板的正极轨道。下一个引脚是 SW,我们将其连接到模拟引脚 2。下一个引脚名为 DT,我们将其连接到模拟引脚 1。最后,引脚 CLK 连接到模拟引脚 0。您可以在中找到该项目的示意图下面是视频的说明。

现在我们已准备好启动项目。如您所见,项目运行良好,菜单也按预期运行!太好了,现在让我们看看项目的软件。

第五步:项目代码

在这个项目中,我们使用了 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

首先我们来看看drawMenu函数。该函数负责在显示器上绘制菜单。这个函数每隔几毫秒调用一次,所以如果菜单上有变化,这个函数负责更新屏幕上的菜单。

int menuitem =1;int frame =1;int page =1;int lastMenuItem =1; 

还有3个非常重要的全局变量,变量page,变量menuitem和变量frame。变量 page 记住屏幕上显示的是哪个 UI 屏幕。因此,如果页面变量为 1,则我们在主 UI 屏幕中,如果变量为 2,则我们在辅助 UI 屏幕中,我们在其中设置变量的值。菜单项会记住所选的菜单项。因此,如果它的值为 1,则选择第一个菜单项,因此 drawMenu 函数必须将此菜单项绘制为黑色和白色字母。如果菜单项为 2,则选择第二个菜单项,依此类推。 frame 变量,记住菜单的哪一部分显示在屏幕上。由于我们创建的菜单包含 6 个项目,并且我们一次只能显示其中的 3 个,因此我们需要知道屏幕上显示了哪些项目。 frame 变量准确地告诉我们这一点。如果 frame 变量的值为 1,则显示前三个菜单项,如果为 2,则显示项 2、3、4,以此类推。

我试图使代码尽可能容易修改,因此我创建了一些保存菜单项名称的全局变量。这样,您无需在代码中搜索即可轻松创建自己的菜单。

String menuItem1 ="Contrast";String menuItem2 ="Volume";String menuItem3 ="Language";String menuItem4 ="Difficulty";String menuItem5 ="Light:ON";String menuItem6 ="Reset";布尔背光 =真;int 对比度 =60;int 音量 =50;字符串语言 [3] ={“EN”,“ES”,“EL”};int selectedLanguage =0;字符串难度 [2] ={“EASY” , "HARD" };int selectedDifficulty =0; 

首先我们初始化代码中需要的所有全局变量。接下来我们初始化显示。在loop函数中,首先我们调用drawMenu函数在屏幕上绘制菜单。然后我们从 Rotary 编码器读取值并检查按钮是否被按下。例如,如果我们在主 UI 屏幕上选择了第一个菜单项,如果来自旋转编码器的值增加,则 menuitem 变量增加,并且在下一个循环中 drawMenu 函数将绘制第二个菜单项作为选择。如果我们现在按下旋转编码器的按钮,我们将导航到第二页,在那里我们设置变量的值。再次使用旋转编码器,我们可以增加或减少变量的值。如果我们按下按钮,我们将导航回主菜单页面,页面变量减少。

这就是这个菜单背后的基本思想。我们对所有菜单项和页面都遵循相同的过程。代码很复杂,长达 400 多行。这看起来很复杂,但如果你自己尝试,你会更容易理解它,你将能够改变它,扩展它并在你自己的项目中使用它。与往常一样,您可以在此处找到随附的代码。

Nokia5110MenuRotary.ino

第 6 步:测试项目

如果我们加载代码,我们可以看到项目按预期工作。我们可以使用轴上下导航菜单,我们可以通过按下旋转编码器按钮选择任何菜单项。多酷啊!

现在我们知道如何为诺基亚 5110 LCD 显示器构建菜单,我们可以为我们的项目添加更多功能并使它们更加用户友好。不过,我们今天构建的这个简单菜单可以改进。我们可以使用中断而不是一直检查按钮状态。这样我们就可以降低项目的功耗,让代码更干净。我将很快准备一个关于中断的视频,敬请期待。我很想听听您对这个菜单项目的看法。你觉得它有用吗?你打算在你的任何项目中使用菜单吗?请在下面发表您的想法和想法,谢谢!

代码

  • 代码片段#2
代码片段#2纯文本
String menuItem1 ="Contrast";String menuItem2 ="Volume";String menuItem3 ="Language";String menuItem4 ="难度";String menuItem5 ="Light:ON";String menuItem6 ="Reset";boolean背光 =true;int 对比=60;int volume =50;String language[3] ={ "EN", "ES", "EL" };int selectedLanguage =0;String 难度 [2] ={ "EASY", "HARD " };int selectedDifficulty =0;
Github
https://github.com/adafruit/Adafruit-GFX-Libraryhttps://github.com/adafruit/Adafruit-GFX-Library

制造工艺

  1. 使用 Arduino 制作流光溢彩监视器
  2. 诺基亚 5110 LCD 上的 DIY 简单 20 kHz Arduino 示波器
  3. LCD 动画和游戏
  4. 使用 Arduino 和智能手机的 DIY 电压表
  5. 使用物联网的心率监测器
  6. WebServerBlink 使用 Arduino Uno WiFi
  7. DIY 电压表与 Arduino 和诺基亚 5110 显示器
  8. 带旋转编码器的DIY简易测量轮
  9. 使用 arduino 的自动化恐龙游戏
  10. 使用 Arduino 和 RDA8057M 的 FM 收音机
  11. BLUE_P:无线 Arduino 编程扩展板
  12. 使用 Arduino 的触摸控制灯