LCD KeyPad Shield
所有的電路設計,內部都有許多的狀態資料,如何將這些狀態資料顯示出來,我們就必須具備一個獨立的顯示螢幕與簡單的輸入按鈕,方能稱為一個完善的設計。
Arduino開發板有許多廠家設計製造許多周邊模組商品,見圖 29為LCD 1602與 button整合的LCD KeyPad模組,由於許多實驗中,都需要LCD顯示模組與按鈕模組,為了方便,本實驗採用這個模組(DFRobot, 2013)。
有許多廠家為Arduino開發板設計製造許多周邊模組商品,見圖 29為LCD 1602與 常用按鈕(buttons)整合設計而成的LCD Keypad Shield模組(DFRobot, 2013)。由於許多產品設計同時需要顯示資訊與簡單驗按鈕輸入,亦即是需要LCD顯示模組與按鈕模組,為了方便,本實驗採用這個模組。
由圖 30所示,可以見到LCD Keypad Shield接腳圖,並請參考圖 29右側圖,可以得到表 4正確的接腳圖。
Keypad接腳
|
Arduino開發板接腳
|
解說
|
D4
|
Arduino digital output pin 4
|
LCD 1602 資料接腳
|
D5
|
Arduino digital output pin 5
|
|
D6
|
Arduino digital output pin 6
|
|
D7
|
Arduino digital output pin 7
|
|
RS
|
Arduino digital output pin 8
|
Register Selections
|
Enable
|
Arduino digital output pin 9
|
ENABLE SIGNAL
|
A0
|
Arduino Analog input pin 0
|
Key buttons輸入(類比)
|
5V
|
Arduino pin 5V
|
5V 陽極接點
|
GND
|
Arduino pin Gnd
|
共地接點
|
本章節為了測試keypad shield 使用情形,使用下列程式進行keypad shield之LCD 1602畫面顯示,並測試按鈕(Buttons)的讀取值的功能,可以見圖 31為成功的keypad shield測試畫面。
KeyPads Shield測試程式(keypad_keytest1)
|
//Using LiquidCrystal library
#include <LiquidCrystal.h>
/*******************************************************
This program will test the LCD panel and
the buttons
********************************************************/
// select the pins used on the LCD panel
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
// LiquidCrystal(rs, enable, d4, d5, d6,
d7)
// LiquidCrystal(rs, rw, enable, d4, d5,
d6, d7)
// LiquidCrystal(rs, enable, d0, d1, d2,
d3, d4, d5, d6
// define some values used by the panel
and buttons
int lcd_key = 0;
int adc_key_in = 0;
#define btnRIGHT 0
#define btnUP 1
#define btnDOWN 2
#define btnLEFT 3
#define btnSELECT 4
#define btnNONE 5
// read the buttons
int read_LCD_buttons()
{
adc_key_in = analogRead(0); // read the
value from the sensor
if (adc_key_in > 1000)
return btnNONE; // We make this the 1st option for speed reasons since it
will be the most likely result
if (adc_key_in < 50)
return btnRIGHT;
if (adc_key_in < 250) return btnUP;
if (adc_key_in < 450) return btnDOWN;
if (adc_key_in < 650) return btnLEFT;
if (adc_key_in < 850) return btnSELECT;
return btnNONE; // when all others fail,
return this...
}
void setup()
{
lcd.begin(16, 2); // start the library
lcd.setCursor(0,0);
lcd.print("Push the buttons");
// print the message
}
void loop()
{
lcd.setCursor(9,1); // move cursor to
second line "1" and 9 spaces over
lcd.print(millis()/1000); // display
seconds elapsed since power-up
lcd.setCursor(0,1); // move to the
begining of the second line
lcd_key = read_LCD_buttons(); // read the
buttons
switch (lcd_key) {
case btnRIGHT:
{
lcd.print("RIGHT ");
break;
}
case btnLEFT:
{
lcd.print("LEFT ");
break;
}
case btnUP:
{
lcd.print("UP ");
break;
}
case btnDOWN:
{
lcd.print("DOWN ");
break;
}
case btnSELECT:
{
lcd.print("SELECT");
break;
}
case btnNONE:
{
lcd.print("NONE ");
break;
}
}
}
|
資料來源:http://www.dfrobot.com/wiki/index.php?title=Arduino_LCD_KeyPad_Shield_(SKU:_DFR0009)#Example_use_of_LiquidCrystal_library
沒有留言:
張貼留言