那曲檬骨新材料有限公司

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何使用Arduino構(gòu)建一個(gè)計(jì)算器

科技觀察員 ? 來(lái)源:circuitdigest ? 作者:阿斯文斯·拉吉 ? 2022-11-21 17:43 ? 次閱讀

編程總是很有趣,如果你剛剛開(kāi)始嵌入式編程,Arduino是一個(gè)很好的平臺(tái)。在本教程中,我們將使用 Arduino 構(gòu)建自己的計(jì)算器。這些值可以通過(guò)鍵盤(pán)(4×4 鍵盤(pán))發(fā)送,結(jié)果可以在LCD 屏幕上查看(16×2 點(diǎn)陣)。該計(jì)算器可以執(zhí)行簡(jiǎn)單的運(yùn)算,例如整數(shù)的加法,減法,乘法和除法。但是一旦你理解了這個(gè)概念,你甚至可以使用Arduino的內(nèi)置函數(shù)實(shí)現(xiàn)科學(xué)函數(shù)。

在本項(xiàng)目結(jié)束時(shí),您將了解如何將 16x2 LCD 和鍵盤(pán)與 Arduino 一起使用,以及使用現(xiàn)成的庫(kù)為它們編程是多么容易。

所需材料:

Arduino Uno (任何版本都可以)

16×2 液晶顯示屏

4×4 鍵盤(pán)

9V電池

試驗(yàn)板和連接線

電路圖:

poYBAGN7SESACMv_AADo7IaSfUI480.png

上面給出了這個(gè)Arduino計(jì)算器項(xiàng)目的完整電路圖。電路圖中顯示的+5V和接地連接可以從Arduino的5V和接地引腳獲得。Arduino本身可以從筆記本電腦或通過(guò)DC插孔使用12V適配器或9V電池供電

我們使用Arduino以4位模式操作LCD,因此只有LCD的最后四個(gè)數(shù)據(jù)位連接到Arduino。鍵盤(pán)將有 8 個(gè)輸出引腳,必須從引腳 0 連接到引腳 7,如上所示。您可以使用以下連接表來(lái)驗(yàn)證您與Arduino的連接,也可以檢查4x4鍵盤(pán)與Arduino的接口

Arduino 引腳名稱: 連接到:
D0 1圣鍵盤(pán)的銷(xiāo)釘
D1 2德·鍵盤(pán)的銷(xiāo)釘
D2 3RD鍵盤(pán)的銷(xiāo)釘
D3 4千鍵盤(pán)的銷(xiāo)釘
D4 5千鍵盤(pán)的銷(xiāo)釘
D5 6千鍵盤(pán)的銷(xiāo)釘
D6 7千鍵盤(pán)的銷(xiāo)釘
D7 8千鍵盤(pán)的銷(xiāo)釘
D8 注冊(cè)液晶屏選擇引腳(引腳4)
D9 液晶屏的使能引腳(引腳 6)
D10 數(shù)據(jù)引腳 4(引腳 11)
D11 數(shù)據(jù)引腳 4(引腳 11)
D12 數(shù)據(jù)引腳 4(引腳 11)
D13 數(shù)據(jù)引腳 4(引腳 11)
(55 連接到液晶屏的 Vdd 引腳(引腳 2)
連接到液晶屏的 Vss、V 形和 RW 引腳(引腳 1、3 和 5)

如果有任何連接到引腳 0 和 pin1 的內(nèi)容,某些 Arduino 板可能會(huì)在上傳程序時(shí)顯示錯(cuò)誤,因此,如果您遇到任何問(wèn)題,只需在上傳程序時(shí)刪除鍵盤(pán)即可。

連接完成后,您的硬件將如下所示

pYYBAGN7SEaAKzyLAAD2znorMbM407.jpg

Arduino計(jì)算器程序:
該項(xiàng)目的完整Arduino程序在本項(xiàng)目結(jié)束時(shí)給出。代碼被分成有意義的小塊,并在下面解釋。

如前所述,我們將使用庫(kù)將LCD和鍵盤(pán)與Arduino連接。因此,讓我們先將它們添加到Arduino IDE中。默認(rèn)情況下,LCD庫(kù)已包含在Arduino中,因此我們不必?fù)?dān)心。對(duì)于鍵盤(pán)庫(kù),單擊鏈接以從Github下載。您將獲得一個(gè) ZIP 文件,然后通過(guò) Sketch -> Include Library -> 添加.ZIP文件并將位置指向此下載文件添加到 Arduino。完成后,我們就可以進(jìn)行編程了。

盡管我們使用了一個(gè)庫(kù)來(lái)使用鍵盤(pán),但我們不得不提到一些關(guān)于Arduino鍵盤(pán)的細(xì)節(jié)(如下所示)。變量 ROWS 和 COLS 將告訴我們的鍵盤(pán)有多少行和列,鍵盤(pán)映射顯示按鍵在鍵盤(pán)上出現(xiàn)的順序。我在這個(gè)項(xiàng)目中使用的鍵盤(pán)如下所示,鍵映射也表示相同。

下面我們進(jìn)一步提到了鍵盤(pán)使用可變數(shù)組 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.
一旦我們提到了我們正在使用的鍵盤(pán)類(lèi)型及其連接方式,我們就可以使用以下行使用這些詳細(xì)信息創(chuàng)建鍵盤(pán)

Keypad kpd = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS ); // Create the Keypad
同樣,我們還必須告訴LCD連接到Arduino的哪些引腳。根據(jù)我們的電路圖,定義如下

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
在設(shè)置函數(shù)中,我們只顯示項(xiàng)目的名稱,然后繼續(xù)主項(xiàng)目所在的 while 循環(huán)。

基本上,我們必須檢查鍵盤(pán)上是否鍵入了任何內(nèi)容,如果鍵入,我們必須識(shí)別正在鍵入的內(nèi)容,然后在按下“=”時(shí)將其轉(zhuǎn)換為變量,我們必須計(jì)算結(jié)果,然后最終將其顯示在LCD上。這正是循環(huán)函數(shù)內(nèi)部所做的,如下所示

key = kpd.getKey(); //storing pressed key value in a char

if (key!=NO_KEY)
DetectButtons();

if (result==true)
CalculateResult();

DisplayResult();
使用注釋行解釋每個(gè)函數(shù)內(nèi)部發(fā)生的情況,瀏覽下面的完整代碼,擺弄它以了解它的實(shí)際工作原理

Arduino計(jì)算器的模擬

我們也可以嘗試使用 Proteus 軟件模擬項(xiàng)目。Proteus本身沒(méi)有Arduino組件,但可以輕松下載并添加到其庫(kù)中。在Proteus上安裝Arduino組件后,只需添加字母數(shù)字LCD和鍵盤(pán)即可進(jìn)行連接,如電路圖所示。

然后從這里下載十六進(jìn)制文件,并通過(guò)雙擊Proteus將其添加到Arduino中,并將“程序文件”指向此下載的十六進(jìn)制文件。模擬的快照如下所示,完整的工作顯示在下面的視頻中。

poYBAGN7SEiAFUQ_AAD26RBdkys513.jpg

注意:給出的十六進(jìn)制文件與下面給出的程序的原始文件不同。由于仿真鍵盤(pán)的鍵盤(pán)映射和實(shí)際硬件鍵盤(pán)的鍵盤(pán)映射是不同的。

Arduino計(jì)算器的工作:

按照電路圖進(jìn)行連接并上傳下面的代碼。如果顯示錯(cuò)誤,請(qǐng)確保已按照上面給出的說(shuō)明添加了庫(kù)。您還可以嘗試模擬以檢查問(wèn)題是否出在您的硬件上。如果一切都按預(yù)期完成,那么您的硬件將如下所示,LCD 顯示此

pYYBAGN7SEmAWMvTAACwn_J-zx0532.jpg

由于此處使用的鍵盤(pán)上沒(méi)有適當(dāng)?shù)臉?biāo)記,因此我假設(shè)字母表是下面列出的運(yùn)算符

鍵盤(pán)上的字符 假定為
“A” 加法 (+)
“乙” 減法 (-)
“C” 乘法 (*)
“D” 分區(qū) (/)
"*" 清除 (C)
"#" 等于 (=)

您可以使用標(biāo)記來(lái)覆蓋每個(gè)按鈕實(shí)際表示的內(nèi)容。

完成后,您可以直接開(kāi)始使用計(jì)算器。鍵入數(shù)字,將出現(xiàn)在第二行,按操作數(shù)并鍵入第二個(gè)數(shù)字,最后按“#”鍵獲得結(jié)果。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 計(jì)算器
    +關(guān)注

    關(guān)注

    16

    文章

    438

    瀏覽量

    37470
  • Arduino
    +關(guān)注

    關(guān)注

    188

    文章

    6477

    瀏覽量

    187819
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    如何使用TFT LCD構(gòu)建Arduino觸摸屏計(jì)算器

    在這個(gè)項(xiàng)目中,我們將使用2.4英寸Arduino TFT LCD屏幕來(lái)構(gòu)建我們自己的Arduino觸摸屏計(jì)算器,該計(jì)算器可以執(zhí)行所有基本
    的頭像 發(fā)表于 01-25 17:06 ?4999次閱讀
    如何使用TFT LCD<b class='flag-5'>構(gòu)建</b><b class='flag-5'>Arduino</b>觸摸屏<b class='flag-5'>計(jì)算器</b>

    設(shè)計(jì)個(gè)虛擬計(jì)算器

    設(shè)計(jì)個(gè)虛擬計(jì)算器,無(wú)計(jì)算時(shí)顯示時(shí)間,計(jì)算器最少具備加、減、乘、除、平方、開(kāi)方等功能。急急急!{:1:}{:1:}{:1:}
    發(fā)表于 05-09 19:28

    設(shè)計(jì)個(gè)虛擬計(jì)算器

    用labview設(shè)計(jì)個(gè)虛擬計(jì)算器,無(wú)計(jì)算時(shí)顯示時(shí)間,計(jì)算器最少具備加、減、乘、除、平方、開(kāi)方等功能。
    發(fā)表于 05-14 13:32

    設(shè)計(jì)個(gè)虛擬計(jì)算器

    設(shè)計(jì)個(gè)虛擬計(jì)算器,無(wú)計(jì)算時(shí)顯示時(shí)間,計(jì)算器最少具備加、減、乘、除、平方、開(kāi)方等功能。
    發(fā)表于 05-14 13:34

    基于GUI的完全xp系統(tǒng)計(jì)算器個(gè)簡(jiǎn)單計(jì)算器

    基于GUI的完全xp系統(tǒng)計(jì)算器個(gè)簡(jiǎn)單的計(jì)算器
    發(fā)表于 01-07 09:49

    基于Lex & Yacc構(gòu)建個(gè)簡(jiǎn)單計(jì)算器

    Lex & Yacc 學(xué)習(xí)筆記(2)-簡(jiǎn)單計(jì)算器
    發(fā)表于 05-21 10:45

    如何做一個(gè)用遙控控制的計(jì)算器

    基于arduino uno r3/ Mega2560,做一個(gè)用遙控控制的計(jì)算器。。。。。目錄. 實(shí)驗(yàn)材料:(? ?_?)?...
    發(fā)表于 02-15 07:42

    基于Arduino的編程計(jì)算器

    描述Arduino Nano 編程計(jì)算器基于Arduino的編程計(jì)算器,用于教育和娛樂(lè)。成分Arduino納米LCD1602 16x2 帶
    發(fā)表于 09-09 07:04

    個(gè)很好的計(jì)算器

    電子發(fā)燒友網(wǎng)站提供《個(gè)很好的計(jì)算器.rar》資料免費(fèi)下載
    發(fā)表于 09-27 19:35 ?59次下載

    點(diǎn)亮LCD屏————遙控計(jì)算器 arduino

    基于arduino uno r3/ Mega2560,做一個(gè)用遙控控制的計(jì)算器。。。。。 目錄
    發(fā)表于 12-16 16:47 ?17次下載
    點(diǎn)亮LCD屏————遙控<b class='flag-5'>計(jì)算器</b> <b class='flag-5'>arduino</b>

    基于Arduino的編程計(jì)算器

    電子發(fā)燒友網(wǎng)站提供《基于Arduino的編程計(jì)算器.zip》資料免費(fèi)下載
    發(fā)表于 08-18 14:38 ?4次下載
    基于<b class='flag-5'>Arduino</b>的編程<b class='flag-5'>計(jì)算器</b>

    Arduino計(jì)算器開(kāi)源分享

    電子發(fā)燒友網(wǎng)站提供《Arduino計(jì)算器開(kāi)源分享.zip》資料免費(fèi)下載
    發(fā)表于 10-31 11:42 ?2次下載
    <b class='flag-5'>Arduino</b><b class='flag-5'>計(jì)算器</b>開(kāi)源分享

    使用Bolt Iot模塊和Arduino的BPM計(jì)算器

    電子發(fā)燒友網(wǎng)站提供《使用Bolt Iot模塊和Arduino的BPM計(jì)算器.zip》資料免費(fèi)下載
    發(fā)表于 11-21 09:37 ?0次下載
    使用Bolt Iot模塊和<b class='flag-5'>Arduino</b>的BPM<b class='flag-5'>計(jì)算器</b>

    基于Arduino的數(shù)字計(jì)算器

    電子發(fā)燒友網(wǎng)站提供《基于Arduino的數(shù)字計(jì)算器.zip》資料免費(fèi)下載
    發(fā)表于 12-19 09:29 ?3次下載
    基于<b class='flag-5'>Arduino</b>的數(shù)字<b class='flag-5'>計(jì)算器</b>

    Nextion 3.5英寸LCD 8功能計(jì)算器設(shè)計(jì)方案

    個(gè)有用的計(jì)算器,其樣式類(lèi)似于Arduino Uno的Windows 10標(biāo)準(zhǔn)計(jì)算器。硬件部件:Ardu
    發(fā)表于 01-05 16:20 ?0次下載
    大发888 大发888游戏平台| 百家乐官网傻瓜式投注法| 威尼斯人娱乐棋牌平台| 澳门百家乐在线| 24葬书-葬法| 百家乐官网博娱乐场开户注册 | 现场百家乐投注| 百家乐游戏真钱游戏| 在线百家乐官网策略| 至富百家乐官网的玩法技巧和规则| 一直对百家乐官网很感兴趣.zibo太阳城娱乐城 | 百家乐娱乐城注册| 大桥下做生意风水好吗| 金花百家乐的玩法技巧和规则| 淘金百家乐现金网| 88百家乐现金网| 太阳城百家乐赌博害人| 大家赢百家乐投注| 百家乐太阳城真人游戏| 百家乐赌场规则| 银河百家乐的玩法技巧和规则| 百家乐在线娱乐可信吗| 百家乐国际娱乐场开户注册 | 百家乐策略与心得| 真人百家乐平台下载| 百家乐一般的庄闲比例是多少| 百家乐庄闲和的倍数| 百家乐投注外围哪里好| 百家乐庄闲排列| 赌球者| 顶级赌场连环夺宝ios下载| 皇冠足球比分| 百家乐官网怎么样玩| 百家乐官网的玩法和技巧| 百家乐官网软件辅助器| 澳门百家乐秘诀| 百家乐网上漏洞| 老虎机下载| 永利百家乐官网游戏| 大发888注册| 解析百家乐官网投注法|