编程总是很有趣,如果你刚刚开始嵌入式编程,Arduino是一个很好的平台。在本教程中,我们将使用 Arduino 构建自己的计算器。这些值可以通过键盘(4×4 键盘)发送,结果可以在LCD 屏幕上查看(16×2 点阵)。该计算器可以执行简单的运算,例如整数的加法,减法,乘法和除法。但是一旦你理解了这个概念,你甚至可以使用Arduino的内置函数实现科学函数。
在本项目结束时,您将了解如何将 16x2 LCD 和键盘与 Arduino 一起使用,以及使用现成的库为它们编程是多么容易。
所需材料:
Arduino Uno (任何版本都可以)
16×2 液晶显示屏
4×4 键盘
9V电池
试验板和连接线
电路图:
上面给出了这个Arduino计算器项目的完整电路图。电路图中显示的+5V和接地连接可以从Arduino的5V和接地引脚获得。Arduino本身可以从笔记本电脑或通过DC插孔使用12V适配器或9V电池供电。
我们使用Arduino以4位模式操作LCD,因此只有LCD的最后四个数据位连接到Arduino。键盘将有 8 个输出引脚,必须从引脚 0 连接到引脚 7,如上所示。您可以使用以下连接表来验证您与Arduino的连接,也可以检查4x4键盘与Arduino的接口。
Arduino 引脚名称: | 连接到: |
D0 | 1圣键盘的销钉 |
D1 | 2德·键盘的销钉 |
D2 | 3RD键盘的销钉 |
D3 | 4千键盘的销钉 |
D4 | 5千键盘的销钉 |
D5 | 6千键盘的销钉 |
D6 | 7千键盘的销钉 |
D7 | 8千键盘的销钉 |
D8 | 注册液晶屏选择引脚(引脚4) |
D9 | 液晶屏的使能引脚(引脚 6) |
D10 | 数据引脚 4(引脚 11) |
D11 | 数据引脚 4(引脚 11) |
D12 | 数据引脚 4(引脚 11) |
D13 | 数据引脚 4(引脚 11) |
(55 | 连接到液晶屏的 Vdd 引脚(引脚 2) |
地 | 连接到液晶屏的 Vss、V 形和 RW 引脚(引脚 1、3 和 5) |
如果有任何连接到引脚 0 和 pin1 的内容,某些 Arduino 板可能会在上传程序时显示错误,因此,如果您遇到任何问题,只需在上传程序时删除键盘即可。
连接完成后,您的硬件将如下所示
Arduino计算器程序:
该项目的完整Arduino程序在本项目结束时给出。代码被分成有意义的小块,并在下面解释。
如前所述,我们将使用库将LCD和键盘与Arduino连接。因此,让我们先将它们添加到Arduino IDE中。默认情况下,LCD库已包含在Arduino中,因此我们不必担心。对于键盘库,单击链接以从Github下载。您将获得一个 ZIP 文件,然后通过 Sketch -> Include Library -> 添加.ZIP文件并将位置指向此下载文件添加到 Arduino。完成后,我们就可以进行编程了。
尽管我们使用了一个库来使用键盘,但我们不得不提到一些关于Arduino键盘的细节(如下所示)。变量 ROWS 和 COLS 将告诉我们的键盘有多少行和列,键盘映射显示按键在键盘上出现的顺序。我在这个项目中使用的键盘如下所示,键映射也表示相同。
下面我们进一步提到了键盘使用可变数组 rowPins 和 colPin 连接到哪些引脚。
const byte ROWS = 4; // Four rows
const byte COLS = 4; // Three columns
// Define the Keymap
char keys[ROWS][COLS] = {
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};
byte rowPins[ROWS] = { 0, 1, 2, 3 };// Connect keypad ROW0, ROW1, ROW2 and ROW3 to these Arduino pins.
byte colPins[COLS] = { 4, 5, 6, 7 }; // Connect keypad COL0, COL1 and COL2 to these Arduino pins.
一旦我们提到了我们正在使用的键盘类型及其连接方式,我们就可以使用以下行使用这些详细信息创建键盘
Keypad kpd = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS ); // Create the Keypad
同样,我们还必须告诉LCD连接到Arduino的哪些引脚。根据我们的电路图,定义如下
const int rs = 8, en = 9, d4 = 10, d5 = 11, d6 = 12, d7 = 13; //Pins to which LCD is connected
LiquidCrystal lcd(rs, en, d4, d5, d6, d7); //create the LCD
在设置函数中,我们只显示项目的名称,然后继续主项目所在的 while 循环。
基本上,我们必须检查键盘上是否键入了任何内容,如果键入,我们必须识别正在键入的内容,然后在按下“=”时将其转换为变量,我们必须计算结果,然后最终将其显示在LCD上。这正是循环函数内部所做的,如下所示
key = kpd.getKey(); //storing pressed key value in a char
if (key!=NO_KEY)
DetectButtons();
if (result==true)
CalculateResult();
DisplayResult();
使用注释行解释每个函数内部发生的情况,浏览下面的完整代码,摆弄它以了解它的实际工作原理。
Arduino计算器的模拟:
我们也可以尝试使用 Proteus 软件模拟项目。Proteus本身没有Arduino组件,但可以轻松下载并添加到其库中。在Proteus上安装Arduino组件后,只需添加字母数字LCD和键盘即可进行连接,如电路图所示。
然后从这里下载十六进制文件,并通过双击Proteus将其添加到Arduino中,并将“程序文件”指向此下载的十六进制文件。模拟的快照如下所示,完整的工作显示在下面的视频中。
注意:给出的十六进制文件与下面给出的程序的原始文件不同。由于仿真键盘的键盘映射和实际硬件键盘的键盘映射是不同的。
Arduino计算器的工作:
按照电路图进行连接并上传下面的代码。如果显示错误,请确保已按照上面给出的说明添加了库。您还可以尝试模拟以检查问题是否出在您的硬件上。如果一切都按预期完成,那么您的硬件将如下所示,LCD 显示此
由于此处使用的键盘上没有适当的标记,因此我假设字母表是下面列出的运算符
键盘上的字符 | 假定为 |
“A” | 加法 (+) |
“乙” | 减法 (-) |
“C” | 乘法 (*) |
“D” | 分区 (/) |
"*" | 清除 (C) |
"#" | 等于 (=) |
您可以使用标记来覆盖每个按钮实际表示的内容。
完成后,您可以直接开始使用计算器。键入数字,将出现在第二行,按操作数并键入第二个数字,最后按“#”键获得结果。
-
计算器
+关注
关注
16文章
437浏览量
37277 -
Arduino
+关注
关注
187文章
6463浏览量
186617
发布评论请先 登录
相关推荐
评论