透過使用Arduino擴展板,您可以利用各種有用功能和可直接插入擴展板的工具來快速升級自己的專案。為了向您展示這項操作的簡易性,我們將介紹如何把可程式設計LCD顯示器添加到您的Arduino專案中,使您可以用它來顯示文本,並透過一系列的按鈕來為您提供輸入功能。
我們之前已經討論過Arduino擴展板,但是以防您不太熟悉,我們在這裡進行一些簡單介紹。擴展板是Arduino專案的附加元件,可以直接插入您的開發板以增加新的功能。有些是可堆疊的,所以您可以將多個模組添加到單個專案中。它們通常帶有自己的軟體庫,您可以將這些軟體庫導入到您的草圖中,以便像使用所連接的其他元件那樣輕鬆對其進行控制。
在本指南中,我們將使用LCD顯示器擴展板。這種擴展板有多種變體,我們將要使用的是1602鍵盤擴展板,它可以在每行中顯示最多16個字元並顯示2行(所以為1602),一次最多可以顯示32個字元。它還帶有六個按鈕:四個方向按鈕(向左、向右、向上和向下),一個選擇按鈕和一個重新開機按鈕。
該擴展板有28個引腳,與Arduino Uno上的引腳對應。擴展板通常設計為可直接插入相應的開發板上,因此如果您的擴展板和開發板上的引腳不匹配,可能需要換一個擴展板。基於以上情況,如果您已經有了一個Arduino Uno和正確的擴展板,就可以直接將擴展板插入開發板了(我們將在下面的接線部分詳細討論這一過程)。
但是,LCD顯示器不需要用到板上的所有引腳。這時候那些直通式引腳就可以派上用場了。您可以將電線連接到LCD顯示器擴展板的開路觸點上,這將會連接到Arduino。這很方便,因為如此一來您就可以不用因為使用擴展板而丟失任何開路引腳了。
最後一部分工作是導入LiquidCrystal庫。這個庫提供了簡單的命令來執行顯示文本、滾動文本、控制游標位置等操作。只要您的LCD顯示器擴展板與此庫相容(大多數流行的擴展板都相容),那麼您就可以導入此庫,然後使用非常簡單的命令來對顯示器進行控制了。
由於擴展板直接插入Arduino開發板,所以該專案不需要使用大量零件。這也是Arduino的出色之處:它們可以大幅簡化您的專案。但是,在開始之前,您還是需要準備好以下零件:
Arduino Uno |
|
|||
LCD顯示器擴展板 | ||||
Arduino IDE |
|
您還需要一個USB資料線!
我們將在下面的接線部分討論如何插入擴展板,但在此之前,我們首先瞭解一下軟體部分。
Arduino IDE中自帶有一些草圖,位於 File > Examples > Liquid Crystal的示例說明中。出於本專案的目的,我們將使用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);
}
現在,我們來瞭解一下該代碼所執行的工作。
#include <LiquidCrystal.h>
這行代碼用於導入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顯示器所需的六個引腳的變數:rs、enable、d4、d5、d6和d7。Arduino文檔中有更多以8位元模式控制LCD顯示器的引腳的有關資訊,但是本示例中不需要這部分內容。
第二行用於將這些引腳(透過您剛剛創建的變數)分配給一個名為LiquidCrystal的新型變數,在本例中,將該變數命名為lcd。這使您可以將LCD顯示器作為一個整體進行定址,而不必控制每一個單獨的引腳。如此一來,您就可以透過簡單的命令列來使用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()部分,只有兩個命令:第一個,lcd.begin()(在我們剛剛創建的變數之上調用 begin()命令),用於初始化LCD顯示器。第二個用於列印語句“hello, world!”
此print() 命令與您過去使用的命令不同。Serial.print()命令用於將資料列印到序列埠,而 該列印命令用於將文本列印到LCD顯示器。可以在您用上述方法創建的任意LCD物件上對其進行調用。
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);
}
在本節中使用了另外兩行代碼來更改游標位置並列印出設備重置之後經過的毫秒數。您可能會再一次感受到每項任務的操作有多麼簡單,只需要使用庫中的一行代碼就可以完成操作。setCursor()函數用於將游標放在您指定的位置。由於行和列都從零開始計數,座標(0,1)指的是第二行的第一列。顯示器再次使用print()顯示自設備重置之後經歷的毫秒數。
如果您只使用了擴展板,那麼在本專案中就沒有其他特別的接線工作了。只需將LCD擴展板底部的引腳與Arduino Uno板上的引腳對齊即可。建議從Arduino板最遠端的A0和RX0引腳開始對齊。
引腳組中存在自然間距(例如引腳7和8之間,以及A0 和vin之間)可以幫助您正確排列引腳。對齊後,以合適的力度按下擴展板,直到所有引腳都嚴密地連接到開發板上。
在LCD擴展板上,您將看到在有許多引腳上焊接點(與擴展板之間連接的地方)的旁邊都有空的觸點。如果您想添加額外的電線或元件,可以選擇在這些觸點上進行連接。