0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

科技观察员 来源:circuitdigest 作者:阿斯文斯·拉吉 2022-11-21 17:43 次阅读

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

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

所需材料:

Arduino Uno (任何版本都可以)

16×2 液晶显示屏

4×4 键盘

9V电池

试验板和连接线

电路图:

poYBAGN7SESACMv_AADo7IaSfUI480.png

上面给出了这个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 板可能会在上传程序时显示错误,因此,如果您遇到任何问题,只需在上传程序时删除键盘即可。

连接完成后,您的硬件将如下所示

pYYBAGN7SEaAKzyLAAD2znorMbM407.jpg

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中,并将“程序文件”指向此下载的十六进制文件。模拟的快照如下所示,完整的工作显示在下面的视频中。

poYBAGN7SEiAFUQ_AAD26RBdkys513.jpg

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

Arduino计算器的工作:

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

pYYBAGN7SEmAWMvTAACwn_J-zx0532.jpg

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

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

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

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

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

    关注

    16

    文章

    437

    浏览量

    37236
  • Arduino
    +关注

    关注

    187

    文章

    6455

    浏览量

    186444
收藏 人收藏

    评论

    相关推荐

    如何使用TFT LCD构建Arduino触摸屏计算器

    在这个项目中,我们将使用2.4英寸Arduino TFT LCD屏幕来构建我们自己的Arduino触摸屏计算器,该计算器可以执行所有基本
    的头像 发表于 01-25 17:06 4579次阅读
    如何使用TFT LCD<b class='flag-5'>构建</b><b class='flag-5'>Arduino</b>触摸屏<b class='flag-5'>计算器</b>

    设计虚拟计算器

    设计虚拟计算器,无计算时显示时间,计算器最少具备加、减、乘、除、平方、开方等功能。急急急!{:1:}{:1:}{:1:}
    发表于 05-09 19:28

    设计虚拟计算器

    用labview设计虚拟计算器,无计算时显示时间,计算器最少具备加、减、乘、除、平方、开方等功能。
    发表于 05-14 13:32

    设计虚拟计算器

    设计虚拟计算器,无计算时显示时间,计算器最少具备加、减、乘、除、平方、开方等功能。
    发表于 05-14 13:34

    基于GUI的完全xp系统计算器简单计算器

    基于GUI的完全xp系统计算器简单的计算器
    发表于 01-07 09:49

    基于Lex & Yacc构建简单计算器

    Lex & Yacc 学习笔记(2)-简单计算器
    发表于 05-21 10:45

    如何做一个用遥控控制的计算器

    基于arduino uno r3/ Mega2560,做一个用遥控控制的计算器。。。。。目录. 实验材料:(ง •_•)ง...
    发表于 02-15 07:42

    基于Arduino的编程计算器

    描述Arduino Nano 编程计算器基于Arduino的编程计算器,用于教育和娱乐。成分Arduino纳米LCD1602 16x2 带
    发表于 09-09 07:04

    很好的计算器

    电子发烧友网站提供《很好的计算器.rar》资料免费下载
    发表于 09-27 19:35 59次下载

    点亮LCD屏————遥控计算器 arduino

    基于arduino uno r3/ Mega2560,做一个用遥控控制的计算器。。。。。 目录
    发表于 12-16 16:47 17次下载
    点亮LCD屏————遥控<b class='flag-5'>计算器</b> <b class='flag-5'>arduino</b>

    基于Arduino的编程计算器

    电子发烧友网站提供《基于Arduino的编程计算器.zip》资料免费下载
    发表于 08-18 14:38 4次下载
    基于<b class='flag-5'>Arduino</b>的编程<b class='flag-5'>计算器</b>

    Arduino计算器开源分享

    电子发烧友网站提供《Arduino计算器开源分享.zip》资料免费下载
    发表于 10-31 11:42 2次下载
    <b class='flag-5'>Arduino</b><b class='flag-5'>计算器</b>开源分享

    使用Bolt Iot模块和Arduino的BPM计算器

    电子发烧友网站提供《使用Bolt Iot模块和Arduino的BPM计算器.zip》资料免费下载
    发表于 11-21 09:37 0次下载
    使用Bolt Iot模块和<b class='flag-5'>Arduino</b>的BPM<b class='flag-5'>计算器</b>

    基于Arduino的数字计算器

    电子发烧友网站提供《基于Arduino的数字计算器.zip》资料免费下载
    发表于 12-19 09:29 3次下载
    基于<b class='flag-5'>Arduino</b>的数字<b class='flag-5'>计算器</b>

    Nextion 3.5英寸LCD 8功能计算器设计方案

    有用的计算器,其样式类似于Arduino Uno的Windows 10标准计算器。硬件部件:Ardu
    发表于 01-05 16:20 0次下载