編程總是很有趣,如果你剛剛開始嵌入式編程,Arduino是一個很好的平臺。在本教程中,我們將使用 Arduino 構(gòu)建自己的計算器。這些值可以通過鍵盤(4×4 鍵盤)發(fā)送,結(jié)果可以在LCD 屏幕上查看(16×2 點陣)。該計算器可以執(zhí)行簡單的運算,例如整數(shù)的加法,減法,乘法和除法。但是一旦你理解了這個概念,你甚至可以使用Arduino的內(nèi)置函數(shù)實現(xiàn)科學(xué)函數(shù)。
在本項目結(jié)束時,您將了解如何將 16x2 LCD 和鍵盤與 Arduino 一起使用,以及使用現(xiàn)成的庫為它們編程是多么容易。
所需材料:
Arduino Uno (任何版本都可以)
16×2 液晶顯示屏
4×4 鍵盤
9V電池
試驗板和連接線
電路圖:
上面給出了這個Arduino計算器項目的完整電路圖。電路圖中顯示的+5V和接地連接可以從Arduino的5V和接地引腳獲得。Arduino本身可以從筆記本電腦或通過DC插孔使用12V適配器或9V電池供電。
我們使用Arduino以4位模式操作LCD,因此只有LCD的最后四個數(shù)據(jù)位連接到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 | 數(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 板可能會在上傳程序時顯示錯誤,因此,如果您遇到任何問題,只需在上傳程序時刪除鍵盤即可。
連接完成后,您的硬件將如下所示
Arduino計算器程序:
該項目的完整Arduino程序在本項目結(jié)束時給出。代碼被分成有意義的小塊,并在下面解釋。
如前所述,我們將使用庫將LCD和鍵盤與Arduino連接。因此,讓我們先將它們添加到Arduino IDE中。默認(rèn)情況下,LCD庫已包含在Arduino中,因此我們不必?fù)?dān)心。對于鍵盤庫,單擊鏈接以從Github下載。您將獲得一個 ZIP 文件,然后通過 Sketch -> Include Library -> 添加.ZIP文件并將位置指向此下載文件添加到 Arduino。完成后,我們就可以進行編程了。
盡管我們使用了一個庫來使用鍵盤,但我們不得不提到一些關(guān)于Arduino鍵盤的細(xì)節(jié)(如下所示)。變量 ROWS 和 COLS 將告訴我們的鍵盤有多少行和列,鍵盤映射顯示按鍵在鍵盤上出現(xià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.
一旦我們提到了我們正在使用的鍵盤類型及其連接方式,我們就可以使用以下行使用這些詳細(xì)信息創(chuàng)建鍵盤
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ù)中,我們只顯示項目的名稱,然后繼續(xù)主項目所在的 while 循環(huán)。
基本上,我們必須檢查鍵盤上是否鍵入了任何內(nèi)容,如果鍵入,我們必須識別正在鍵入的內(nèi)容,然后在按下“=”時將其轉(zhuǎn)換為變量,我們必須計算結(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();
使用注釋行解釋每個函數(shù)內(nèi)部發(fā)生的情況,瀏覽下面的完整代碼,擺弄它以了解它的實際工作原理。
Arduino計算器的模擬:
我們也可以嘗試使用 Proteus 軟件模擬項目。Proteus本身沒有Arduino組件,但可以輕松下載并添加到其庫中。在Proteus上安裝Arduino組件后,只需添加字母數(shù)字LCD和鍵盤即可進行連接,如電路圖所示。
然后從這里下載十六進制文件,并通過雙擊Proteus將其添加到Arduino中,并將“程序文件”指向此下載的十六進制文件。模擬的快照如下所示,完整的工作顯示在下面的視頻中。
注意:給出的十六進制文件與下面給出的程序的原始文件不同。由于仿真鍵盤的鍵盤映射和實際硬件鍵盤的鍵盤映射是不同的。
Arduino計算器的工作:
按照電路圖進行連接并上傳下面的代碼。如果顯示錯誤,請確保已按照上面給出的說明添加了庫。您還可以嘗試模擬以檢查問題是否出在您的硬件上。如果一切都按預(yù)期完成,那么您的硬件將如下所示,LCD 顯示此
由于此處使用的鍵盤上沒有適當(dāng)?shù)臉?biāo)記,因此我假設(shè)字母表是下面列出的運算符
鍵盤上的字符 | 假定為 |
“A” | 加法 (+) |
“乙” | 減法 (-) |
“C” | 乘法 (*) |
“D” | 分區(qū) (/) |
"*" | 清除 (C) |
"#" | 等于 (=) |
您可以使用標(biāo)記來覆蓋每個按鈕實際表示的內(nèi)容。
完成后,您可以直接開始使用計算器。鍵入數(shù)字,將出現(xiàn)在第二行,按操作數(shù)并鍵入第二個數(shù)字,最后按“#”鍵獲得結(jié)果。
-
計算器
+關(guān)注
關(guān)注
16文章
437瀏覽量
37251 -
Arduino
+關(guān)注
關(guān)注
187文章
6458瀏覽量
186504
發(fā)布評論請先 登錄
相關(guān)推薦
評論