编程总是很有趣,并且如果您刚刚开始使用嵌入式编程,那么Arduino是一个很棒的平台。在本教程中,我们将使用Arduino构建自己的计算器。可以通过键盘(4×4键盘)发送这些值,并且可以在LCD屏幕(16×2点矩阵)上查看结果。该计算器可以执行简单的运算,例如加数,减法,乘法和除法。但是,一旦您了解了这一概念,就可以使用Arduino的内置函数来实现科学功能。
在该项目的最后,您将知道如何在Arduino上使用16x2 LCD和键盘,以及使用现成的库对其进行编程的难易程度。您还将了解如何对Arduino进行编程以完成特定任务。
所需材料:
- Arduino Uno(任何版本均可使用)
- 16×2液晶显示器
- 4×4键盘
- 9V电池
- 面包板和连接线
电路原理图:
上面给出了该Arduino计算器项目的完整电路图 。电路图中所示的+ 5V和接地连接可从Arduino的5V和接地引脚获得。Arduino本身可以通过笔记本电脑或使用12V适配器或9V电池的DC插孔供电。
我们使用Arduino在4位模式下操作LCD,因此只有LCD的最后四个数据位连接到Arduino。键盘将有8个输出引脚,必须将它们从引脚0连接到引脚7,如上所示。您可以使用以下连接表来验证与Arduino的连接,还可以检查与Arduino的4x4键盘接口。
Arduino引脚名称: |
连接到: |
D0 |
1个第一键盘的销 |
D1 |
2第二键盘的销 |
D2 |
3 RD键盘的销 |
D3 |
键盘的第4针 |
D4 |
5个键盘的销 |
D5 |
6个键盘的销 |
D6 |
7个键盘的销 |
D7 |
8个键盘的销 |
D8 |
LCD的寄存器选择引脚(引脚4) |
D9 |
LCD的使能引脚(引脚6) |
D10 |
数据针脚4(针脚11) |
D11 |
数据针脚4(针脚11) |
D12 |
数据针脚4(针脚11) |
D13 |
数据针脚4(针脚11) |
+5伏 |
连接到LCD的Vdd引脚(引脚2) |
地面 |
连接到LCD的Vss,Vee和RW引脚(引脚1,3和5) |
如果销0和销1有任何连接,某些Arduino板在上载程序时可能会显示错误,因此,如果遇到任何问题,只需在上载程序时卸下键盘即可。
连接完成后,您的硬件如下所示
Arduino计算器程序:
在该项目的结尾给出了该项目的完整Arduino程序。该代码分为多个有意义的小块,并在下面进行说明。
如前所述,我们将使用库将LCD和键盘与Arduino接口。因此,让我们先将它们添加到我们的Arduino IDE中。 LCD库默认情况下已包含在您的Arduino中,因此我们不必担心。对于键盘库,请单击链接以从Github下载。您将获得一个ZIP文件,然后通过Sketch-> Include Library-> Add.ZIP文件将此库添加到Arduino,并将位置指向此下载文件。一旦完成,我们就可以开始编程了。
即使我们已使用库来使用键盘,我们也必须向Arduino提及一些有关键盘的细节(如下所示)。变量ROWS和COLS会告诉我们键盘有多少行和多少列,键盘映射表显示键盘上按键的顺序。我在此项目中使用的键盘如下图所示,按键映射也表示相同。
在下面的内容中,我们提到了使用可变数组 rowPins 和 colPins 将键盘连接到哪些引脚。
const字节ROWS = 4; //四行const字节COLS = 4; //三列//定义键映射char键= {{'1','2','3','A'},{'4','5','6','B'},{ '7','8','9','C'},{'*','0','#','D'}}; 字节rowPins = {0,1,2,3}; //将键盘ROW0,ROW1,ROW2和ROW3连接到这些Arduino引脚。字节colPins = {4,5,6,7}; //将键盘COL0,COL1和COL2连接到这些Arduino引脚。
提到使用哪种类型的键盘及其连接方式后,我们可以使用下面的行使用这些详细信息来创建键盘
键盘kpd =键盘(makeKeymap(keys),rowPins,colPins,ROWS,COLS); //创建键盘
同样,我们还必须告诉LCD连接到Arduino的哪个引脚。根据我们的电路图,定义如下
const int rs = 8,en = 9,d4 = 10,d5 = 11,d6 = 12,d7 = 13;// LCD所连接的引脚LiquidCrystal lcd(rs,en,d4,d5,d6,d7); //创建LCD
在 setup 函数中,我们只显示项目的名称,然后进入主项目所在的while循环。
基本上,我们必须检查键盘上是否键入了任何内容,如果键入了内容,则必须识别正在键入的内容,然后在按下“ =”时将其转换为变量,我们必须计算结果并最终显示出来在液晶显示屏上。这正是在 循环 函数内部完成的操作,如下所示
键= kpd.getKey(); //如果(key!= NO_KEY)DetectButtons();则将按下的键值存储在char中 如果(result == true)CalculateResult(); DisplayResult();
使用注释行解释每个函数内部发生的事情,遍历下面的完整代码,四处弄弄它,以了解其实际工作方式。如果您对某一行有任何疑问,请随时使用评论部分或论坛。
Arduino计算器的仿真:
我们也可以尝试使用Proteus软件模拟项目。Proteus本身没有Arduino组件,但可以轻松下载并添加到其库中。在Proteus上安装Arduino组件后,只需添加字母数字LCD和键盘即可进行连接,如电路图所示。
然后从此处下载hex文件,并通过双击Proteus上的板将其添加到Arduino,然后将“程序文件”指向此下载的hex文件。下面是模拟的快照,下面的视频显示了完整的工作。
注意:给出的十六进制文件与下面给出的程序的原始文件不同。由于模拟键盘和实际硬件键盘的键盘映射不同,因此已对其进行了修改。
Arduino计算器的工作方式:
按照电路图进行连接,并上传以下代码。如果显示错误,请确保已按照上述说明添加了库。您也可以尝试模拟以检查问题是否出在硬件上。如果一切都按预期完成,则您的硬件如下所示,液晶显示屏显示以下内容
由于此处使用的键盘上没有正确的标记,因此我假设字母是以下所列的运算符
键盘上的字符 |
假定是 |
“一种” |
加法(+) |
“ B” |
减法(-) |
“C” |
乘法(*) |
“ D” |
部门(/) |
“ *” |
清除(C) |
“#” |
等于(=) |
您可以使用标记来覆盖每个按钮实际代表的内容。
完成后,您可以直接开始使用计算器。输入数字,并出现在第二行,按操作数,然后输入第二个数字,最后按“#”键获取结果。您也可以尝试构建基于触摸屏的Arduino计算器。