如何使用Arduino构建一个计算器

描述

编程总是很有趣,如果你刚刚开始嵌入式编程,Arduino是一个很好的平台。在本教程中,我们将使用 Arduino 构建自己的计算器。这些值可以通过键盘(4×4 键盘)发送,结果可以在LCD 屏幕上查看(16×2 点阵)。该计算器可以执行简单的运算,例如整数的加法,减法,乘法和除法。但是一旦你理解了这个概念,你甚至可以使用Arduino的内置函数实现科学函数。

在本项目结束时,您将了解如何将 16x2 LCD 和键盘与 Arduino 一起使用,以及使用现成的库为它们编程是多么容易。

所需材料:

Arduino Uno (任何版本都可以)

16×2 液晶显示屏

4×4 键盘

9V电池

试验板和连接线

电路图:

Arduino

上面给出了这个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计算器程序:
该项目的完整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

注意:给出的十六进制文件与下面给出的程序的原始文件不同。由于仿真键盘的键盘映射和实际硬件键盘的键盘映射是不同的。

Arduino计算器的工作:

按照电路图进行连接并上传下面的代码。如果显示错误,请确保已按照上面给出的说明添加了库。您还可以尝试模拟以检查问题是否出在您的硬件上。如果一切都按预期完成,那么您的硬件将如下所示,LCD 显示此

Arduino

由于此处使用的键盘上没有适当的标记,因此我假设字母表是下面列出的运算符

 

键盘上的字符 假定为
“A” 加法 (+)
“乙” 减法 (-)
“C” 乘法 (*)
“D” 分区 (/)
"*" 清除 (C)
"#" 等于 (=)

 

您可以使用标记来覆盖每个按钮实际表示的内容。

完成后,您可以直接开始使用计算器。键入数字,将出现在第二行,按操作数并键入第二个数字,最后按“#”键获得结果。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分