這篇文章來源于DevicePlus.com英語網(wǎng)站的翻譯稿。
通過使用Arduino擴(kuò)展板,您可以利用各種有用功能和可直接插入擴(kuò)展板的工具來快速升級自己的項(xiàng)目。為了向您展示這項(xiàng)操作的簡易性,我們將介紹如何把可編程LCD顯示器添加到您的Arduino項(xiàng)目中,使您可以用它來顯示文本,并通過一系列的按鈕來為您提供輸入功能。
Arduino擴(kuò)展板和LCD顯示器的工作原理
我們之前已經(jīng)討論過Arduino擴(kuò)展板,但是以防您不太熟悉,我們在這里進(jìn)行一些簡單介紹。擴(kuò)展板是Arduino項(xiàng)目的附加組件,可以直接插入您的開發(fā)板以增加新的功能。有些是可堆疊的,所以您可以將多個(gè)模塊添加到單個(gè)項(xiàng)目中。它們通常帶有自己的軟件庫,您可以將這些軟件庫導(dǎo)入到您的草圖中,以便像使用所連接的其他組件那樣輕松對其進(jìn)行控制。
在本指南中,我們將使用LCD顯示器擴(kuò)展板。這種擴(kuò)展板有多種變體,我們將要使用的是 1602鍵盤擴(kuò)展板,它可以在每行中顯示最多16個(gè)字符并顯示2行(所以為1602),一次最多可以顯示32個(gè)字符。它還帶有六個(gè)按鈕:四個(gè)方向按鈕(向左、向右、向上和向下),一個(gè)選擇按鈕和一個(gè)重置按鈕。
該擴(kuò)展板有28個(gè)引腳,與Arduino Uno上的引腳對應(yīng)。擴(kuò)展板通常設(shè)計(jì)為可直接插入相應(yīng)的開發(fā)板上,因此如果您的擴(kuò)展板和開發(fā)板上的引腳不匹配,可能需要換一個(gè)擴(kuò)展板。基于以上情況,如果您已經(jīng)有了一個(gè)Arduino Uno和正確的擴(kuò)展板,就可以直接將擴(kuò)展板插入開發(fā)板了(我們將在下面的接線部分詳細(xì)討論這一過程)。
但是,LCD顯示器不需要用到板上的所有引腳。這時(shí)候那些直通式引腳就可以派上用場了。您可以將電線連接到LCD顯示器擴(kuò)展板的開路觸點(diǎn)上,這將會(huì)連接到Arduino。這很方便,因?yàn)槿绱艘粊砟涂梢圆挥靡驗(yàn)槭褂脭U(kuò)展板而丟失任何開路引腳了。
最后一部分工作是導(dǎo)入LiquidCrystal庫。這個(gè)庫提供了簡單的命令來執(zhí)行顯示文本、滾動(dòng)文本、控制光標(biāo)位置等操作。只要您的LCD顯示器擴(kuò)展板與此庫兼容(大多數(shù)流行的擴(kuò)展板都兼容),那么您就可以導(dǎo)入此庫,然后使用非常簡單的命令來對顯示器進(jìn)行控制了。
所需部件
由于擴(kuò)展板直接插入Arduino開發(fā)板,所以該項(xiàng)目不需要使用大量零部件。這也是Arduino的出色之處:它們可以極大地簡化您的項(xiàng)目。但是,在開始之前,您還是需要準(zhǔn)備好以下部件:
Arduino Uno |
|
|||
LCD顯示器擴(kuò)展板 |
![]() |
|||
Arduino IDE |
|
您還需要一個(gè)USB數(shù)據(jù)線!
我們將在下面的接線部分討論如何插入擴(kuò)展板,但在此之前,我們首先了解一下軟件部分。
代碼
Arduino IDE中自帶有一些草圖,位于 File > Examples > Liquid Crystal的示例說明中。出于本項(xiàng)目的目的,我們將使用HelloWorld草圖。您可以在IDE中加載該草圖,以下為該草圖的完整代碼:
*/
// include the library code:
#include
// initialize the library by associating any needed LCD interface pin
// with the arduino pin number it is connected to
const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
void setup() {
// set up the LCD’s number of columns and rows:
lcd.begin(16, 2);
// Print a message to the LCD.
lcd.print(“hello, world!”);
}
void loop() {
// set the cursor to column 0, line 1
// (note: line 1 is the second row, since counting begins with 0):
lcd.setCursor(0, 1);
// print the number of seconds since reset:
lcd.print(millis() / 1000);
}
現(xiàn)在,我們來了解一下該代碼所執(zhí)行的工作。
#include
這行代碼用于導(dǎo)入LiquidCrystal庫。如果想要使用此庫中的命令,則必須將這一行寫在代碼頂部。
const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
接下來的這兩行用于以4位模式初始化代表控制LCD顯示器所需的六個(gè)引腳的變量:rs、enable、d4、d5、d6和d。Arduino文檔中有更多以8位模式控制LCD顯示器的引腳的有關(guān)信息,但是本示例中不需要這部分內(nèi)容。
第二行用于將這些引腳(通過您剛剛創(chuàng)建的變量)分配給一個(gè)名為LiquidCrystal的新型變量,在本例中,將該變量命名為lcd。這使您可以將LCD顯示器作為一個(gè)整體進(jìn)行尋址,而不必控制每一個(gè)單獨(dú)的引腳。如此一來,您就可以通過簡單的命令行來使用LiquidCrystal庫中的其他命令了。
void setup() {
// set up the LCD’s number of columns and rows:
lcd.begin(16, 2);
// Print a message to the LCD.
lcd.print(“hello, world!”);
}
在setup()部分,只有兩個(gè)命令:第一個(gè),lcd.begin()(在我們剛剛創(chuàng)建的變量之上調(diào)用 begin()命令),用于初始化LCD顯示器。第二個(gè)用于打印語句“hello, world!”。
此print() 命令與您過去使用的命令不同。Serial.print()命令用于將數(shù)據(jù)打印到串行端口,而該打印命令用于將文本打印到LCD顯示器。可以在您用上述方法創(chuàng)建的任意LCD對象上對其進(jìn)行調(diào)用。
void loop() {
// set the cursor to column 0, line 1
// (note: line 1 is the second row, since counting begins with 0):
lcd.setCursor(0, 1);
// print the number of seconds since reset:
lcd.print(millis() / 1000);
}
在本節(jié)中使用了另外兩行代碼來更改光標(biāo)位置并打印出設(shè)備重置之后經(jīng)過的毫秒數(shù)。您可能會(huì)再一次感受到每項(xiàng)任務(wù)的操作有多么簡單,只需要使用庫中的一行代碼就可以完成操作。setCursor()函數(shù)用于將光標(biāo)放在您指定的位置。由于行和列都從零開始計(jì)數(shù),坐標(biāo)(0,1)指的是第二行的第一列。顯示器再次使用print()顯示自設(shè)備重置之后經(jīng)歷的毫秒數(shù)。
接線
如果您只使用了擴(kuò)展板,那么在本項(xiàng)目中就沒有其他特別的接線工作了。只需將LCD擴(kuò)展板底部的引腳與Arduino Uno板上的引腳對齊即可。建議從Arduino板最遠(yuǎn)端的A0和RX0引腳開始對齊。
引腳組中存在自然間距(例如引腳7和8之間,以及A0 和vin之間)可以幫助您正確排列引腳。對齊后,以合適的力度按下擴(kuò)展板,直到所有引腳都嚴(yán)密地連接到開發(fā)板上。
在LCD擴(kuò)展板上,您將看到在有許多引腳上焊接點(diǎn)(與擴(kuò)展板之間連接的地方)的旁邊都有空的觸點(diǎn)。如果您想添加額外的電線或組件,可以選擇在這些觸點(diǎn)上進(jìn)行連接。
評論